Ubuntu14.04使用QEMU模拟ARM平台开发环境

1.准备

1.0 ubuntu14.04下首先安装需要的工具
1.1 使用crosstool-ng编译自己的交叉编译链,我当时编译的是倒数第二个版本,支持gcc4.8.0。或者apt-get insatll gcc-arm-linux-gnueabi,支持版本4.7.3。或者下载一个arm-2011.03-42-arm-none-eabi-i686-pc-linux-gnu。
1.2 下载qemu。apt-get install qemu,shell内查看qemu-system-arm目前版本是2.0.0。
1.3 下载linux内核源码。使用版本2.6.33.7。

2.编译

2.1 编译linux内核

make mrproper 保证原始环境
make ARCH=arm versatile_defconfig 将versatile改成你所用的开发板平台,使用versatile平台默认配置
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- 将arm-linux-gnueabi-改为你所用的工具名称,使用arm-linux-gnueabi-gcc交叉编译
很快就能在arch/arm/boot/生成zImage

2.2 编译uboot

ftp://ftp.denx.de/pub/u-boot/下载最新版本,
解压后进入源代码目录,在Makefile里面修改两行:
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-gnueabi-
意思是在arm平台下使用刚才准备好的工具链进行编译
打开include/configs文件夹,uboot支持的开发板都在里面。现在选一块开发板Cortex-A9x4 vexpress,在uboot和qemu下都得到支持,在configs文件夹下名称叫做vexpress_ca9x4.h。
make vexpress_ca9x4_config
make
生成u-boot文件。

2.3运行uboot

# qemu-system-arm -M vexpress-a9 -m 256M -nographic -kernel u-boot
pulseaudio: pa_context_connect() failed
pulseaudio: Reason: Connection refused
pulseaudio: Failed to initialize PA contextaudio: Could not init `pa' audio driver


U-Boot 2015.04 (Oct 27 2015 - 19:30:37)

DRAM:  256 MiB
WARNING: Caches not enabled
Flash: 256 MiB
MMC:   MMC: 0
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   smc911x-0
Warning: smc911x-0 using MAC address from net device

Hit any key to stop autoboot:  0 
Wrong Image Format for bootm command
ERROR: can't get kernel image!
VExpress# printenv
baudrate=38400
bootargs=root=/dev/sda1 rw console=ttyAMA0,38400n8 mem=1024M mtdparts=armflash:1M@0x800000(uboot),7M@0x1000000(kernel),24M@0x2000000(initrd) mmci.fmax=190000 devtmpfs.mount=0 vmalloc=256M
bootcmd=run bootflash;
bootdelay=2
bootflash=run flashargs; cp ${ramdisk_addr} ${ramdisk_addr_r} ${maxramdisk}; bootm ${kernel_addr} ${ramdisk_addr_r}
console=ttyAMA0,38400n8
dram=1024M
ethact=smc911x-0
ethaddr=52:54:00:12:34:56
flashargs=setenv bootargs root=${root} console=${console} mem=${dram} mtdparts=${mtd} mmci.fmax=190000 devtmpfs.mount=0  vmalloc=256M
kernel_addr=0x44100000
kernel_addr_r=0x80008000
loadaddr=0x80008000
maxramdisk=0x1800000
mtd=armflash:1M@0x800000(uboot),7M@0x1000000(kernel),24M@0x2000000(initrd)
pxefile_addr_r=0x88000000
ramdisk_addr=0x44800000
ramdisk_addr_r=0x61000000
root=/dev/sda1 rw
stderr=serial
stdin=serial
stdout=serial

Environment size: 910/262140 bytes

你可能感兴趣的:(ubuntu,qemu,ARM,交叉编译)