IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> qemu vexpress -> 正文阅读

[嵌入式]qemu vexpress

uboot

版本:u-boot-2018.09

1、生成配置文件,
make ARCH=arm vexpress_ca9x4_defconfig

2、图形配置

make menuconfig

3、编译Uboot
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4

4、qemu启动uboot
qemu-system-arm -M vexpress-a9 -cpu cortex-a9 -m 256 -kernel u-boot --nographic

5、退出QEMU组合键 ctrl+a,然后按x

参考 https://blog.csdn.net/jqh_111/article/details/83720406

交叉编译器 4.5.1

kernel

版本:linux-4.4.157

配置

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

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig -j4 O=./object

全编译

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4 O=./object

部分编译

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules //编译驱动模块

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs // 编译设备树

nfs启动uImage:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- LOADADDR=0x60003000 uImage -j4 O=./object

busybox

版本:busybox-1.31.1

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- install

mkdir rootfs
cp share/busybox-1.31.1/_install/* rootfs/ -rfd

mkdir rootfs/lib
cp /usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/lib/* rootfs/lib/ -rfp

cd /usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/arm-linux-gnueabi/libc/lib
cp so *.a /home/peich/nfsroot/rootfs/lib/ -d

mkdir ~/nfsroot/rootfs/usr/lib/
cd /usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/arm-linux-gnueabi/lib
cp so *.a /home/peich/nfsroot/rootfs/usr/lib/ -d

mkdir rootfs/dev
cd rootfs/dev

//创建4该个串口节点

sudo mknod -m 666 tty1 c 4 1
sudo mknod -m 666 tty2 c 4 2
sudo mknod -m 666 tty3 c 4 3
sudo mknod -m 666 tty4 c 4 4

mknod -m 666 tty1 c 4 1命令中
mknod表示创建结点
-m设置权限为666
tty表示串口
c表示字符设备
4表示主设备号,1表示次设备号

//创建工作台节点

sudo mknod -m 666 console c 5 1

//创建null节点

sudo mknod -m 666 null c 1 3

模拟sd卡启动

cd ~

  1. 生成跟文件系统镜像 rootfs.ext3。bs表示缓冲区大小,count表示块大小。直接把rootfs.ext3看成一张SD卡
dd if=/dev/zero of=rootfs.ext3 bs=1M count=64
  1. 格式化rootfs.ext3
mkfs.ext3 rootfs.ext3
  1. 将各种文件拷贝到文件系统镜像中

需要注意的是,块设备是不能直接读写的,需要挂载到目录,然后对目录进行相应的操作

? a. sudo mount -t ext3 rootfs.ext3 /mnt -o loop

mount [-fnrsvw] [-t vfstype] [-o options] device dir

-t ext3表示文件系统是ext3格式

其中 -o loop 使用loop模式用来将一个档案当成硬盘分割挂上系统。

? b. 挂载完毕,输入ls /mnt查看SD卡内容(空的)

? c. 拷贝文件到SD卡中 sudo cp -rf rootfs/* /mnt/

? d. 卸载SD卡sudo umount /mnt

启动内核:

无UI

qemu-system-arm -M vexpress-a9 -cpu cortex-a9 -m 256 -kernel ~/share/linux-4.4.157/object/arch/arm/boot/zImage -dtb ~/share/linux-4.4.157/object/arch/arm/boot/dts/vexpress-v2p-ca9.dtb --nographic -append “root=/dev/mmcblk0 rw console=ttyAMA0” -sd rootfs.ext3

有UI

qemu-system-arm -M vexpress-a9 -cpu cortex-a9 -m 256 -kernel ~/share/linux-4.4.157/object/arch/arm/boot/zImage -dtb ~/share/linux-4.4.157/object/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -append “root=/dev/mmcblk0 rw console=tty0” -sd rootfs.ext3

参考:

https://blog.csdn.net/ReCclay/article/details/102319392

https://blog.csdn.net/u013738338/article/details/82961049

nfs挂载rootfs

  1. 启动uboot,ping通ubuntu以后,手动传入kernel,dtb,逐渐挂载启动文件系统

cd share/u-boot-2018.09/
sudo qemu-system-arm -M vexpress-a9 -kernel u-boot -nographic -m 512M -net nic,vlan=0 -net tap,vlan=0,ifname=tap0

  1. 设置ip

setenv ipaddr 192.168.1.65
setenv serverip 192.168.1.63
ping 192.168.1.63

请添加图片描述

  1. tftp下载uImage与dtb

tftp 0x60003000 uImage

或者 tftp 0x60003000 zImage

将下载到内存中的数据与原来的uImage进行比对:

? qemu模拟的开发板uboot:md 0x60003000

请添加图片描述

? 本机ubuntu:hexdump -C uImage | less

请添加图片描述

可以看出字节序相反,因为arm默认内存是小端模式

tftp 0x60500000 vexpress-v2p-ca9.dtb

  1. 设置启动参数

setenv bootargs ‘root=/dev/nfs rw nfsroot=192.168.1.63:/home/peich/nfsroot/rootfs,v3 init=/linuxrc ip=192.168.1.65 console=ttyAMA0’

  1. 启动运行

bootm 0x60003000 - 0x60500000

bootz 0x60003000 - 0x60500000

? 其中bootm、bootz的命令格式

? bootm [addr [initrd[:size]] [fdt]]

? bootz [addr [initrd[:size]] [fdt]]

? 命令 bootm、bootz 有三个参数, addr 是 Linux 镜像文件在 DRAM 中的位置, initrd 是 initrd 文件在DRAM 中的地址,如果不使用 initrd 的话使用‘-’代替即可, fdt 就是设备树文件在 DRAM 中的地址。

参考:https://blog.csdn.net/u010344264/article/details/82949143

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-16 11:54:30  更:2021-08-16 11:55:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:48:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码