历史上的今天
今天是:2025年05月18日(星期日)
2018年05月18日 | AVR的bootloader的设置
2018-05-18 来源:eefocus
一些注意事项:
1.熔丝位的烧写:BOOTRST要进行编程,这样单片机在复位后自动跳转到bootloader区执行bootloader的代码,然后要根据自己bootloader的大小设置boot区的的熔丝位:具体设置如下图,这里我选择的是1024大小(注意1代表为编程,0代表已编程):
2.设置引导区锁定位:为了保护bootloader不被应用程序修改或者擦除,所以要对其进行保护,Atmega提供了熔丝位的保护方式,具体设置如下图(我设置的为BLB0为11,BLB1为00):
3.Flash页的设定:因flash的擦除和写入是按照页来操作的,看手册上说是1页有128个字节,但实际调试时候发现需要一次写入256个字节才有效的,如果按照128来写入,会将第二个128的内容覆盖掉第一个128字节的内容,那就按照实际为准了。
4.Xmodem协议的注意事项:具体的xmodem不在本文叙述了,只说一下要注意的地方,校验和是可以选择的,我使用的是checksum(就是单纯的累加),也可以选择16为的CRC,这个是根据单片机第一次返回的响应字节来确定的,另外当包的序列号超过255时会重新从0开始而不是从1开始,首次传输是从1开始编号的,这个要注意一下。
5.文件格式文件:和网上好多人一样,遇到同样的文件,在bootloader将应用程序烧写到flash中后,发现没有执行应用程序,开始我也以为是跳转不成成功的问题,上网查了半天都没找到答案,都是问问题的L。没办法,靠自己了,一致纳闷,烧写到Flash中的程序和原始文件内容一模一样怎么就不能执行啊,后来偶然用烧写软件打开要烧写的固件,发现内容和我用16进制工具打开的并不一样,Oh my god,豁然想到了问题的关键,原来用ICC生成的hex文件是intel hex形式,Intel HEX文件是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。在Intel HEX文件中,每一行包含一个HEX记录。这些记录由对应机器语言码和/或常量数据的十六进制编码数字组成。Intel HEX文件通常用于传输将被存于ROM或者EPROM中的程序和数据。大多数EPROM编程器或模拟器使用Intel HEX文件。而实际存储到Flash中的数据是要从这个HEX文件中提取出来,然后在通过xmodem发送到单片机,不要直接发送ICC生成的HEX文件,转换的话可以自己写一个小工具或者上网搜类似功能的工具,为了省事,我找了一个叫hex2bin的工具做的转换。
上一篇:AVR开发笔记——熔丝位
下一篇:AVR c语言的位操作
史海拾趣
|
用习惯了汇编的时间片轮,突然想起来,C怎么实现的呢? 要求不多高,假如按键,LED,数码管,红外解码要求同时处理 怎么解决这个问题的?继续在中断设标志然后片轮任务吗? 还是说有什么好的解决办法呢? 单片机而已,没有操作系统的任务调配。 ...… 查看全部问答> |
|
做了一批板子,焊了几个 外部晶振32.768是6p的 刚开始可以起振 可是放了一段时间 就很难起振了 偶尔可以 外部接的10pf电容 什么问题呀这是 为什么一会好一会坏呢 while ...… 查看全部问答> |
|
我用DSP编程序的时候,因为要进行矩阵运算,所以要建一个10000左右的float数组,但是总是报错,说page 1 的RAML4 空间不足。可是把RAML4的length增加,然后把RAML5-6的其实地址相应延后后,有会出现烧录后的warning提示,并且使用不能。经过试验,R ...… 查看全部问答> |
|
最近用TI的EK-LM3S811的开发板,然后想用LM flash programmer 下载程序,但是总是没法下载,总是提示 unable to connect to target,不知各位有没遇到这个问题呢?… 查看全部问答> |
|
第一次接触TI的430单片机是在大一暑假期间,由于实验室的学长参加TI的电子设计,申请了许多的MSP430G2553 launchpad的开发板,之后就给我们大一都发了已块,自此就开始学习MSP430单片机,launchpad的确是不错的开发板, ...… 查看全部问答> |






