<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 網(wǎng)絡(luò )與存儲 > MSP430串行寫(xiě)入BOOTSTRAP與加密熔斷功能

MSP430串行寫(xiě)入BOOTSTRAP與加密熔斷功能

——
作者:陳 曦 常 越 時(shí)間:2007-08-30 來(lái)源:?jiǎn)纹瑱C及嵌入式系統應用 收藏

  摘要:用于在設計開(kāi)發(fā)及系統更新時(shí)對Flash存儲器的編程。它可以用經(jīng)串口協(xié)議的命令來(lái)激活,使得用戶(hù)可以通過(guò)PC控制,并實(shí)現數據交換。燒斷Flash的熔絲是用來(lái)保護用戶(hù)在Flash中的程序代碼。本文主要介紹我們制作的這一開(kāi)發(fā)工具的功能、軟硬件結構以及工具的制作方法。

    關(guān)鍵詞:

引 言

  對于MSP430單片機的開(kāi)發(fā)調試有多種技術(shù)方案,例如EPROM方式、OTP方式、仿真開(kāi)發(fā)系統方式、JTAG和BOOTSTRAP方式。BOOTSTRAP(又名BootStrap Loader,簡(jiǎn)稱(chēng)BSL)可與另一種Flash仿真工具JTAG控制器配合使用。對于Flash型的MSP430單片機初期開(kāi)發(fā)進(jìn)行的仿真,只需要1臺PC機和1個(gè)FET(Flash Emulator Tool)的JTAG控制器即可實(shí)現。進(jìn)入產(chǎn)品級開(kāi)發(fā)階段,為了保護用戶(hù)代碼,燒斷Flash的保護熔絲以后就無(wú)法再通過(guò)JTAG口訪(fǎng)問(wèn)單片機,這時(shí)用戶(hù)對Flash中的程序再進(jìn)行檢查或更新就只能通過(guò)BOOTSTRAP進(jìn)行。不用擔心用戶(hù)代碼會(huì )泄露,BOOTSTRAP提供了32字節256位的密碼保護,能完全確保代碼的安全性。

  BOOTSTRAP的硬件制作并不費力,只要與調試環(huán)境軟件配合(TI網(wǎng)站提供免費下載限制功能的軟件,不過(guò)用戶(hù)可以輕松地制作完全功能軟件),就能很方便地構建自己的開(kāi)發(fā)環(huán)境。對于的方法,從以前TI公布的資料看,只要在功能引腳上施加一個(gè)6.5V左右的電壓數ms就可以了。當然,各類(lèi)芯片熔斷的方法也有一些差異。但是,除了11x系列的單片機有人用這種方法試驗成功外,對其余系列的單片機無(wú)法實(shí)現,甚至有毀壞芯片的可能?,F在,隨著(zhù)為T(mén)I公司的各類(lèi)FET仿真器及BOOTSTRAP開(kāi)發(fā)工具的相繼推出,在一篇TI資料中,給出了MSP430熔斷的方案和指令結構,這樣,我們用DIY的完全功能開(kāi)發(fā)調試系統就可以構建成功了。

1 BOOTSTRAP的功能與啟動(dòng)

  通過(guò)BOOTSTRAP可以訪(fǎng)問(wèn)單片機的全部存儲器,包括程序Flash、ROM、RAM,并可對其進(jìn)行擦除、讀寫(xiě)。它能用于批量下載程序,監測程序使用情況和各個(gè)變量與寄存器的使用情況,并可對其進(jìn)行修改。因此,使用BOOTSTRAP能夠方便地進(jìn)行軟件升級。

  用戶(hù)燒斷Flash熔絲的目的在于保護程序代碼,通過(guò)BOOTSTRAP讀取MSP430,需要32字節即256位的密碼口令;但是,BOOTSTRAP又表現了其極大的靈活性,其功能分為需要密碼保護的功能與不需要密碼保護的功能。其中,受密碼保護的操作有從MSP430的存儲器中讀數據、寫(xiě)數據、Flash段擦除和讀取程序計數器;不受密碼保護的操作就是接收密碼口令與Flash全擦除,擦除之后32個(gè)字節的密碼口令全為0xFFH。這樣使得用戶(hù)的程序代碼受到完全的保護,而且芯片也能保持應用的靈活性。

  對于MSP430系列Flash型單片機,依靠RST/NMI引腳與TCK引腳(有的型號如MSP430F11x1使用TEST引腳)和一定的時(shí)序就進(jìn)入標準的復位過(guò)程,即使用地址0FFFEH處的RESET向量,然后進(jìn)入正常的程序入口。改變RST/NMI引腳與TCK引腳的時(shí)序配合,就可以啟動(dòng)BOOTSTRAP,即地址0C00H處的BSL RESET向量用做程序入口,單片機執行BOOT ROM里的程序。MSP430F13x/14x的正常復位時(shí)序如圖1所示,BSL復位時(shí)序如圖2所示。

  如果發(fā)生以下情況,則不能啟動(dòng)BSL:

  ◇ 在RST/NMI引腳保持為低時(shí),TCK引腳上出現的上升沿少于2個(gè);

  ◇ 當RST/NMI引腳電平從低跳變到高時(shí),TCK引腳還是保持為高;

  ◇ JTAG接口已控制了MSP430的資源;

  ◇ 因Vcc下降引起POR(復位)。

  退出BOOTSTRAP時(shí),要釋放單片機的程序計數器PC,有兩種情況:一種是在BSL中使用加載PC命令,從指定的程序地址繼續執行;另一種是用標準的RESET序列強制使MSP430用0FFFEH的向量地址開(kāi)始執行程序。

