标签:into 空格 执行 文章 span 方式 store dtb 说明
Flash支持jffs2文件系统格式,所以需要使用此该rootfs制作jffs2文件系统镜像。
//使用工具 sudo apt-get install mtd-utils
操作步骤
mkdir rootfs //创建目录 sudo tar xzvf rootfs-brmin.tar.gz -C rootfs //解压文件 sudo mkfs.jffs2 -s 0x100 -e 0x10000 -p 0xAF0000 -d rootfs/ -o jffs2.img //把rootfs文件夹内的文件系统制作成jffs2.img镜像 #如果使用32M的flash mx25l25635,则需要做一些修改【-p 的文件大小多16M】: sudo mkfs.jffs2 -s 0x100 -e 0x10000 -p 0x1AF0000 -d rootfs/ -o jffs2.img
最后将uboot,dtb,kernel,rootfs打包成一个系统镜像,命令如下:
dd if=/dev/zero of=flashimg.bin bs=16M count=1 dd if=u-boot/u-boot-sunxi-with-spl.bin of=flashimg.bin bs=1K conv=notrunc dd if=linux-zero-4.13.y/arch/arm/boot/dts/sun8i-v3s-licheepi-zero-dock.dtb of=flashimg.bin bs=1K seek=1024 conv=notrunc dd if=linux-zero-4.13.y/arch/arm/boot/zImage of=flashimg.bin bs=1K seek=1088 conv=notrunc dd if=jffs2.img of=flashimg.bin bs=1K seek=5184 conv=notrunc
dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2 参数注释: 1. if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file > 2. of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file > 3. ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。 obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。 bs=bytes:同时设置读入/输出的块大小为bytes个字节。 4. cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。 5. skip=blocks:从输入文件开头跳过blocks个块后再开始复制。 6. seek=blocks:从输出文件开头跳过blocks个块后再开始复制。 注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。 7. count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。 8. conv=conversion:用指定的参数转换文件。 ascii:转换ebcdic为ascii ebcdic:转换ascii为ebcdic ibm:转换ascii为alternate ebcdic block:把每一行转换为长度为cbs,不足部分用空格填充 unblock:使每一行的长度都为cbs,不足部分用空格填充 lcase:把大写字符转换为小写字符 ucase:把小写字符转换为大写字符 swab:交换输入的每对字节 noerror:出错时不停止 notrunc:不截短输出文件 sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
地址:https://www.cnblogs.com/senior-engineer/p/6211247.html
第一步:生成一个空文件,大小是16MB
第二步:将uboot添加到文件开头
第三步:将dtb放到1M偏移处
第四步:将kernel放到1M+64K偏移处
第五步:将rootfs放到1M+64K+4M偏移处
偏移大小是seek,单位是KB。
执行完毕后生成镜像文件flashimg.bin
一键生成镜像文件参考:https://blog.csdn.net/qq_40860568/article/details/100153681
下载sunxiflash烧写工具,安装与下载参考:https://blog.csdn.net/qq_40860568/article/details/100519832
进入fel模式
Zero有一个usb下载模式称为fel模式,进入fel模式有下面几种方式:
1:TF卡和spi flash 同时没有可启动镜像:也就是说你不插SD卡,且焊接的是新的或者没有有效镜像的spi flash,那就上电自动进入fel下载模式
:2:SD卡中有进入fel模式的特殊固件 fel-sdboot.sunxi :如果你的spiflash已经有了启动镜像,那么需要在TF卡中烧入一个sunxi提供的启动工具(dd if=fel-sdboot.sunxi of=/dev/mmcblk0 bs=1024 seek=8),那么插入该TF卡启动会进入fel模式;
3:上电时SPI_MISO拉低到GND,通常使用此方法最为方便。该引脚为boot引脚,上电时出于低电平即会进入fel下载模式。
sunxi-fel的操作
进入fel模式后使用usb数据线连接pc和zero,即可进行操作。
sudo sunxi-fel version #查看连接的cpu信息 AWUSBFEX soc=00001681(V3s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000
sudo sunxi-fel spiflash-info #显示flash信息 Manufacturer: Unknown (C2h), model: 20h, size: 33554432 bytes.
sudo sunxi-fel -p spiflash-write 0 flashimg.bin # -p 显示进度条 # spiflash-info 显示flash信息 Retrieves basic information # spiflash-hex[dump] addr length 读 Dumps SPI flash region in hex # spiflash-read addr length file 写 Write SPI flash contents into file # spiflash-write addr file 写 Store file contents into SPI flash
在unbuntu下面批量输入命令操作
当我们对这些命令的使用率较高,而且这些命令又是顺序执行的时候,就不妨写个脚本,一键执行。
在开发全志V3s时,就需要制作系统镜像,每次复制粘贴真是及其麻烦。
不多说,直接上代码:
首先创建sh文件:gedit makeimg.sh
打开makeimg.sh编辑窗口后,粘贴下面代码:
#!/bin/bash dd if=/dev/zero of=flashimg.bin bs=32M count=1 && dd if=u-boot/u-boot-sunxi-with-spl.bin of=flashimg.bin bs=1K conv=notrunc && dd if=linux/arch/arm/boot/dts/sun8i-v3s-licheepi-zero-dock.dtb of=flashimg.bin bs=1K seek=1024 conv=notrunc && dd if=linux/arch/arm/boot/zImage of=flashimg.bin bs=1K seek=1088 conv=notrunc && dd if=jffs2.img of=flashimg.bin bs=1K seek=5184 conv=notrunc 说明:第一行是脚本声明,下面就是你想要执行的命令,可以根据需要换成自己的命令,不过千万注意,每个命令后,记得加个“&&”,作用就是区分相邻的命令和使命令顺序执行。 ———————————————— 版权声明:本文为CSDN博主「@技术小白」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_40860568/article/details/100153681
标签:into 空格 执行 文章 span 方式 store dtb 说明
原文地址:https://www.cnblogs.com/icaowu/p/13167627.html