s3c6410 SD卡启动的Secure mode

发布者:SparklingSoul最新更新时间:2024-09-19 来源: cnblogs关键字:s3c6410  SD卡启动  Secure  mode 手机看文章 扫描二维码
随时随地手机看文章

前段时间我新来的同事弄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直接对地短路了,有的时候值也不是全零,具体原因不详。但至少它可以启动了。


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


关键字:s3c6410  SD卡启动  Secure  mode 引用地址:s3c6410 SD卡启动的Secure mode

上一篇:搭建S3C6410开发板的测试环境
下一篇:S3C6410之uboot回炉再造(2)地址无关性

推荐阅读最新更新时间:2024-11-04 10:57

深入理解ARM体系架构(S3C6410)---rtc实例
实时时钟(RTC)的主要功能是在系统掉电的情况下,利用后备电源使时钟继续运行,从而不会丢失时间信息。s3c6410内部集成了RTC模块,其内部的寄存器BCDSEC,BCDMIN,BCDHOUR,BCDDAY,BCDDATE,BCDMON和BCDYEAR分别存储了当前的秒,分,小时,星期,日,月和年,表示时间的数值都是BCD码。 S2C6410中的闰年问题: 闰年产生器基于BCDDAY,BCDMOD,BCDYEAR从而能决定每月最后的日期是28,29,30,还是31。一个8位的计数器只能表示2个BCD数据,因此不能判断 00 结尾的年份是不是闰年。例如它不能判断1900和2000是不是闰年。为了解决这个问题,S3C6410中有一
[单片机]
深入理解ARM体系架构(<font color='red'>S3C6410</font>)---rtc实例
基于S3C6410芯片实现类人机器人控制系统的设计
智能移动机器人是近年来发展起来的一门综合学科,涉及机械设计、传感检测、人工智能等多方面知识。类人机器人的控制系统分为三个层次:最上层是机器人的策略规划层,利用各种算法实现各部分的功能;中间一层运行各类应用程序的嵌入式实时操作系统;最底层是硬件平台,通过外围接口获得各类数据、信息。 自主机器人利用传感器获取的信息控制机器人的动作。本文根据武术擂台机器人的实际需要,设计了机器人的控制系统,实现摄像头图像采集、处理和舵机控制等功能。 策略规划层中,由于图像信息具有信息丰富、对场景描述完全的特点,主要通过处理摄像头采集的图像信息实现颜色目标定位。这里采用Linux嵌入式操作系统,由于嵌入式系统资源的限制,要求目标识别算法运行效率高
[单片机]
基于<font color='red'>S3C6410</font>芯片实现类人机器人控制系统的设计
移动视频监控及定位系统的设计方案
  随着3G/4G移动通信网络和计算机技术的快速发展,移动互联网从很多方面改善了人们传统的生活方式,3G/4G移动网络具有带宽宽、广域广、高安全性等突出特点,能够突破安防行业长距离数字化无线监控一直以来难以简单实现的瓶颈,为无线视频监控开辟了一条新的道路。   本文设计的一种移动视频监控及定位系统,采用S3C6410处理器作为硬件基础,以Mediastream、Live555、VLC开源项目为核心,3G/4G移动通信网络作为网络传输媒介,采用H.264编解码方式实现视频的采集传输播放,并集成GPS模块进行位置数据的采集、传输、显示,实现移动目标的视频监控、定位功能,该系统的前端硬件设备小巧,易于使用。   系统原理   系统
[单片机]
移动视频监控及定位系统的设计方案
基于S3C6410的视频监控系统的设计与实现
视频监控的应用领域日益广泛。随着电子信息技术、多媒体技术以及网络技术的快速发展,嵌入式视频监控技术也得到了快速的发展。相比较传统的监控系统,嵌入式监控系统具有成本低,小巧灵活,高可靠性等特点。本文以三星S3C6410微处理器为基础处理器ARM11,实现了一种简单高效的视频监控系统。系统既可以使用网线进行传输,也可以采用无线USB网卡进行无线传输。本文在说明系统框架的同时,着重对系统实现的具体软件进行了说明。 1 系统的组成和工作原理 嵌入式视频监控系统由硬件部分和软件部分组成。硬件部分由视频采集模块、视频编码模块、网络传输模块以及嵌入式处理器模块组成;软件部分基于嵌入式操作系统平台,包括视频数据采集模块、视频编码模块和网络传
[单片机]
基于<font color='red'>S3C6410</font>的视频监控系统的设计与实现
搭建 S3C6410开发板的测试环境
S3C6410 是由三星公司推出的低功耗、高性价比的 SC ( reduced instruction set computer,精简指令集计算机〉处理器,它基于 ARMII 内核( ARMl76JZF-S),可广泛应用于移动电话和通用处理等领域。 (1)安装串口调试工具minicom 1.检测当前系统是否支持USB转串口 # Ismod I grep usbserial 2.安装 minicom # apt-get install minicom 3.配置minicom # minicom -s 4.测试minicom # minicom (2)使用E b o o t擦除N a n d F l a s h 1.用串口线或USB
[单片机]
ARM Linux (S3C6410架构/2.6.35内核)的内存映射(二)
本文讲述Linux系统启动过程中内核空间的映射。 Linux系统内核启动过程中,会在start_kernel() - setup_arch() - paging_init()函数中建立页表,下面详细记录一下其中每一个重要的步骤。(下面演示的代码经过删减) 先看函数prepare_page_table() static inline void prepare_page_table(void) { unsigned long addr; for (addr = 0; addr MODULES_VADDR; addr = PGDIR_SIZE) { pmd_clear(pmd_off_k(addr)); } for ( ;
[单片机]
S3C6410移植日记系列
现在发布的是si版本,是以单片机模式运行的,S3C6410这样强劲的cpu,运行si版本,就作为高速单片机用了,所有地址都是按照物理地址一一对应映射。cpu的状态也没有区分内核态和用户态。 1、中断引擎最初的部分代码在IRQ态(还没决定是否使用FIQ)。 2、中断引擎的大部分以及用户ISR运行在SVC态。 3、所有其他代码运行在SYS态。 移植碰到的第一个问题就是烧录代码到flash的问题,由于廉价的jtag烧录器不支持arm11,我们不能要求用户必须拥有昂贵的仿真烧录工具才能够在idea6410上使用djyos,这样不利于用户使用。 我的第一个目标,就是弄清楚怎么下载程序的问题,也就是把一个最简单的闪灯程序运行起来,
[单片机]
基于S3C6410的ARM11学习(七) 核心初始化之关闭MMU和CACHE
在关闭了所有中断后,就要关闭MMU和CACHE了。因为这个时候,还在初始化环境,这两个东西是用不到的。所以就需要把他们都关闭,免得影响我们的初始化。 MMU是Memory Management Unit的缩写,中文名是存储器管理单元。主要是两个功能: 1、虚拟地址转换为物理地址 2、实现内存的保护 至于具体的MMU的一些知识,等后面用到了在说明了。目前,只需要将MMU给关掉即可。 这个时候,我们需要查看S3C6410的核ARM1176JZFS手册。在这里,我们要接触到一个系统控制处理器,CP15。也叫做协处理器。 手册中说明了,CP15系统控制处理器的作用,主要是6个: 1、整个系统的控制和配置 2、CACHE的
[单片机]
基于<font color='red'>S3C6410</font>的ARM11学习(七) 核心初始化之关闭MMU和CACHE
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved