【dsPIC33E】Bootloader(四)Bootloader上位机

2024-05-24 06:18
文章标签 上位 bootloader dspic33e

本文主要是介绍【dsPIC33E】Bootloader(四)Bootloader上位机,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前面已经将下位机部署完毕,本节将讲述上位机。

上位机的工作相对比较简单,主要就是解析Hex文件,然后将数据发送到下位机。注意发送的Hex文件只能是User App,不能带有Bootloader,否则可能会覆盖之前的Bootloader,导致出错。

上位机源码下载地址:https://download.csdn.net/download/u010875635/10819828

 

上位机主要工作流程如下:

1、选择Hex文件。

2、进入Bootloader。

3、烧录文件,烧录实际上有三个动作,一是检查是否处于Bootloader中;二是擦除用户程序区;三是烧录文件。

4、烧录完毕后,下位机会自动复位。

 

注意数据发送时,一定要采用一问一答模式,即发送一帧数据,收到回馈后再发送下一帧,避免时间不够MCU将数据写入Flash。

 

部分解析Hex文件的代码如下,详细参考上位机源码程序:https://download.csdn.net/download/u010875635/10819828

 

Hex文件内容与实际地址数据之间的转换:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace SpecialFunctions.HexParse
{/// <summary>/// Microchip的MPLAB X生成的HEX解析/// MPLAB可以生成3中不同格式的执行文件/// 其中两种是HEX文件,它们分别称为/// INHX8M(Intel Hex Format) -- 一般用于8位核心设备编程器/// INHX32(Intel Hex 32 Format) --  一般用于16位核心设备编程器/// 另外一种INHX8S(Intel Split Hex Format)生成的是HXL和HXH文件,分别保存指令数据的低字节和高字节,这里不做说明/// 详情参考MPLAX帮助文件/// </summary>public class MicrochipHexParse{#region INHX32格式解析,MPLAB内嵌连接器MPLINK在默认情况下生成INHX32,适用于dsPIC33E/PIC24E/************************************************** 1、hex文件以ascii形式,按照行来记录数据* 2、每一行从:开始,每至少2个字符表示一组16进制数据,格式为 :BBAAAATTHHHH....HHHCC*                   BB -- 16进制,表示此行数据长度字节数,表示HH的数目*                 AAAA -- 16进制,表示数据记录的起始地址,若此行是数据记录,则表示偏移地址,其它无意义*                   TT -- 16进制,表示记录类型,*                                   00-数据记录(Data Record); *                                   01-文件记录结束(End of File record); *                                   02-扩展段地址记录(Extend Segment address record);后面所有数据地址+段地址左移4位*                                   04-扩展线性地址记录(Extend Linear address record);后面所有数据地址+线性地址左移16位*                   HH...HH -- 16进制,低字节/高字节 结合数据,高字节在后;注意,若是偏移地址,则都是2字节,高字节在前,低字节在后*                   CC -- 16进制,校验码,除冒号和自身以外的其他字节数据加起来模除256的余数的补码,例如:10A6B0000000EB00D4FD0700000F78001E007800BA,CC=01+~(00+00+EB+00+D4+FD+07+00+00+0F+78+00+1E+00+78+00)=BA*** 需要特别注意的是,:* 1、对于dsPIC33E/PIC24E,Hex文件地址是乘了一个2,例如一个部分存于0x100,而在Hex中为0x200,详见dsPIC33E/PIC24E编程规范(DS70619B)扩展A中的介绍。* 2、dsPIC33E/PIC24E没有扩展段地址,只有扩展线性地址* 3、MPLAB X项目属性中的建设里,勾选规范会HEX文件和不勾选生成的HEX文件是不一样的* 4、数据记录为little-endian,低端在前*** 一旦出现段地址或者线性地址,之后所有数据都要加偏移地址,直到出现一个新的段地址或者线性地址,再重新变更偏移地址* 对于真实地址,是 线性地址左移16位+段地址左移4位+偏移地址** 示例:* :020000040108EA           线性偏移地址:0108* :0200000212FFBD           段偏移地址:12FF* :0401000090FFAA5502       数据地址:0100* :00000001FF               文件结束* 真实地址为:0108左移16位,为01080000;12FF左移4位,为00012FF0;数据地址为00000100;加起来为010930F0* 最终解析出来(8位单片机):* 地址     数据* 010930F0 90* 010930F1 FF* 010930F2 AA* 010930F3 55* 对于dsPIC33E/PIC24E,16为单片机,2个16位组成32(有效的是低24位)地址要除以2,所以真实地址解析如下:* 00849878 55AAFF90* 0084987A .....

这篇关于【dsPIC33E】Bootloader(四)Bootloader上位机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/997606

相关文章

上位机图像处理和嵌入式模块部署(mcu和swd接口)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         最近学习mcu的时候,接触了不少调试器,这里面有daplink、st-link v2、j-link v9。虽然模块的形状可能不太一样,但是硬件的连线都差不多,都是mcu上的3.3v、clk、dio和gnd四根连线。出于好奇,今天花了点时间了解了一下debug port、sw

Bootloader -- U-Boot 介绍

Bootloader -- U-Boot 介绍 1 介绍1.1 概述1.2 知名 BootloaderLILO (Linux Loader)GRUB (GNU GRand Unified Bootloader)LoadlinROLO (Rockbox Loader)EtherbootLinuxBIOS (现在叫 coreboot)BLOBU-BootRedBoot 1.3 BootLoade

扫码称重上位机

目录 一 设计原型 二 后台代码 一 设计原型 模拟工具: 二 后台代码 主程序: using System.IO.Ports;using System.Net;using System.Net.Sockets;using System.Text;namespace 扫码称重上位机{public partial class Form1 : Fo

.NET 上位机通讯 NModbus4 的使用教程

使用nuget引入NModbus4 RTU 示例 1,串口通信示例 // // RTU SerialPort serialPort = new SerialPort("COM2", 9600, Parity.None, 8, StopBits.One);serialPort.Open();ModbusMaster master = ModbusSerialMaster.CreateRtu(s

上位机图像处理和嵌入式模块部署(mcu之静态库生成和使用)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         很多同学做了很长时间的mcu和keil开发,都认为keil工程中必须包含所有的源代码,其实这是不对的。如果有一些代码我们不希望别人看到,那么就可以把h文件和lib文件提供给别人,这样就避免了代码暴露的风险。甚至于说,我们也可以自己来实现dll的调用,动态加载算法插件,这都是

SerialChart上位机使用详解

SerialChart 上位机 软件分为三个区域:接收数据区,用于显示串口接收的数据。参数配置区,用于配置串口参数和显示参数。波形显示区,显示串口数据的波形。 在参数配置区写入串口号,波特率,通道波形颜色等,然后点击运行按钮即可。当串口接收到数据时,接收数据区和波形显示区都会有相应的显示。该软件可以同时显示多个通道的波形,直接按照格式添加通道名称和对应的波形颜色即可。 数据格式 每一帧

信捷PLC与上位机通讯-以太网通讯dll

应用场景 最近做项目,电气部分PLC选用了国产的信捷PLC,需要考虑上位机与信捷PLC通讯的问题,直接读写寄存器或线圈。 解决方案 信捷官网找资料,介绍的各种通讯方法,感觉都不是很好理解,而且也没办法直接拿来用。然后网上找教程也基本没有,csdn资源还要收费、收积分,而且下载了也不一定好用。最后还是好不容易在信捷的官网找到了这样一篇文章和资源。 链接:https://college.xin

iOS BootLoader详解

目录 Pre-Introduction – EFIPre-Introduction – NVRAMPre-Introduction – Ramdisk and APFS FileSystemBootLoader IntroductionBootLoader Process 正文 1. Pre-Introduction – EFI EFI(Extensible Firmware Interf

基于FINS协议的OMRON PLC与上位机以太网通信的实现

基于FINS协议的OMRON PLC与上位机以太网通信的实现[多图] 0 引言 在当代工业自动化控制系统中,可编程逻辑控制器(PLC)作为常用的现场控制设备,上位机作为数据采集及人机界面的一种已经得到广泛运用。过去,在工程项目开发中,PLC和上位机间的通信常采用RS-232C或者RS-485串行方式,这种要领很难满足数据量大、通信距离远、实时性要求高的控制系统。随着

WPF 上位机 Modbus 入门必备的信息 C# 开发对接

关于Modbus协议 Modbus协议是MODICON(莫迪康)(现施耐德品牌)在1979年开发的,是全球第一个真正用于现场的总线协议; Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,可以实现控制器相互之间、控制器经由网络和其实设备之间的通 信。 Modbus特点 协议标准 设备无关 -标准开放、公开发表、无版税要求、无许可证费(没有费用) -支持多种电气接口(RS232、RS4