標(biāo)題: 巧用J-Link+J-Flash給Kinesis燒寫序列號 [打印本頁]

作者: xuwei    時(shí)間: 2015-6-24 16:18
標(biāo)題: 巧用J-Link+J-Flash給Kinesis燒寫序列號
    類似前段時(shí)間我寫的兩篇關(guān)于知識產(chǎn)權(quán)保護(hù)芯片加密的文章,這次再聊一聊產(chǎn)品量產(chǎn)時(shí)常需要考慮的另一個(gè)問題——燒寫序列號。貌似最近跟“量產(chǎn)”杠上了,呵呵,作為產(chǎn)品生產(chǎn)周期的最后一環(huán),需要考慮的問題很多,不著急,咱以后慢慢聊,哈哈~
            在產(chǎn)品批量生產(chǎn)的時(shí)候,很多人會有這樣的需求,即將每個(gè)芯片燒寫一個(gè)唯一的ID號(Serial Number),以方便對產(chǎn)品進(jìn)行跟蹤和管理或者滿足對芯片進(jìn)行綁定ID號加密的需要。而為了提高整個(gè)批量生產(chǎn)過程的效率,選擇一個(gè)好的燒寫工具則至關(guān)重要。對飛思卡爾的Kinetis系列來說,可用的燒寫方案包括P&E官方的Cyclone MAX(支持在線燒寫和脫機(jī)燒寫,當(dāng)然價(jià)格較貴)和J-Link(僅支持在線燒寫,需要仿真器+上位機(jī)配合)等,本篇就以最近比較火的Freescale M0+ Kinetis L系列為例詳細(xì)介紹一下J-Link+J-Flash批量燒寫串號的方案(說到此,不得不感嘆J-Link的強(qiáng)大,高速的下載和調(diào)試,豐富的IDE支持和調(diào)試組件和強(qiáng)有力的調(diào)試功能,再加上……咳咳(大家都懂的),不是土豪人家是金啊,怎一個(gè)NB了得):
        開發(fā)平臺:Kinetis L系列KL15Z128
        燒寫工具:J-Link + J-Flash(v4.76f)
        (1) 這里我就不單獨(dú)對J-Flash多作介紹了,可以參考我之前的一篇文章《教你用J-Flash ARM工具單獨(dú)燒寫程序到Kinetis》,至于包括J-Flash在內(nèi)的軟件包可以直接到SEGGER官網(wǎng)下載http://www.segger.com/jlink-software.html,建議下載最新版的,支持的芯片系列較全,相應(yīng)的組件功能也更強(qiáng)大;
        (2) 打開J-Flash(路徑為Start->All Programs->SEGGER->J-Link ARM V4.76f->J-Flash),在最新版本中會直接彈出選擇已有工程選項(xiàng)卡,根據(jù)需要在路徑"安裝路徑\SEGGER\JLinkARM_V476f\Samples\JFlash\ProjectFiles\Freescale”下選擇自己的目標(biāo)芯片(我這里選擇MKL15Z128xxx4.jflash,木辦法,手里只有這個(gè)),選擇如下圖:
       
        (3) 點(diǎn)擊“start J-Flash”進(jìn)入工程管理界面,然后點(diǎn)擊File->Open data file,找到需要下載的bin文件或者S19文件,將其加載到j(luò)flash工程里面,加載之后的界面如下圖:
       
        (4) 萬事具備,接下來就開始進(jìn)行燒寫序列號的設(shè)置。點(diǎn)擊“Options->Project Settings->Production”,選中“Program Serial Number”,設(shè)置如下:
       
        (5) 點(diǎn)擊“OK”,設(shè)置完畢(只設(shè)置一次即可),然后連接目標(biāo)芯片“Target->Connect”,連接成功,點(diǎn)擊“Auto”,系統(tǒng)會自動將設(shè)置好的序列號添加到s19文件相應(yīng)的地址,然后啟動下載,同時(shí)也會在Jflash的工程目錄(之前加載的sample prject的目錄)下生成一個(gè)“<JFlashProjectName>_Serial.txt”,內(nèi)容如下圖,其中“12345679”為下次要寫入的數(shù)據(jù),系統(tǒng)自動為其加1了(由“Increment”決定):
       
       
        (6) 我們回讀燒寫到片子中的數(shù)據(jù)(Target->Read Back->Entire chip),然后跳轉(zhuǎn)到“0x2000”地址,可以看到序列號(12345678的十六進(jìn)制)已經(jīng)寫入,如下圖:
       
        注意事項(xiàng):
        (1) 在燒寫的時(shí)候,必須點(diǎn)擊“Auto”下載,這樣才會生成“<JFlashProjectName>_Serial.txt”文件,且會把序列號自動添加到s19文件然后燒進(jìn)去,直接點(diǎn)擊“Program”或者“Program&Verify”等燒寫功能只會燒寫原始S19文件,不會添加序列號;
        (2) J-Flash燒寫序列號最多支持4個(gè)字節(jié),高于四個(gè)字節(jié)的數(shù)據(jù)J-Flash會將前四個(gè)字節(jié)取反再燒進(jìn)去,所以實(shí)際上起作用的還是4個(gè)字節(jié),不過單純作為序列號的話肯定是足夠了,4個(gè)字節(jié)32個(gè)比特位,IPv4的地址也就這些吧,呵呵,想不到會有什么產(chǎn)品會超過這個(gè)范圍,那樣的話Freescale超越當(dāng)年的Motorola也不是問題了啊,哈哈;
        (3) 關(guān)于燒寫地址的問題,理論上只要在目標(biāo)芯片的Code Flash地址范圍內(nèi)并且不與原始運(yùn)行代碼地址重疊即可,因?yàn)镴-Flash燒寫的原理是先添加數(shù)據(jù)到原始bin或者S19文件相應(yīng)的位置然后整個(gè)文件一塊燒寫進(jìn)去,所以寫序列號的時(shí)候不需要額外的再擦寫扇區(qū)一次也就是不會破壞同在一個(gè)扇區(qū)的原始數(shù)據(jù),不過當(dāng)然如果flash空間足夠大的話不建議將序列號燒寫地址挨著原始代碼太近,建議將序列號寫到Flash的最后,規(guī)避風(fēng)險(xiǎn);
        (4) 實(shí)際上采用J-Flash也可以燒寫多余4個(gè)字節(jié)的數(shù)據(jù),不過這需要手動添加編輯txt文件,這里就不多說了,可以參考附件中文檔。
        最近忙的不可開交,抽空終于把這篇文檔完成了,不容易啊不容易,下次再聊,未完待續(xù)~
UM08003_JFlashARM.pdf (559.81 KB, 下載次數(shù): 37)



作者: linweijie08    時(shí)間: 2015-11-10 16:11
不錯(cuò),好東西,謝謝分享
作者: cnc2020    時(shí)間: 2016-8-14 11:15
good share
作者: guolh    時(shí)間: 2017-10-26 10:08
學(xué)習(xí)~~~~
作者: janson    時(shí)間: 2017-11-12 21:35
不錯(cuò),學(xué)習(xí)了。謝謝分享




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1