主题 : TINY4412 UBOOT中的E4412_N.bl1.bin的问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 104546
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
贡献值: 0 点
综合积分: 6 分
注册时间: 2014-05-28
最后登录: 2014-06-18
楼主  发表于: 2014-05-29 09:32

 TINY4412 UBOOT中的E4412_N.bl1.bin的问题

这几天做BOOT程序,搞了两天,根本就跑不起来.BL1已经下载到IRAM中,但不知道BL1为什么没有跑起来(BL2.BIN似乎没有下载到IRAM中). SAMSUNG的E4412_N.BL1.BIN真的能用吗?把SUPERBOOT.BIN复制到SD卡的第一扇区(按C语言习惯)(开发板资料上说是第一分区,这个是笔误吧?),依然跑不起来.比较了SUPERBOOT.BIN的前8K字节,和E4412_N.BL1.BIN的完全相同(大致可以确定SUPERBOOT.BIN就是把E4412_N.BL1.BIN,BL2.BIN和UBOOT组合起来). 现在根本就无法确定是E4412_N.BL1.BIN的问题还是BL2的问题。BL2是UBOOT的前14K字节还是16K字节?(那个MKBL2程序是按14K字节的和作为校验码,按组合的方法,见sd_fusing.sh,那么需要对BL2。BIN进行PADDING到16K字节。不过这个如果没有特别的地方,则不会影响启动)。真不知道为什么SAMSUNG要搞这个(BL1的主要目的是保证SAMSUNG的硬件不使用别的软件?BL2的目的是克服UBOOT大于256K的限制),本来很简单的一个事情被搞的没办法做下去,请高手提示一二,不胜感谢。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2014-06-02 22:15
E4412_N.BL1.BIN在Tiny4412上是没有问题的,友善之臂提供的uboot用的就是这个BL1。从mkbl2这个程序来看,BL2就是uboot.bin的前14K - 4字节。这个BL1应该是数字签名过的,用来确保在Tiny4412上只能使用这个BL1。BL2的作用是就像你说的,为了突破iRAM的大小的限制。
对于你的问题,我想
1. 你需要注意BL2的保存位置,因为这是BL1决定的,参考sd_fusing.sh中的设置,它需要保存在第17 sector.
2. 如果BL2的保存位置是正确的,你可以在BL2的入口代码中加入一些调试代码,比如通过控制LED来确定BL2跑到什么位置了。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 104546
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
贡献值: 0 点
综合积分: 6 分
注册时间: 2014-05-28
最后登录: 2014-06-18
2楼  发表于: 2014-06-09 08:43

 回 1楼(kasim) 的帖子

看到BL1下载到内存中,下载完后按理说BL1会把BL2下载到内存中(必须的,或者BL1中声明了个14K的局部变量),但似乎根本就没有看到BL1把BL2下载到内存中,在汇编下调试了BL1的运行,发现BL1在失败的时候总是和存储器上有没有BL2一样直接跳转到特定位置(如果BL2下载到局部变量中,则很可能这个过程就覆盖了BL2的代码)。
三星的做法应该是:1)把BL2下载到RAM中,2)校验BL2是否正确,若不正确,跳转到一特定位置
但实际上看不到这样的过程。BL2的保存位置是哪个地方,请告知。不胜感谢
风雨飘零叶黄昏
级别: 新手上路
UID: 102236
精华: 0
发帖: 32
金钱: 160 两
威望: 32 点
贡献值: 0 点
综合积分: 64 分
注册时间: 2014-03-27
最后登录: 2015-09-10
3楼  发表于: 2014-06-24 09:12
版主,
1、Superboot用的是不是E4412_N.BL1.BIN这个内容?
2、如果分别从sd或emmc启动 是不是bl1也要不同呢?
3、emmc启动时bl1应该是存在哪个位置的,0扇区0地址吗?
级别: 新手上路
UID: 119413
精华: 0
发帖: 2
金钱: 10 两
威望: 2 点
贡献值: 0 点
综合积分: 4 分
注册时间: 2015-10-01
最后登录: 2015-10-05
4楼  发表于: 2015-10-01 14:26

 回 楼主(crackgodscod) 的帖子

