Closed 13584452567 closed 1 year ago
你知道的allwinner系列有几种常用的dd设置安排呢?
常用的u-boot方案有几个文件组合?一个spl文件这种是带用的方案?
现在的3列,可不可以放不同列代表不同dd方法?给allwinner的这3个列名按可辩识的命名改一下?
我知道的有两种文件排列,一种就是现在的u-boot-sunxi-with-spl.bin,另一种是sunxi-spl.bin和u-boot.itb(也可能是u-boot.bin)两个文件。 但是第一种我目前看到了好几种dd命令,有 dd if=u-boot-sunxi-with-spl.bin of=/dev/mmvblkX bs=1024 seek=8(香橙派,H3主控) dd if=u-boot-sunxi-with-spl.bin of=/dev/mmcblkX bs=8k seek=1(泰奇猫,H6主控) 第二种文件搭配方式有 dd if=sunxi-spl.bin of=/dev/mmcblkX bs=1024 seek=8 dd if=u-boot.bin of=/dev/mmcblkX bs=1024 seek=32(A13主控)
还看到有一种单文件使用的是u-boot.fex: dd if=u-boot.fex of=/dev/mmcblkX bs=1k seek=19096(A80主控) 可以参考这个官方的文档,貌似不同的芯片spl的载入地址都不太一样 https://linux-sunxi.org/BROM
感觉很难单靠文件名来执行,可能还需要在脚本内添加一个对于主控的判断来进行uboot的写入。
https://github.com/ophub/amlogic-s9xxx-armbian/commit/198e31b3d8cf68d60f9d905fb65913910d12280d
我把model_database.conf里的第5项改名为:BOOTABLE,由这个来区分使用哪个dd方法 seek8 : bs=1024 seek=8 seek1 : bs=1024 seek=1
如果 BOOTLOADER_IMG 和 MAINLINE_UBOOT 都添加了文件走2个dd的方法
bs=8k和bs=1024一样吗?我不是很清楚
哦,是我没反应过来。实际上H3和H6都是跳过8k,所以其实就和原先一样,用文件数量区分即可。
真抱歉,我刚找你的文件没了,又被覆盖了,晕倒,而且我把服务器的资源拉到本地,把我一上午修改的都覆盖了。 我的意思是设置一个参数如BOOTABLE,用他的值来区分走哪条dd语句。 你更正一下这个名字叫个什么好。
稍等我再更新一个错误,然后你再提交吧,我一会提交了回复你一下。
好的
我更新完了,你重新拉取提交下吧
看官方文档,对u-boot的介绍是1-2个文件,所以这3列, MAINLINE_UBOOT 和 BOOTLOADER_IMG 放u-boot文件,另外的列BOOTABLE用于区分用法。
model_database.conf里BOOTABLE 的 seek8和seek1是我暂时起的名字和赋予的值,是为了区分dd用哪个方法。 这个名字起的不好,变量名和赋值都不能代表本来的意思,你更新一下名称和赋值吧
翻阅了官方文档,对于SPL写入地址目前就3个,0x00000、 0x10000、 0x20000。 其中0x00000都是以前的主控,比如A10A20那些。比较特殊的,H3也是这个地址。可以命名为early(这样可能也不太好?这些都是32位的soc) 0x10000只看到A64是这样的,可以直接命名成A64。 比较新的主控比如H6,H616的SPL地址就是0x20000,可以直接命名为latest(或者aarch64)
有两个文件的话8KB处写入spl,40KB处写入u-boot proper。
全志对于SD卡和NAND的块大小设定貌似还不太一样,https://source.denx.de/u-boot/u-boot/-/commit/1f6f61fe4c7c9637e2c8b2960a08f106fbe01134 原话是:The size of the SPL must be a multiple of 8 KiB in NAND and a multiple of 512 bytes on the SD card
+---------------+---------------------+-----------------+--------------------------
:MODEL :SPL_LOAD_ADDRRESS :MAINLINE_UBOOT :BOOTLOADER_IMG
+---------------+---------------------+-----------------+--------------------------
:Vplus-Cloud :early : :u-boot-sunxi-with-spl.bin
:TQC-A01 :latest : :u-boot-sunxi-with-spl.bin
:xxx :NA :u-boot.bin :sunxi-spl.bin
+---------------+---------------------+-----------------+--------------------------
结合你的命名意见,你看看这么修改如何,这个参数叫 SPL_LOAD_ADDRESS
或者 SPL_ADDRRESS
,目前的2个盒子分别对应是 early
和 latest
,如果有2个的可以不赋值直接走2条dd命令。如果将来有 a64
使用单个u-boot文件的时候,使用这个备用选项。
很棒! 不过两个盒子虽然dd命令不一样,但是实际写入都是从8K开始写的,所以两个应该都是latest。 和官方文档里面一样写成SPL_LOAD_ADRESS吧
bs=8k seek=1 #读写8k大小,跳过1块,是跳过8k开始写入
bs=1024 seek=8 #读写1k大小,跳过8块,也是跳过8k开始写入
这2个dd命令的结果有什么区别?我晕了
应该没什么区别,我一开始也没反应过来。就结果来说都是把uboot写入到8KB处
dd --help
Usage: dd [OPERAND]...
or: dd OPTION
Copy a file, converting and formatting according to the operands.
bs=BYTES read and write up to BYTES bytes at a time (default: 512);
overrides ibs and obs
cbs=BYTES convert BYTES bytes at a time
conv=CONVS convert the file as per the comma separated symbol list
count=N copy only N input blocks
ibs=BYTES read up to BYTES bytes at a time (default: 512)
if=FILE read from FILE instead of stdin
iflag=FLAGS read as per the comma separated symbol list
obs=BYTES write BYTES bytes at a time (default: 512)
of=FILE write to FILE instead of stdout
oflag=FLAGS write as per the comma separated symbol list
seek=N skip N obs-sized blocks at start of output
skip=N skip N ibs-sized blocks at start of input
status=LEVEL The LEVEL of information to print to stderr;
'none' suppresses everything but error messages,
'noxfer' suppresses the final transfer statistics,
'progress' shows periodic transfer statistics
N and BYTES may be followed by the following multiplicative suffixes:
c=1, w=2, b=512, kB=1000, K=1024, MB=1000*1000, M=1024*1024, xM=M,
GB=1000*1000*1000, G=1024*1024*1024, and so on for T, P, E, Z, Y.
Binary prefixes can be used, too: KiB=K, MiB=M, and so on.
看文档是一样的,结果是等价的: 读取写入大小 * 块数 = 乘积 那不用判断了
我想为仓库添加泰奇猫的支持,但是它的uboot写入方式和现有的貌似不太兼容?下面是uboot的烧写命令 sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/mmcblkX bs=8k seek=1 和rebuild里面的不太一样。