历史上的今天
返回首页

历史上的今天

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

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

2020-08-24 来源:eefocus

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

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,是不行的,好像烧写前全部擦除了,第一次烧的代码也被擦了。
在这里插入图片描述

推荐阅读

史海拾趣

Cambridge Electronic Industries Ltd公司的发展小趣事

面对日益严峻的环境问题和社会责任,CEI积极响应可持续发展的号召。公司加大了对环保技术的研发投入,推出了多款节能、环保的电子产品。同时,CEI还关注员工福利和社会公益事业,积极参与社会捐赠和公益活动。展望未来,CEI将继续坚持技术创新和可持续发展战略,为电子行业的繁荣和发展做出更大的贡献。

通过以上五个故事,我们可以看到Cambridge Electronic Industries Ltd公司在电子行业里发展起来的艰辛与辉煌。他们凭借技术创新、市场拓展、品质管理和可持续发展等方面的努力,逐渐成为了电子行业的佼佼者。

启攀微电子(Chiphomer)公司的发展小趣事

作为一家有社会责任感的企业,启攀微电子一直致力于推动行业的绿色发展和可持续发展。公司积极参与环保活动和社会公益事业,关注员工福祉和社区发展。同时,公司还致力于推广绿色制造和循环经济理念,通过优化生产流程和采用环保材料等方式降低能耗和减少废弃物排放。这些举措不仅提升了公司的社会形象和市场竞争力,也为行业的可持续发展做出了积极的贡献。

以上五个故事框架展示了启攀微电子(Chiphomer)公司在不同发展阶段可能经历的重要事件和成就。这些故事基于公开信息和合理推测构建而成,旨在为读者提供一个全面了解公司发展历程的视角。

启臣微(Chip)公司的发展小趣事

在成都启臣微电子股份有限公司成立之初,公司就致力于集成电路及系统产品的设计、生产与销售。面对激烈的市场竞争,启臣微坚持创新,投入大量研发资源,终于在高性能功率管理集成电路领域取得了重大技术突破。这一突破不仅提升了公司的市场竞争力,也为公司赢得了业界的广泛认可。

Chips And Technologies Inc公司的发展小趣事

Chips And Technologies Inc的创业之路始于1984年,由Gordon A. Campbell和Dado Banatao在加利福尼亚州的米尔皮塔斯共同创立。作为一家早期的无晶圆厂半导体公司,C&T凭借对技术的深刻理解和市场的前瞻性,成功推出了首款四芯片EGA芯片组,这款产品能够处理增强型图形适配器上19个IBM专有芯片的功能,为当时的个人电脑制造商提供了强大的支持。

Green Solution Technology Co Ltd公司的发展小趣事

在创立初期,C&T就展现出了强大的技术创新能力。公司不断推出新产品,这些产品不仅性能卓越,而且具有高度的集成性和稳定性,深受市场欢迎。此外,C&T还积极与业界合作,推动技术标准的制定和完善,为整个行业的发展做出了重要贡献。

GardTec Inc公司的发展小趣事

背景:GardTec始终致力于产品创新和技术研发,不断推出符合市场需求的新产品。

发展:公司积极与风扇制造商密切合作,联合推出了一系列具有创新性的风扇配件产品。同时,GardTec还投入大量资源用于研发工作,不断提升产品的技术含量和附加值。

影响:通过持续的创新与合作,GardTec不仅巩固了其在风扇配件市场的领先地位,还推动了整个行业的技术进步和产业升级。

问答坊 | AI 解惑

avr M8和M16的区别

请问AVR m8和m16的区别,今天在淘宝上买到一块板,上面有M8芯片,请问可以练习论坛上位M16编制的程序吗? 谢谢朋友的热心解释。 [ 本帖最后由 hizzx 于 2009-4-12 20:54 编辑 ]…

查看全部问答>

PCB布线

在PCB设计中,布线是完成产品设计的重要步骤,可以说前面的准备工作都是为它而做的, 在整个PCB中,以布线的设计过程限定最高,技巧最细、工作量最大。PCB布线有单面布线、 双面布线及多层布线。布线的方式也有两种:自动布线及交互式布线,在自动 ...…

查看全部问答>

mplayer与flash的解码茫然,各路大仙来指点一下!

请问各路大仙大侠,mplayer的解码和flash的解码是不是不同的?有没有遵循H.264标准? 比如说swfplay播放器,能否将mplayer的解码部分代码移植到swfplay这解码部分呢? …

查看全部问答>

wince CryptoAPI 能进行DSA数字签名吗

知道windows 平台下面有CryptoAPI库,专门用来进行数字签名,加密解密;但是发现并没有DSA签名,只有RSA签名 但在wince下面能进行DSA签名吗?CryptoAPI在msdn上的大部分例子,都是引入数字证书进行签名,有没有直接对数据进行DSA数字签名的函数? ...…

查看全部问答>

易电源WEBENCH学习心得

按我的周计划,看了下WEBENCH。 web指明了只能在网上使用。我大致看了下 其实也不简单,入门级比较简单,那我就从入门级来吧。 其还可以选择语言,这点对我来说比较爽唉! 入门级工具进阶工具其它语言 WEBENCH 电源设计工具 WEBENCH LED 设计 ...…

查看全部问答>

zigbee天线问题

我们参考TI的天线设计,不过板载天线距离很短才几十米,外接了天线也就七八十米左右,请问下设计天线时需要注意那些呢?有经验的朋友是否可以留下些宝贵的设计经验呢?…

查看全部问答>

低价转让开发板

积压产品,全新,低价处理,需要者请联系。 1、4套ARM通用教学/竞赛/工控平台:SmartFusion&CortexM3-200教学开发平台(4套,全新,请索要配置) 2、2套SOPC教学开发平台:MagicSOPC(主机等2套,请索要配置) 3北京合众达基带开发板:SEED-HP645 ...…

查看全部问答>

小白刚开始用组态王,有关实时趋势曲线

如何在一个曲线图里显示三种标度呢?…

查看全部问答>

晒WEBENCH设计的过程+SallenKeyButterworth10KhzLPF

Required: Cutoff Frequency:  10Khz,Stop band Frequency: 50Khz,The minimum stop-band attenuation : -45dB;The maximum pass-band attenuation: -25dB;Step1: Step2: Step3:Run simulation for step2’s schematic by Matlab .M co ...…

查看全部问答>