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