eMMC烧录时需注意的寄存器配置
eMMC芯片由NandFlash、控制器和标准接口组成,在应用上,和NandFlash比较,由于控制器的存在,不必考虑ECC和坏块管理策略,所以eMMC的应用比较简单。但是,eMMC烧写只需要把数据烧进去就可以了吗?为什么数据写进去了,系统还是跑不起来?
eMMC自诞生以来,就受到各行各业的追棒,如今,已成为存储行业的主流,特别是手机和平板。美国的IHS iSuppli预测到2018年全球的eMMC出货量达到2200Milion。
图1 eMMC的市场前景
在给智能手机、智能电视、平板电脑等,使用大容量eMMC芯片客户服务的过程中,遇到很多烧录异常的投诉,统计下来,有90%的投诉是说的同样一个事情:烧录过程正常,但贴到PCB上不能正常运行,重新通过在线的工具烧录,又能正常运行,这是为什么呢?
大多数工程师认为,既然eMMC内部有控制器,不用考虑ECC和坏块管理策略,那么全当成普通的Flash那样烧写。事实上,这样做法是"想当然"的照搬了之前Flash的使用方法。那么,有些人就纳闷了,既然烧写检验没问题,为什么会跑不起来,进而第一步就怀疑是不是烧录器的问题。
那就要从eMMC芯片的结构进行剖析:
eMMC芯片中有三个分区,分别是Boot1、Boot2和User Area区。
图2
eMMC烧写,与其他任何Flash的烧录都不一样,Boot区是单独有寻址地址的,因此,必须注意如下两个关键步骤:
一、烧写数据:包括Boot1、Boot2和User Area区的数据。
二、设置寄存器:主要设置EXT_CSD寄存器,设置Boot加载规则,这需要根据实际的方案来设置。
下面来主要阐述eMMC的设置寄存器的关键之处:
通常,Boot1、Boot2和User Area区的数据都没问题,主要是EXT_CSD寄存器的设置。这里涉及到程序Boot主要有三个寄存器,分别是BOOT_BUS_WIDTH[177]、BOOT_CONFIG_PROT[178]、PARTITION_CONFIG[179],这三个寄存器常常相互配合。
下面我们简要介绍下这个寄存器:
一、BOOT总线位宽寄存器BOOT_BUS_WIDTH[177]:设置Boot总线宽度和单双边沿。
图3
二、BOOT配置保护寄存器BOOT_CONFIG_PROT[178]:Boot设置位的保护使能。
图4
三、分区寄存器PARTITION_CONFIG[179]:分区配置。
图5
技术的细节就不再详述,从上面的介绍得知,Boot三个寄存器各负责的关键内容。
1.BOOT_BUS_WIDTH[177]设置位宽+单双边沿;
2.PARTITION_CONFIG[179]选择哪个分区用于Boot;
3.BOOT_CONFIG_PROT[178]算是它们的双保险。
如果客户仅仅烧录了User区的程序,而忽视了Boot区配置,会导致主控CPU找不到Boot文件,无法正常启动整个系统的情况发生。
当然,不同场合可能需要设置不同的值,但是一般情况下,90%的用户还是选择Boot1区+8位宽高速时序。即同时设置分区寄存器
PARTITION_CONFIG[179]=0x8/0x48和总线位宽寄存器
BOOT_BUS_WIDTH[177]=0xA/0x2。而Boot配置保护寄存器
BOOT_CONFIG_PROT[178]默认不设置。
进过EXT_CSD的扩展寄存器设置,CPU找到了启动Boot,正常引导并启动了整个被烧录的eMMC芯片,这时,eMMC就和CPU愉快的配合,流畅的跑起来了。
- 尽管UFS出现,但eMMC NAND闪存仍然具有活力(03-30)
- 平板电脑如何选用嵌入式存储器(03-20)
- 乱丢旧手机后果有多严重,手机芯片告诉你(06-09)
- NAND Flash缺货的真实原因曝光,UFS切入低端市场战略延后(05-28)
- Maxim推出带有8个GPIO/LED驱动器的8 x 8按键控制器(09-21)
- 凌力尔特推出8通道、18位、1Msps逐次逼近寄存器(SAR)ADC LTC2373-18(01-13)