设为首页 加入收藏

TOP

使用QEMU模拟搭建ARM开发平台
2014-11-24 11:10:49 来源: 作者: 【 】 浏览:0
Tags:使用 QEMU 模拟 搭建 ARM 开发平台

0. 准备工作


安装需要的包,我的主机环境是debian squeeze/x86_64,首先需要安装交叉编译工具链,安装qemu模拟器,下载linux内核。


0.1. 安装交叉编译工具链


将下列源添加到/etc/apt/sources.list或在/etc/apt/sources.list.d/目录下新建一个文件debian-arm-toolchain.list。
#
# -- Emdebian cross toolchains
#
# deb http://www.emdebian.org/debian/ unstable main
# deb http://www.emdebian.org/debian/ testing main
deb http://www.emdebian.org/debian/ squeeze main
然后,执行
#apt-get update
#apt-get install gcc-4.4-arm-linux-gnueabi
安装工具链的方法可以参考 http://wiki.debian.org/


0.2. 安装qemu
#apt-get install qemu-system


0.3. 下载linux内核
我下载的是linux-2.6.39.2.tar.bz2。存放在$HOME/目录下。


1. 交叉编译Linux内核


$cd $HOME
$tar xjf linux-2.6.39.2.tar.bz2
$make mrproper #保证原始干净环境
$make ARCH=arm versatile_defconfig #使用versatile平台默认配置
$make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- all #编译
几分钟过后,arch/arm/boot/zImage即生成了,然后使用qemu模拟。之所以选择versatile平台,是因为qemu可以完全模拟。
$cp arch/arm/boot/zImage $HOME/versatile-zImage
$qemu-system-arm -M versatilepb -kernel versatile-zImage -m 128M
由于没有提供根文件系统,所以kernel会崩溃,由于找不到合适的root挂载项。下面制作一个最小的initramfs,使其可以正常运行。
$mkdir $HOME/versatile-initramfs
$cd $HOME/versatile-initramfs
$cat > init.c <> #include
> #include
> int main(void)
> {
> printf("hello arm\n");
> while(1);
> return 0;
> }
> EOF
然后,编译并且将其打包成initramfs。
$arm-linux-gnueabi-gcc -static -o init init.c
$rm init.c
$find . | cpio -o -H newc | gzip > ../versatile-initrd
$qemu-system-arm -M versatilepb -kernel versatile-zImage -initrd versatile-initrd -m 128M


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android异常解决方案记录 下一篇Android模拟 HTTP multipart/form..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·定义一个类模板并实 (2025-12-27 06:52:28)
·一文搞懂怎么用C语言 (2025-12-27 06:52:25)
·常用C模板范文_百度 (2025-12-27 06:52:21)
·【C语言】动态内存管 (2025-12-27 06:23:20)
·C语言中的内存管理 - (2025-12-27 06:23:16)