没有合适的资源?快使用搜索试试~ 我知道了~
首页freescale飞思卡尔 HCS12 系列单片机bootloader详解
freescale飞思卡尔 HCS12 系列单片机bootloader详解
1星 需积分: 48 39 下载量 54 浏览量
更新于2023-03-16
评论 3
收藏 287KB DOC 举报
最近在做freescale HCS12系列单片机的bootloader,毕竟是新手,对这方面的入门知识还是欠缺。尽管NXP官网已经有了相当丰富的文档与例程,可是无奈例程太过复杂,不知道如何下手第一行代码。这里先感谢经验丰富的某位高人醍醐灌顶的指导,为了让再入门的新学者能够有个参考,所以就将本次开发bootloader的过程学习过程记录下来以其能够对大家有所启发。因为本人自己也是新学者,所以有问题可以留言讨论。
资源详情
资源评论
资源推荐
freescale 飞思卡尔 HCS12 系列单片机
bootloader 详解(一)
(转载)hps://www.cnblogs.com/15821216114sw/p/9507919.html
最近在做 freescale HCS12 系列单片机的 bootloader,毕竟是新手,对这方面的入
门知识还是欠缺。尽管 NXP 官网已经有了相当丰富的文档与例程,可是无奈例程太过复杂,
不知道如何下手第一行代码。这里先感谢经验丰富的某位高人醍醐灌顶的指导,为了让再
入门的新学者能够有个参考,所以就将本次开发 bootloader 的过程学习过程记录下来以
其能够对大家有所启发。因为本人自己也是新学者,所以有问题可以留言讨论。
这里单片机的 bootloader 与我们广义的 Linux 以及 windows 的 bootloader 是不同
的。这种大型操作系统的 bootloader 是为了做操作系统与硬件之间的桥梁:初始化硬件
系统、为操作系统的引导做准备。但是单片机的 bootloader 主要作用却是为烧录程序提
供一种新的方式,即可以让单片机可以通过串口,蓝牙,CAN, LIN 等通讯方式更新烧写
在 Flash 中的程序以及参数。这样做的好处很多,比如一个串口烧录的 bootloader 可以
通过串口向单片机的 Flash 烧录程序而不需要再额外用专用的烧录器来操作,丰富了修改
程序的方式,使烧录更加方便。我们常使用的慧净 51 系列单片机以及 Arduino 能够通过
一根简单的串口线就烧录程序原理都是如此,在这些板子出厂时的原程序是通过专门烧录
器烧录的,但由于 bootloader 的存在,后续用户的程序就可以通过串口烧录。再比如单
片机的 bootloader 在实际使用时可以远程更新单片机程序,为实用的场景提供程序更新
的功能,尽管做到这一点对通用计算机非常简单,无非是卸载程序重新安装,但是对于
Flash 空间较小的单片机而言,就需要通过 bootloader 这样的程序来提供这种功能。
单片机的 bootloader 基本概念实际上也非常的简单,就是把单片机的存储空间
(Memory,包括 RAM 以及 Flash)都合理的分配。把 Flash 的程序存储空间分为
bootloader 区域以及 user application 区域。bootloader 程序一般是不修改的,一次
烧录后可以一直使用(当然也可以有 bootloader 程序自身的更新,但是原理是一样的),
但是 user application 区域却是可以重复由 bootloader 修改的。这里的 user
application 区域就是我们通常的应用代码,它是为了实现单片机的功能的主要代码。
bootloader 区域代码却是为了实现对 user application 区域的控制而存在的,它的程序
逻辑是明确的:与上位机建立 bootloader 专用的通讯,通过串口等简单通讯方式修改
Flash 或者 EEPROM 中的程序内容,完成修改后跳出 bootloader 执行 user application
的程序内容。
这里笔者要假设读者对 freescale 的 HCS12 单片机有了一定程度的了解,关于
Bootloader 的内容以及文本中的部分实例程序均来自 NXP 公开的 AN3275 以及
AN4258 文档以及文档的样例程序,更多的介绍可以去 NXP 官网下载。
一个 HCS12 系列单片机的工程是由多个文件类型构成的。
.c ——程序文件
.h ——头文件
/ / / .prm ——内存划分,内存块名称声明以及中断向量声明文件
/ / / 所以这里很明显的,开发 bootloader 最重要的就是对.prm 文件进行操作了。这里使
用 AN3275 的例程中 prm 文件
NAMES END
SEGMENTS
//RAM = READ_WRITE 0x5000 TO 0x57FF;
RAM = READ_WRITE 0x5000 TO 0x5322;
FLASHROUTINES = READ_WRITE 0x5323 TO 0x53C8; //157 bytes Flash_Cmd &
Unsecure
/* unbanked FLASH ROM */
//ROM_4000 = READ_ONLY 0x4000 TO 0x7FFF;
ROM_UPDATE = READ_ONLY 0xF000 TO 0xF0AF RELOCATE_TO 0xE000; /*Update
Section, 224 bytes*/
ROM_ERASELOADER = READ_ONLY 0xF0B0 TO 0xF0BF;
ROM_C000 = READ_ONLY 0xF0C0 TO 0xFE50; /* Code may reach only
up to 0xFE50 because of limitation on
* the amount of Flash that
is backed-up
*/
/* banked FLASH ROM *//* PAGE_3F = READ_ONLY 0x3F8000 TO 0x3FBFFF;
not used: equivalent to ROM_C000 */
END
PLACEMENT
_PRESTART, /* Used in HIWARE format: jump to _Startup
at the code start */
STARTUP, /* startup data structures */
ROM_VAR, /* constant variables */
STRINGS, /* string literals */
VIRTUAL_TABLE_SEGMENT, /* C++ virtual table segment */
NON_BANKED, /* runtime routines which must not be
banked */
DEFAULT_ROM,
COPY, /* copy down information: how to initialize
variables */
/* in case you want to use ROM_4000 here as
well, make sure
that all files (incl. library files) are
compiled with the
option: -OnB=b */
INTO ROM_C000/*, ROM_4000*/;//
DEFAULT_ROM INTO
剩余14页未读,继续阅读
qq_36999139
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- stc12c5a60s2 例程
- Android通过全局变量传递数据
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1