赞
踩
sudo apt install -y u-boot-tools
sudo apt install -y gcc-arm-linux-gnueabi
sudo apt install -y g++-arm-linux-gnueabi
#区别
gcc-arm-linux-gnueabi
gcc-arm-linux-gnueabihf
gcc-arm-none-eabi
arm-linux-gnueabi-gcc -v
arm-linux-gnueabi-gcc -o hello main.c
readelf -h hello
# For full system emulation
sudo apt install qemu-system
#For emulating Linux binaries
sudo apt install qemu-user-static
https://www.qemu.org/ https://wiki.qemu.org/Hosts/Linux git clone https://gitlab.com/qemu-project/qemu.git git checkout remotes/origin/stable-8.2 -b stable-8.2 sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev ninja-build sudo apt-get install git-email sudo apt-get install libaio-dev libbluetooth-dev libcapstone-dev libbrlapi-dev libbz2-dev sudo apt-get install libcap-ng-dev libcurl4-gnutls-dev libgtk-3-dev sudo apt-get install libibverbs-dev libjpeg8-dev libncurses5-dev libnuma-dev sudo apt-get install librbd-dev librdmacm-dev sudo apt-get install libsasl2-dev libsdl2-dev libseccomp-dev libsnappy-dev libssh-dev sudo apt-get install libvde-dev libvdeplug-dev libvte-2.91-dev libxen-dev liblzo2-dev sudo apt-get install valgrind xfslibs-dev sudo apt-get install libnfs-dev libiscsi-dev ./configure --target-list=arm-softmmu --audio-drv-list= make sudo make install
qemu-system-arm --version
#查看支持的开发板
qemu-system-arm -M help
#vexpress-a9
DDR
外围
DUI0448I_v2p_ca9_trm.pdf
CPU+DDR/SDRAM
FLASH/SD
串口+LCD
#-M vexpress-a : 指定具体开发板
#-m 512M : 指定内存大小
#-kernel ./zImage : 指定内核
#-dtb ./vexpress-v2p-ca9.dtb : 指定设备树
#-nographic : 不使用图像界面
#-append "console=ttyAMA0" : 指定串口控制台
qemu-system-arm -M vexpress-a9 -m 512M -kernel ./zImage -dtb ./vexpress-v2p-ca9.dtb -nographic -append "console=ttyAMA0"
https://www.kernel.org/
longterm
vim Makefile
ARCH ?= arm
CROSS_COMPILE ?=arm-linux-gnueabi-
make vexpress_defconfig
make zImage
make modules
make dtbs
对存储设备上的数据进行组织的机制
#1.下载源代码
https://busybox.net/
#2.修改Makefile
ARCH ?= arm
CROSS_COMPILE ?=arm-linux-gnueabi-
#3.配置
make defconfig
make menuconfig
Settings ---> [*] Build static binary (no shared libs)
#4.编译
make -j2
#5.安装
make install
#安装生成目录"_install"
mkdir rootfs cd rootfs/ mkdir lib cp -avf busybox-1.36.1/_install/* rootfs/ cp -avf /usr/arm-linux-gnueabi/lib/* rootfs/lib/ mkdir dev cd dev/ #mknod: 创建块或字符设备节点 #-m 666: 权限读写 #tty1: 节点名称 #c: 字符设备 #4: 主设备号 #1: 次设备号 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 sudo mknod -m 666 console c 5 1 sudo mknod -m 666 null c 1 3
#1.生成镜像
#bs: 缓冲区块的大小
#count: 块的个数
dd if=/dev/zero of=rootfs.ext3 bs=1M count=32
#2.格式化为ext3文件系统
mkfs.ext3 rootfs.ext3
#3.将各种文件copy到文件系统镜像中
sudo mount -t ext3 rootfs.ext3 /mnt -o loop
sudo cp -avf rootfs/* /mnt
sudo umount /mnt
#1.下载u-boot git clone https://gitee.com/naonano/u-boot.git git checkout --track origin/u-boot-2023.07.y #2.修改 Makefile ifeq ($(HOSTARCH),$(ARCH)) CROSS_COMPILE ?= endif CROSS_COMPILE ?=arm-linux-gnueabi- #3.修改 config.mk #ARCH := $(CONFIG_SYS_ARCH:"%"=%) ARCH := arm #4.配置 make vexpress_ca9x4_defconfig #5.编译 make -j2 #6.运行u-boot qemu-system-arm -M vexpress-a9 -m 512M -nographic -kernel ../test/u-boot/u-boot
参考:ubuntu 22.04 设置网桥 - netplan
#1.主机安装工具包
sudo apt install -y uml-utilities bridge-utils
#2.创建tun设备文件
ls -al /dev/net/tun
#3.编辑文件
sudo touch /etc/netplan/br0.yaml
#使用ipv4 dhcp
ipv4 dhcp:
network:
version: 2
ethernets:
enp0s8: #替换为实际网卡
dhcp4: false
dhcp6: false
bridges:
br0:
interfaces: [enp0s8] #替换为实际网卡
dhcp4: true
parameters:
stp: false
dhcp6: false
ipv4 静态分配:
network: version: 2 ethernets: enp0s8:#替换为实际网卡 dhcp4: false dhcp6: false bridges: br0: interfaces: [enp0s8] #替换为实际网卡 dhcp4: false addresses: [192.168.1.250/24] routes: - to: default via: 192.168.1.1 nameservers: addresses: [114.114.114.114] parameters: stp: false dhcp6: true
sudo netplan apply
ifconfig
br0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.1.25 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::3027:2dff:fe41:8595 prefixlen 64 scopeid 0x20<link> ether 32:27:2d:41:85:95 txqueuelen 1000 (Ethernet) RX packets 55 bytes 9272 (9.2 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 89 bytes 12062 (12.0 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.3 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::c8ff:ec6f:253e:ad4e prefixlen 64 scopeid 0x20<link> inet6 2409:8a1e:d52:a9b0:39df:8d80:83d3:9e prefixlen 64 scopeid 0x0<global> inet6 2409:8a1e:d52:a9b0:3292:9a45:5481:28ad prefixlen 64 scopeid 0x0<global> ether 08:00:27:05:ef:4f txqueuelen 1000 (Ethernet) RX packets 962 bytes 156528 (156.5 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 836 bytes 88212 (88.2 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 318 bytes 29095 (29.0 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 318 bytes 29095 (29.0 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#需要将内核编译为uImage格式
#需要指定uImage的加载地址
#编译时指定:
make LOADADDR=0x60003000 uImage -j2
#1.安装 sudo apt-get install -y tftpd-hpa tftp-hpa xinetd #2.配置ftp服务器工作目录为"/home/tftp" sudo vim /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/home/tftp" TFTP_ADDRESS=":69" TFTP_OPTIONS="-l -c -s" #3.建立目录 sudo mkdir -p /home/tftp sudo chown lei:lei /home/tftp chmod 777 -R /home/tftp #4.启动服务 sudo service tftpd-hpa restart #5.测试 #5.1测试下载 cd /home/tftp/ touch readme.txt #在readme.txt中输入一些内容 #运行开发板,进入控制台 tftp -g -r readme.txt 192.168.10.107 #可以看出在开发板当前目录下下载了readme.txt #5.2测试上传 #在开发板上,进入控制台运行命令 tftp -p -l uvc_app 192.168.10.107 #uvc_app为开发板当前目录下的文件 #在ubuntu上可以看到开发板上传上来的文件uvc_app
#1.复制u-boot镜像到tftp服务器目录下
cp /home/qemu/test/u-boot/u-boot /home/tftp/
#2.复制uImage镜像到tftp服务器目录下
cp /home/qemu/test/linux-6.6.18/arch/arm/boot/uImage /home/tftp/
#3.复制设备树二进制编译结果到tftp服务器目录下
cp /home/qemu/test/linux-6.6.18/arch/arm/boot/dts/arm/vexpress-v2p-ca9.dtb /home/tftp/
#4.uboot引导kernel启动
qemu-system-arm \
-M vexpress-a9 \
-m 512M \
-nographic \
-kernel /home/tftp/u-boot \
-net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
-sd /home/qemu/test/rootfs.ext3
u-boot/include/configs/vexpress_common.h
#define CONFIG_BOOTCOMMAND \
"tftp 0x60003000 uImage; tftp 0x60500000 vexpress-v2p-ca9.dtb; \
setenv bootargs 'root=/dev/mmcblk0 console=ttyAMA0'; \
bootm 0x60003000 - 0x60500000; "
#define CONFIG_IPADDR 192.168.244.128
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_SERVERIP 192.168.244.129
B站
QEMU系列文章: https://blog.csdn.net/phmatthaus/category_12072874.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。