旺宏norFlash Security OTP空间读写

旺宏norFlash Security OTP空间读写,第1张

以旺宏NorFlash芯片 MX25l12835F 为例

通过写寄存器 B1h 进入OTP模式,写 C1h 退出OTP模式;  

命令集:

06h - Write Enable

04h - Write Disable   

05h - Read Status Register

01h - Write Status Register

03h - Read Data Bytes

0Bh - Data Fast Read

02h - Page Program(Page Write)

D8h - Block Erase

C7h - Chip Erase

2Bh- Read Security Register

2Fh- Write Security Register

Step1 先通过写B1h进入OTP模式,并写06h打开写使能;

Step2 由于OTP是个独立的空间,所以4K bit的空间地址还是从 000000h~ 0001FFh,

    (1)读 *** 作

             (a)以1Byte为单位,可以读小于512Byte(4Kbit == 512Byte)的任意长度。

              (b)以读取整个OTP空间为例,起始地址为000000h,读的地址数据格式如下:

                       __u8 sdata[4] 

                       sdata[0] = 0x03//读指令

                        sdata[1] = 0x00 //地址的16~23位

                        sdata[2] = 0x00//地址的8~15位

                        sdata[3] = 0x00//地址的0~7位

                        再用你读RDID的那个接口下读

                        spi_xfer.tx_addr = sdata

                        spi_xfer.tx_count = 4

                        spi_xfer.rx_addr = rDataBuff

                        spi_xfer.rx_count = 512

      (2)写 *** 作

                (a)写是以一个page即256Byte为单位,所以4K的空间要分2次写才能写完

                (b)假设加密数据存在enBuffer[512]中,要将enBuffer的数据写到OTP中,要分2次写, *** 作如下:

                         __u8 sdata[260]     //这里的数组大小是260 = 4字节地址+256字节数据; 

                       sdata[0] = 0x02//页写指令

                        sdata[1] = 0x00 //地址的16~23位

                        sdata[2] = 0x00//地址的8~15位

                        sdata[3] = 0x00//地址的0~7位    

     eLIBs_memcpy((void*)(sdata+4), enBuffer, 256)//4为地址长度的偏移量,256是一次写的最大值,也可以根据实际数据的大小来填,但不能超过256;       

                        spi_xfer.tx_addr = sdata

                        spi_xfer.tx_count = 4+256

                        spi_xfer.rx_addr = 0

                        spi_xfer.rx_count = 0

Step3 、通过写C1h退出OTP模式;进入OTP后,一定要退出,不然正常的数据区不能 *** 作。

Step4 、通过写2Fh寄存器可以锁死OTP

             注意,这个 *** 作是不可逆的; 一但写了2F后,OTP区域将只能读,不能再对其进行写 *** 作。

————————————————————————

注:

通过读2Bh寄存器的bit0位,若bit0为1说明厂商出厂时已经锁死Security OTP,则Flash的电子串号ESN是默认写在OTP的前16字节, 直接进入OTP模式,从000000h读取16Byte长度即可得到;bit0为0说明厂商没有锁死Security OTP,由用户自行 *** 作。如下图:

最早的单片机里面是没有程序的,程序是在外置的程序存储器里面。现在大多数单片机都把程序区做在片内,做到真正的单片机。早期的单片机都是一次性写入(OTP)的,现在很多都是FLASH的,可以反复写的。最早的单片机是没有加密的,是可以直接读出来2进制的机器码,直接就可以写入另外一个单片机中。现在基本上都做了加密,正常的去读是读不出来的。

单片机:

单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11795748.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存