打印
[Atmel]

关于AT90CAN128程序下载的问题

[复制链接]
1154|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
65080322|  楼主 | 2015-9-1 15:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
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)开始。


n.ZIP (445.85 KB)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

3

帖子

0

粉丝