【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

相关文章

可测试,可维护,可移植:上位机软件分层设计的重要性

互联网中,软件工程师岗位会分前端工程师,后端工程师。这是由于互联网软件规模庞大,从业人员众多。前后端分别根据各自需求发展不一样的技术栈。那么上位机软件呢?它规模小,通常一个人就能开发一个项目。它还有必要分前后端吗? 有必要。本文从三个方面论述。分别是可测试,可维护,可移植。 可测试 软件黑盒测试更普遍,但很难覆盖所有应用场景。于是有了接口测试、模块化测试以及单元测试。都是通过降低测试对象

C++ 上位软件通过Snap7开源库访问西门子S7-1200/S7-1500数据块的方法

C++ 上位软件通过Snap7开源库访问西门子S7-1200/S7-1500数据块的方法

C#编写上位机通过OPC DA读取西门子PLC数据

Sync_RW 引用:Quick.OpcComRcw 文档中原程序会报错: 原因:需要在安装有Simatic NET V14的电脑上运行这个程序。 需要注释掉下面程序,否则读取时会无故障提示退出。 //finally里的程序要注释掉,否则一点击read按钮,程序会直接无故障提示退出//finally//{// // Free the unmanaged memory/

为什么bootloader跳转地址要加4?

问题 “我看你验证程序从ROM跳Flash地址要加4,为啥?” 又被问到了,这次记一下,以后谁再问我就直接发链接,必须点赞+关注,哈哈 答案 上电流程 ARM内核上电以后会从启动地址开始执行,就是vector的起始地址。 vector的第一个4byte-word是堆栈的栈顶地址,后面4byte-word是程序地址,要去这里执行。 硬件上电后会把第一个word load到SP里面,然后第二个

C#上位机使用Microsoft.Office.Interop.Excel和EPPlus库对Excel或WPS表格进行写操作

C#上位机使用Microsoft.Office.Interop.Excel和EPPlus库对Excel或WPS表格进行写操作 一、使用Microsoft.Office.Interop.Excel库 1、通过NuGet包管理器添加引用 按照下图中红框所示进行操作。 需要安装Microsoft.Office.Interop.Excel包 添加Microsoft Office 16.0 Obje

搭建IPsec VPN隧道解决PLC设备与主控上位机无法使用公网IP进行通信的问题

问题描述 按照初设规定,每个工程点位都要安装一条具有独立公网IP的光纤专线,供该点位的视频监控设备、水质监测设备及PLC设备与外界进行通信。而在项目开发前期并没有意识到,组态软件(上位机)无法通过公网IP地址连接PLC,导致在交付后期PLC设备无法与主控进行通信。 后经过了解得知可以在控制室网络与各PLC所属网络之间搭建VPN隧道,使得两个网络之间可以像局域网那样相互访问。 VPN技术 V

Renesa Version Board开发RT-Thread 之Client(WIFI)和上位机的数据传输

目录 概述 1 系统框架 1.1  模块介绍 1.1 Version-Board 开发板 1.1.1 Vision-Board简介 1.1.2 Vision-Board的资源 1.2 框架介绍 2 上位机App 2.1 UI设计  2.2 代码实现 3 功能测试 3.1 网络连接 3.2 功能测试 概述 本文主要Renesa Version Board开发RT

VS2019开发CAN上位机

1、CAN分析仪,主要功能就是把CAN信号转换成电脑能接收的USB信号。索引号是指电脑连接了几台CAN分析仪设备,一般情况下都是一台,该值为0。不同CAN盒的二次开发文件不同 2、CAN上位机一般只能适应一个CAN盒,如果需要实现多个CAN盒通信,那么需要加入多个CAN盒驱动 3、一般选择在别人提供的CAN程序上进行二次开发,例如周立功,广成等等 4、以周立功为例  : 函数/例程下载 (z

集成电路学习:什么是Bootloader启动加载程序

Bootloader:启动加载程序         Bootloader,亦称引导加载程序,是计算机或设备在操作系统内核运行之前执行的一段小程序。其详细解释如下: 一、定义与功能         Bootloader的主要功能包括初始化系统基本硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。它是启动操作系统前执行任务的固件

关于bootloader,eboot,uboot,norflash,nandflash。

一.bootloader的作用        其实bootloader主要的必须的作用只有一个:就是把操作系统映像文件拷贝到RAM中去,然后跳转到它的入口处去执行。而操作系统文件的来源,可以是flash,sd card,PC(可以通过网络,USB,甚至串口传输)等等,所谓的EBOOT,UBOOT,其实就是表明了系统文件是通过Ethernet或者USB从PC传输过去的。当然,为了实现这个功能(以及