【dsPIC33E】Bootloader(三)Bootloader下位机

本文介绍了如何设计dsPIC33E Bootloader的下位机,强调了将大部分解析工作放在上位机以提高效率。内容包括Bootloader的地址空间划分、通信协议设计和数据处理策略。同时,分享了如何合并Bootloader和User App的Hex文件以实现一次性烧录。
摘要由CSDN通过智能技术生成

前面2节讲述了dsPIC33E的Flash存储结构以及Hex格式,接下来开始讲述如何编写Bootloader下位机和上位机。

本节讲述下位机的设计,考虑到执行效率和烧录时间,我们将主要解析工作放到上位机中,因为PC的执行速度远高于MCU。在上位机中,我们将Hex文件解析成一组一组的地址和数据组合,然后将一个地址和数据打包发送到Bootloader,Bootloader将其写入对应地址内。

我们先将地址空间分割成三段区域:

0x000000-0x0007FF: 第一段为起始跳转、复位和中断向量表

0x000800-0x0071FF: 第二段为Bootloader,此处预留0x6400长度,为了以后扩充,多预留了一点,后面再空一点点。

0x008000-0x02A800: 第三段为User App,注意最后一页(包含配置字)不要使用,擦除时会导致代码保护清零。

分别在Bootloader和AfterBootloader(即User App)项目中添加gld文件(从xc16安装文件夹下复制到项目目录下),修改对应的程序地址(修改program (xr)的起始地址和长度),这样编译时,会限制程序起始和结束地址。

以下我们将使用具体项目来说明,使用的芯片为dsPIC33EP256GP506

示例项目下载:https://download.csdn.net/download/u010875635/10819819

Bootloader中,最重要的就是2个功能,一是通信,二是Flash读写。由于不能使用中断,防止中断向量表与User App的冲突,通信都采用查询模式。开发板正好有现成的串口,本例采用串口通信,考虑到后面可能会使用CAN,因此核心数据长度为8bytes,串口本身校验功能差,我们再在前后分别增加2个字节,总计12个字节。

此例总共设有5中命令,兼容Bootloader和User App,分别为:EntryBootloader(User App中可用)、Reset、Data、DataEnd、CheckBootloader、Erase。

EntryBootloaderBootloader不适用,User App中可用,由上过机发送过来的命令,用于在User App中复位到Bootloader,以便于进行代码烧写工作;Bootloader启动时会向上位机发送EntryBootloader回馈,表示进入Bootloader。

ResetBootloader中可用,上位机发送过来的命令,用于烧写完毕后,重启系统,User App启动时会向上位机发送Reset回馈表示已经于User App。

Data接收到的为数据,由上位机发送过来,Bootloader将其写入flash。

DataEnd上位机发送数据完毕&#x

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
工作条件 • 3.0V至3.6V: -40°C至+125°C, DC至100 MHz 高性能16位DSP RISC CPU • 16位宽数据路径 • 高效代码型(C和汇编)架构 • 40位宽累加器 • 带双数据取操作的单周期(MAC/MPY) • 单周期混合符号乘法: - 32位乘法支持 • 快速的6周期除法 • 零开销循环 高速PWM • 4对PWM • 最佳PWM分辨率为250 ps • 上升沿和下降沿死区 • 死区补偿 • 用于高频操作的时钟斩波 • 为以下各种应用提供PWM支持: - 直流/直流、交流/直流、逆变器、 PFC和照明 - BLDC、 PMSM、 ACIM和SRM电机 • 故障输入和限流输入 • 用于ADC触发的灵活触发配置 高速模数转换器 • 12位分辨率 • 2个专用SAR ADC内核和1个共用SAR ADC内核 • 每个内核的转换速率最高为3.5 Msps • 每个模拟通道都具有专用的结果缓冲区 • 灵活、独立的ADC触发源 • 4个数字比较器 • 4个过采样滤波器 单片机特性 • 28到48引脚的小引脚数封装,包括小至4x4 mm的 UQFN • 高I/O灌电流/拉电流 • I/O引脚上具有边沿或电平变化通知中断 • 外设引脚选择(Peripheral Pin Select, PPS)可 重映射的引脚 • 最大64 KB的闪存: - 耐擦/写次数达10,000次 - 数据保存时间至少20年 - 可在软件控制下自编程 - 可编程代码保护 - 纠错码(Error Code Correction, ECC) - ICSP™写禁止 • 8 KB SRAM存储器: - SRAM存储器内置自检(Memory Built-In SelfTest, MBIST) • 多个中断向量,带有独立的可编程优先级功能 • 用于快速中断处理的 4 组中断现场保护寄存器,包 括累加器和状态寄存器 • 4个外部中断引脚 • 看门狗定时器(Watchdog Timer, WDT) • 窗口程序监控定时器(Deadman Timer, DMT) • 具有专用备用振荡器的故障保护时钟监视器(FailSafe Clock Monitor, FSCM) • 可选振荡器选项,包括: - 32 kHz低功耗RC(Low-Power RC, LPRC) 振荡器 - 高精度8 MHz内部快速RC(Fast RC, FRC) 振荡器 - 主高速晶振/谐振器或外部时钟 - 主PLL,可由FRC或晶振提供时钟 - 用于PWM和ADC的附属PLL(Auxiliary PLL, APLL) • 低功耗管理模式(休眠和空闲) • 上电复位和欠压复位 • 片内无电容稳压器 • 256字节的可一次性编程(One-Time-Programmable, OTP)存储器
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值