STM8S/32的讀保護
1.準備工作:HEX文件和JLINK驅動(dòng)(JLinkARM_V420以上,4.08中secure chip可能出現灰色不可選)
安裝完畢后,可以在開(kāi)始--所有程序--SEGGER--J-Flash ARM打開(kāi)該應用程序
先設置要寫(xiě)入的芯片和寫(xiě)入方式,
選擇JATG還是SWD
選擇芯片型號:Option-->Project settings-->CPU-->Device(型號不對程序寫(xiě)入不了,設置Option-->Project settings-->Production,選中Securechip;)
2.打開(kāi)要燒寫(xiě)的HEX文件:File--Open data file ,可以下拉選擇HEX文件類(lèi)型
3.連接要寫(xiě)入的芯片:Target--Connect(此步之前可以先清除再讀出看是否讀出為全空,好與后面對比)
4.寫(xiě)入代碼:Target--Program & Verify(F6)
(到此,就是代碼的寫(xiě)入過(guò)程,下面是加讀保護的步驟)
5.加讀保護:Target---Secure chip,點(diǎn)擊是,就是加上了讀保護!
二、如何驗證是否已讀保護
驗證方法,可以使用一個(gè)沒(méi)有加讀保護的芯片,重復步驟中的3,連接上之后,read back一下,看看是否能讀出?
然后再使用一個(gè)加了讀保護的芯片,重復步驟中的3,連接之后,read back一下,看看是不是真的不能讀出了,如果成功加了讀保護,它會(huì )一直停在那里,數據一直讀不出來(lái),最后彈出一個(gè)錯誤警告!
到此,讀保護已經(jīng)加載進(jìn)去了!
三、代碼更新如何解除讀保護
代碼需要更新,如果不解除讀保護功能,則很難再次將程序寫(xiě)入,解除方法也就是步驟中的5項中的反操作:Target---Unsecure chip
解除成功后,你就可以再次寫(xiě)入你更新后的代碼了。并沒(méi)有網(wǎng)友所說(shuō)的要更改BOOT0和BOOT1的設置,等等。。。
四、如何一鍵寫(xiě)入讀保護
這個(gè)加載代碼讀保護功能的步驟可能對有些人來(lái)說(shuō)還是比較麻煩的,畢竟產(chǎn)品多的時(shí)候,寫(xiě)入之后還要按一下寫(xiě)保護命令,對于產(chǎn)線(xiàn)操作員來(lái)說(shuō),可能一時(shí)疏忽忘記其中一個(gè),就會(huì )造成代碼的外泄,是不是應該還有更簡(jiǎn)單的辦法一鍵寫(xiě)入呢,答案是肯定的!
具體做法,就是要在生成HEX文件之前,要多幾個(gè)步驟
1.首先,加載: C:KeilARMBoardsKeilMCBSTM32Blinky文件夾中的一個(gè)STM32F10xOPT.s文件
2.修改下面兩個(gè)值為1
3.生成HEX文件之前務(wù)必進(jìn)行一下此配置
這樣簡(jiǎn)單的一個(gè)HEX文件就會(huì )使你的產(chǎn)品流入市場(chǎng)之后,即便是被抄板成功,也不會(huì )代碼流了,只要自己公司的員工不外泄。
ulink-Jlink下在ram和flash中調試STM32的方法
http://www.21ic.com/app/embed/201209/142684.htm
時(shí)間:2012-09-11 來(lái)源: 作者:
關(guān)鍵字:ulink-Jlink
Keil MDK3.20 在ULINK下調試stm32方法
1. 程序在RAM中運行
要點(diǎn):(1)程序的下載地址改到RAM空間中
(2)程序的debug之前要設定SP,PC指針到Ram空間
a 新建工程,選擇STM32 的具體型號。
b 設定程序下載地址,如下圖所示,IROM1的地址指向了STM32的ram空間。
c 空間大小如何分配取決于自己的需求。本款處理器內部ram大小為20K,分配16K給只讀區,4K給可讀可寫(xiě)區。這樣IROM設定的大小為0x4000,IRAM1的起始就變?yōu)?X20004000,大小只剩下0X1000。
d Debug標簽選擇ULINK1 Cortex Debugger(軟件采用yjgyiysbcc兄crack方法)。不選Load Application at Start,在Initialization中加入啟動(dòng)腳本RAM.ini。
RAM.ini中具體內容如下:
FUNC void Setup (void) {
SP = _RDWORD(0x20000000); // Setup Stack Pointer
PC = _RDWORD(0x20000004); // Setup Program Counter
_WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset Register
}
LOAD XXX.axf INCREMENTAL // Download,紅色代表工程文件名.axf
Setup(); // Setup for Running
g, main
Utilities下Update Target before Debugging不選
這樣添加后就可以在RAM中調試了。
>>>>>>我們需要在代碼中設置正確的中斷向量表位置。中斷向量表通常被放置在用戶(hù)程序的開(kāi)始,所以flash中運行時(shí),向量表位于0x08000000處,而當代碼被放置在SRAM中運行時(shí),他的位置就成了0x20000000。在初始化NVIC時(shí),我們可以放置如下代碼,定義向量表的位置
NVIC_SetVectorTable(0x20000000 , 0x0);
或
NVIC_SetVectorTable(0x08000000 , 0x0);
或
>>>>>工程選項中Debug項,Download選項卡中,去掉所有鉤子,不下載代碼到flash,這樣就可以在RAM中調試程序了!
2. Flash中調試
新建工程后系統默認設定好IROM1為FLASH的地址和空間大小。只需要兩步:
1) 設定調試工具為ULINK1 CORTEX DEBUGGER,如下圖所示,不需要設定起始腳本。
硬件:萬(wàn)利的 EK-STM32F開(kāi)發(fā)板,硬件去掉RS3,RS4 排阻,斷開(kāi)開(kāi)發(fā)板本身的仿真器。
軟件:KEIL MDK3.20+ULINK驅動(dòng)替換文件。
仿真器:ULINK
STM8S讀保護:
看了文檔,感覺(jué)和MEGA88的保護措施沒(méi)什么兩樣的。
ATMEL死活不承認MEGA88能被解密.但是,的確1000元就能把完整的代碼給你,而且是反匯編的.編譯后,重新燒錄一切正常
STM8S103K3保密性到底如何?有沒(méi)有指標可以參照的?
第一:IC沒(méi)有留后門(mén).很多不良的IC設計公司,尤其是臺灣的,都留有后門(mén).代理商很容易就能把ROM的代碼讀出來(lái)給客戶(hù).
第二:目前解密,都是把IC刨開(kāi)直接讀里面的東西.很多解密公司都是這么做的.據說(shuō)STM8SXX里面有檢測機制:發(fā)現IC被刨開(kāi)后,自動(dòng)擦出FLASH的東西.這個(gè)只是聽(tīng)說(shuō),沒(méi)有得到考證.
但從芯片設計角度講,芯片也像PCB一樣有很多層,通常至少十幾、二十幾層,我們把需要保密的部分,例如Flash和Flash的鎖,設計在比較靠下面的層面上,這樣即使把芯片剖開(kāi),也要磨掉很多層之后才能找到需要的層,由于不知道Flash在哪一層,解剖的難度就進(jìn)一步加大了。
--------------------------------------------------------------------------------
我想ATMEL的MCU也是這樣設計的.但是卻很容易就被破解了.
象臺灣的MCU,根本就不用刨開(kāi)IC,500塊全給你讀出來(lái).ELAN,SONIX等等,也號稱(chēng)IC加密了,
評論