趣味+メモ用のブログです。
GNU/Linux関連、OSS関連情報、調査事項になるでしょうが、何を書くか分かりません。
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
クロス環境のセットアップが終わったので、Linux/busyboxを動作させてみた。
参考サイト:https://gist.github.com/poutyface/1223553 (QEMU: 仮想ボード ARM Cortex-A9 マルチコアで Linux を動かす) ■qemuのインストールapt-getで環境をインストール。$ sudo apt-get install qemu qemu-system armでサポートしているボードを確認。 $ qemu-system-arm -M \? Supported machines are: collie Collie PDA (SA-1110) nuri Samsung NURI board (Exynos4210) smdkc210 Samsung SMDKC210 board (Exynos4210) connex Gumstix Connex (PXA255) verdex Gumstix Verdex (PXA270) highbank Calxeda Highbank (ECX-1000) integratorcp ARM Integrator/CP (ARM926EJ-S) (default) mainstone Mainstone II (PXA27x) musicpal Marvell 88w8618 / MusicPal (ARM926EJ-S) n800 Nokia N800 tablet aka. RX-34 (OMAP2420) n810 Nokia N810 tablet aka. RX-44 (OMAP2420) sx1 Siemens SX1 (OMAP310) V2 sx1-v1 Siemens SX1 (OMAP310) V1 cheetah Palm Tungsten|E aka. Cheetah PDA (OMAP310) realview-eb ARM RealView Emulation Baseboard (ARM926EJ-S) realview-eb-mpcore ARM RealView Emulation Baseboard (ARM11MPCore) realview-pb-a8 ARM RealView Platform Baseboard for Cortex-A8 realview-pbx-a9 ARM RealView Platform Baseboard Explore for Cortex-A9 akita Akita PDA (PXA270) spitz Spitz PDA (PXA270) borzoi Borzoi PDA (PXA270) terrier Terrier PDA (PXA270) lm3s811evb Stellaris LM3S811EVB lm3s6965evb Stellaris LM3S6965EVB tosa Tosa PDA (PXA255) versatilepb ARM Versatile/PB (ARM926EJ-S) versatileab ARM Versatile/AB (ARM926EJ-S) vexpress-a9 ARM Versatile Express for Cortex-A9 vexpress-a15 ARM Versatile Express for Cortex-A15 xilinx-zynq-a9 Xilinx Zynq Platform Baseboard for Cortex-A9 z2 Zipit Z2 (PXA27x) ■ ダウンロードしたLinux、Busybox
■ LinuxカーネルのコンパイルLinuxカーネルを展開してデフォルト設定。$ tar -xvf linux-3.19.tar.xz $ cd linux-3.19 $ export ARCH=arm $ export CROSS_COMPILE=arm-linux-gnueabi- $ make realview_smp-defconfigrealview-pbx-a9 用のデフォルト設定にするため、「realview_smp-defconfig」を指定。 デフォルト設定は「arch/arm/configs/」にある。 make menuconfigして、カーネルの設定を行う。 $ export ARCH=arm $ export CROSS_COMPILE=arm-linux-gnueabi- $ make menuconfig以下の設定を行った。 ・Physical address of main memory -> 0x00000000 CONFIG_PHYS_OFFSET: Symbol: PHYS_OFFSET [=0x00000000] Type : hex Prompt: Physical address of main memory ・Enable loadable module support -> n CONFIG_MODULES: Symbol: MODULES [=n] Type : boolean Prompt: Enable loadable module support ・Support ARM V6 processor -> n Symbol: CPU_V6 [=n] Type : boolean Prompt: Support ARM V6 processor Location: -> System Type ・ARM system type -> ARM Ltd. RealView family Prompt: ARM system type Location: -> System Type ・Support RealView(R) Emulation Baseboar -> y CONFIG_MACH_REALVIEW_EB: Symbol: MACH_REALVIEW_EB [=y] Type : boolean Prompt: Support RealView(R) Emulation Baseboard Location: -> System Type -> RealView platform type ・Support Multicore Cortex-A9 Tile -> y CONFIG_REALVIEW_EB_A9MP: Symbol: REALVIEW_EB_A9MP [=y] Type : boolean Prompt: Support Multicore Cortex-A9 Tile Location: -> System Type -> RealView platform type -> Support RealView(R) Emulation Baseboard (MACH_REALVIEW_EB [=y]) ・Support RealView(R) Platform Baseboard Explore -> y CONFIG_MACH_REALVIEW_PBX: Symbol: MACH_REALVIEW_PBX [=y] Type : boolean Prompt: Support RealView(R) Platform Baseboard Explore Location: -> System Type -> RealView platform type ・High physical base address for the RealView platform -> n CONFIG_REALVIEW_HIGH_PHYS_OFFSET: Symbol: REALVIEW_HIGH_PHYS_OFFSET [=n] Type : boolean Prompt: High physical base address for the RealView platform Location: -> System Type -> RealView platform type ・Initial RAM filesystem and RAM disk (initramfs/initrd) support -> y Symbol: BLK_DEV_INITRD [=y] Type : boolean Prompt: Initial RAM filesystem and RAM disk (initramfs/initrd) support Location: -> General setup ・Use the ARM EABI to compile the kernel -> y Symbol: AEABI [=y] Type : boolean Prompt: Use the ARM EABI to compile the kernel Location: -> Kernel Features※ PHYS_OFFSETは0x00000000に設定しないとkernelが起動しません・・・ ※ BLK_DEV_INITRD は明示的に =yを設定する必要がありました。 続けて、カーネルコンパイル。 $ export ARCH=arm $ export CROSS_COMPILE=arm-linux-gnueabi- $ make realview_smp-defconfig ■ busyboxのコンパイル$ tar -xvf busybox-1.23.1.tar.bz2 $ cd busybox-1.23.1 $ export ARCH=arm $ export CROSS_COMPILE=arm-linux-gnueabi- $ make defconfig $ make menuconfigデフォルトのままだと、staticコンパイルしてくれない・・ ・Build BusyBox as a static binary (no shared libs) -> y CONFIG_STATIC: Symbol: STATIC [=y] Prompt: Build BusyBox as a static binary (no shared libs) Location: -> Busybox Settings -> Build Optionsこんぱいるする。 $ make installコンパイル結果は、_installに格納される。 ■ initrdイメージの作成以下のコマンドで作成。$ cd _install $ find . | cpio -o --format=newc > ../rootfs.img $ cd ../../ ■ qemuの実行Linuxカーネルを起動する。 $ cd ../ $ linux-3.19 $ qemu-system-arm \ -M realview-pbx-a9 \ -m 128M \ -kernel ./arch/arm/boot/zImage \ -nographic \ -initrd ../busybox-1.23.1/rootfs.img \ -smp 2 \ -append "root=/dev/null rdinit=/bin/sh console=ttyAMA0 mem=128M"実行結果Uncompressing Linux... done, booting the kernel. l2x0_priv_write: Bad offset 900 l2x0_priv_write: Bad offset 904 l2x0_priv_write: Bad offset 908 l2x0_priv_write: Bad offset 90c l2x0_priv_write: Bad offset 910 l2x0_priv_write: Bad offset 914 l2x0_priv_write: Bad offset 918 l2x0_priv_write: Bad offset 91c l2x0_priv_write: Bad offset 920 l2x0_priv_write: Bad offset 924 l2x0_priv_write: Bad offset 928 l2x0_priv_write: Bad offset 92c l2x0_priv_write: Bad offset 930 l2x0_priv_write: Bad offset 934 l2x0_priv_write: Bad offset 938 l2x0_priv_write: Bad offset 93c Booting Linux on physical CPU 0x0 Linux version 3.19.0 (sakaihdt@debian-r6) (gcc version 4.7.2 (Debian 4.7.2-5) ) #3 SMP Sun Feb 15 10:35:15 JST 2015 CPU: ARMv7 Processor [410fc090] revision 0 (ARMv7), cr=10c5387d CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache Machine: ARM-RealView PBX Ignoring unrecognised tag 0x00000000 Memory policy: Data cache writeback CPU: All CPU(s) started in SVC mode. sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956969942ns PERCPU: Embedded 7 pages/cpu @c7ddc000 s5952 r0 d22720 u32768 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512 Kernel command line: root=/dev/null rdinit=/bin/sh console=ttyAMA0 mem=128M PID hash table entries: 512 (order: -1, 2048 bytes) Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) Memory: 123460K/131072K available (3212K kernel code, 188K rwdata, 604K rodata, 172K init, 125K bss, 7612K reserved, 0K cma-reserved) Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xffc00000 - 0xfff00000 (3072 kB) vmalloc : 0xc8800000 - 0xff000000 ( 872 MB) lowmem : 0xc0000000 - 0xc8000000 ( 128 MB) .text : 0xc0008000 - 0xc03c2570 (3818 kB) .init : 0xc03c3000 - 0xc03ee000 ( 172 kB) .data : 0xc03ee000 - 0xc041d0c0 ( 189 kB) .bss : 0xc041d0c0 - 0xc043c724 ( 126 kB) Hierarchical RCU implementation. RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=1. RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1 NR_IRQS:160 smp_twd: clock not found -2 Console: colour dummy device 80x30 Calibrating local timer... 99.86MHz. Calibrating delay loop... 66.76 BogoMIPS (lpj=333824) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) CPU: Testing write buffer coherency: ok CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 Setting up static identity map for 0x30cb18 - 0x30cb88 Brought up 1 CPUs SMP: Total of 1 processors activated (66.76 BogoMIPS). CPU: All CPU(s) started in SVC mode. VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 0 NET: Registered protocol family 16 DMA: preallocated 256 KiB pool for atomic coherent allocations L2C: DT/platform modifies aux control register: 0x02020000 -> 0x02520000 L2C: DT/platform tries to modify or specify cache size L2C-310 enabling early BRESP for Cortex-A9 L2C-310 full line of zeros enabled for Cortex-A9 L2C-310 dynamic clock gating disabled, standby mode disabled L2C-310 cache controller enabled, 8 ways, 128 kB L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x46520001 Serial: AMBA PL011 UART driver dev:uart0: ttyAMA0 at MMIO 0x10009000 (irq = 44, base_baud = 0) is a PL011 rev1 console [ttyAMA0] enabled dev:uart1: ttyAMA1 at MMIO 0x1000a000 (irq = 45, base_baud = 0) is a PL011 rev1 dev:uart2: ttyAMA2 at MMIO 0x1000b000 (irq = 46, base_baud = 0) is a PL011 rev1 fpga:uart3: ttyAMA3 at MMIO 0x1000c000 (irq = 47, base_baud = 0) is a PL011 rev1 Advanced Linux Sound Architecture Driver Initialized. Switched to clocksource timer3 NET: Registered protocol family 2 TCP established hash table entries: 1024 (order: 0, 4096 bytes) TCP bind hash table entries: 1024 (order: 1, 8192 bytes) TCP: Hash tables configured (established 1024 bind 1024) TCP: reno registered UDP hash table entries: 256 (order: 1, 8192 bytes) UDP-Lite hash table entries: 256 (order: 1, 8192 bytes) NET: Registered protocol family 1 RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. Unpacking initramfs... Freeing initrd memory: 2032K (c0d00000 - c0efc000) futex hash table entries: 256 (order: 2, 16384 bytes) io scheduler noop registered io scheduler deadline registered (default) pl061_gpio dev:gpio0: invalid IRQ base in pdata pl061_gpio dev:gpio1: invalid IRQ base in pdata pl061_gpio dev:gpio2: invalid IRQ base in pdata clcd-pl11x issp:clcd: PL111 rev2 at 0x10020000 clcd-pl11x issp:clcd: RealView hardware, XVGA display Console: switching to colour frame buffer device 128x48 physmap platform flash device: 04000000 at 40000000 physmap-flash physmap-flash.0: map_probe failed mousedev: PS/2 mouse device common for all mice rtc-ds1307 0-0068: rtc core: registered ds1338 as rtc0 rtc-ds1307 0-0068: 56 bytes nvram rtc-pl031 dev:rtc: rtc core: registered pl031 as rtc1 Driver 'mmcblk' needs updating - please use bus_type methods mmci-pl18x fpga:mmc0: No vmmc regulator found mmci-pl18x fpga:mmc0: No vqmmc regulator found amba fpga:mmc0: Driver mmci-pl18x requests probe deferral ledtrig-cpu: registered to indicate activity on CPUs input: AT Raw Set 2 keyboard as /devices/fpga:kmi0/serio0/input/input0 aaci-pl041 fpga:aaci: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 51 aaci-pl041 fpga:aaci: FIFO 512 entries TCP: cubic registered NET: Registered protocol family 17 Registering SWP/SWPB emulation handler mmci-pl18x fpga:mmc0: No vmmc regulator found mmci-pl18x fpga:mmc0: No vqmmc regulator found amba fpga:mmc0: Driver mmci-pl18x requests probe deferral rtc-ds1307 0-0068: setting system clock to 2015-02-15 05:31:26 UTC (1423978286) ALSA device list: #0: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 51 Freeing unused kernel memory: 172K (c03c3000 - c03ee000) /bin/sh: can't access tty; job control turned off / # input: ImExPS/2 Generic Explorer Mouse as /devices/fpga:kmi1/serio1/input/input2 mmci-pl18x fpga:mmc0: No vmmc regulator found mmci-pl18x fpga:mmc0: No vqmmc regulator found amba fpga:mmc0: Driver mmci-pl18x requests probe deferral / # / # ls bin dev linuxrc root sbin usr 以上。 PR
<<【debian】【gnu】【Linux】【ARM】LInux kernelデバッグ用の設定
HOME 【debian】【gnu】【Linux】【ARM】wheezyに armelクロスコンパイル環境構築>>
|
カレンダー
カテゴリー
フリーエリア
最新コメント
最新記事
(05/02)
(01/25)
(01/15)
(12/04)
(12/01)
最新トラックバック
ブログ内検索
最古記事
(02/21)
(07/12)
(07/12)
(07/18)
(07/20) |