新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 離線加密編程器中的BootLoader程序設計

        離線加密編程器中的BootLoader程序設計

        作者: 時間:2011-01-19 來源:網絡 收藏


        4.2 BootLoader區程序的設計思想

        由于目標板上AVR單片機種類的不同,所包含的頭文件也不盡相同,而且BootLoader區的大小也是根據目標板的不同而不同,所以存儲芯片中 BootLoader程序代碼要滿足當前主流的AVR單片機的需求。另外由于存儲芯片容量大小的限制,要求引導程序要短小精煉。

        編程BootLoader區的一個重要的內容是熔絲位的編程,熔絲位編程出錯可能導致編程的失敗。寫SPIEN為“1”,導致編程器與目標板無法建立連接;寫RSTDISBL為“O”,將導致復位引腳失效;寫CKSEL熔絲位出錯,將導致內外部晶振的選擇混亂,從而導致編程失敗。

        BootLoader程序編程步驟:

        ①配置BOOTSZl和B00TSZ0熔絲位,設定Boot—Loader區的大小:

        5.gif

        本文引用地址:http://www.104case.com/article/151069.htm



        ②配置BOOTRST熔絲位,芯片上電啟動的設定從BootLoader區的起始地址處開始,即每次上電復位后,首先從BootLoader區起始位置開始運行。

        ③下載BootLoader程序的HEX文件。下載時要注意BootLoader區的起始位置。

        ④設置的Boot鎖定位,保護BootLoader不被破壞,使其只能通過芯片擦除命令清除BootLoader區的程序。

        5 BootLoader程序的下載

        編程器外存中存儲適合各種型號AVR單片機的BootLoader源代碼。在下載BootLoader程序之前,首先在編程器外存中找到適合目標板單片機型號的Boot—Loader程序,然后下載到目標板。主要設計問題是數據的傳輸、熔絲位和鎖定位的編程、Flash的讀寫。

        5.1 實 例

        本設計采用串行編程模式,串行接口包括RESET、SCK、MOSI(輸入)及MISO(輸出)四條線。當RESET為低電平時,可以通過串行 SPI總線對Flash進行編程,應在執行編程或擦除操作之前執行編程使能指令。下面以ATmegal69為例,給出一個實際的程序。

        6.gif

        首先對SPI接口進行初始化SPI_MasterInit(),并使能操作SPI_Enable(),然后擦除Flash頁SPI_Erase(),進行 Flash的頁寫操作program_bootloader(),再寫熔絲位SPI_WriteFuse和寫鎖定位SPI_WriteLock,最后進行復位操作SPI_Over()。

        5.2 串行編程應遵循的步驟

        ①上電過程:在RESET及SCK為0時,向VCC及GND供電。在一些系統中,編程器不能保證在上電時SCK保持為低。在這種情況下,SCK拉低之后應在RESET加一正脈沖,而且這個脈沖至少要維持2個CPU時鐘周期。

        ②上電之后等待至少20 ms,然后向MOSI引腳輸入串行編程使能指令以使能串行編程。

        ③通信不同步將造成串行編程失敗。同步之后,在發送編程使能指令的第3個字節時,第2個字節的內容(0x53)將被反饋回來。不論反饋的內容正確與否,指令的4個字節必須全部傳輸。如果0x53未被反饋,則需要向RESET提供一個正脈沖以開始新的編程使能指令。

        ④Flash的編程以一次一頁的方式進行。頁的大小為128字節。在執行加載程序存儲頁指令時,通過6位的地址信息,數據以字節為單位加載到存儲頁。為保證加載的正確性,應先向給定地址傳送數據低字節,之后是高字節。程序存儲頁通過地址的高8位以及寫程序存儲器頁指令獲得數據。如果不使用查詢的方式,那么在操作下一頁數據之前應等待至少4.5 ms。在Flash寫操作完成之前訪問串行編程接口,會導致編程錯誤。

        ⑤可通過讀指令來校驗任何一個存儲單元的內容。數據從串行輸出口MISO輸出。

        ⑥編程結束后可以將RESET拉高,開始正常操作。

        ⑦下電序列:將RESET置“1”。

        結語

        在一般的開發過程中,每次進行程序的調試和更新都要將產品與PC機直連,進行在線操作,這樣就限制了程序調試和更新的場所。離線加密編程器的設計避免了這種場所的限制。編程器只有普通的火柴盒大小,功能完善且攜帶方便,這樣可以將已編寫好的程序存儲在編程器中,然后將編程器帶到所需場所(特別是在惡劣的工業現場和野外)對產品進行再編程。本設計采用 BootLoader引導區程序進行數據的解密和編程操作,既達到了對知識產權進行保護的目的,又方便了程序的調試和更新。


        上一頁 1 2 3 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 驻马店市| 修文县| 肇庆市| 旌德县| 阿尔山市| 新丰县| 林芝县| 鹿邑县| 句容市| 大连市| 甘孜| 来凤县| 土默特左旗| 炎陵县| 临猗县| 离岛区| 黎川县| 施秉县| 盖州市| 高密市| 石阡县| 博乐市| 云和县| 华安县| 桂平市| 横山县| 巧家县| 若尔盖县| 遵化市| 长治市| 巴林右旗| 石楼县| 额济纳旗| 灵丘县| 罗城| 富宁县| 虹口区| 和林格尔县| 天台县| 库尔勒市| 噶尔县|