基于PSoC Creator Bootloader更新PSoC?3固件程序
3. 使用基于I2C的PSoC3 Bootloader
本文引用地址:http://m.butianyuan.cn/article/117492.htmPSoC Creator 1.0內(nèi)嵌了一套基于I2C通信的Bootloader,開發(fā)者可以直接使應用于項目開發(fā),圖 3是PSoC3 I2C Bootloader的工作流程圖。
圖 3 PSoC3 I2C Bootloader 工作流程圖
PSoC3內(nèi)部有一個8位寄存器,其最高2位只能通過上電復位清除,軟件復位不影響其數(shù)值,因此可以用作運行類型標志位,每次系統(tǒng)上電或軟件復位后都會檢查此標志位,以決定是直接運行應用程序還是進入Bootloader更新固件。PSoC3 Bootloader已經(jīng)定義一組用于更新固件的通訊協(xié)議,其中PSoC3作為從設備,接收主設備發(fā)送的命令數(shù)據(jù)包,處理后回復主設備狀態(tài)數(shù)據(jù)包,表 1是兩種數(shù)據(jù)包的格式定義。
表 1PSoC3 I2C Bootloader通信數(shù)據(jù)包格式
表 2列出了PSoC Creator 1.0 Bootloader通訊協(xié)議支持的命令,開發(fā)者如果直接使用該協(xié)議更新固件,在設計主機更新程序時需參考此表中內(nèi)容,更詳細的命令定義可以參考PSoC Creator 1.0幫助文檔中的系統(tǒng)參考指南(System Reference Guide)。
表 2 PSoC Creator 1.0 Bootloader內(nèi)嵌通訊協(xié)議命令列表
4. PSoC3 Bootloader二次開發(fā)
PSoC Creator 1.0現(xiàn)提供基于I2C或USB的Bootloader實現(xiàn),開發(fā)者若想使用其他的通訊接口,或者修改通訊協(xié)議和更新流程,可以在Bootloader框架基礎(chǔ)上進行快速二次開發(fā)。cybtldr.c 是Bootloader核心功能層的實現(xiàn)代碼,其中兩個關(guān)鍵函數(shù)覆蓋了Bootloader主要功能:
· CyBtldr_Start函數(shù)
該函數(shù)實現(xiàn)了執(zhí)行Bootloader更新前的所有檢查流程,如果需要修改圖 3中的工作流程,可以修改此函數(shù)中代碼。
· CyBtldr_HostLink函數(shù)
該函數(shù)是Bootloader的核心功能函數(shù),實現(xiàn)了數(shù)據(jù)包的解析,命令的處理,更新Flash,以及發(fā)送狀態(tài)數(shù)據(jù)包的功能。修改此函數(shù),可以添加新命令數(shù)據(jù)包,修改數(shù)據(jù)包結(jié)構(gòu)等。
CyBtldr_HostLink通過調(diào)用CyBtldrCommRead函數(shù)接收數(shù)據(jù),調(diào)用CyBtldrCommWrite函數(shù)發(fā)送數(shù)據(jù),這兩個函數(shù)都屬于通訊協(xié)議處理層,由Bootloader使用的通訊接口模塊獨立維護,不同的通訊接口模塊具有不同實現(xiàn)。若使用專有通訊接口時,還需實現(xiàn)上述兩函數(shù)以便CyBtldr_HostLink能夠收發(fā)數(shù)據(jù)。
5. 總結(jié)
使用PSoC Creator 1.0的Bootloader開發(fā)框架,開發(fā)者可以通過I2C或USB輕松更新基于PSoC3的應用產(chǎn)品固件程序,即使針對不同的應用需求,開發(fā)者只需較少的開發(fā)投入,就可以在Bootloader框架基礎(chǔ)上進行二次開發(fā),實現(xiàn)多樣的產(chǎn)品特性。
參考文獻
[1]. PSoC3 Architecture Technical Reference Manual, Cypress Semiconductor Ltd.
[2]. PSoC Creator: Timer Component Datasheet, Cypress Semiconductor Ltd.
[3]. PSoC Creator: Interrupt Component Datasheet, Cypress Semiconductor Ltd.
[4]. PSoC Creator: System Reference Guide, Cypress Semiconductor Ltd.
[5]. AN60317, PSoC 3 / PSoC 5 I2C Bootloader, Cypress Semiconductor Ltd.
評論