虚拟机中模拟uboot启动

8.虚拟机中调试uboot

嵌入式系统要正常运行,应该包含:u-boot、kernel、rootfs、appfs。这几部分在ARM开发板Flash上的位置关系应该类似于下图所示:

1. make环境

alpha@ubuntu:~/share/u-boot-2018.09$ sudo apt-get install bison

alpha@ubuntu:~/share/u-boot-2018.09$ sudo apt-get install flex

2. 生成配置文件

root@ubuntu:/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启动脚本

虚拟机中模拟uboot启动_第1张图片

5. 启动后效果

虚拟机中模拟uboot启动_第2张图片

9.uboot 与kernel结合在一起

1. 编译内核文件

root@ubuntu:/home/alpha/share/linux-4.4.157# cp mkimage /usr/bin/

root@ubuntu:/home/alpha/share/linux-4.4.157# make LOADADDR=0x60003000 uImage -j4

虚拟机中模拟uboot启动_第3张图片

2. uboot启动过程中从主机获取内核版本

Qemu虚拟机在u-boot启动时,需要将uImage加载到内存,而uImage从哪里来?可以通过TFTP服务器下载uImage到内存指定地址。而在这之前需要通过桥接方式将网络链接到Xubuntu系统。

1. 配置Qemu与主机的网络连接

采用桥接网络连接Host主机通信
主机内核需要支持tun/tap模块

配置Xubuntu主机

2. 安装桥接网络依赖的两个工具:

root@ubuntu:/home/alpha/share/qemu#  apt install uml-utilities bridge-utils

Reading package lists... Done

Building dependency tree      

Reading state information... Done

Suggested packages:

3.手动创建下面目录

虚拟机中模拟uboot启动_第4张图片

修改/etc/network/interfaces文件配置网络

虚拟机中模拟uboot启动_第5张图片

3. 重启系统,使配置生效

添加qemu有关系统脚本

虚拟机中模拟uboot启动_第6张图片

在/etc/qemu-ifdown文件中添加以下内容

虚拟机中模拟uboot启动_第7张图片

给上面的脚本添加执行权限

重启网络使生效

4.查看Qemu的网络环境

虚拟机中模拟uboot启动_第8张图片

经过上面配置后,ssh客户端以及虚拟机内部都可以上网

虚拟网口br0即Qemu虚拟机与Linux主机通讯的网口

3. 安装TFTP服务器

创建TFTP服务器,用来给Qemu模拟开发板启动uImage时,下载uImage到内存中。

1) 安装Linux主机Host的TFTP服务器工具:

root@ubuntu:/home/alpha# sudo apt install tftp-hpa tftpd-hpa xinetd

2) 修改配置文件,设置TFTP服务器目录:

虚拟机中模拟uboot启动_第9张图片

3) Linux主机上创建tftp目录:

4) 重启tftp服务:

4. 设置u-boot中的内核启动参数

虚拟机中模拟uboot启动_第10张图片

此处文件系统为

注意修改ftfp的路径

5. 启动效果图:

虚拟机中模拟uboot启动_第11张图片

 

你可能感兴趣的:(uboot学习)