OTP(One Time Programmable)是單片機的一種存儲器類型,意思是一次性可程式:程式燒入單片機後,將不可再次更改和清除。
基本介紹
- 中文名:一次性可程式
- 外文名:One Time Programable
- 存儲器類型:單片機
- 意思:一次性可程式
在嵌入式系統當中,所有的代碼和系統數據都是被存儲在FLASH晶片內部的。FLASH晶片的特點是可多次擦寫,而且掉電數據不會丟失。為了保護FLASH中的數據,越來越多的FLASH廠商在FLASH內部提供了一種特殊的暫存器:OTP暫存器。OTP=One TimeProgrammable,意思是這個暫存器是只可以編程一次的,編程後就再也不可以修改了。OTP暫存器和FLASH數據區域很類似,1能被改寫為0,但0永遠也不能寫成1.如果有一個32位的OTP暫存器,出產的值是0xFFFFFFFF,如果用戶通過編程,將OTP暫存器的值寫為0xFFFFFFFE後,那OTP暫存器再也不能在改寫為0xFFFFFFFF了;當然,這個OTP暫存器的值還可以改寫為0xFFFFFFFC或其它。
為了給OTP暫存器提供保護,一般這類FLASH晶片還會提供一個LOCK暫存器。LOCK暫存器(同屬OTP)也只能燒寫一次。LOCK暫存器的每一位對應於一個OTP暫存器。如果與OTP暫存器對應LOCK暫存器的位(BIT)從1寫為0,就意味著這個被鎖住的OTP暫存器再也不能進行寫操作了。即使OTP的當前值為0XFFFFFFFF,它的值也永遠不可以被改寫了。通過OTP暫存器與LOCK暫存器,用戶可以在OTP里保存一些特定的信息,例如軟體版本號,硬體版本號,秘鑰等信息。同時,這類FLASH晶片內部還會有另外一個OTP暫存器,這個暫存器在出產的時候就被廠家編程過了,寫入特定的序列號,並LOCK住。如果有需要,FLASH廠商也可以根據客戶的需要寫入特定的序列號。這樣,每個晶片都會有一個不一樣的ID號,避免被複製。
除了FLASH晶片,很多CPU廠商,也在CPU內部提供類似的OTP暫存器,供用戶使用,利於開發更安全的套用。象一些比較大的廠商,例如TI,FREESCALE等,他們往往是不公開某些晶片的數據手冊的。如果要獲得他們的數據手冊,一是要有大量的訂貨,同時也需要簽署一定的保密協定。
OTP本身並不能提供絕對安全的套用。但OTP的提供,有利於開發商開發和部署更安全的套用,保護自己和客戶的利益。象很多大的廠商,例如NOKIA,MOTOROAL,SAMSUNG和SONYERRICSON等,都需要根據客戶(運營商)的要求,開發一些只能在自己的網路里使用的手機。其中很多軟體和硬體的保護都是基於OTP來實現的。