如何编写bootloader程序的跳转函数

如何编写bootloader程序的跳转函数,第1张

可以使用汇编语言来编写bootloader程序的跳转函数,大致步骤如下:1.获取要跳转到的地址,并将其保存到某个寄存器;2.然后使用指令jmp和存储的地址,实现跳转;3.最后执行地址上的代码,完成跳转。

我不是非常确定,我可以尽我所能地帮助您理解。

单片机 bootloader 可以是由厂商提供的默认引导程序,也可以由用户自己编写。如果厂商提供了 bootloader,则可以直接使用。如果需要根据自己的特殊需求进行修改或自己编写,则需要自己编写 bootloader。

在编写 bootloader 时,需要了解特殊硬件的工作原理和优缺点,例如 flash 存储器、RAM 存储器、串口、定时器等。此外,还需要掌握汇编语言或某种高级语言(如 C 语言)。因此,相对来说需要较高的技能水平。

希望这有助于您了解单片机 bootloader 的编写问题。

在PIC系列单片机中,只有PIC18系列和PIC16F87X系列的单片机才有IAP功能,才能够使用BootLoader功能。下面只介绍PIC18的BootLoader,PIC16F87X的BootLoader与它类似。

1 BootLoader程序的工作原理

BootLoader是一段引导程序,在单片机上电/复位后在用户程序之前先运行。运行后判断当前是否需要进入升级状态。如果不需要升级,就直接运行 Flash中原有的程序;如果需要升级,首先擦除旧的程序,然后从串口接收用户程序,同时写入Flash中。接收数据时,需要进行校验,保证接收到的数据是正确的,避免将错误的程序写入到芯片中。

PIC18单片机只有一块Flash,可以在Flash的任何位置擦写(甚至可以将BootLoader自身擦除);而51单片机一般都是两块Flash,只能够从一块Flash上擦写另一块Flash,而不能擦写自身。

BootLoader程序原则上是可以放在整个程序空间中的任何位置的,但是为了简单方便、具有通用性和尽量减少对用户程序的影响,使用了从0x00开始的一段程序空间。

BootLoader程序可以多种方式获取数据,包括串口、并口、I2C、SPI、USB等;但是从实际使用来看,使用串口无疑是最方便的。

为了使得用户程序可以获得最大的程序空间,就需要BootLoader程序尽可能的简短。在这里,Microchip和HI-TECH都将 BootLoader程序设计为小于200H个字节(100H个字)。使用0x00~0x1FF这个区域还有一个重要原因是,这个地址的空间有特殊的写保护特性。

PIC18单片机虽然有多个中断源,但只支持两级中断,有两个中断向量,分别位于0x08和0x18;而 BootLoader程序占用了0x00~0x1FF的空间,这意味着需要重新定位中断向量,使新的中断向量指向用户的中断程序,这样才能保证正常运行用户程序的中断程序。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12169975.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存