Сборка простого модуля ядра и окружения © Источник
Установите Ubuntu
Установка инструментов сборки
sudo apt-get build-dep linux
sudo apt-get gitk
cd && mkdir milestone-kernel && cd milestone-kernel
Если вы хотите использовать только самые последние версии, то наберите это:
Установка инструментов:
Сборка ядра Исходники ядра
Теперь удалим лишнее
Для упрощения последующих действий, установку переменных окружения сделаем через следующий скрипт:
Альтернатива http://www.multiupload.com/L6QRTZJ7YV
(md5sum c9b51a85b8c5697568602949ef48a2c4 *milestone-kernel.tbz)
А теперь проверим работоспособность компилятора (должен вывести свою версию):
Сборка ядра Linux (Разработчики Google/Motorola изувечили стандартную сборку ядра)
Наберите следующую команду и можете пойти попить кофе, поесть, сходить в магазин и т.д.; потому
что сборка ядра это очень долгий процесс:
Образ zImage и модули ядра будут тут:
Модуль 'hello_omap.ko'
Давайте сделаем простой модуль, который выводит нам режим, в котором находиться omap3430 (GP/HS):
Создание исходников и MakeFile:
(Убираем .7z)
Внимание! Вместо пробелов используйте табуляцию (TAB)
Скомпилим модуль ядра
Лог:
CC [M] …milestone-kernel/hello_omap/hello_omap.o
Building modules, stage 2.
MODPOST 1 modules
LD [M] …milestone-kernel/hello_omap/hello_omap.ko
Лог:
hello_omap.ko: ELF 32-bit LSB relocatable, ARM, version 1 (SYSV), not stripped
Вставим модуль в ядро
Лог:
…
<6>[ 121.549346] hello_omap: cpu is omap 3430
<6>[ 121.549560] hello_omap: cpu is in High Security (HS) mode
Установим заголовочные файлы:
Лог:
asm asm-generic drm linux mtd rdma sound video
Полезное:
Структура mbmloader'a
Карта памяти
boot space
# cat iomem
00000000-00000000 : omap2-nand.0
10000000-10000fff : omap2-nand
4Gb NAND device: Manufacturer ID: 0x98, Chip ID: 0xbc (Toshiba NAND 512MiB 1,8V 16-bit)
recovery
Creating 26 MTD partitions on "omap2-nand.0":
0x000000000000-0x000000020000 : "mbmloader"
0x000000020000-0x0000000c0000 : "mbm"
0x0000000c0000-0x000000160000 : "mbmbackup"
0x000000160000-0x0000001c0000 : "bploader"
0x0000001c0000-0x000000220000 : "cdt"
0x000000220000-0x0000003a0000 : "pds"
0x0000003a0000-0x000000400000 : "lbl"
0x000000400000-0x000000460000 : "lbl_backup"
0x000000460000-0x0000004c0000 : "cid"
0x0000004c0000-0x000000640000 : "sp"
0x000000640000-0x0000006a0000 : "devtree"
0x0000006a0000-0x000000740000 : "logo"
0x000000740000-0x0000007a0000 : "misc"
0x0000007a0000-0x000000b20000 : "boot"
0x000000b20000-0x000000ee0000 : "bpsw"
0x000000ee0000-0x000001360000 : "recovery"
0x000001360000-0x000001c20000 : "cdrom"
0x000001c20000-0x000001c80000 : "unused0"
0x000001c80000-0x00000cc20000 : "system"
0x00000cc20000-0x00000cc80000 : "unused1"
0x00000cc80000-0x000013680000 : "cache"
0x000013680000-0x00001fba0000 : "userdata"
0x00001fba0000-0x00001fd20000 : "cust"
0x00001fd20000-0x00001fd80000 : "unused2"
0x00001fd80000-0x00001ff80000 : "kpanic"
apanic: Bound to mtd partition 'kpanic'
apanic: No panic data available
apanic: Skipping erase of bad block @1e0000
apanic: kpanic partition erased
0x00001ff80000-0x000020000000 : "rsv"
on chip memory
0x40000000 112k ROM
0x40200000 64k SRAM
SRAM: Mapped pa 0x40200000 to va 0xe3000000 size: 0x100000
mapphone_als_init:Initializing
OMAP DMA hardware revision 4.0
Reserving DMA channels 0 and 1 for HS ROM code
L4 interconnects
system peripherals
OMAP34xx GPIO hardware version 2.5
48060000-4806003f : i2c_omap.3
48060000-4806003f : i2c_omap
48064800-48064bff : ehci-omap.0
4806a000-4806a3ff : omap-uart.1
4806a000-4806a3ff : omap-uart
4806c000-4806c3ff : omap-uart.2
4806c000-4806c3ff : omap-uart
48070000-4807003f : i2c_omap.1
48070000-4807003f : i2c_omap
48072000-4807203f : i2c_omap.2
48072000-4807203f : i2c_omap
48098000-480980ff : omap2_mcspi.1
48098000-480980ff : omap2_mcspi.1
4809a000-4809a0ff : omap2_mcspi.2
4809a000-4809a0ff : omap2_mcspi.2
4809c000-4809c1ff : mmci-omap-hs.0
4809c000-4809c1ff : mmci-omap-hs
480ab000-480acfff : musb_hdrc
480b2000-480b201c : omap_hdq.0
480b4000-480b41ff : TIWLAN_SDIO.1
480b8000-480b80ff : omap2_mcspi.3
480b8000-480b80ff : omap2_mcspi.3
480ba000-480ba0ff : omap2_mcspi.4
480ba000-480ba0ff : omap2_mcspi.4
480bc000-480bdb70 : omap34xxcam
480bc000-480bdb70 : omap34xxcam
48314000-4831404f : omap_wdt
48314000-4831404f : omap_wdt
49020000-490203ff : omap-uart.3
49020000-490203ff : omap-uart
console
omap-uart.1: ttyS0 at MMIO 0x4806a000 (irq = 72) is a OMAP UART1
omap-uart.2: ttyS1 at MMIO 0x4806c000 (irq = 73) is a OMAP UART2
omap-uart.3: ttyS2 at MMIO 0x49020000 (irq = 74) is a OMAP UART3
console [ttyS2] enabled
L4 emulation
0x5401 0000 - 0x5401 0FFF: ARM embedded trace macrocell (ETM) module
0x5401 1000 - 0x5401 1FFF: Cortex-A8 module
0x5401 9000 - 0x5401 9FFF: Trace port interface unit (TPIU)
0x5401 B000 - 0x5401 BFFF: ARM embedded trace buffer (ETB) module
0x5401 D030: The DBGEM signal on the Cortex-A8 is driven by setting bit 13
SDRC/SMS virtual space 0
70000000-70ffffff : vrfb
71000000-71ffffff : vrfb
72000000-72ffffff : vrfb
73000000-73ffffff : vrfb
74000000-74ffffff : vrfb
75000000-75ffffff : vrfb
76000000-76ffffff : vrfb
77000000-77ffffff : vrfb
78000000-78ffffff : vrfb
79000000-79ffffff : vrfb
7a000000-7affffff : vrfb
7b000000-7bffffff : vrfb
7c000000-7cffffff : vrfb
7d000000-7dffffff : vrfb
7e000000-7effffff : vrfb
7f000000-7fffffff : vrfb
SDRAM CS0 (256M)
kernel 244M
Clocking rate (Crystal/DPLL/ARM core): 26.0/320/500 MHz
Memory: 244MB = 244MB total
Memory: 229248KB available (4688K code, 1155K data, 208K init)
Reserving 5242880 bytes SDRAM for VRAM
80c00000-8fffffff : System RAM
80c3c000-810cffff : Kernel text
810d0000-811f0ccb : Kernel data
8e000000-8e01ffff : ram_console.0
jtag
HS обработки в ядре
--------------------------------------
Переведено by EXL & XVilka
Мануал проверен by XVilka
Сообщение отредактировал EXL - 8.3.2010, 21:22
Установите Ubuntu
Установка инструментов сборки
Код
sudo apt-get build-dep linux
sudo apt-get gitk
cd && mkdir milestone-kernel && cd milestone-kernel
Код
wget 'http://android.git.kernel.org/?p=platform/prebuilt.git;a=snapshot;h=7f069ba4b6c3271c94844624b34e9a3592c2c732;sf=tgz' -O prebuilt.tgz
mkdir -p prebuilt/linux-x86/toolchain/
tar xvzf prebuilt.tgz -C prebuilt/linux-x86/toolchain/
mv prebuilt/linux-x86/toolchain/prebuilt prebuilt/linux-x86/toolchain/arm-eabi-4.4.0
mkdir -p prebuilt/linux-x86/toolchain/
tar xvzf prebuilt.tgz -C prebuilt/linux-x86/toolchain/
mv prebuilt/linux-x86/toolchain/prebuilt prebuilt/linux-x86/toolchain/arm-eabi-4.4.0
Если вы хотите использовать только самые последние версии, то наберите это:
Код
git clone --depth 1 git://android.git.kernel.org/platform/prebuilt.git prebuilt-orig
mkdir -p prebuilt/linux-x86/toolchain/
mv prebuilt-orig/linux-x86/toolchain/arm-eabi-4.4.0 prebuilt/linux-x86/toolchain/
mkdir -p prebuilt/linux-x86/toolchain/
mv prebuilt-orig/linux-x86/toolchain/arm-eabi-4.4.0 prebuilt/linux-x86/toolchain/
Установка инструментов:
Код
wget http://dl.google.com/android/archives/android-sdk-linux_x86-1.6_r1.tgz
tar xzf android-sdk-linux_x86-1.6_r1.tgz android-sdk-linux_x86-1.6_r1/tools/
mv android-sdk-linux_x86-1.6_r1/tools .
tar xzf android-sdk-linux_x86-1.6_r1.tgz android-sdk-linux_x86-1.6_r1/tools/
mv android-sdk-linux_x86-1.6_r1/tools .
Сборка ядра Исходники ядра
Код
wget 'https://opensource.motorola.com/sf/frs/do/downloadFile/projects.milestone/frs.milestone.01_15_0/frs8131?dl=1' -O archive_0115-kernel.tgz
wget 'https://opensource.motorola.com/sf/frs/do/downloadFile/projects.milestone/frs.milestone.01_15_0/frs8135?dl=1' -O archive_0115-system-wlan-ti.tgz
tar xzf archive_0115-kernel.tgz && tar xzf archive_0115-system-wlan-ti.tgz
mv archive_0115/kernel archive_0115/system .
wget 'https://opensource.motorola.com/sf/frs/do/downloadFile/projects.milestone/frs.milestone.01_15_0/frs8135?dl=1' -O archive_0115-system-wlan-ti.tgz
tar xzf archive_0115-kernel.tgz && tar xzf archive_0115-system-wlan-ti.tgz
mv archive_0115/kernel archive_0115/system .
Теперь удалим лишнее
Код
rm -rf prebuilt-orig archive_0115 android-sdk-linux_x86-1.6_r1 *.tgz
Для упрощения последующих действий, установку переменных окружения сделаем через следующий скрипт:
Код
#!/bin/bash
WDIR="$HOME/milestone-kernel"
ARM_HOME=$WDIR/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0
export PATH=$WDIR/tools:$ARM_HOME/bin:$PATH
export ARCH=arm
export CROSS_COMPILE=$ARM_HOME/bin/arm-eabi-
export KERNELDIR=$WDIR/kernel
chmod +x set-env
WDIR="$HOME/milestone-kernel"
ARM_HOME=$WDIR/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0
export PATH=$WDIR/tools:$ARM_HOME/bin:$PATH
export ARCH=arm
export CROSS_COMPILE=$ARM_HOME/bin/arm-eabi-
export KERNELDIR=$WDIR/kernel
chmod +x set-env
Альтернатива http://www.multiupload.com/L6QRTZJ7YV
(md5sum c9b51a85b8c5697568602949ef48a2c4 *milestone-kernel.tbz)
Код
tar xvjf milestone-kernel.tbz -C "$HOME/"
cd "$HOME/milestone-kernel/"
cd "$HOME/milestone-kernel/"
А теперь проверим работоспособность компилятора (должен вывести свою версию):
Код
arm-eabi-gcc -v
Сборка ядра Linux (Разработчики Google/Motorola изувечили стандартную сборку ядра)
Наберите следующую команду и можете пойти попить кофе, поесть, сходить в магазин и т.д.; потому
что сборка ядра это очень долгий процесс:
Код
make -f kernel/kernel.mk -j2
Образ zImage и модули ядра будут тут:
Код
out/target/pr/generic/obj/PARTITIONS/kernel_intermediates/build
Модуль 'hello_omap.ko'
Давайте сделаем простой модуль, который выводит нам режим, в котором находиться omap3430 (GP/HS):
Код
mkdir hello_omap && cd hello_omap
Создание исходников и MakeFile:
hello_omap.c.7z ( 472 байт ) Кол-во скачиваний: 475 |
Внимание! Вместо пробелов используйте табуляцию (TAB)
Makefile.txt ( 305 байт ) Кол-во скачиваний: 239 |
Скомпилим модуль ядра
Код
make
Лог:
CC [M] …milestone-kernel/hello_omap/hello_omap.o
Building modules, stage 2.
MODPOST 1 modules
LD [M] …milestone-kernel/hello_omap/hello_omap.ko
Код
file hello_omap.ko
Лог:
hello_omap.ko: ELF 32-bit LSB relocatable, ARM, version 1 (SYSV), not stripped
Вставим модуль в ядро
Код
adb -d push hello_omap.ko /tmp/
adb -d shell su -c 'insmod /tmp/hello_omap.ko'
adb -d shell dmesg
adb -d shell su -c 'insmod /tmp/hello_omap.ko'
adb -d shell dmesg
Лог:
…
<6>[ 121.549346] hello_omap: cpu is omap 3430
<6>[ 121.549560] hello_omap: cpu is in High Security (HS) mode
Установим заголовочные файлы:
Код
cd kernel
make headers_install -C../out/target/pr/generic/obj/PARTITIONS/kernel_intermediates/build/ \
INSTALL_HDR_PATH=$HOME/milestone-kernel
cd .. && ls include/
make headers_install -C../out/target/pr/generic/obj/PARTITIONS/kernel_intermediates/build/ \
INSTALL_HDR_PATH=$HOME/milestone-kernel
cd .. && ls include/
Лог:
asm asm-generic drm linux mtd rdma sound video
Полезное:
Структура mbmloader'a
Карта памяти
Spoiler:
CODE
boot space
# cat iomem
00000000-00000000 : omap2-nand.0
10000000-10000fff : omap2-nand
4Gb NAND device: Manufacturer ID: 0x98, Chip ID: 0xbc (Toshiba NAND 512MiB 1,8V 16-bit)
recovery
Creating 26 MTD partitions on "omap2-nand.0":
0x000000000000-0x000000020000 : "mbmloader"
0x000000020000-0x0000000c0000 : "mbm"
0x0000000c0000-0x000000160000 : "mbmbackup"
0x000000160000-0x0000001c0000 : "bploader"
0x0000001c0000-0x000000220000 : "cdt"
0x000000220000-0x0000003a0000 : "pds"
0x0000003a0000-0x000000400000 : "lbl"
0x000000400000-0x000000460000 : "lbl_backup"
0x000000460000-0x0000004c0000 : "cid"
0x0000004c0000-0x000000640000 : "sp"
0x000000640000-0x0000006a0000 : "devtree"
0x0000006a0000-0x000000740000 : "logo"
0x000000740000-0x0000007a0000 : "misc"
0x0000007a0000-0x000000b20000 : "boot"
0x000000b20000-0x000000ee0000 : "bpsw"
0x000000ee0000-0x000001360000 : "recovery"
0x000001360000-0x000001c20000 : "cdrom"
0x000001c20000-0x000001c80000 : "unused0"
0x000001c80000-0x00000cc20000 : "system"
0x00000cc20000-0x00000cc80000 : "unused1"
0x00000cc80000-0x000013680000 : "cache"
0x000013680000-0x00001fba0000 : "userdata"
0x00001fba0000-0x00001fd20000 : "cust"
0x00001fd20000-0x00001fd80000 : "unused2"
0x00001fd80000-0x00001ff80000 : "kpanic"
apanic: Bound to mtd partition 'kpanic'
apanic: No panic data available
apanic: Skipping erase of bad block @1e0000
apanic: kpanic partition erased
0x00001ff80000-0x000020000000 : "rsv"
on chip memory
0x40000000 112k ROM
0x40200000 64k SRAM
SRAM: Mapped pa 0x40200000 to va 0xe3000000 size: 0x100000
mapphone_als_init:Initializing
OMAP DMA hardware revision 4.0
Reserving DMA channels 0 and 1 for HS ROM code
L4 interconnects
system peripherals
OMAP34xx GPIO hardware version 2.5
48060000-4806003f : i2c_omap.3
48060000-4806003f : i2c_omap
48064800-48064bff : ehci-omap.0
4806a000-4806a3ff : omap-uart.1
4806a000-4806a3ff : omap-uart
4806c000-4806c3ff : omap-uart.2
4806c000-4806c3ff : omap-uart
48070000-4807003f : i2c_omap.1
48070000-4807003f : i2c_omap
48072000-4807203f : i2c_omap.2
48072000-4807203f : i2c_omap
48098000-480980ff : omap2_mcspi.1
48098000-480980ff : omap2_mcspi.1
4809a000-4809a0ff : omap2_mcspi.2
4809a000-4809a0ff : omap2_mcspi.2
4809c000-4809c1ff : mmci-omap-hs.0
4809c000-4809c1ff : mmci-omap-hs
480ab000-480acfff : musb_hdrc
480b2000-480b201c : omap_hdq.0
480b4000-480b41ff : TIWLAN_SDIO.1
480b8000-480b80ff : omap2_mcspi.3
480b8000-480b80ff : omap2_mcspi.3
480ba000-480ba0ff : omap2_mcspi.4
480ba000-480ba0ff : omap2_mcspi.4
480bc000-480bdb70 : omap34xxcam
480bc000-480bdb70 : omap34xxcam
48314000-4831404f : omap_wdt
48314000-4831404f : omap_wdt
49020000-490203ff : omap-uart.3
49020000-490203ff : omap-uart
console
omap-uart.1: ttyS0 at MMIO 0x4806a000 (irq = 72) is a OMAP UART1
omap-uart.2: ttyS1 at MMIO 0x4806c000 (irq = 73) is a OMAP UART2
omap-uart.3: ttyS2 at MMIO 0x49020000 (irq = 74) is a OMAP UART3
console [ttyS2] enabled
L4 emulation
0x5401 0000 - 0x5401 0FFF: ARM embedded trace macrocell (ETM) module
0x5401 1000 - 0x5401 1FFF: Cortex-A8 module
0x5401 9000 - 0x5401 9FFF: Trace port interface unit (TPIU)
0x5401 B000 - 0x5401 BFFF: ARM embedded trace buffer (ETB) module
0x5401 D030: The DBGEM signal on the Cortex-A8 is driven by setting bit 13
SDRC/SMS virtual space 0
70000000-70ffffff : vrfb
71000000-71ffffff : vrfb
72000000-72ffffff : vrfb
73000000-73ffffff : vrfb
74000000-74ffffff : vrfb
75000000-75ffffff : vrfb
76000000-76ffffff : vrfb
77000000-77ffffff : vrfb
78000000-78ffffff : vrfb
79000000-79ffffff : vrfb
7a000000-7affffff : vrfb
7b000000-7bffffff : vrfb
7c000000-7cffffff : vrfb
7d000000-7dffffff : vrfb
7e000000-7effffff : vrfb
7f000000-7fffffff : vrfb
SDRAM CS0 (256M)
kernel 244M
Clocking rate (Crystal/DPLL/ARM core): 26.0/320/500 MHz
Memory: 244MB = 244MB total
Memory: 229248KB available (4688K code, 1155K data, 208K init)
Reserving 5242880 bytes SDRAM for VRAM
80c00000-8fffffff : System RAM
80c3c000-810cffff : Kernel text
810d0000-811f0ccb : Kernel data
8e000000-8e01ffff : ram_console.0
[close]
jtag
HS обработки в ядре
Source.7z ( 2.66 килобайт ) Кол-во скачиваний: 233 |
--------------------------------------
Переведено by EXL & XVilka
Мануал проверен by XVilka
Сообщение отредактировал EXL - 8.3.2010, 21:22