目录
UCB_HSMCOTP0/1_ORIG and COPY-1
UCB介绍
带密码的UCB:即使UCB confirm了,依然可以通过输入正确的密码,再去擦写这个UCB
不带密码的UCB:如果把这个UCB的confirmation code配成confirmed,那这个UCB就再也不能被修改了
如下情况芯片会被锁死:
- Wrong State: original 和copy同时被擦掉
- Uncorrectable ECC error
芯片锁死: contain an uncorrectable ECC error as following description, 避免在操作这个UCB的时候突掉电,或者是没有擦除这个UCB就写入新的值
所有UCB在芯片出厂的时候都是unlock的状态,
Unlock:UCB里面所有的内容包括密码都是可以被读出来的
Confirmed: UCB里面所有的内容除了密码都是可以被读出来的
所有UCB的操作擦写是有限制的,为了保证数据可以保存20年:
每个UCB最多可以操作擦写100次
所有UCB加起来最多可以操作擦写500次
UCB_BMHDx_ORIG and COPY
设置程序启动地址。有4对UCB, 如果ORIG掉电丢失的话,COPY可以备用
如果HWCFG配置的是:
Internal start from Flash: 那STAD存放的就是应用程序的起始地址,SSW退出后,就会从这个地址运行
Alternate Boot Mode(ABM): 那STAD指向的就是ABM header的起始地址
BMHD0的confirmation state是confirmed状态时,他就会被写保护了write protected.
输入正确的密码时,依然是可以erase和重新写入的
BMHD1-3是没有写保护的,一旦confirmed,就永远不能被修改了
UCB_PFLASH_ORIG and COPY
设置flash的读写保护
PROCONPF:flash的读保护
PROCONPp0~5: 每个sector flash的写保护
UCB_DFLASH_ORIG and COPY
Dfash: divided into two banks
Dfash0 -> host:
emulate EEPROM for Host, User Configuration Blocks (UCBs), and Configuration Sector (CFS)
Dflash -> HSM:
emulate EEPROM for HSM
PROCONUSR: DF0 mode: single ended(00) 还是complement sensing(01)
PROCONRAM:RAM的初始化,power on是否清零,哪几块需要清零
UCB_SWAP_ORIG and COPY
设置SWAP模式
UCB_SWAP is evaluated by the SSW to determine the PFlashes used by the running application
UCB_ECPRIO_ORIG and COPY
UCB_OTPy_ORIG and COPY(y = 0-7)
UCB_DBG_ORIG and COPY
debug口保护:
DMU_HF_PROCONDBG写入03, debug口就会被保护起来, 调试器就不能链接目标MCU了
除非输入正确的密码:PW0~PW7
UCB_HSM_ORIG and COPY
HSMDBGDIS: HSM 部分的debug口保护,设置1的话,调试器就无法连接HSM CPU了
DBGIFLCK: 主核 debug口的保护,也可以在前面MU_HF_PROCONDBG写入03设置,是或的关系
一旦confirm就不能被修改了
UCB_HSMCOTP0/1_ORIG and COPY-1
DMU_SF_PROCONUSR:
设置DF1 mode: single ended 还是complement sensing
DMU_SP_PROCONHSMCBS
设置HSM程序的起始地址,0~3依次扫描,直到扫到有效的起始地址
DMU_SP_PROCONHSMCX0
DMU_SP_PROCONHSMCX1
用来配置HSM在Pflash sector是否配置成HSM code exclusive:(主核将看不到exclusive flash里面的数据,以及不能再对这里面的数据进行擦写的操作)
DMU_SP_PROCONHSMCOTP0
DMU_SP_PROCONHSMCOTP1
配置HSM Pflash sector是不是要用OTP的这个功能
DMU_SP_PROCONHSMCFG
HSMBOOTEN这一位要注意,这一位一旦使能,HSM就active了,使能之前必须要烧写好HSM的代码,没有HSM代码而把这一位使能的话,芯片就会锁死
HSM一旦confrim的话就不能被擦写了
UCB_HSMCFG
用来存放一些密钥
一旦confirm,主核没有办法去读取它里面的内容,但是HSM依然可以读取
UCB_SSW
主要是给LBIST服务的, 如果LBIST在SSW里面执行的话, SSW就会读取这个寄存器里面的default的值
UCB_USER
主要是存放芯片的unique ID,及其他外设的参数
UCB_REDSEC
Redundancy Sector:
在一个flash bank里面,3M的空间里面,可以分为3个1M的physical sector
每个physical sector都有2个redundancy sector
如果1个physical sector里面检测到擦写失败,sector有问题,可以调用flash command里面replace logic sector指令,用一个redundancy sector代替其坏掉的sector
这个UCB是用来记录现在两个备用的sector,实际有没有被用到,实际是替换掉哪个坏掉的sector