历史上的今天

今天是:2024年08月24日(星期六)

2020年08月24日 | PIC32MX795F512L BootLoader的linker script文档移植过程

发布者:cangart 来源: eefocus关键字:PIC32MX795F512L  BootLoader  linker  script文  文档移植 手机看文章 扫描二维码
随时随地手机看文章

本人参照官方资料,做的学习笔记,有理解不对的地方请大神指出。

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的内容复制到新创建的* .ld中。
3.将2所复制内容的17行INCLUDE procdefs.ld用编译器目录下pic32mxlibproc32MX795F512Lprocdefs.ld文件的内容替换。
4.复制两份,一份作为bootloader的linker script,一份作为app的linker script,然后添加到相应的工程中。
下图分别为PIC32MX5XX/6XX/7XX手册中FIGURE 4-6的KSEG1部分与KSEG0部分。
KSEG1KSEG0

linker script部分内容说明

KSEG0可缓存,KSEG1不可缓存。
_ebase_address与exception_mem的ORIGIN一致,是中断向量地址。exception_mem必须在4K地址上对齐。
kseg1_boot_mem的ORIGIN与_RESET_ADDR 一致。C启动代码将映射到kseg1_boot_mem中。
所有C文件(文本和数据)都映射到kseg0_program_mem中。
_RESET_ADDR、 _BEV_EXCPT_ADDR与_DBG_EXCPT_ADDR 在 kseg1_boot_mem范围内。
官方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内。
kseg0_program_mem (rx) 在KSEG0的Program Flash中

app的linker script

APP的linker script地址都是相邻的,比如下面的官方例程的代码或者下图官方手册AN1388的举例。取值在KSEG0的Program Flash范围内。注意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 */ 


最后,烧写时在app的loadables中加上bootloader的工程,也可以把app加到bootloader中,生成一个HEX。也可以先烧bootloader,再用其他方法烧app。

ps

重点是根据自己的工程大小设置好地址范围,使各区域地址不重叠,所以不一定要这样分,可以看看btl_32MX795F512L_uart.ld。


如果你用的PICkit 3,有了linker script则PICkit 3 第一项默认配置就可以。这里如果选自定义烧写位置,又有linker script,PICkit 3不会管linker script中的地址,烧的是自定义烧写位置。如果想用烧写器自定义位置烧写bootloader与app,是不行的,好像烧写前全部擦除了,第一次烧的代码也被擦了。
在这里插入图片描述

关键字:PIC32MX795F512L  BootLoader  linker  script文  文档移植 引用地址:PIC32MX795F512L BootLoader的linker script文档移植过程

上一篇:PIC32入门篇-----环境搭建
下一篇:PICC 编译器的安装与使用方法

推荐阅读

   近日,首航新能源全新存储一体逆变器正式上市,该系列产品运用了首航新能源当下最核心的储能逆变技术和“黑科技”。它的推出极大丰富首航新能源现有产品线,也为首航新能源全面布局国内外储能市场奠定了坚实的基础。      先看外观,乳白色的外观,大方简约的造型,圆润饱满的设计,友好的LCD界面显示,为用户带来更方便的操作体验。全铝合金机...
华为在深圳坂田总部举办发布会,正式发布算力最强的AI处理器Ascend 910(昇腾910),同时推出全场景AI计算框架MindSpore。 昇腾910:单芯片计算密度最大的芯片据了解,昇腾910是目前单芯片计算密度最大的芯片,计算力远超谷歌和英伟达。 昇腾910半精度(FP16)运算能力为256TFLOPS,比NVIDIA的Tesla V100要高一倍,整数精度(INT8)512TOPS,支持128通...
随着欧洲地区疫情的好转,此前 IFA 2020(柏林消费电子展)主办方负责人在线上发布会上表示,今年的展会将如期在线下举行,但为了确保安全,今年的 IFA 2020 将不再对公众开放,主要面向媒体等方面人士,而且每日参展人数将被限制在 800 人内。今天,本次参展企业之一的华为正式公布了参展安排,将于 9 月 3 日下午 2 点在 IFA 2020 展会...
8月23日,普冉股份在上交所科创板正式挂牌上市,公司证券代码为688766,发行价格148.9元/股,截至发稿前,普冉股份股票报价468元/股,涨幅214.3%,总市值达169.6亿元。普冉股份董事长、总经理王楠表示,“此次发行上市是普冉股份发展历程中非常重要的一步。未来,公司将在现有产品系列及研发成果基础上,利用本次公开发行股票上市的契机,加快产品升级,不...

史海拾趣

问答坊 | AI 解惑

可重构计算技术在汽车电子领域的应用

Abstract: Automotive Electronics is a hotpot of the development of automotive industry, and there are many special requirements in this ...…

查看全部问答∨

07济南机器人大赛观后感

我以一个参观者的身份参加了今年(2007年)的中国机器人大赛暨RoboCup中国赛区的活动,该活动在山东济南大学科技园(山东师范大学新校区体育馆)举行,时间是从10月26日至29日。下面就尽可能的详细的描述一下我此次参观机器人大赛的感受和思考 ...…

查看全部问答∨

曝光国内各大网站老总、编辑薪水

硅谷动力 手机频道 编辑 3000+500奖金  IT168 硬件频道 编辑 2500 无奖金   硅谷动力 数字家庭频道 主编 5500   新浪 试用期 4000+车马费   TOM 回归社区 无经验的应届毕业生2000起   sohu it频道 编辑 6000+车马费3000   硅谷动 ...…

查看全部问答∨

新批准的 ZigBee Health Care 标准现可供公众下载

面向能源管理、住宅、商业和消费电子应用产品创造无线解决方案的全球企业联盟 ZigBee(R) 联盟 (ZigBee(R) Alliance) 今天宣布,董事会已经批准 ZigBee Health Care(ZigBee 医疗保健标准),并向公众发布标准。ZigBee Health Care 带来了新方法,帮 ...…

查看全部问答∨

CAN总线原理与应用

CAN总线原理与应用…

查看全部问答∨

请问KEIL C51 的IO口怎么定义?

比如:     #include <reg51.h>     main()     {      sbit  p11=P1^1;      p11=0;     }     编译时出现错误; 有些用80X5 ...…

查看全部问答∨

usb 不能正确的识别

我的usb 不能被电脑识别,且电源的灯也不闪,不知道为什么,请高手们帮忙解决,谢谢…

查看全部问答∨

关于动态卸载键盘过滤驱动

一个键盘过滤驱动支持动态卸载: // 原作者 : sinister VOID KeyDriverUnload( PDRIVER_OBJECT KeyDriver ) { PDEVICE_OBJECT KeyFilterDevice ;      PDEVICE_OBJECT KeyDevice ; PDEVICE_EXTENSION KeyExtension; P ...…

查看全部问答∨

急,重开一帖,讨论wince是否能支持512M内存问题?????

重开一帖方便大家讨论,我用的是s3c6410,arm11的核,可以支持2Gbit即512M内存,以前是128M的,完全可以使用,现在改成512M(没办法,要做移动pc之类的东西。。。),使用两个bank: bank0: 0x50000000 - 0x60000000 bank1: 0x60000000 - 0x7000000 ...…

查看全部问答∨

ffmpeg 在wince下编译 问题

我按照网上写的 采用cygwin 交叉编译的方法 编译ffmpeg 但是 在。/configure 后 就出现 arm-wince-mingw32ce-gcc is unable to create an executable file. C compiler test failed. 这个错误,高手请指点一下。 …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved