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