友坚三星4412开发板Linux平台下UT4412BV03裸机开发指南

Linux平台下UT4412BV03裸机开发指南(三)

 

第一章          Exynos 4412的启动过程

:本章的内容来自韦东山老师的《嵌入式Linux系统开发完全手册_基于4412_上册》,因为老师这部分已经讲的非常好了,没必要再写了。

做实验时我们是把bin文件烧入SD卡。是谁把这些指令从SD卡读出来执行?是固化在芯片内部ROM上的代码──它被称为iROM,iROM是厂家事先烧写在芯片上的,无源码。

iROM把启动设备上特定位置处的程序读入片内内存(iRAM),并执行它。这个程序被称为BL1(Bootloader 1),BL1是三星公司提供的,无源码。BL1又把启动设备上另一个特定位置处的程序读入片内内存,并执行它。这个程序被称为BL2(Bootloader2),是我们编写的源码。

iROM、BL1更细致的启动过程如下:

(1) iROM:图5.6是iROM启动流程图。

图5.6iROM启动流程

简单地说,就是先设置程序运行环境(比如关看门狗、关中断、关MMU、设置栈、启动PLL等等);然后根据OM引脚确定启动设备(NAND Flash/SD卡/其他),把BL1从里面读出存入iRAM;最后启动BL1。

 

(2) BL1:图5.7是BL1的启动过程。

图5.7BL1启动流程

简单地说,也是设置程序运行环境(初始化中断、设置栈等等);然后从启动设备上把BL2读入iRAM;最后启动它。

 

有几个问题需要解决:

①在启动设备上哪个位置存放BL1、BL2?

②把BL1、BL2读到iRAM那个位置?

③ BL1、BL2大小是?

④怎么保证BL1、BL2程序的完整性(即读出程序时没有错误)?

 

假设启动设备为SD卡,如图5.8、图5.9所示:

图5.8BL1/BL2在SD卡上的存储位置

图5.9BL1/BL2在iRAM中的存储位置

BL1位于SD卡偏移地址512字节处,iROM从这个位置读入8K字节的数据,存在iRAM地址0x02021400位置处。所以BL1不能大于8K。

BL2位于SD卡偏移地址(512+8K)字节处,BL1从这个位置读入14K字节的数据,存在iRAM地址0x02023400处。BL2不能大于(14K –4)字节,最后4字节用于存放较验码。

如果我们的程序大于(14K –4)字节,那么需要截取前面(14K –4)字节用来制作BL2并烧入SD卡偏移地址16K字节处。当BL2启动后,由它来将存放在SD卡另外位置的、完整的程序读入内存。

对于其他启动设备,可以参考《Android_Exynos4412_iROM_Secure_Booting_Guide_Ver.1.00.00.pdf》

 

板子一上电,首先执行iROM,iROM依次尝试从第1个SD卡、NAND Flash、第2个SD卡、SPI Nor Flash上把程序读入内存中,一旦从某个设备上成功读出程序就会去启动它。

在前面的实验过程中,我们都是通过sd_fusing.sh这个脚本文件,一键烧写程序到SD卡中。我们分析该脚本程序,发现其核心命令就3条:

01 dd iflag=dsync oflag=dsyncif=/work/4412/tools/E4412_N.bl1.bin of=$1 seek=$signed_bl1_position

02 dd iflag=dsyncoflag=dsync if=./bl2.bin of=$1 seek=$bl2_position

03 sync

第1行的命令用于将E4412_N.bl1.bin烧写到SD卡的第1个扇区(扇区从0编号);

第2行的命令用于将bl2.bin烧写到SD卡的第17个扇区;

第3行的命令用于将内存缓冲区内的数据写入磁盘。

E4412_N.bl1.bin(BL1)是由三星原厂提供,没有源码,它的作用在前面稍有介绍;

bl2.bin是通过mkbl2工具处理源文件得到,具体实现如下:

./my_mkbl2 leds_on.binbl2.bin 14336

mkbl2是用来生成bl2.bin的工具,通过编译V310-EVT1-mkbl2.c文件(源程序位于/work/4412/hardware/my_mktools目录下)得到,具体如下:

gcc -o my_mkbl2my_mktools.c

通过分析my_mktools.c源码,我们可以知道,它主要做了这些工作:

1).从源文件中读取14K的数据到Buf当中;

2).处理Buf中前14332字节的数据,得到4字节的checksum;

3).组装Buf中前14332字节的数据和4字节的checksum,得到一个新的14K的Buf数据;

4).将3)中构建的Buf数据写到bl2.bin文件中

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.2 产品简介 UT-Exynos4412开发板是一款功能极为强大的高端ARM Coretex-A9开发平台,采用Samsung最新的Exynos4412(Exynos4412 Quad),主频达到1.4~1.6GHz;Exynos4412的主要特性为:QuadCore、WXGAresolution、1080pHDTVdisplay throughoutHDMI、I2Ssupports、USBHost&Device2;.0、HSICinterface、LPDDR2PackageonPackage、Chip2Chip等;内建32/32KB数据/指令一级缓存,1MB的二级缓存;GPU采用的是Mali 400MP四核心图形处理器,支持2D/3D图形加速;内建HDMI1.4(3D feature)兼容HDCP1.1和DVI1.0;内部的MFC支持MPEG-2/4、H.263、H.264等的编解码和VC1的解码。硬件编解码器实现视频会议和数字电视。该芯片采用了最新的32nm HKMG的先进工艺制程。相比于之前的45nm工艺,功耗方面有了明显的降低,即使是四核,同等测试下的功耗比双核的4210低了40%。四核处理器在达到双核两倍性能的同时,功耗却只有双核的八成,续航和发热都可能会大大改善。目前三星最新的N7100 GALAXY Note2和GALAXY SIII系列手机采用的就是此款芯片,表现相当出色。Exynos4412处理器采用0.4mm pitch值的12x12平方毫米FCMSP封装,降低PCB加工工艺要求。 UT-Exynos4412开发板本着完全展现Exynos4412芯片功能,结合客户反馈与广泛调研,设计而成,其功能全面、接口丰富,完美展现了Samsung Exynos4412芯片的强大,主要面向企业用户进行产品开发过程中,对Exynos4412芯片的性能评估、设计参考使用。其丰富的外设接口及强大的性能,也成为高校、科研机构等单位的最佳科研设备;可为无线通讯、个人导航、摄像、移动游戏音乐视频、PDA、医疗器械、车载、广告机、手机等提供前期测试平台,无论从功能、性价比、调试飞线等方面,都可方便进行,大大缩短公司产品的研发周期。 UT-Exynos4412开发板堪称市面上最强大的ARM平台,采用Exynos4412的主芯片,具有更高的主频和更丰富外设,配置2GB DDR3的内存及8GB iNAND存储,具有稳定性强、可靠性高,能适用于对性能和处理能力有更高要求的嵌入式系统应用场合。 UT-Exynos4412开发板可以选配有无线WIFI模块、Bluetooth、GPS、Camera、3G等模组,支持HDMI1.4(1080P/60Hz)显示,客户可以直接从开发平台中汲取完整的产品信息,甚至可以直接用于后续的产品开发中,完全不同于一般意义的开发平台。 UT-Exynos4412开发板最新的操作系统:Google Android4.0.4 ICS,提供平台完整的源码,支持WIFI、Bluetooth、GPS、Camera、HDMI、3G等选配模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值