虚拟机中模拟uboot启动
8.虚拟机中调试uboot
嵌入式系统要正常运行,应该包含:u-boot、kernel、rootfs、appfs。这几部分在ARM开发板Flash上的位置关系应该类似于下图所示:
1. make环境
[email protected]:~/share/u-boot-2018.09$ sudo apt-get install bison
[email protected]:~/share/u-boot-2018.09$ sudo apt-get install flex
2. 生成配置文件
[email protected]:/home/alpha/share/u-boot-2019.10-rc2# make vexpress_ca9x4_defconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
#
# configuration written to .config
#
这种方式编译比较直接,但是在调试时,需要多次编译u-boot,参数太多会带来不便,于是可以通过以下方法,修改Makefile和config.mk文件中的ARCH和CROSS_COMPILE选项,在编译的时候就可以省去了在编译命令中添加编译配置的设置。
3. 编译uboot
make -j6 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
4. uboot启动脚本
5. 启动后效果
9.uboot 与kernel结合在一起
1. 编译内核文件
[email protected]:/home/alpha/share/linux-4.4.157# cp mkimage /usr/bin/
[email protected]:/home/alpha/share/linux-4.4.157# make LOADADDR=0x60003000 uImage -j4
2. uboot启动过程中从主机获取内核版本
Qemu虚拟机在u-boot启动时,需要将uImage加载到内存,而uImage从哪里来?可以通过TFTP服务器下载uImage到内存指定地址。而在这之前需要通过桥接方式将网络链接到Xubuntu系统。
1. 配置Qemu与主机的网络连接
采用桥接网络连接Host主机通信
主机内核需要支持tun/tap模块
配置Xubuntu主机
2. 安装桥接网络依赖的两个工具:
[email protected]:/home/alpha/share/qemu# apt install uml-utilities bridge-utils
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
3.手动创建下面目录
修改/etc/network/interfaces文件配置网络
3. 重启系统,使配置生效
添加qemu有关系统脚本
在/etc/qemu-ifdown文件中添加以下内容
给上面的脚本添加执行权限
重启网络使生效
4.查看Qemu的网络环境
经过上面配置后,ssh客户端以及虚拟机内部都可以上网
虚拟网口br0即Qemu虚拟机与Linux主机通讯的网口
3. 安装TFTP服务器
创建TFTP服务器,用来给Qemu模拟开发板启动uImage时,下载uImage到内存中。
1) 安装Linux主机Host的TFTP服务器工具:
[email protected]:/home/alpha# sudo apt install tftp-hpa tftpd-hpa xinetd
2) 修改配置文件,设置TFTP服务器目录:
3) Linux主机上创建tftp目录:
4) 重启tftp服务:
4. 设置u-boot中的内核启动参数
此处文件系统为
注意修改ftfp的路径
5. 启动效果图: