您的位置:首页 > 其它

i.MX53的启动模式

2012-12-24 09:06 162 查看
分类: Linux驱动开发2012-11-24
18:07 59人阅读 评论(0) 收藏 举报

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线啊。先不弄了吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: