PIC单片机设置bootloader程序和app程序地址方法

news2025/1/22 8:36:52

在调试bootloader和app程序的时候通常都需要设置程序的偏移地址,下面就总结一下使用MPLAB X IDE 设置程序地址的方法。

打开bootloader工程
在这里插入图片描述

工程上单击鼠标右键,选择Properties,打工工程属性窗口。
在这里插入图片描述
此时会打开项目属性对话框
在这里插入图片描述

左边类别选择XC8 Liner,Option categories 选择Memory,然后在ROM ranges 后面输入0-1FFF, 这个地址就是设置bootloader程序的存储范围。设置完成之后,点击应用。然后编译下载代码。
这里的ROM ranges就是设置boot loader代码的存放地址,这个地址的范围也可根据自己代码的情况设置。如果不知道代码占用地址有多大,可以打开生成的hex文件查看。
在这里插入图片描述
蓝色的数据表示数据存储的地址值,这里要注意。PIC单片机生成的hex文件地址值不是连续的。是由编译器自动分配的。
在这里插入图片描述
HEX文件中最大的地址值是0x1806,编译器中设置的地址最大值为1FFF,所以地址空间是足够用的。

接下来配置APP工程,这里使用LED程序作为APP,打开LED工程
在这里插入图片描述
工程上单击鼠标右键,选择Properties,打工工程属性窗口。

在这里插入图片描述
左边类别选择XC8 Liner,Option categories 选择Additional options,然后在Codeoffset 后面输入0x2000 这个地址就是设置app程序的起始地址。设置完成之后,点击应用。然后编译代码。

在这里插入图片描述
APP的地址地址为0x2000,芯片的最大地址是0xFFFF,所以代码的存储范围就是0x2000到0xFFFF,可以打开编译好的hex文件查看。
在这里插入图片描述
第一行的数据存储地址是 0x2000,第2行的数据的存储地址就跳到了0xFF74,这个地址是由编译器自动分配的。在STM系列的单片机中,代码的存储地址都是连续的。而在PIC单片机中,代码的存储地址是不连续的。所以在PIC单片机IAP升级时,一定要注意这个问题。

关于hex文件中数据的含义可以查看 PIC单片机HEX文件格式分析 这篇文章。
关于编译器生成代码的地址存储问题可以查看 PIC单片机生成HEX文件中代码地址问题分析 这篇文章。

这样分别配置完bootloader和app的地址之后,bootloader的程序就可以通过烧写器直接下载。但是app的程序就能不能通过烧写器下载了,否则在下载app的程序时,boot loader的程序就会被擦除掉。app的程序需要通过IAP来在线下载。这样在设备出厂的时候下载程序就会比较麻烦,MAPLAB编译器提供了一种简单的方法,可以同时将bootloader和app的程序下载进去。

下面就演示一下这个方法。
再编译器中打开app工程,同时也打开bootloader工程。
在这里插入图片描述
app工程和bootloader工程必须同时添加到编译器中,否则后面的操作就不会成功。

打开app程序的项目属性设置窗口,这里打开的是led工程的属性。在左边类别中选择loading,然后再右边单击 新增可加载的项目
在这里插入图片描述

再打开的对话框中选择bootloader 工程路径。

在这里插入图片描述
这个bootloader必须是工程中已经打开的这个bootloader。
在这里插入图片描述
添加成之后就可以看到额外的可加载文件中底下就会显示加载的bootloader生成的hex文件。点击应用。然后重新编译led工程,并下载程序。此时就会将bootloader程序和app程序同时下载到单片机中去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2280261.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10_异步加载场景前打开加载窗口

首先要在资源加载场景时 先加载LoadingWnd 加载窗口 逻辑上是 1.先加载 加载窗口LoadingWnd 2.在加载场景的同时 显示加载进度 3.最后在加载完成时关闭 加载窗口LoadingWnd 4.打开 登录窗口LoginWnd 如果想控制 窗口类Wnd.cs 需要创建Wnd.cs脚本 创建一个文件夹UIWindow用来…

博客之星2024年度-技术总结:技术探险家小板的一年的征程

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 技术探险家的新一年征程 2.0 数据库管理与优化:MySQL 的魔法森林 2.1 穿越基础概念的迷雾 2.2 实践应用:成为森林的主人 2.3 性能调优&…

用于牙科的多任务视频增强

Multi-task Video Enhancement for Dental Interventions 2022 miccai Abstract 微型照相机牢牢地固定在牙科手机上,这样牙医就可以持续地监测保守牙科手术的进展情况。但视频辅助牙科干预中的视频增强减轻了低光、噪音、模糊和相机握手等降低视觉舒适度的问题。…

Linux应用编程(五)USB应用开发-libusb库

一、基础知识 1. USB接口是什么? USB接口(Universal Serial Bus)是一种通用串行总线,广泛使用的接口标准,主要用于连接计算机与外围设备(如键盘、鼠标、打印机、存储设备等)之间的数据传输和电…

学习golang语言时遇到的难点语法

作者是java选手,实习需要转go,记录学习go中遇到的一些与java不同的语法。 defer defer特性 1. 关键字 defer 用于注册延迟调用。 2. 这些调用直到 return 前才被执。因此,可以用来做资源清理。 3. 多个defer语句,按先进…

cocosCreator动态调整pageView下面的标记indicator

