<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è) > 嵌入式系統 > 設計應用 > 基于PSoC Creator Bootloader更新PSoC?3固件程序

基于PSoC Creator Bootloader更新PSoC?3固件程序

作者: 時(shí)間:2011-03-07 來(lái)源:電子產(chǎn)品世界 收藏

  1. 引言

本文引用地址:http://dyxdggzs.com/article/117492.htm

  許多電子產(chǎn)品允許出廠(chǎng)后更新固件程序,從而制造商可以發(fā)布新的固件版本增加功能或是修正錯誤。該功能一般有兩種實(shí)現方式:在系統程序燒錄和駐留更新程序。若將待更新的芯片看做從機,將執行更新操作的PC或是MCU看做主機,第一種方法通過(guò)芯片的燒錄接口,由主機模擬生產(chǎn)時(shí)燒錄器的時(shí)序,將固件數據燒錄至Flash中;第二種方法在從機的運行代碼中實(shí)現一段駐留程序,主機通過(guò)某種通訊接口與駐留程序通信,將固件數據先發(fā)送給駐留程序,然后由該程序更新至Flash。駐留程序在生產(chǎn)時(shí)被燒錄,一般只能通過(guò)硬件燒錄的方式更新。

  這種駐留程序有很多種稱(chēng)呼,一個(gè)常見(jiàn)的名字是,或者稱(chēng)為引導程序。不過(guò),由于駐留程序涉及內容較廣,實(shí)現穩定的更新功能需要較多的開(kāi)發(fā)投入。 芯片族和 1.0開(kāi)發(fā)環(huán)境提供了一套完整的開(kāi)發(fā)框架,開(kāi)發(fā)者無(wú)需編寫(xiě)代碼,即可獲得基于和USB接口的功能;或者僅做簡(jiǎn)單的二次開(kāi)發(fā),實(shí)現基于其他通訊接口或更新協(xié)議的Bootloader功能,從而縮短產(chǎn)品的研發(fā)周期。

  2. 理解 Bootloader

  芯片族是推出的基于8051核心的可配置片上系統(SoC),其主要特性包括

  · 片內包含多達64K Flash和8K SRAM;

  · 16~24個(gè)數字可編程邏輯器件(PLD),可以實(shí)現狀態(tài)機等需求定制數字邏輯;

  · 豐富的固定功能模塊,包括1個(gè)使用內部晶振的Full-Speed USB2.0模塊,多達4個(gè)16位可配置的Timer/PWM/Counter模塊等

  · 高性能模擬模塊,如75ns響應時(shí)間的比較器,最高采樣率192 ksps的12位 Delta-Sigma ADC等。

  提供了與PSoC3配套的開(kāi)發(fā)環(huán)境 1.0,將其豐富的片內資源抽象成眾多的可配置功能模塊,開(kāi)發(fā)者可以像設計電路板原理圖一樣,將所需模塊拖放在設計圖紙上,連接模塊之間的輸入輸出,然后使用C語(yǔ)言實(shí)現產(chǎn)品需求即可。

  PSoC3將所有代碼存放在片內Flash中,程序執行也是基于Flash,因此,Bootloader與應用程序分別位于Flash空間的不同位置。圖 1給出了PSoC3 Bootloader的Flash布局。在64K Flash空間中,低地址處存放的是Bootloader,較高地址處存放的是應用程序,二者中間有一個(gè)填充為零的隔離區,此外,在最高地址還存放著(zhù)一些公共數據,包括應用程序的起始地址,Bootloader使用的Flash大小,應用程序校驗和等。在產(chǎn)品的生命周期里,Bootloader只能在生產(chǎn)時(shí)通過(guò)硬件燒錄的方式寫(xiě)入Flash,一旦產(chǎn)品出廠(chǎng),除非意外情況,Bootloader不會(huì )被更新;應用程序也在生產(chǎn)時(shí)被寫(xiě)入,但是產(chǎn)品出廠(chǎng)后仍然可以通過(guò)Bootloader更新。

  圖 1 Bootloader與應用程序在PSoC3 Flash空間的布局

  為了實(shí)現上述的Flash布局,開(kāi)發(fā)者通常需要設置眾多的編譯、鏈接參數,這些參數控制編譯工具鏈生成所需固件映像(Image),但其復雜性常常令許多開(kāi)發(fā)者望而卻步。 1.0提供了一種簡(jiǎn)單的方法實(shí)現上述操作,將Bootloader與應用程序分成兩種工程(Project):bootloader工程和bootoadable工程。前者維護Bootloader的實(shí)現,后者維護應用程序的實(shí)現,后者將前者作為編譯依賴(lài),即bootoadable工程需要bootloader工程的編譯結果來(lái)完成自身的編譯鏈接。此劃分具有兩個(gè)優(yōu)點(diǎn),一方面將所有編譯工具鏈相關(guān)的參數設置與產(chǎn)品開(kāi)發(fā)分離,完全由PSoC Creator自動(dòng)處理,減少開(kāi)發(fā)難度;另一方面易于Bootloader和應用程序的維護,如需添加新功能至應用程序,僅需改動(dòng)bootloadable工程即可,避免錯誤修改Bootloader中內容。

  在技術(shù)實(shí)現上,PSoC3 Bootloader可分為三個(gè)功能層次,如圖 2所示?;就ㄓ崒雨P(guān)注通訊接口原子級的數據收發(fā),不同的通訊接口具有不同的原子級數據收發(fā),如SPI和UART一次數據收發(fā)都是基于單個(gè)字節,而的一次完整數據收發(fā)由多個(gè)字節組成的協(xié)議數據包。在基本通訊之上,PSoC3 Bootloader已定義了一套與主機通訊的更新協(xié)議,以便接收主機發(fā)送的命令幀,并將處理結果以狀態(tài)幀通知主機,此部分功能由協(xié)議處理層完成。核心功能層與具體的數據收發(fā)無(wú)關(guān),此部分僅關(guān)注數據幀的解析,處理,Flash的讀寫(xiě)等核心功能操作。

  圖 2 Bootloader功能層次圖

  通過(guò)此功能層劃分,核心功能層作為公共代碼模塊,所有的Bootloader工程創(chuàng )建時(shí)都將其包含在內,基本通訊層與通訊協(xié)議處理層由實(shí)際使用的通訊接口獨立維護。此設計可以在考慮不同通訊接口差異化的同時(shí),盡量復用代碼,減少開(kāi)發(fā)時(shí)間與難度。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: Cypress PSoC3 PSoC Creator Bootloader I2C

評論


相關(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>