新聞中心

STM8S/32的讀保護(hù)

作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
一、代碼寫入及加讀保護(hù)的步驟:

1.準(zhǔn)備工作:HEX文件和JLINK驅(qū)動(JLinkARM_V420以上,4.08中secure chip可能出現(xiàn)灰色不可選)
安裝完畢后,可以在開始--所有程序--SEGGER--J-Flash ARM打開該應(yīng)用程序
先設(shè)置要寫入的芯片和寫入方式,
選擇JATG還是SWD
選擇芯片型號:Option-->Project settings-->CPU-->Device(型號不對程序?qū)懭氩涣耍O(shè)置Option-->Project settings-->Production,選中Securechip;)
2.打開要燒寫的HEX文件:File--Open data file ,可以下拉選擇HEX文件類型
3.連接要寫入的芯片:Target--Connect(此步之前可以先清除再讀出看是否讀出為全空,好與后面對比)
4.寫入代碼:Target--Program & Verify(F6)
(到此,就是代碼的寫入過程,下面是加讀保護(hù)的步驟)
5.加讀保護(hù):Target---Secure chip,點擊是,就是加上了讀保護(hù)!
二、如何驗證是否已讀保護(hù)
驗證方法,可以使用一個沒有加讀保護(hù)的芯片,重復(fù)步驟中的3,連接上之后,read back一下,看看是否能讀出?
然后再使用一個加了讀保護(hù)的芯片,重復(fù)步驟中的3,連接之后,read back一下,看看是不是真的不能讀出了,如果成功加了讀保護(hù),它會一直停在那里,數(shù)據(jù)一直讀不出來,最后彈出一個錯誤警告!
到此,讀保護(hù)已經(jīng)加載進(jìn)去了!
三、代碼更新如何解除讀保護(hù)
代碼需要更新,如果不解除讀保護(hù)功能,則很難再次將程序?qū)懭?,解除方法也就是步驟中的5項中的反操作:Target---Unsecure chip
解除成功后,你就可以再次寫入你更新后的代碼了。并沒有網(wǎng)友所說的要更改BOOT0和BOOT1的設(shè)置,等等。。。
四、如何一鍵寫入讀保護(hù)
這個加載代碼讀保護(hù)功能的步驟可能對有些人來說還是比較麻煩的,畢竟產(chǎn)品多的時候,寫入之后還要按一下寫保護(hù)命令,對于產(chǎn)線操作員來說,可能一時疏忽忘記其中一個,就會造成代碼的外泄,是不是應(yīng)該還有更簡單的辦法一鍵寫入呢,答案是肯定的!
具體做法,就是要在生成HEX文件之前,要多幾個步驟
1.首先,加載: C:KeilARMBoardsKeilMCBSTM32Blinky文件夾中的一個STM32F10xOPT.s文件
2.修改下面兩個值為1
3.生成HEX文件之前務(wù)必進(jìn)行一下此配置
這樣簡單的一個HEX文件就會使你的產(chǎn)品流入市場之后,即便是被抄板成功,也不會代碼流了,只要自己公司的員工不外泄。

本文引用地址:http://butianyuan.cn/article/201611/321563.htm

ulink-Jlink下在ram和flash中調(diào)試STM32的方法

http://www.21ic.com/app/embed/201209/142684.htm
時間:2012-09-11 來源: 作者:
關(guān)鍵字:ulink-Jlink flash ram STM
Keil MDK3.20 在ULINK下調(diào)試stm32方法
1. 程序在RAM中運(yùn)行
要點:(1)程序的下載地址改到RAM空間中
(2)程序的debug之前要設(shè)定SP,PC指針到Ram空間
a 新建工程,選擇STM32 的具體型號。
b 設(shè)定程序下載地址,如下圖所示,IROM1的地址指向了STM32的ram空間。
c 空間大小如何分配取決于自己的需求。本款處理器內(nèi)部ram大小為20K,分配16K給只讀區(qū),4K給可讀可寫區(qū)。這樣IROM設(shè)定的大小為0x4000,IRAM1的起始就變?yōu)?X20004000,大小只剩下0X1000。
d Debug標(biāo)簽選擇ULINK1 Cortex Debugger(軟件采用yjgyiysbcc兄crack方法)。不選Load Application at Start,在Initialization中加入啟動腳本RAM.ini。
RAM.ini中具體內(nèi)容如下:
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中調(diào)試了。
>>>>>>我們需要在代碼中設(shè)置正確的中斷向量表位置。中斷向量表通常被放置在用戶程序的開始,所以flash中運(yùn)行時,向量表位于0x08000000處,而當(dāng)代碼被放置在SRAM中運(yùn)行時,他的位置就成了0x20000000。在初始化NVIC時,我們可以放置如下代碼,定義向量表的位置
NVIC_SetVectorTable(0x20000000 , 0x0);

NVIC_SetVectorTable(0x08000000 , 0x0);


>>>>>工程選項中Debug項,Download選項卡中,去掉所有鉤子,不下載代碼到flash,這樣就可以在RAM中調(diào)試程序了!
2. Flash中調(diào)試
新建工程后系統(tǒng)默認(rèn)設(shè)定好IROM1為FLASH的地址和空間大小。只需要兩步:
1) 設(shè)定調(diào)試工具為ULINK1 CORTEX DEBUGGER,如下圖所示,不需要設(shè)定起始腳本。
2) 在Utility中設(shè)定選擇ULINK1 cortex debugger,并設(shè)定編程算法。如下圖所示。
之后就可以FLASH調(diào)試了。
硬件:萬利的 EK-STM32F開發(fā)板,硬件去掉RS3,RS4 排阻,斷開開發(fā)板本身的仿真器。
軟件:KEIL MDK3.20+ULINK驅(qū)動替換文件。
仿真器:ULINK

STM8S讀保護(hù):

看了文檔,感覺和MEGA88的保護(hù)措施沒什么兩樣的。
ATMEL死活不承認(rèn)MEGA88能被解密.但是,的確1000元就能把完整的代碼給你,而且是反匯編的.編譯后,重新燒錄一切正常
STM8S103K3保密性到底如何?有沒有指標(biāo)可以參照的?

第一:IC沒有留后門.很多不良的IC設(shè)計公司,尤其是臺灣的,都留有后門.代理商很容易就能把ROM的代碼讀出來給客戶.
第二:目前解密,都是把IC刨開直接讀里面的東西.很多解密公司都是這么做的.據(jù)說STM8SXX里面有檢測機(jī)制:發(fā)現(xiàn)IC被刨開后,自動擦出FLASH的東西.這個只是聽說,沒有得到考證.

但從芯片設(shè)計角度講,芯片也像PCB一樣有很多層,通常至少十幾、二十幾層,我們把需要保密的部分,例如Flash和Flash的鎖,設(shè)計在比較靠下面的層面上,這樣即使把芯片剖開,也要磨掉很多層之后才能找到需要的層,由于不知道Flash在哪一層,解剖的難度就進(jìn)一步加大了。
--------------------------------------------------------------------------------
我想ATMEL的MCU也是這樣設(shè)計的.但是卻很容易就被破解了.
象臺灣的MCU,根本就不用刨開IC,500塊全給你讀出來.ELAN,SONIX等等,也號稱IC加密了,



關(guān)鍵詞: STM8S讀保護(hù)stm3

評論


技術(shù)專區(qū)

關(guān)閉