一、概述 Bootloader 系統使用新應用代碼和/或數據管理組件閃存的更新流程。為了使流程生效,我們使用以下組件: Bootloader 工程 - 包含 Bootloader 和通信組件的工程 Bootloadable 工程- 包含用于創(chuàng )建代碼的 Bootloadable 組件的工程
1、Bootloader 組件 Bootloader 組件允許用戶(hù)對組件閃存進(jìn)行代碼更新。Bootloader 接受并執行命令,然后將這些命令的響應傳回通信組件。Bootloader 收集并整理接收到的數據,并通過(guò)一個(gè)簡(jiǎn)單的命令/狀態(tài)寄存接口管理對閃存的寫(xiě)入操作。 工程應用類(lèi)型需與原理圖上放置的組件匹配。例如,對于 Bootloader 工程,將應用類(lèi)型設置為 Bootloader 并將 Bootloader 組件放置在原理圖上。
2、通信組件 通信組件管理通信協(xié)議從外部系統接收命令,然后將這些命令傳遞到 Bootloader 。它還將 Bootloader 的命令響應傳遞回片外系統。
3、Bootloadable 組件 使用 Bootloadable 組件時(shí),可以為 Bootloadable 項目指定附加參數。
二、應用程序編程 (API )接口
應用程序編程接口 (API) 庫例程允許您使用軟件配置組件。下表列出了每個(gè)函數的接口并進(jìn)行了說(shuō)明。以下各節將更詳細地介紹每個(gè)函數。 默認情況下, PSoC Creator 將實(shí)例名稱(chēng)“Bootloade _1”分配給指定設計中的 Bootloader 組件的第一個(gè)實(shí)例,將“Bootloadable_1”分配給 Bootloadable 組件的第一個(gè)實(shí)例。您可以將該實(shí)例重命名為符合標識符語(yǔ)法規則的任意唯一值。實(shí)例名稱(chēng)會(huì )成為每個(gè)全局函數名稱(chēng)、變量和常量符號的前綴。出于可讀性考慮,下表中使用的實(shí)例名稱(chēng)為“Bootloader” 和 “Bootloadable”。 Bootloader 和 Bootloadable 的函數
三、功能描述
1、Bootloader 和 Bootloadable 的函數 Bootloader 工程通過(guò) Bootloader工程的通信組件可將 Bootloadable 工程(或新代碼)整體燒寫(xiě)到閃存中。傳輸后,會(huì )始終對處理器進(jìn)行復位。Bootloader 工程還負責在復位時(shí)測試特定條件,并有可能在 Bootloadable 工程不存在或損壞的情況下自動(dòng)啟動(dòng)傳輸操作。 啟動(dòng)時(shí),Bootloader 代碼加載其自己配置的配置字節。此外還必須初始化堆棧和其他資源以及外設以便進(jìn)行傳輸。傳輸完成后,控件通過(guò)軟件復位傳遞到 Bootloadable 中。 然后, Bootloadable 加載其自己配置的配置字節,并對堆棧及其函數的其他資源和外設重新進(jìn)行初始化。 Bootloadable 可調用其中的 Bootloadable_Load() 函數,以切換為引導加載應用程序(這會(huì )再次造成軟件復位)。 下圖顯示了 Bootloader 的工作原理。
2、Bootloader 應用程序 通常,您可以通過(guò)將 Bootloader 組件和通信組件拖到原理圖上、將 I/O 路由至引腳、設置時(shí)鐘等操作來(lái)完成 Bootloader 設計工程。包含 Bootloader 組件和通信組件的工程實(shí)現基本引導加載應用程序函數的新代碼接收并將其寫(xiě)入閃存。您可以通過(guò)將其他組件拖到原理圖上或添加源代碼來(lái)向基本的 Bootloader 工程添加自定義函數。
3、Bootloadable 應用 Bootloadable 應用實(shí)際上就是代碼。它與常規應用類(lèi)型非常相似。主要區別是,Bootloadable 應用始終與引導加載應用相關(guān)聯(lián),而常規工程從不會(huì )與引導加載應用關(guān)聯(lián)。
四、應用例子 以上經(jīng)典描述,顯得生澀難懂,不知所云,難以理解。下面幾個(gè)例子就是Bootloader、Bootloadable工程程序,在The PSoS 4 kit CY8CKIT-042開(kāi)發(fā)板上的試用,目的是了解引導加載應用程序的實(shí)現、特點(diǎn)(與常規工程應用相比)和過(guò)程。
一)、UART Bootloader工程
UART Bootloader工程有三個(gè)項目:UART_Bootloader、Bootloadabie1 和Bootloadabie2 。建造完畢(過(guò)程略)、硬件連接(UART和 PSoC 5LP 之間P0.0- P12.7、P0.1- P12.6的連接)后,經(jīng)Build和Program(CY8CKIT-042經(jīng)USB接口與PC相連)成功后,可以進(jìn)行工作。
1、UART_Bootloader項目
這時(shí)可以看到 CY8CKIT-042板上RGB LED紅燈閃亮,原理圖如下: 說(shuō)明Bootloader處于等待引導加載命令狀態(tài), UART是通信組件,配置給Bootloader 組件,PWM已處于工作狀態(tài),脈沖輸出分配給P1.6管腳,紅燈點(diǎn)亮。 組件和組件配置見(jiàn)附件:UART_Bootloader_Project圖片. 軟件及其它見(jiàn)附件:UART_Bootloader_Project.
2、Bootloadabie1項目 Bootloadabie1 配置有UART_Bootloader.hex代碼,點(diǎn)壓 CY8CKIT-042板上的“SW2”按鈕,系統處于Bootloader 處于等待引導加載命令狀態(tài),CY8CKIT-042板上RGB LED紅燈閃亮;打開(kāi)Bootloader Host Application (UARTBootloaderHost.exe,在附件文件夾:UART_Bootloader_Project), 選擇通信端口 COM(從PC設備管理器查找),點(diǎn)擊“ Connect”按鈕進(jìn)行連接;連接成功后,選擇引導加載文件(從文件夾里查找,路徑...\Bootloadable1.cydsn\ CortexM0\ ARM_GCC_441\Debug\Bootloadable1.cyacd),點(diǎn)擊“Bootload” 按鈕引導加載文件, 引導加載成功后,點(diǎn)亮 CY8CKIT-042板上RGB LED綠燈。
實(shí)現原理圖如下: 組件和組件配置見(jiàn)附件:UART_Bootloader_Project圖片. 軟件及其它見(jiàn)附件:UART_Bootloader_Project.
3、Bootloadabie2項目 過(guò)程與“2、Bootloadabie1項目”完全相同,只不過(guò)加載的是“Bootloadable1.cyacd”代碼文件,點(diǎn)亮的是CY8CKIT-042板上RGB LED藍燈。同樣,點(diǎn)壓CY8CKIT-042板上的“SW2”按鈕,系統處于Bootloader處于等待引導加載命令狀態(tài),CY8CKIT-042板上RGB LED紅燈閃亮,RGB LED其它燈滅,可以引導加載“Bootloadable1.cyacd”代碼文件等循環(huán)過(guò)程。
實(shí)現原理圖如下: 組件和組件配置見(jiàn)附件:UART_Bootloader_Project圖片. 軟件及其它見(jiàn)附件:UART_Bootloader_Project.
4、視頻:
5.附件:
二)、I2C Bootloader工程
(河南 薛)
|