c - 为atmega328p写一个bootloader

标签 c microcontroller bootloader

<分区>

我一直在网上搜索,但没有找到任何有用的信息告诉我如何开始。

我有一个 Atmega328p。我认为这是最容易入手的 Controller 。

我想编写自己的引导加载程序。我应该从哪里开始编写代码?

最佳答案

Bootloader 本质上是一个在您的微处理器上运行的裸机程序,它使用特定协议(protocol)监听一个或多个通信接口(interface)(串行、SPI、USB 或您命名的......)。然后,在 PC/程序员端有一个“客户端”软件,它可以处理一些二进制文件(但不限于),并使用该协议(protocol)将其发送到引导加载程序。然后在接收后,引导加载程序会将接收到的数据存储在某个已知的内存位置,并发出“跳转”(或“分支”或“转到”或其他)到该数据的开头,从而触发执行它假设它是一个可执行文件代码。因此,您的引导加载程序至少应该能够:

1) 使用其中一种沟通 channel

2) 实现一个特定的协议(protocol)

3) 将接收到的可执行文件存储在内存中

4) 触发该代码的执行

从这里开始,您可以选择实现。

关于c - 为atmega328p写一个bootloader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31728795/

相关文章:

c - 如何通过将各自的部分放在不同的位置来链接两个目标文件?

c - 使 malloc() 返回 NULL 而不是使程序崩溃?

c - fork+exec 模式可以被 system(run-command-in-background) 代替吗?

用于 PIC32 微 Controller 的 Ruby

c - 在 STM32F0 上使用 TIM1 进行 PWM 时出错

linux-kernel - Linux内核命令行开关上的三连字符

c - 将背景图像插入引导加载程序

c - 阻塞信号的行为是什么?

java - 数据库文件结构和索引及实现

C:使用指向 uint8_t[] 的指针时遇到一些问题