一、Linux下SD卡设备
示例:插上读卡器,在linux下找到sd卡及读卡器设备:
root@wsl-VirtualBox:~# cat /proc/partitions
SD卡的设备文件节点是:/dev/sdb
二、删除sd卡分区
root@wsl-VirtualBox:~# sudo fdisk /dev/sdb
输入:d, 删除所有分区:
三、给sd卡进行分区
安装gparted 工具:
root@wsl-VirtualBox:~# sudo apt-get install gparted
弹出页面:
选择"分区"–>“新建”,“之前的空余空间”–>选择"256MB" —>“文件系统”–>选择"fat32"—>“添加”—>“对号”–>保存。
#sudo gparted /dev/sdb
使用gparted 工具分区,预留256MB给uboot映像。
四、烧写uboot
将之前编译出来的 uboo.bin t烧写到SD卡:
root@wsl-VirtualBox:/home/Tmp/6818GEC/out/release# ./GEC6818-sdmmc.sh /dev/sdb GECuboot.bin
五、拷贝映像文件到sd卡
进入SD卡挂载的目录:
wsl@wsl-VirtualBox:/$ cd media/wsl/5305-7F9C/
在SD中创建GEC6818-qt目录,GEC6818-qt目录用于存放将要恢复的映像文件:
wsl@wsl-VirtualBox:/media/wsl/5305-7F9C$ mkdir GEC6818-qt
将之前内核编译阶段输出的映像文件拷贝到GEC6818-qt目录,GEC6818-qt目录下放如下文件:
GECuboot.bin boot.img qt-rootfs.img env.txt
wsl@wsl-VirtualBox:/media/wsl/5305-7F9C$ cp /home/Tmp/6818GEC/out/release/* ./GEC6818-qt/
env.txt文件内容:
板子启动
4、将 SD 卡插到开发板的 SD0 卡槽,打开开发板电源,这时系统将会自动升级。等待数秒 后,开发板会自动进行烧写。烧写完毕将会自动重启,进入 Linux 系统。
**说明:**默认 uboot 会自动判断 SD 卡的 gec-Linux 目录中的映像文件是否有更新,一旦发现 映像和烧写到开发板上的不同,则会自动更新映像,否则不会再次更新;如果需要强制进入升 级模式,开机上电时按住返回键(K2,调试串口中会打印 force update)即可重新进入 SD 卡 烧写模式,开始自动烧写。
问题:但是按照上面操作后发现还是无法进入SD卡烧写模式;
解决:经检查后发现前面拷贝映像文件到SD卡的GEC6818-qt目录下少了个根文件文件系统的映像(qt-rootfs.img),因此在将其拷入即可。
烧录过程:
## Booting
Update key pressed, Force update
DONE: Logo bmp 311 by 300 (3bpp), len=280854
DRAW: 0x47000000 -> 0x46000000
Read 333792 (0x000517e0) bytes
Flash : ubootpak
head boot dev = 2
update mmc.2 type 2ndboot = 0x200(0x1) ~ 0x517e0(0x28c): Done
Flash : ubootpak - DONE ------------》 烧写 uboot 映像完成
Read 17252584 (0x010740e8) bytes
Flash : boot
Flash : boot - DONE ------------》 烧写 boot(inux内核的映像) 完成
Read 367001600 (0x15e00000) bytes
Flash : system
write image to 0x4100000(0x20800), 0x15e00000(0x20800)
Flash : system - DONE ------------》 烧写 system 完成
Writing to MMC(2)... done
bootcmd=ext4load mmc 2:1 0x48000000 uImage;bootm 0x48000000
Writing to MMC(2)... done
bootargs=lcd=at070tn92 tp=ft5x06-linux root=/dev/mmcblk0p2 rw rootfstype=ext4 cam=OV5645
Writing to MMC(2)... done
DONE: Logo bmp 300 by 300 (3bpp), len=270056
DRAW: 0x47000000 -> 0x46000000
resetting ... ------------------》重启uboot
查看版本确认成功烧录:
#uboot模式下:
GEC6818# version
U-Boot 2014.07 (Apr 27 2021 - 23:30:49)
arm-eabi-gcc (GCC) 4.8
GNU ld (GNU Binutils) 2.23.2
#Linux 下:
[root@GEC6818 /]#uname -a
Linux GEC6818 3.4.39-gec #4 SMP PREEMPT Sat May 1 18:59:47 CST 2021 armv7l GNU/Linux