目录:


获取环境

Ubuntu中安装相关环境:

apt-get install qemu libncurses5-dev gcc-arm-linux-gnueabi build-essential

获取kernel源码和busybox源码:
linux
busybox


编译固件

最小根文件系统

由于根文件系统制作过程比较繁琐,所以直接使用已经制作好了的,这个采用静态编译的方法制作,将解压出来的_install放到内核目录下面即可。
根文件系统

内核

进入内核目录下,对菜单进行配置:

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make vexpress_defconfig
make menuconfig

填入根文件系统名字:
这里写图片描述

清空string字段:
这里写图片描述

用户空间、内核空间比选为3:1,并选择高端内存选项:
这里写图片描述
编译内核:

make bzImage -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
make dtbs

启动qemu

这条命令比较长,建议写成脚本

qemu-system-arm -M vexpress-a9 -smp 4 -m 1024M -kernel arch/arm/boot/zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8"  -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic

效果:
这里写图片描述

挂载sd卡

dd if=/dev/zero of=sd.img bs=64 count=1M
mkfs.ext2 sd.img

qemu启动参数加上-sd sd.img即可。
内核挂载:

mount -t ext2 dev/mmcblk0 tmp
PS:建议在etc/init.d/rcS上加上这句,ramdisk内核需要重新编译一下

使用gdb

1.下载gdb,我选择7.8版本
gdb地址

2.安装gdb

tar xjf gdb-7.8.tar.gz
cd gdb-7.8/
./configure --target=arm-linux
make
make install

3.使用

进入内核目录运行qemu:

qemu-system-arm -s -S -M vexpress-a9 -smp 4 -m 1024M -kernel arch/arm/boot/zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8"  -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic

在另一个终端启动gdb

arm-linux-gdb --tui vmlinux
target remote localhost:1234
b start_kernel
c

这里写图片描述

gdb命令说明

b
c
n
s
p
bt
info registers
Logo

更多推荐