|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請教lpc2210啟動代碼問題 |
| 作者:gczh1006 欄目:ARM技術(shù) |
在LPC2210啟動代碼中 IF :DEF: EN_CRP IF . >= 0x1fc INFO 1,"\nThe data at 0x000001fc must be 0x87654321.\nPlease delete some source before this LINE." ENDIF CrpData WHILE . < 0x1fc NOP WEND CrpData1 DCD 0x87654321 ;/*When the Data is 為0x87654321,user code be protected. 當此數(shù)為0x87654321時,用戶程序被保護 */ ENDIF 這CrpData函數(shù)在何時被調(diào)用? 對這段函數(shù)的必要性及需完成的功能模糊不清 |
| 2樓: | >>參與討論 |
| 作者: cloudlily 于 2006/9/21 15:48:00 發(fā)布:
看看這個文章也許會明白 http://www.56789.com/Upload/Tech/200410191044170375.pdf 廣州周立功單片機發(fā)展有限公司 Tel: (020)38730976 38730977 Fax: 38730925 http://www.zlgmcu.com LPC2100系列ARM7微控制器的加密方法 1. 加密原理說明 LPC2100系列ARM7微控制器是世界首款可加密的ARM芯片,對其加密的方法是通過用戶程序在指定地址上設(shè)置規(guī)定的數(shù)據(jù)。PHILIPS公司規(guī)定,對于LPC2100芯片(除LPC2106/2105/2104外),當片內(nèi)FLASH地址0x000001FC處的數(shù)據(jù)為0x87654321時,芯片即被加密。在加密設(shè)置后,JTAG調(diào)試接口無效,ISP功能只提供讀ID及全片擦除功能。注意:將帶有加密設(shè)置的程序下載到芯片內(nèi)部FLASH,在下一次系統(tǒng)復位后加密生效。 2. 加密程序?qū)崿F(xiàn) 為了實現(xiàn)加密設(shè)置,用戶必須保證在0x000001FC處定義數(shù)據(jù)0x87654321。我們先來分析一下帶有加密設(shè)置的程序結(jié)構(gòu),如圖1所示,地址0x000000~0x00000020為異常向量表,若向量表中使用LDR指令跳轉(zhuǎn),可以在0x00000020~0x00000040之間定義各個異常服務入口地址;在異常向量表之后,0x000001FC地址之前,這一小塊空間可以編寫部分初始化代碼或FIQ中斷處理程序;然后使用NOP指令填充,直到0x000001FC地址,在該地址上定義數(shù)據(jù)0x87654321即可,用戶的其它程序代碼緊跟其后。 0x00000000 異常向量表 部分初始化代碼 或 FIQ中斷處理 NOP NOP … DCD 0x87654321 用戶代碼 0x00000020 0x000001FC 圖1 帶有加密設(shè)置的程序結(jié)構(gòu)圖 加密程序的實現(xiàn)部分在LPC2100的起動代碼Startup.s文件中,如程序清單1所示。程序首先使用IF偽指令判斷是否已定義EN_CRP全局變量,若已聲明,則編譯程序清單1(2)~(8)的代碼,進行加密設(shè)置。說明:EN_CRP全局變量可以在匯編器中預定義或在該文件開頭用GBLA/GBLL聲明。 程序清單1(2)是用來判斷當前代碼地址是否已超過0x000001FC,若超過則使用INFO偽指令顯示出錯信息,見程序清單1(3)。程序清單1(5)~(7)用于填充NOP指令,直到0x000001FC為此。程序清單1(8)即是在0x000001FC地址上定義數(shù)據(jù)0x87654321,以實現(xiàn)加密設(shè)置。 - 1 - 廣州周立功單片機發(fā)展有限公司 Tel: (020)38730976 38730977 Fax: 38730925 http://www.zlgmcu.com 程序清單1 LPC2100加密程序?qū)崿F(xiàn)代碼 ; 異常向量表 … … IF :DEF: EN_CRP (1) IF . >= 0x1fc (2) INFO 1,"\nThe data at 0x000001fc must be 0x87654321.\nPlease delete some source before this LINE." (3) ENDIF (4) CrpData WHILE . < 0x1fc (5) NOP (6) WEND (7) CrpData1 DCD 0x87654321 (8) ENDIF (9) 3. 工程模板中可加密的目標 使用LPC2100專用工程模板建立的工程,當選用RelInFLASH目標時,將會生成帶有加密設(shè)置的程序。 對于Thumb Executable Image for UCOSII(for lpc21xx) 工程模板,當選用ThumbRelInFLASH目標時,將會生成帶有加密設(shè)置的程序。 - 2 - |
|
| 3樓: | >>參與討論 |
| 作者: gczh1006 于 2006/9/22 8:18:00 發(fā)布:
謝 cloudlily |
|
| 4樓: | >>參與討論 |
| 作者: gczh1006 于 2006/9/22 8:25:00 發(fā)布:
另外一個問題 zlg_boot的這個功能函數(shù)在何時被調(diào)用? __user_initial_stackheap LDR r0,=bottom_of_heap ; LDR r1,=StackUsr LDR r2,=top_of_heap LDR r3,=bottom_of_Stacks MOV pc,lr 另外,在一個bootloader中,堆棧初始化要做哪些工作? 可否直接給個有別于zlg_boot的例子?問得比較基礎(chǔ)一點,望大俠不吝賜教~~~ |
|
| 5樓: | >>參與討論 |
| 作者: cloudlily 于 2006/9/22 9:43:00 發(fā)布:
__user_initial_stackheap用于ADS內(nèi)部庫函數(shù)存儲局部變量 __user_initial_stackheap用于ADS內(nèi)部庫函數(shù)存儲局部變量,應該是在線仿真時用到,但是對于應用本身可以不關(guān)注 |
|
| 6樓: | >>參與討論 |
| 作者: gczh1006 于 2006/9/22 16:58:00 發(fā)布:
那么,堆棧初始化需要做那些工作呢? 我最近想移植u-boot到smartARM2000 上,發(fā)現(xiàn)進入c程序出錯 對比下uboot和zlg_boot 發(fā)現(xiàn)自己的堆棧初始化沒有弄好 所以,還請大俠們不吝賜教~~ |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |