zhengyiqun 发表于 2012-11-30 09:25:58

328P的bootloader升级问题(探讨)

本帖最后由 zhengyiqun 于 2012-11-30 11:49 编辑

最近在搞ATmega328P升级时遇到一些问题:
             1:用之前ATmega168的bootloader升级改为328P时,AVR给了我一个大坑,在使用SPM语言时,那几个flash读取页装载页烧写页的函数出现error后来在ATmel官网下了328P的PDF,查阅后发现AVR STUDIO4.18中的SPMCSR寄存器第一位已经修改为SPMEN,之前在STUDIO4.18中还是SELFPRGEN,所以要修改STUDIO4.18,具体可以查阅PDF在2012年7月做了修改,但是在PDF中还做了一个说明,在熔丝位中还是要SELFPRGEN,所以在IOM328P.H中还得保留SELFPRGEN,各种郁闷啊~~这个问题希望使用328P的同志们注意。
         2:说说我现在遇到的问题,我在升级过程中,写入flash后,用pgm_read_byte_far(flash地址)读取我写入的flash页,发现读取的第二页前面的几个字节是0xFF,中间第三页又是正常的,第四页又出现这个问题,不知道是写入有问题boot_page_write(FlashAddr)还是装载boot_page_fill(PAGEPTR,BUF)函数有问题。需要的话可以附源码

zhengyiqun 发表于 2012-11-30 09:26:53

希望大家给点意见~~

zhengyiqun 发表于 2012-11-30 11:50:27

附上了源代码~~请大家帮忙分析分析~~

zhengyiqun 发表于 2012-12-7 08:30:41

问题已经解决,因为ATmega328p在AVR studio 4.18中定义flash页的大小-SPM_PAGESIZE是64,实际上使用这个默认宏定义是按字节去定义,而通过pdf产看此芯片是64个字的flash页大小,所以出现次情况~~

wzyllgx 发表于 2012-12-7 09:14:52

先记录一下,前面STUDIO4.18中的SPMCSR寄存器第一位已经修改为SPMEN,之前在STUDIO4.18中还是SELFPRGEN这里看了半天没有看懂是啥?studio4.18还可以修改?

zhengyiqun 发表于 2013-6-21 16:15:10

wzyllgx 发表于 2012-12-7 09:14 static/image/common/back.gif
先记录一下,前面STUDIO4.18中的SPMCSR寄存器第一位已经修改为SPMEN,之前在STUDIO4.18中还是SELFPRGEN这里 ...

嗯~~在工程中externalDependencies选项中iom328p.h中可以修改~~在编译就可以了~~
页: [1]
查看完整版本: 328P的bootloader升级问题(探讨)