2020年 02月 04日 星期二
您的位置: 威廉希尔主页 > 单片机技术 >

pic18单片机在BootLoader中的应用

来源:未知     作者:威廉希尔     发布时间:2020-02-04 10:32         

  成功接收到一行HEX数据后,发出一个回应字节,用于编程时的错误检测。PC端的下载程序可以根据这个字节来判断下载过程中是否出错。

  ⑤ 针对3(1)中③的问题,可以这样解决。将编译后的HEX文件手工稍作修改,将0x200~0x220(假设用户程序是从0x200开始的)地址段的数据从文件的开头移动到文件的结尾。这样0x200处的代码会在最后才写入单片机中。如果写入过程中出现故障,复位后即使BootLoader启动了用户程序,也会因为这段区域没有代码而重新复位,而不会去运行部分被写入的用户程序。不过这种方法需要对HEX文件的结构有一定的了解才行。

  一个简单判断HEX数据地址的方法是,HEX文件的每一行第一个字符是冒号“:”,冒号后的第3、4、5、6这四个数字就表示这一行数据的地址,是以十六进制表示的。如:“:100200.。。”就表示地址是0x200。在正常情况下,编译后的HEX文件数据是地址从低到高的顺序排列的。

  使用了BOOT_SIGNAL方式后,与超时方式相关的部分都不再起作用。这时可以定义使用任意引脚来判定是否需要进入BootLoader。在使用BOOT_TIME_DELAY(超时方式)时,增加了一些与之相关的内容,如CONFIRM_DATA,可以使用任何特定的字符串来确认是否需要进入BootLoader状态,增加了BootLoader程序的安全性,避免受到干扰而误进入程序升级状态。

  ① HI-TECH的BootLoader程序接收的是标准的HEX文件。这在很多时候是不够安全的,不利于程序的加密,容易被反汇编和破解。可以对HEX进行加密处理,变成不能直接查看的数据。

  ② 使用超级终端进行程序下载速度比较慢,同时,如果下载中出现错误,超级终端程序不能及时发现停止下来,而是一直把文件发送完才能停下来。这时BootLoader程序会反复进入BootLoader状态,对单片机有一定的损伤。最好是自行编写一个计算机端的专用下载程序,不但可以提高下载的速度,也可以提高下载的成功率。

  ③ 使用RS422/485方式。有些时候,使用的并不是RS232串口,而是RS422/RS485串口。它们实际是类似的,只是在接口方式上有些区别。RS422/RS485需要控制发送,所以在BootLoader程序中增加一个发送控制就可以了。

  ④ 在BootLoader中,将波特率设置得很高并没有太大的用处,它并不能够提高下载整体的速度,而只能加快数据传输的速度。因为整个下载分为数据通信(数据传输)和Flash写入/擦除(数据等待)两个部分。程序代码Flash空间的擦除和写入速度是比较慢的(典型值是3~?4 ms),太快了反而容易丢失数据,造成下载失败。

  使用9600 bps的波特率时,传输1字节的数据大约是1 ms,接收一个缓冲区8字节大约需要8 ms,大于写入延时,所以不需要延时;当通信速率超过9600 bps时,接收8字节缓冲区的时间可能会小于写入时间,需要在通信中延时。实际使用的测试结果是:使用9600 bps比使用14 400 bps时慢50%,使用57 600 bps比9600 bps快一倍,而使用115 200 bps时与57 600 bps几乎没有任何区别。如果使用超级终端下载,就更没有必要设置特率了。因为在使用最常用的三线方式通信时(没有控制信号),超级终端采用了比较保守的方式发送数据,本身就比较慢。

  一个良好的BootLoader程序应该具有良好的可性并可以正确处理异常情况,不会因为意外情况引起系统的损坏和崩溃。

  本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

  在使用PIC16F1825/9芯片的串口接收时遇到一个问题,就是当串口快速接收时容易出现串口假死的现象,也就是程序运行正常,串口发送也是正常的,但是串口就是不能接收数据。经查询PIC数据手册发现:PIC数据快速接收但是又未及时处理的情况下,容易出现接收溢出错误。

  使用编程:MPLAB X IDE V3.40单片机:p33FJ64GS606仿线问题:断点无析为有效的程序存储器地址,及仿真无法设置断点,看不了watch窗口变量。解决方法:文件不能有中文径。

  AT24C系列在增强型PIC实验板上编程的硬件原理图如下图所示,U7为实验板上24C02芯片,SDA与单片机的RB5口相连,SCL与单片机RB4相连,七段数码管D5、D7、D8组成了显示单元,字形码的数据通过RC口送入,各数码管的显示片选信号分别不同的RA口进行控制。在MPLabIDE软件中新建工程,加入源程序代码,同时进行芯片型号的选择和配置位的设置,我们实验所用的芯片型号为PIC16F877A。编写的程序代码如下,其中程序流程图如下图所示。软件代码编好程序后将编译好的HEX码通过ICD2仿真烧写器烧入单片机芯片,上电运行,主程序中在O×01地址写入了“O×55”,在O×02地址写入了“O×aa”,然后在while

  漏电继电器是一种可在被线漏电电流达到设定值后切断被线供电电源的装置,在电力系统中起着非常重要的作用,是供电可靠性的基础。随着电子技术和计算机技术的发展,电力系统的继电突破了传统的数字式继电器,出现了以微处理器为核心的智能继电器[1-2]。本文利用PIC18F6585型单片机设计了一款智能型漏电继电器,具有自诊断、故障记录、数据通信等多种功能,为故障分析提供便利,且具有较高的可靠性。1 PIC系列单片机特点PIC18F6585是由Microchip公司开发、研制和生产的PIC系列单片机,该系列单片机的技术性能具有以下优点[3]:(1)哈佛总线结构。PIC系列单片机在架构上采用了与众不同的哈佛总线A单片机的数控电流源设计

  1 引言电源技术尤其是数控电源技术是一门实践性很强的工程技术,涉及了电气、电子、系统集成、控制理论、材料等诸多学科领域。计算机和通讯技术的发展,给电力电子技术提供了广阔的发展前景,同时也给电源提出了更高的要求。普通电源由于精确度不高等缺点已不能满足现实的需要。直到单片机技术及电压转换模块的出现,才使精确数控电源的发展有了可能。本文所设计的数控电流源采用PIC16F877A单片机为核心部件,键盘、显示、D/A、开关电源等模块为外围电。2 设计要求和总体设计思2.1 设计要求本设计要求:输入220V,输出最高12V;通过键盘控制输出电流,步长为0.01A;采用LED显示输出电流,精度为0.02A;电流源稳流

  一些注意事项:1.熔丝位的烧写:BOOTRST要进行编程,这样单片机在复位后自动跳转到bootloader区执行bootloader的代码,然后要根据自己bootloader的大小设置boot区的的熔丝位:具体设置如下图,这里我选择的是1024大小(注意1代表为编程,0代表已编程):2.设置引导区锁定位:为了bootloader不被应用程序修改或者擦除,所以要对其进行,Atmega提供了熔丝位的方式,具体设置如下图(我设置的为BLB0为11,BLB1为00):3.Flash页的设定:因flash的擦除和写入是按照页来操作的,看手册上说是1页有128个字节,但实际调试时候发现需要一次写入256个字节才有效的,如果按

  STM32MP1系列通用型MPU, 集成双 Arm® Cortex®-A7和 Cortex®-M4 内核

  STM32MP1系列通用型MPU, 集成双 Arm® Cortex®-A7和 Cortex®-M4 内核

  ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程

      威廉希尔