pageView是我们在开发过程中经常使用到的一个组件,但是之前很少去动态修改过该属性的indicator,一般都是使用的默认的。今天产品要求实现一个动态效果,就是当页面左滑或者右滑时,下面的标记也会有一个左右滑动的效果(不知道怎么描述合适&…

C语言进阶习题【1】指针和数组(4)——指针笔试题4

笔试题7&#xff1a;下面代码输出是是什么&#xff1f; #include <stdio.h> int main() {char *a[] {"work","at","alibaba"};char**pa a;pa;printf("%s\n", *pa);return 0; }分析 代码结果 笔试题8&#xff1a;下面代码输…

服务化架构 IM 系统之应用 MQ

在微服务化系统中&#xff0c;存在三个最核心的组件&#xff0c;分别是 RPC、注册中心和MQ。 在前面的两篇文章&#xff08;见《服务化架构 IM 系统之应用 RPC》和《服务化架构 IM 系统之应用注册中心》&#xff09;中&#xff0c;我们站在应用的视角分析了普适性的 RPC 和 注…

【Rabbitmq】Rabbitmq高级特性-发送者可靠性

Rabbitmq发送者可靠性 发送者重连发送者确认1.开启确认机制2.ReturnCallback3.ConfirmCallback MQ的可靠性数据持久化交换机持久化队列持久化消息持久化 Lazy Queue 总结其他文章 Rabbitmq提供了两种发送来保证发送者的可靠性&#xff0c;第一种叫发送者重连&#xff0c;第二种…

【技术总结类】2024,一场关于海量数据治理以及合理建模的系列写作

目录 1.今年的创作路线 2.先说第一条线 2.1.由日志引出的海量文本数据存储和分析问题 2.2.监控以及监控的可视化 2.3.数据量级再往上走牵扯出了大数据 2.4.由大数据牵扯出的JAVA线程高级内容 3.第二条线&#xff0c;也是2025要继续的主线 1.今年的创作路线 今年的写作内…

【深度学习项目】语义分割-DeepLab网络(DeepLabV3介绍、基于Pytorch实现DeepLabV3网络)

文章目录 介绍深度学习语义分割的关键特点主要架构和技术数据集和评价指标总结 DeepLabDeepLab 的核心技术DeepLab 的发展历史DeepLab V3网络结构获取多尺度信息架构Cascade ModelASPP ModelMulti-GridPytorch官方实现的DeepLab V3该项目主要是来自pytorch官方torchvision模块中…

Python Pyside6 加Sqlite3 写一个 通用 进销存 系统 初型

图: 说明: 进销存管理系统说明文档 功能模块 1. 首页 显示关键业务数据商品总数供应商总数本月采购金额本月销售金额显示预警信息库存不足预警待付款采购单待收款销售单2. 商品管理 商品信息维护商品编码(唯一标识)商品名称规格型号单位分类进货价销售价库存数量预警…

数字电子技术基础(十五)——MOS管的简单介绍

目录 1 MOS的简单介绍 1.1 MOS简介 1.2 MOS管的基本结构 1.3 MOS管工作时的三个区域 1.4 MOSEF的结构的工作原理 1 MOS的简单介绍 1.1 MOS简介 绝缘栅型场效应管&#xff0c;简称MOS管&#xff0c;全称为金属-氧化物-半导体场效应晶体管&#xff08;Metal-Oxide-Semic…

【BUUCTF】BUU XSS COURSE 11

进入题目页面如下&#xff0c;有吐槽和登录两个可注入点 根据题目可知是一道XSS 登陆界面没有注册&#xff0c;尝试简单的SQL注入也不行 回到吐槽界面&#xff0c;输入简单的xss代码 <script>alert(1)</script> 访问网址&#xff0c;发现回显不出来&#xff0c;猜…

Codeforces Round 903 (Div. 3) E. Block Sequence

题解&#xff1a; 想到从后向前DP f[i] 表示从 i ~ n 转化为“美观”所需要的最少的步骤 第一种转移方式&#xff1a;直接删除掉第i个元素&#xff0c;那么就是上一步 f[i 1] 加上 1;第二种转移方式&#xff1a;从第 i a[i] 1 个元素直接转移&#xff0c;不需要增加步数&a…

分布式系统通信解决方案:Netty 与 Protobuf 高效应用

分布式系统通信解决方案&#xff1a;Netty 与 Protobuf 高效应用 一、引言 在现代网络编程中&#xff0c;数据的编解码是系统设计的一个核心问题&#xff0c;特别是在高并发和低延迟的应用场景中&#xff0c;如何高效地序列化和传输数据对于系统的性能至关重要。随着分布式系…

【C++】模板(进阶)

本篇我们来介绍更多关于C模板的知识。模板初阶移步至&#xff1a;【C】模板&#xff08;初阶&#xff09; 1.非类型模板参数 1.1 非类型模板参数介绍 模板参数可以是类型形参&#xff0c;也可以是非类型形参。类型形参就是我们目前接触到的一些模板参数。 //类型模板参数 …

2025年入职/转行网络安全,该如何规划?网络安全职业规划

网络安全是一个日益增长的行业&#xff0c;对于打算进入或转行进入该领域的人来说&#xff0c;制定一个清晰且系统的职业规划非常重要。2025年&#xff0c;网络安全领域将继续发展并面临新的挑战&#xff0c;包括不断变化的技术、法规要求以及日益复杂的威胁环境。以下是一个关…

Golang Gin系列-4:Gin Framework入门教程

在本章中&#xff0c;我们将深入研究Gin&#xff0c;一个强大的Go语言web框架。我们将揭示制作一个简单的Gin应用程序的过程&#xff0c;揭示处理路由和请求的复杂性。此外&#xff0c;我们将探索基本中间件的实现&#xff0c;揭示精确定义路由和路由参数的技术。此外&#xff…

K8S-Pod的环境变量,重启策略,数据持久化,资源限制

1. Pod容器的三种重启策略 注意&#xff1a;k8s所谓的重启容器指的是重新创建容器 cat 07-restartPolicy.yaml apiVersion: v1 kind: Pod metadata:name: nginx-web-imagepullpolicy-always spec:nodeName: k8s233.oldboyedu.com## 当容器异常退出时&#xff0c;始终重启容器r…