【Ubuntu20-荔枝派Zero】-Uboot开发
虚拟机(VMware 16 Pro)安装Ubuntu20环境省略
安装荔枝派Docker环境
sudo apt-get install docker.io
//docker version 查看是否安装成功
sudo groupadd docker 添加docker用户组
sudo gpasswd -a username docker // username 是你的用户名 , 将登录用户添加到docker用户组中
newgrp docker 更新docker用户组
docker pull zepan/licheepi
docker run -d -p 6666:22 zepan/licheepi /usr/sbin/sshd -D
- 这样就安装并开启的容器ssh服务,只需连接主机的6666端口,以root用户,licheepi密码登录即可进行开发操作。
- docker下各文件默认存放在/var/lib/docker下
Uboot编译
cd u-boot //进入docker环境中的uboot源码目录
// arm-linux-gnueabihf-gcc -v 查看交叉编译环境
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_480x272LCD_defconfig 使用通用480*272屏幕
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_800x480LCD_defconfig 使用通用800*480屏幕
time make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 2>&1 | tee build.log 编译
- 在当前目录下就生成了待烧录的uboot文件,名字为u-boot-sunxi-with-spl.bin
- 可使用date命令查看当前时间,使用ls -all命令查看所有文件的创建时间,找到最新生成的uboot bin文件即可
Uboot烧录
使用usb转串口线,连接串口,默认配置为uart0 ,速率为115200(左数第三和第四脚)
全志FEL模式
1. TF卡和 spi flash 同时没有可启动镜像
即不插卡,且焊接的是新的或者没有有效镜像的spi flash,上电就会自动进入fel下载模式。
2. TF卡中有进入fel模式的特殊固件 fel-sdboot.sunxi
如果spi flash已经有了启动镜像,那么需要在TF卡中烧入一个sunxi提供的 启动工具 , 那么插入该TF卡启动会进入fel模式;
命令:dd if=fel-sdboot.sunxi of=/dev/mmcblk0 bs=1024 seek=8
PS:上述命令是因为uboot按照规定需要放在SD卡的8K字节偏移处才能被找到启动
3. 上电时SPI_MISO拉低到地
该引脚为boot引脚,上电时如果为低电平即会进入fel下载模式。
虚拟机编译安装-全志Fel-tools烧写工具
参考 https://blog.csdn.net/p1279030826/article/details/112719638
git clone https://github.com/Icenowy/sunxi-tools.git
//git clone -b 分支名称 项目地址
注意:如果要烧录到 spi-flash ,sunxi-tools 要切换到 spi-rebase 分支,并且spi flash需要确认已焊接上去。
// sudo apt-get install pkg-config pkgconf zlib1g-dev libusb-1.0-0-dev
注意:Ubuntu20.04会提示pkgconf和现有版本冲突,不安装即可,即换为下面命令,如果没安装过pkgconf 可以用上面的命令
sudo apt-get install pkg-config zlib1g-dev libusb-1.0-0-dev
make
sudo make install //这样在命令敲入sunxi按Tab键能够自动补全就说明安装好了
- 因为我们使用的是SPI FLASH测试uboot,所以选择第三种烧录方式,在上电前将SPI_MISO拉低到地就会进入FEL模式了。
- usb连接芯片后,在VMware中勾选相应USB设备映射到虚拟机
sudo sunxi-fel ver //虚拟机中使用(注意不能在docke中直接使用,因为USB设备是映射到虚拟机里,而没有映射到docker中)此命令查看芯片是否进入了FEL模式
//识别到芯片会显示
AWUSBFEX soc=00001681(unknown) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000
//未识别会显示
ERROR: Allwinner USB FEL device not found!
从docker中拷贝uboot到虚拟机中
docker ps //查看docker ID
形如:f483bd2ab207 zepan/licheepi "/usr/sbin/sshd -D" 2 hours ago Up 2 hours
其中f483bd2ab207 即是docker ID,我们取前四位f483即可正常使用
docker cp f483:/root/u-boot/u-boot-sunxi-with-spl.bin ./u-boot-sunxi-with-spl.bin //从docker中拷贝到虚拟机当前目录下
烧录uboot
- 烧到RAM中,重启后丢失,测试使用
sudo sunxi-fel uboot u-boot-sunxi-with-spl.bin
//或者执行烧录地址
sudo sunxi-fel -p write 0x40000000 u-boot-sunxi-with-spl.bin
sudo sunxi-fel exec 0x40000000
- 烧到SPI FLASH中,重启后永久生效
注意:如果要烧录到 spi-flash ,sunxi-tools 要切换到 spi-rebase 分支,并且spi flash需要确认已焊接上去。
sudo sunxi-fel -p spiflash-write 0 u-boot-sunxi-with-spl.bin
100% [================================================] 414 kB, 76.8 kB/s
即可重新上电启动