- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Iar环境下avr bootloader的编写
Labview 上位机,IAR 坏境下AVR BootLoader 的编写
前段是在网上查找Iar 环境下avr bootLoader,却很难找到这方面的资料。由此下定决心做一下尝试。终于功夫不负有心人,搞定Iar环境avr bootloader;上位机用Labview烧录BIN文件,效果不错,一下是经验和方法与大家分享。 一下提到的IAR for AVR软件版本5.30,avr单片机是MEGA64A。Labview 版本是8.0,avrstudio 版本4.18.
一, BootLoader 交叉链接文件的配置:
Mega64a BootLoader 有四个段,分别是1k,2K,4K,8K bytes 空间,而在熔丝选择项里却是是用words表示,分别对应512 words,1k ,2k,4k words。如下图:
本人选择的是2K的存储空间,即1024 words. IAR FOR AVR 反汇编的是地址是以字节表示的,而avrstudio 是以words表示的,这个一定要注意。既然是Bootloader 就系统就应该从bootLoader启动,把上面的 BootRST 选上。一定要记住在avrstudio仿真调试bootloader查看反汇编,确认程序是不是从0X7C00开始分布的。如下图
步入正题,Iar for avr 对bootloader 交叉文件的配置。在iar General 选项里把 User dialog For sysconfigure 选项取消。如下图:
然后在Category 选择Linker,然后在config 标签下LinkercommandFile 选项,添加自己修改的linkercommandFile 如:lnkm64as.xcl。此文件可以在安装目录中找到,最好自己Copy一份到自己的Project 下面。按下图修改此文件:
主要修改Code segments的配置,默认的开始地址0x0000,其中的-D_..X_FLASH_START=F800,是自己添加的表示bootloader开始地址,对应avrstudio 0x7c00;此文件单位全部是byte,avrstudio里的单位是word。后面的中断向量地址范围-Z(CODE)INTVEC=0-(_..X_INTVEC_SIZE-1) ,其中的零用自己定义的_..X_FLASH_START 替换掉即可。
Data segments的设置不用理会,如果自己堆栈定义太大,自己根据需要修改后面的数字就行了。但要注意在bootlooder程序的初始化函数里应做好数据的初始化工作,因为Data 区是和应用程序公用的,而且在应用程序里可以加上跳转指令跳到Bootloader区,随意烧录编程。
二, 页擦除,页填充,也写入函数:
此三个函数的写法可以单片机数据手册中说明中看到。
1,页擦除函数:
2,页填充函数:
3,页写入函数:
上面的R31,R30,是做Z寄存器用的,r24,r25,r16,r17,r18,r19用来传递参数的。Array_Rx_Buffer[by_loop*2+4] , Array_Rx_Buffer[by_loop*2+5],其中的4,5,是受到通信协议的影响的,串行接收数字前四位分别是命令,页地址,然后是被烧录的代码,最后checksum。
在执行上述函数的时候务必一定要把中断关掉,兄弟我深有感触。
三,bootloader 程序架构。
写bootloader的时候,用到一个定时器,一个串口。定时器主要可用于控制串行通讯,bootloader停留时间。
定时器可以根据通讯波特率检测什么时候一次接受的结束,然后执行处理接受数组的数据。本人使用的是38400的通讯波特率,8MH
文档评论(0)