性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

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

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

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

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


Bootloader Settings

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

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

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

下圖是配置Bootloader地址界面。

Bootloader End Address

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

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

Application Section Range Addresses

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

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

Remapped Interrupt Vector Address

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

Enable/Disable Bootloader Command

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

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

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

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


Bootloader Verification

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


Interrupt Vetor Table Remapping

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

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

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

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


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

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

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

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

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

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

聲明:本內(nèi)容為作者獨立觀點,不代表電子星球立場。未經(jīng)允許不得轉載。授權事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯的朋友,別忘了一鍵三連哦!
贊 3
收藏 4
關注 844
成為作者 賺取收益
全部留言
0/200
  • dy-wt1XAWRX 2023-03-22 17:32
    你好,麻煩問一下,我將此處按鍵改成定時器,但是上位機下載APP程序時會失敗,求指導?
    回復
  • 王超的小站 2020-11-22 08:36
    跟大姥學習了
    回復