2012/11/24
今天上午去西直门跟李哥碰头了,拿到了板子。同时看到了他那5岁可爱的儿子,很可爱。我也很喜欢小孩,唉。说来就伤感啊。苦逼的北漂一族啊。
板子结构采用了母板+底板的形式,一看这样式就觉得很操蛋。唉,上映辰汉电子。要是让我Layout的话,非给他整到一起。有点自夸了啊,其实我水平也一般,只不过会使用CadenceAllegro而已。
好了,总结一下,i.MX53的启动吧。我是参照了以下的文档:
1、《i.MX53 Multimedia Applications Processor Reference Manual》.pdf ,Document Number: iMX53RM
2、《mx53_mdk1_cpu_sch_v0_1》.pdf
3、《MX53_MDK1_MOTHER_BOARD_V1.0》.pdf
i.MX53参考手册的第七章主要讲解了系统启动的一些知识点。处理器内嵌的ROM程序根据内部寄存器BOOT_MODE[1:0]和各种eFUSEs决定启动方式。而eFUSEs的值又会被GPIO引脚的值所改变。
根据BOOT_MODE[1:0]的值,会有4种不同的启动方式,在这次开发中,只会使用2种,如下:
BOOT_MODE[1:0]=00,内部启动,处理器内部ROM固化的代码再根据外部引脚状态决定从哪个外设启动,NAND/SD。
BOOT_MODE[1:0]=11,串行下载模式,通过UART或USB将程序烧写到外部存储设备中。
在内部启动模式中,处理器内部固化的程序,执行硬件初始化,从选择的启动设备载入程序映像,验证后跳转至映像中执行。如果这期间发生任何错误,则跳转到串行下载模式。内部启动模式的启动流程受eFUSE设置的影响,而eFUSE又受GPIO引脚的影响。
如果BT_FUSE_SEL=1,则所有的启动选项均受eFUSE控制。
如果BT_FUSE_SEL=0,则可以使用GPIO引脚的状态改变eFUSE。
根据手册可知,BT_FUSE_SEL该在出厂时由厂商将值置为0了。
根据原理图可知,BOOT_MODE[1:0]由拨码开关的8控制,当8打到ON的位置,BOOT_MODE[1:0]=11,当打到OFF的位置,BOOT_MODE[1:0]=00,通过电阻下拉到地。
开发板板载NAND芯片为iNAND,查手册获知其符合eMMC规范,故可归为MMC/eMMC设备,故应该从此启动,从数据手册中可知,当BOOT_CFG1[7:4]=011x时,处理器即从内部启动后,从MMC/eMMC加载程序映像。
拨码开关 |
定义 |
描述 |
功能 |
iNAND下载 |
iNAND启动 |
1 |
BOOT_CFG3[3] |
|
|
0 |
0 |
2 |
BOOT_CFG3[4] |
|
|
0 |
0 |
3 |
BOOT_CFG3[5] |
|
|
1 |
1 |
4 |
BOOT_CFG2[5] |
|
|
0 |
0 |
5 |
BOOT_CFG1[4] |
[7:4]=011x,boot from MMC/eMMC 而电路板BOOT_CFG[7]直接通过电阻 接地了 |
0 |
0 |
|
6 |
BOOT_CFG1[5] |
1 |
1 |
||
7 |
BOOT_CFG1[6] |
1 |
1 |
||
8 |
BOOT_MODE[1:0] |
内部模式或下载模式 |
00:内部模式 11:下载模式 |
1 |
0 |
唯一不明白的一点就是,BOOT_CFG[4],手册上说这个值为1或0都可以,但现实中必须为0才行,否则启动不了。有时间得多读读手册。
SD/MMC/eSD/eMMC可以以ESDHCV2-1,ESDHCV2-2,ESDHCV3-3,ESDHCV2-4标准启动,由BOOT_CFG3[5:4]的值决定。对于eMMC4.3和eMMC4.4只能使用ESDHCV3-3标准。对于我们开发板上的iNAND属于eMMC4.41,故需要将BOOT_CFG3[5:4]设置为10。
烧写工具有2种,一是ATK针对于老版本的,支持UART、USB下载;而新版本的工具是MFG,i.MX53只受新版本的支持。故只能使用MFG下载程序。苦于PCB上是MiniUSB,俺没有USB线啊。先不弄了吧。