我自己根据Sabrelite的板子,稍作修改,增加了部分功能,自己Layout了一块板子,涉及板子启动问题,官方没有一个比较明确的文档来说明如何烧写eFUSE,我自己土办法,研究了一顿时间,拿出来分享一下,如果哪位大虾有更好的方法,请不吝赐教,更共同成长。
1、BOOT_MODE[1:0]设置成00,未烧写eFUSE时,芯片默认是从NOR FLASH启动,因为板子上没有可启动的代码,所以芯片会主动切换至下载模式
2、利用MfgTools将uboot下载到RAM中运行(只下载uboot),具体犯法如下
在MfgTools的ucl.xml里面,把烧写FLASH或者SD卡啥的都注释掉,只留Load uBoot,部分,如下
Loading uboot.
Jumping to OS image.
3、在串口输出的地方中断自动启动,进入uboot命令行交互方式,Sabrlite自带的uboot提供了eFUSE烧写命令,分别是imxotp read addr和imxotp blow --force addr value,读写eFUSE数据,
其中addr是(eFUSE的寄存器地址-eFUSE基地址-0x400)/0x10,eFUSE的基地址是0x021BC0000,具体定义见《iMX6DQRM.pdf》第46章,P4016
具体的配置值,参见《iMX6DQRM.pdf》第5章,P351。
imxotp blow这个命令在芯片未复位的情况下,是可以修改烧进去的值的。等芯片复位后,烧进去的值不能再更改了。
我自己的板子还是继承了Sabrelie SPI FLASH启动方式,只需要烧写0x450寄存器,即imxotp blow --force 0x5 0x10c00030 |