2 BOOTSTRAP的軟硬件結構

2.1 BOOTSTRAP的硬件結構

  BOOTSTRAP硬件完成PC機和MSP430單片機通信的接口功能,主要由電源供電、信號接口和電平轉換幾個(gè)部分構成。

  MSP430采用的是3.3 V電源,BOOTSTRAP可以采用外部給單片機供電再將電引到BOOTSTRAP板上,或直接利用PC機串口的電壓再轉換成3.3 V的方案。利用PC機串口電壓的方案由于不需要外部供電,適用于批量下載、修改程序,使用方便。PC機通過(guò)串口和MSP430通信,串口用的是232電平,MSP430單片機用的是3.3 V的供電系統,因此存在一個(gè)電壓轉換的問(wèn)題。對于電壓轉換,TI公司提供兩個(gè)系列的電壓調整芯片TPS770xx和TPS760xx系列。這兩款芯片都能滿(mǎn)足輸入從 -0.3~13.5 V,穩定輸出50 mA 電流1.2~5 V的要求。

  BOOTSTRAP使用的信號線(xiàn)與串口信號線(xiàn)的對應情況如表1所列。信號線(xiàn)與MSP430系列引腳的對應情況如表2所列。

表1

引腳名 全名(PC) BSL對應接口功能
RxD Receive data 發(fā)數據到PC
TxD Transmit data 從PC收數據(負電壓)
DTR Data terminal ready 復位控制(正壓)
RTS Request to send TEST或TCK控制(正電壓)
GND Ground

表2

信號線(xiàn) MSP430
11x(1)系列 F14x/F13x系列 F4xx系列
TXD P1.1 P1.1 P1.0
TCK 不連 TCK TCK
RXD P2.2 P2.2 P1.1
RST RST/NMI RST/NMI TST/NMI
TST Test   不連

2.2 BOOTSTRAP的軟件結構

  對于PC機來(lái)講,主要就是解決通過(guò)串口與MSP430通信和可視化界面的問(wèn)題,可以使用VC、VB、Delphi等各種軟件開(kāi)發(fā)工具,界面如圖3所示。

  對于MSP430來(lái)講,與PC機進(jìn)行串口通信,接收、發(fā)送數據與擦寫(xiě)Flash的程序是已經(jīng)固化在BOOT ROM里的,所以必須根據MSP430的設置來(lái)編寫(xiě)上位機程序。啟動(dòng)BSL后,MSP430會(huì )首先關(guān)閉看門(mén)狗、關(guān)中斷、定義基礎時(shí)鐘模塊,由DCO(Digitally-Controlled Oscillator)產(chǎn)生系統主時(shí)鐘脈沖MCLK和輔助時(shí)鐘脈沖SMCLK,使最小時(shí)鐘頻率為1.5 MHz。用TIMER_A做軟串口實(shí)現與PC機通信,建立軟件異步通信協(xié)議,連續模式,時(shí)鐘源為MCLK,DIV=1,CCR0用于比較,CCTL0用于查詢(xún)CCIFG0標志。P1.1為T(mén)X發(fā)送端(設置為輸出高),P2.2為RX接收端(設置為輸入)。BSL初始化系統后,處于就緒狀態(tài),等待PC機的同步序列和第一個(gè)命令。BOOTSTRAP的串口設置如表3所列。

表3

波特率/baud 9600
數據位/b 8
奇偶校驗 偶校驗
停止位 1

  PC機設置好串口之后就可以發(fā)一個(gè)字節的同步信號給MSP430,MSP430正確接收后會(huì )返回一個(gè)ACK應答信號,PC機判斷這個(gè)應答信號正確后就可以按照設定的幀格式發(fā)送、接收數據,MSP430每收到一幀,也會(huì )發(fā)一個(gè)應答信號以供PC機確認。其幀格式如圖4所示。

  BSL的程序代碼在BOOT ROM中(0C00H…0FEFH),0FF0H…0FFFH保存有芯片的標識,其中BOOTSTRAP的版本信息就存儲在地址為0FFAH的地方。BSL的初期版本(1.10及其以下)需要一些補丁來(lái)寫(xiě)Flash(參見(jiàn)TI有關(guān)資料Bug Ids:BSL2、BSL3和BSL4),其補丁也是MSP430的程序代碼。先將其寫(xiě)到RAM中,使用LOAD PC的命令,將目標程序的起始地址裝入程序計數器中,就可以執行補丁程序了。然后,在程序最后加一句跳轉到0x0c00的語(yǔ)句就可以返回BOOTSTRAP了。通過(guò)這種方法,用戶(hù)也可以自己對BOOTSRTAP做一些改動(dòng),以滿(mǎn)足用戶(hù)實(shí)際應用中的需要。

3 熔斷操作

  MSP430Fxx的芯片中設置有保護熔絲。熔斷需要在TDI引腳上加上一個(gè)6.5 V



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>