本人參照官方資料,做的學(xué)習(xí)筆記,有理解不對(duì)的地方請(qǐng)大神指出。
IDE:MPLAB X IDE v5.35 編譯器 MPLAB C32 v2.02
參考材料:PIC32 Bootloader (AN1388)與MPLAB Assembler, Linker and Utilities for PIC32 MCUs User’s Guide(51833A)
鏈接如下:
PIC32 Bootloader (AN1388)
MPLAB Assembler, Linker and Utilities for PIC32 MCUs User’s Guide(51833A)
1.在工程目錄下,新建.txt文本,然后改后綴為* .ld添加到工程中。
2.在編譯器目錄MPLAB C32 Suitepic32mxlibldscripts中把elf32pic32mx.x的內(nèi)容復(fù)制到新創(chuàng)建的* .ld中。
3.將2所復(fù)制內(nèi)容的17行INCLUDE procdefs.ld用編譯器目錄下pic32mxlibproc32MX795F512Lprocdefs.ld文件的內(nèi)容替換。
4.復(fù)制兩份,一份作為bootloader的linker script,一份作為app的linker script,然后添加到相應(yīng)的工程中。
下圖分別為PIC32MX5XX/6XX/7XX手冊(cè)中FIGURE 4-6的KSEG1部分與KSEG0部分。
linker script部分內(nèi)容說(shuō)明
KSEG0可緩存,KSEG1不可緩存。
_ebase_address與exception_mem的ORIGIN一致,是中斷向量地址。exception_mem必須在4K地址上對(duì)齊。
kseg1_boot_mem的ORIGIN與_RESET_ADDR 一致。C啟動(dòng)代碼將映射到kseg1_boot_mem中。
所有C文件(文本和數(shù)據(jù))都映射到kseg0_program_mem中。
_RESET_ADDR、 _BEV_EXCPT_ADDR與_DBG_EXCPT_ADDR 在 kseg1_boot_mem范圍內(nèi)。
官方btl_32MX795F512L_uart.ld有些地址范圍重疊,建議看btl_32MX795F512L_generic.ld。
bootloader的linker script
kseg1_boot_mem取值在第一幅圖KSEG1的Boot Flash中。 kseg0_boot_mem、 exception_mem的ORIGIN在第二幅圖KSEG0的Boot Flash內(nèi)。
kseg0_program_mem (rx) 在KSEG0的Program Flash中
app的linker script
APP的linker script地址都是相鄰的,比如下面的官方例程的代碼或者下圖官方手冊(cè)AN1388的舉例。取值在KSEG0的Program Flash范圍內(nèi)。注意bootloader中kseg0_program_mem在KSEG0的Program Flash的范圍,app的不要與之重疊。
kseg0_boot_mem : ORIGIN = 0x9D006000, LENGTH = 0x0 /* This memory region is dummy */
exception_mem : ORIGIN = 0x9D006000, LENGTH = 0x1000 /* Interrupt vector table */
kseg1_boot_mem : ORIGIN = (0x9D006000 + 0x1000), LENGTH = 0x490 /* C Startup code */
kseg0_program_mem (rx) : ORIGIN = (0x9D006000 + 0x1000 + 0x490), LENGTH = 0x81000 - (0x6000 + 0x1000 + 0x490) /* All C Files will be located here */
最后,燒寫(xiě)時(shí)在app的loadables中加上bootloader的工程,也可以把a(bǔ)pp加到bootloader中,生成一個(gè)HEX。也可以先燒bootloader,再用其他方法燒app。
ps
重點(diǎn)是根據(jù)自己的工程大小設(shè)置好地址范圍,使各區(qū)域地址不重疊,所以不一定要這樣分,可以看看btl_32MX795F512L_uart.ld。
如果你用的PICkit 3,有了linker script則PICkit 3 第一項(xiàng)默認(rèn)配置就可以。這里如果選自定義燒寫(xiě)位置,又有l(wèi)inker script,PICkit 3不會(huì)管linker script中的地址,燒的是自定義燒寫(xiě)位置。如果想用燒寫(xiě)器自定義位置燒寫(xiě)bootloader與app,是不行的,好像燒寫(xiě)前全部擦除了,第一次燒的代碼也被擦了。
上一篇:PIC32入門(mén)篇-----環(huán)境搭建
下一篇:PICC 編譯器的安裝與使用方法
推薦閱讀
史海拾趣
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- Microchip 升級(jí)數(shù)字信號(hào)控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無(wú)線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開(kāi)發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹(shù)莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁(yè)和arduino的通訊
- ESP32 freeRTOS使用測(cè)試
- 上汽大眾:汽車網(wǎng)絡(luò)安全漏洞防護(hù)
- 恩智浦推出全新電池控制IC系列 助力新能源解決方案發(fā)展
- 全球首條GWh級(jí)新型固態(tài)電池生產(chǎn)線樣件下線
- 總投資455億元!三大動(dòng)力電池項(xiàng)目齊刷進(jìn)度條
- 現(xiàn)代汽車韓國(guó)建氫燃料電池廠,2028年投產(chǎn)
- 6月融資一覽:智能汽車芯片、第三代半導(dǎo)體、機(jī)器人成資本焦點(diǎn)
- 艙駕一體“點(diǎn)燃”新戰(zhàn)事
- 汽車智能化2.0引爆「萬(wàn)億蛋糕」,誰(shuí)在改寫(xiě)游戲規(guī)則?
- 2025研華智能系統(tǒng)產(chǎn)業(yè)伙伴峰會(huì)成功舉辦
- 意法半導(dǎo)體公布2025年第二季度財(cái)報(bào)和電話會(huì)議時(shí)間安排
- 答題贏好禮|英飛凌帶你走進(jìn)碳化硅 (SiC)世界
- 有膽就來(lái)|英飛凌IGBT7密室逃脫,邀你來(lái)玩!
- 【頒獎(jiǎng)禮】摸黑搶樓贏大禮!
- 下載有好禮!TE 戶外監(jiān)控,創(chuàng)建安全穩(wěn)定社會(huì)的重要保障和趨勢(shì)之選!
- 下載設(shè)計(jì)資源,贏取“會(huì)說(shuō)話”的啤酒托!
- Microchip 喊你快來(lái)打造你的理想型單片機(jī),智能門(mén)鈴、百元京東卡等【80份】好禮等你贏!
- 家電新風(fēng)尚,PI開(kāi)啟您的家電新生活!下載產(chǎn)品資料答題贏好禮!
- TI MCU 常見(jiàn)問(wèn)題(FAQ)大搜集
- 有獎(jiǎng)直播報(bào)名 | 大聯(lián)大世平集團(tuán)&Molex 互聯(lián)方案為下一代汽車科技賦能
- 小巧又強(qiáng)大的模擬信號(hào)源
- 能夠在嚴(yán)苛的高性能工業(yè)環(huán)境下進(jìn)行熱成像的ThermoView?TV40
- 江蘇淘鏡用戶側(cè)儲(chǔ)能項(xiàng)目每年為用戶節(jié)約13萬(wàn)元用電成本
- 新松亮相CIROS2018,重磅發(fā)布蛇型臂機(jī)器人
- 7月4日的精彩都在這里!配天機(jī)器人AIR6L新品發(fā)布
- 解析比亞迪電池集成方案:追求價(jià)值最大化
- 八方援手抗疫!科技企業(yè)一馬當(dāng)先(捐助明細(xì)一覽)
- 曼徹斯特大學(xué)研發(fā)新型陰極 讓鋰硫電池蓄電量提升100%
- 大陸推出智能十字路口技術(shù) 可探測(cè)走錯(cuò)道的駕駛員
- 整車CAN網(wǎng)絡(luò)介紹
- 有沒(méi)有人知道HalAssignSlotResources這個(gè)函數(shù)的功能是什么嗎?
- STM32F207以太網(wǎng)+LAN8742傳輸服務(wù)器會(huì)卡死
- fpga開(kāi)發(fā)中的bitfile文件是做什么用的?
- labview編的超級(jí)馬力
- Linux設(shè)備驅(qū)動(dòng)程序第三版2·6中文
- [轉(zhuǎn)]同軸電纜視頻傳輸技術(shù)原理與實(shí)際應(yīng)用
- 《基于STM32的嵌入式系統(tǒng)原理與設(shè)計(jì)》的電子課件及實(shí)驗(yàn)教程分享
- 用VHDL設(shè)計(jì)一個(gè)倒計(jì)時(shí)計(jì)數(shù)器,預(yù)置一個(gè)四位十進(jìn)制數(shù)
- TPS54160設(shè)計(jì)高可靠性直流5V穩(wěn)壓電源
- Atmel LIN系統(tǒng)基礎(chǔ)芯片技術(shù)手冊(cè)