惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
Cloudbric
Cloudbric
P
Palo Alto Networks Blog
T
Threatpost
T
Tor Project blog
T
Tenable Blog
AWS News Blog
AWS News Blog
Project Zero
Project Zero
L
LangChain Blog
Cyberwarzone
Cyberwarzone
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
C
CERT Recently Published Vulnerability Notes
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Security Latest
Security Latest
云风的 BLOG
云风的 BLOG
I
Intezer
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
P
Proofpoint News Feed
A
Arctic Wolf
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google DeepMind News
Google DeepMind News
V
Vulnerabilities – Threatpost
C
Cybersecurity and Infrastructure Security Agency CISA
MongoDB | Blog
MongoDB | Blog
aimingoo的专栏
aimingoo的专栏
K
Kaspersky official blog
Jina AI
Jina AI
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
D
DataBreaches.Net
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
博客园 - 【当耐特】
Hugging Face - Blog
Hugging Face - Blog
Recorded Future
Recorded Future
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Secure Thoughts
TaoSecurity Blog
TaoSecurity Blog
P
Privacy & Cybersecurity Law Blog
P
Proofpoint News Feed
MyScale Blog
MyScale Blog
IT之家
IT之家
Forbes - Security
Forbes - Security
The Hacker News
The Hacker News
Last Week in AI
Last Week in AI
T
Threat Research - Cisco Blogs
Y
Y Combinator Blog

博客园 - tony.zjb

中国市场 IIC GPN14 49美元Android PC驾到!威盛APC初探 C# 16进制与字符串、字节数组之间的转换 什么是RAW数据? Linux常用的 wince进入回收站== 转载:在WinCE中实现Screen Rotation bsp是什么? vc技巧 _stdcall(WINAPI) 与 _cdecl的区别 用C函数来转换Unicode和ANSI文字 - tony.zjb - 博客园 Win32 字符编码 明辨接口实现和虚函数重载的区别 阅读代码 异步 remoting 全新的2008年。。。。。。 vfpConn
s3c6410 SD卡启动的Secure mode
tony.zjb · 2011-11-14 · via 博客园 - tony.zjb

转载自:

http://blog.chinaunix.net/space.php?uid=122754&do=blog&id=2952381  非常感谢wangyun183写的博文

 前段时间我新来的同事弄SD卡启动的时候,按照三星Internal ROM Booting的Application Note弄得,也和网上的文章写的一样,irom启动完了以后开始u-boot的汇编初始化的代码,配置PLL、配置RAM...,然后到C语言段的时候开始调用irom自己提供的CopyMMCtoMem函数将代码复制到内存开始运行。但无论如何跑不起来,还报了4.2 Verification failure of BL1 integrity的错误。后来找了好久,用Jlink连上以后一步一步的看irom的代码才发现了是启动时候的Secure mode的问题。手册里面对于这方面什么都没写,就把我们知道的一点东西写一下吧。

   在IROM的手册里面 1.1 Feature 里面写到:

     Secure mode support(Verify Integrity of Bootloader for all boot-up device)

   但具体是什么他里面没有说。但按后来看irom的代码来看,应该是包括在 2.3 iROM(BL0) boot-up diagram里面画的 Verify integrity of BL1 Success? 这一步的判断里面。

   具体检验的内容是什么呢?在 2.7.1 SD/MMC Device Boot Block Assignment 里面的提到的倒数第二个块是 Signature,具体作用就写了一句,也不知所云。

- One block has to be assigned for signature which is located at offset [LAST – 2]

   根据我们跟踪Irom汇编的代码的结果来看,在6410手册里面有一段寄存器 0x7E00_D000 ~ 0x7E00_DFFF,他写的功能是 E-Fused register of the SECURE KEY。具体内容和功能也没讲。但我们看到在启动的时候,他会判断这段寄存器区域的前16 Bytes是否为0,如果不为0的话,他会将这段寄存器和上面提到的SD卡里面的Signature区域的数据做一个校验,校验算法具体就没看了。当校验通过才会运行BL1,否则会报报 4.2 Verification failure of BL1 integrity的错误。如果这段区域为0,则不校验,直接运行BL1。

   我们的板子就是这出的错。当时我们很奇怪,为啥我们买的开发板能跑呢?我们新买的片子,又没做任何设置,跟别说刻意去设置这种不知道的寄存器了。后来找了开发板的技术支持,他们也没接触过。发贴也没人回。但我们很偏向于是我们自己的板子6410的某个引脚的上电的初始配置和开发板的不一致。但也不可能全部对一遍吧。后来同事在搜索手册的时候有了一个很意外的发现。

   他根据0x7E00_D000寄存器说明里面出现的e-fuse搜索6410的手册,搜efuse搜到htr00,其中的说明如下:

htr00(pvhtbr00_efuse)      1.8V~3.3V wide range analog bi-direction path-                            through PAD without resistor for efuse memory

再搜htr00搜到XEFFVDD的管脚。

   我们的板子的这个脚是10K的,开发板是10欧的。直接把电阻短了,在u-boot下读这段寄存器的值,大部分时间为0。再从SD卡启动,OK了。

   htr00的描述我们不是很明白,感觉可能是里面是个AD,通过AD采样XEFFVDD上的电压,进行离散化以后产生的0x7E00_D000的值。我们最后把XEFFVDD直接对地短路了,有的时候值也不是全零,具体原因不详。但至少它可以启动了。

   这很多东西都是猜测了,写出来希望能给以后做个参考吧。