查看: 2220|回复: 0

AVRUB在AT90CAN128上的移植

[复制链接]
  • TA的每日心情
    奋斗
    2019-12-1 10:07
  • 签到天数: 1617 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2014-10-15 11:12:25 | 显示全部楼层 |阅读模式
    分享到:
    上周,国外一个网友说AVRUB在AT90CAN128上不能正常运行,希望我帮助解决一下。AT90CAN128这个芯片在国内用的比较少,在淘宝上找了半天,才发现有一家提供AT90CAN128核心板的,价格虽然不算低,但也没有其他选择了。于是订购了一块,昨天终于收到了板子。


    01.jpg
    02.jpg

    一段时间没有用过AVR了,感觉有点生疏了。翻出以前自制的USB STK502编程器和USB 串口转换器,开始测试。
    03.jpg


    下载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)开始。

    AT90CAN128.7Z (387.85 KB, 下载次数: 4)
    回复

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-5-20 17:00 , Processed in 0.109168 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.