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