[Atmel] 关于AT90CAN128程序下载的问题

[复制链接]
 楼主| 65080322 发表于 2015-9-1 15:24 | 显示全部楼层 |阅读模式
程序大小在34K,AVR的Flash是128K的,下载进去以后功能实现不了。如果是31K的程序装入功能就能正常运行,求大神指点迷津!!!个人猜想是不是128K的Flash里面存在页的操作呢?
ddllxxrr 发表于 2015-9-1 15:59 | 显示全部楼层
以下来自网络,希望有用

下载Bootloader到AT90CAN128后,发现可以使用avrub进行程序下载,只是下载后仍然提升等待命令,就是不能运行用户程序。开始以为像ATmega2560那样,程序不能正常跳转到用户程序。但是读取AT90CAN128中Flash后发现,用户程序虽然下载到Flash中,但是只有低字节成功写入,高字节都是0。

仔细查找AT90CAN128的数据手册,发现它并没有像ATmega2560那样的EIND寄存器,但是有一个RAMPZ寄存器。本来这个寄存器是用于控制访问外部RAM的,但是在AT90CAN128中,它用于控制ELPM/SPM指令访问Flash范围。在AT90CAN128中,RAMPZ寄存器只有bit0有效。

当RAMPZ0为0时,访问低64K范围的Flash;当RAMPZ0为1时,访问高64K的Flash。于是在Flash写入函数中,插入了RAMPZ设置。再测试,Bootloader就可以正常运行了。

改进后的程序在附件中,供大家参考。附件中还有几个小测试程序,用于测试Bootloader。例子中的Bootloader,占用2K words的Boot空间,起始地址从0xF800(word)开始。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部