91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

Westbrook
認證:VIP會員
所在專題目錄 查看專題
dsPIC33 BootLoader(1)-簡介
dsPIC33 BootLoader(2)-Flash程序存儲空間
dsPIC33 BootLoader(3)-構建中斷重映射表
dsPIC33 BootLoader(4)-基于MCC配置Boot區
dsPIC33 BootLoader(5)-基于MCC生成應用程序
Bootloader演示
作者動態 更多
10分鐘教你快速完成數字電源的閉環控制
2022-04-02 17:26
數字電源學習板演示
2022-02-19 13:36
手把手教你學數字電源系列視頻(22)- 數字控制的軟件流程
2022-02-19 13:28
手把手教你學數字電源系列視頻(21)- 設計數字補償器(LDE執行)
2022-02-19 13:28
手把手教你學數字電源系列視頻(20)- 設計數字補償器(AB系數計算)
2022-02-19 13:27

dsPIC33 BootLoader(4)-基于MCC配置Boot區

前面了解了一些Flash結構和中斷重映射之后,現在我們來用MPLAB X IDE自帶插件MCC生成Boot代碼。

打開MPLAB X IDE開發環境,點擊Tools->Embeded ->MPLAB Code Configurator,打開MCC插件,“System Module”設置系統時鐘和仿真口,根據需求自行選擇。在“Device Resources”下面的Libraries找到16-bit Bootloader,點擊“16-bit Bootloader”前面的“+”,添加到"Project Resources"。


Bootloader Settings

(1)設置通信方式(UART1)

前面有提到過,目前暫時只提供UART通信,后續會提供I2C/CAN的通信方式,在這里我們選擇UART1,點擊它之后會自動的彈出UART1外設的設置,采用默認的波特率或者自己選擇都可以。在這里我設置38400,配置完之后在"Pin Manager"里面配置TX和RX端口,將U1RX配置為input,U1TX配置為output。

(2)分配Flash空間和中斷重映射表

下圖是配置Bootloader地址界面。

Bootloader End Address

此字段允許用戶定義引導加載程序的最大大小,包括地址0x0和0x100處的中斷表,實際代碼從地址0x200開始。 Bootloader程序的大小必須是DSC閃存頁面大小的倍數,具體取決于DSC型號,通常為512或1024。 應用程序代碼的開始將放置在Bootloader結束之后的位置。 有關確定Bootloader大小的更多信息,請參見前面篇章介紹的Flash內存空間結構。

例如這里給Bootloader分配2頁,所以選擇Bootloader結束地址為0x001800,在這里一定要是0x800的倍數,如果不是則會報錯。

Application Section Range Addresses

這些字段顯示用戶應用程序代碼的計算出的開始和結束地址,該地址將始終緊隨引Bootloader結束地址之后,且兩者之間沒有空格。 結束地址將是物理閃存的倒數第二頁。 最后一頁包含設備配置字。 Bootloader將不會修改此頁面。

那么Application的開始地址就是0x1800,由于最后一頁是配置字,所以結束地址為0x2B7FE。

Remapped Interrupt Vector Address

此字段顯示計算出的用戶的地址重新映射中斷向量表的起始地址。 這里選擇中斷向量表的重映射地址從0x1A00開始。

Enable/Disable Bootloader Command

MCC提供了在Bootloader中提供啟用或禁用4個引導程序命令生成的功能。啟用后,將添加基本代碼以在引導程序中執行命令。禁用后,命令將被完全刪除,如果嘗試執行這些命令,將導致“命令不支持”響應。

Enable RESET command:允許bootloader命令發出設備重置信息。這樣,Bootloader在下載完命令后即可重置設備。某些情況下可能不希望啟用此操作,而只允許開機復位。

Enable READ command:允許Bootloader和外部Bootloader應用程序讀取用戶代碼的內容。這可能會對某些用戶造成安全風險。

Enable CHECKSUM command:允許Bootloader和外部Bootloader應用程序對用戶代碼執行校驗和。這可能會對某些用戶造成安全風險。


Bootloader Verification

選擇用于驗證應用程序二進制文件的方法,后續會對改部分內容進行單獨說明,在這里我們選擇Not Blank這一選項。


Interrupt Vetor Table Remapping

remap_to_application-將中斷直接跳轉至用戶應用程序。 跳轉的每個中斷將在用戶重映射表中需要2條GOTO指令,因此每條占用6個字節的程序存儲器。 對于以硬件實現的所有中斷,這是最安全的選擇。但是這種成本高,需要的內存空間大。

keep_in_bootloader-此選項會將中斷保留在引導程序中。 如果定義了中斷功能,它將僅作用于該功能。 如果未定義,它將跳轉到默認中斷處理函數。

remap_to_application_default-將中斷直接跳轉到用戶應用程序的默認中斷處理程序,而不是指定的唯一中斷向量。 該選項對于應用程序不希望使用的中斷很有用。 由于通過remap_to_application選項跳轉的每個中斷都占用2個指令字,因此跳轉所有可能的中斷的成本可能很高。 使用此選項跳轉的中斷不會占用任何其他代碼空間來進行跳轉。 由于多個中斷將被跳轉到同一向量,因此用戶代碼必須檢查觸發了哪個中斷以進行相應的處理。

作為示例,此處采用默認的配置,后續會針對不用的配置進行單獨說明,比如在Boot區產生中斷。


進行完上述的配置,點擊“Generate”產生代碼,如下:

為了驗證Boot區的程序執行,增加一個LED閃爍的代碼, 在main.c里面增加。

同時在boot_demo.c文件RunBootLoader()函數里面進行調用。

編譯OK后將整個代碼燒錄到MCU里面,會發現LED再進行閃爍,說明程序運行成功。

在Bootloader程序中加入按鍵的操做,當MCU上電或者復位后如果按鍵有效,則會進入bootloader程序運行,否則會進入application程序運行。設置bootloader程序運行時的閃爍頻率和application運行的不一致,以此來判斷在哪個區間運行程序。

至此,采用MCC配置的Bootloader程序產生完成,接下來是進行Application的配置。

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 3
收藏 4
關注 856
成為作者 賺取收益
全部留言
0/200
  • dy-wt1XAWRX 2023-03-22 17:32
    你好,麻煩問一下,我將此處按鍵改成定時器,但是上位機下載APP程序時會失敗,求指導?
    回復
  • 王超的小站 2020-11-22 08:36
    跟大姥學習了
    回復
主站蜘蛛池模板: 于田县| 洛扎县| 阳原县| 霍林郭勒市| 开封市| 龙门县| 江城| 鹤山市| 金湖县| 平武县| 黄大仙区| 宁蒗| 沙湾县| 楚雄市| 靖边县| 二连浩特市| 凤台县| 中超| 东港市| 维西| 鞍山市| 永靖县| 滨州市| 星座| 梅河口市| 鄯善县| 方山县| 当涂县| 本溪市| 鸡西市| 卓资县| 景泰县| 霍山县| 防城港市| 开原市| 沾益县| 周宁县| 贞丰县| 合作市| 四川省| 北海市|