你好,我发现superboot的前8K与E4412_N.bl1.bin并不是完全相同,请看下面:
[chenpan@debian-victor~/Documents/4412/uboot_tiny4412/sd_fuse/tiny4412]$hexdump -n 1024 E4412_N.bl1.bin
0000000 69a3 18d3 7de9 66b9 6bd1 6ed5 79d4 79a6
0000010 0007 ea00 fffe eaff fffe eaff fffe eaff
0000020 fffe eaff fffe eaff fffe eaff fffe eaff
0000030 fffe eaff 00dc e59f 0000 e590 1102 e3a0
0000040 0001 e110 0024 0a00 00cc e59f 0000 e590
0000050 0001 e310 0020 0a00 00c0 e59f 0000 e590
0000060 0003 e200 0003 e330 0004 0a00 00b0 e59f
0000070 0000 e590 0001 e310 0000 0a00 0016 ea00
0000080 00a0 e59f 0000 e590 0003 e200 0003 e330
0000090 0004 0a00 0090 e59f 0000 e590 0001 e310
00000a0 0000 0a00 000c ea00 2080 e59f 4000 e592
00000b0 207c e59f 5000 e592 6078 e59f 0006 e154
00000c0 f005 01a0 0070 e59f 0000 e590 0007 e200
00000d0 0007 e330 0000 1a00 07c8 ea00 005c e59f
00000e0 105c e59f 305c e59f 0001 e150 0003 0a00
00000f0 0003 e151 2004 3490 2004 3481 fffb 3aff
0000100 1044 e59f 2000 e3a0 0001 e153 2004 3483
0000110 fffc 3aff 002b ea00 0600 1002 12c0 1002
0000120 1188 1002 1184 1002 1198 1002 1194 1002
0000130 0020 0202 0024 0202 0d10 fcba 1398 1002
以上是E4412_N.bl1.bin中的前560字节。
下面是superboot的前560字节:
[chenpan@debian-victor~/Templates/4412]$hexdump Superboot4412.bin -n 1024
0000000 7bb1 0ac1 3351 33ec 3e84 3b80 2c81 2cf3
0000010 0007 ea00 fffe eaff fffe eaff fffe eaff
0000020 fffe eaff fffe eaff fffe eaff fffe eaff
0000030 fffe eaff 00e8 e59f 0000 e590 1102 e3a0
0000040 0001 e110 0024 0a00 00d8 e59f 0000 e590
0000050 0001 e310 0020 0a00 00cc e59f 0000 e590
0000060 0003 e200 0003 e330 0004 0a00 00bc e59f
0000070 0000 e590 0001 e310 0000 0a00 0016 ea00
0000080 00ac e59f 0000 e590 0003 e200 0003 e330
0000090 0004 0a00 009c e59f 0000 e590 0001 e310
00000a0 0000 0a00 000c ea00 208c e59f 4000 e592
00000b0 2088 e59f 5000 e592 6084 e59f 0006 e154
00000c0 f005 01a0 007c e59f 0000 e590 0007 e200
00000d0 0007 e330 0000 1a00 0010 ea00 0068 e59f
00000e0 1068 e59f 3068 e59f 0001 e150 0003 0a00
00000f0 0003 e151 2004 3490 2004 3481 fffb 3aff
0000100 1050 e59f 2000 e3a0 0001 e153 2004 3483
0000110 fffc 3aff 0010 ea00 fffe eaff 0eb7 ea00
0000120 07b6 ea00 0600 1002 12c0 1002 1188 1002
0000130 1184 1002 1198 1002 1194 1002 0020 0202
通过两者对比可以看到两个2进制文件的前16字节不同,512字节之后的也不同,中间的两者是一样的。
我想知道superboot的bl1是从哪来的,难道三星提供了两个不同的bl1?哪位高手来指点下!
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
贡献值: 0 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
5楼  发表于: 2015-10-09 14:21
应该不是同一个BL1, uboot中的BL1不支持Trustzone,而superboot4412则是支持的