青与鱼博客

@青与鱼

February 19th 2019 / 玩玩编程

qemu开发嵌入式linux (一)

嵌入式linux开发板真贵。。。。
外围设备gpio iic uart等用其它的板子玩过,这里就单纯的学学linux吧,所以我用qume来虚拟一个ARM开发板。
首先需要搭建一个开发环境

**PC系统:Windows7
虚拟机:VM
虚拟机系统:ubuntu
模拟的开发板:vexpress**

安装交叉编译工具
sudo apt install gcc-arm-linux-gnueabi


安装qemu工具
sudo apt install qemu

查看qemu支持的开发板
qemu-system-arm -M help

解压下载来的linux内核
tar -xvf linux-4.9.9.tar.xz

编译内核
make vexpress_defconfig
make zImage -j4
make modules -j4    // 编译驱动模块
make dtbs

启动qemu
qemu-system-arm -M vexpress-a9 -m 512M -kernel linux-4.9.9/arch/arm/boot/zImage -dtb linux-4.9.9/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "console=ttyAMA0"

vexpress-a9 开发板
512M  内存大小
linux-4.9.9/arch/arm/boot/zImage 编译得到的文件,路径自己确认一下
linux-4.9.9/arch/arm/boot/dts/vexpress-v2p-ca9.dtb 编译得到的文件

启动效果图

启动报错:

因为没有挂载根文件系统,我们接下来就要制作文件系统了

首先下载busybox源码

修改makefile
ARCH = arm
CROSS_COMPILE = arm-linux-gnueabi-

配置
 make menuconfig
Settings  --->
    Build Options  --->
        [ ] Build static binary (no shared libs)

编译安装
 make
 make install

生成rootfs的目录
mkdir rootfs
 cp /busybox/_install/* rootfs/ -rfd

添加文件夹和文件
mkdir rootfs/lib
cp /usr/arm-linux-gnueabi/lib/* rootfs/lib/ -rfp

创建设备文件,可能需要root权限
mkdir rootfs/dev
cd rootfs/dev
mknod -m 666 tty1 c 4 1
 mknod -m 666 tty2 c 4 2
 mknod -m 666 tty3 c 4 3
mknod -m 666 tty4 c 4 4
mknod -m 666 console c 5 1
mknod -m 666 null c 1 3

生成SD卡文件
dd if=/dev/zero of=rootfs.ext3 bs=1M count=32

格式化SD卡
mkfs.ext3 rootfs.ext3

将文件烧写到SD卡
sudo mount -t ext3 rootfs.ext3 /mnt -o loop
sudo cp -rf rootfs/* /mnt/
sudo umount /mnt

启动QEMU
qemu-system-arm -M vexpress-a9 -m 512M -kernel ~/桌面/zImage -dtb ~/桌面/vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0 rw console=ttyAMA0" -sd rootfs.ext3  路径什么的自己改

到这里就差不多了,启动的时候会有个文件缺失警告,自己创建一个这样的文件就行

启动uboot也类似
qemu-system-arm -M vexpress-a9 -m 256M -nographic -kernel u-boot

发表评论
已登录为 [退出]


皖ICP备16001584号-2
x
皖ICP备16001584号-2