AVR单片机 FLASH扩展
比如我写的程序比较大,编译出来比如说是20K,而我的单片机的FLASH只有16K,我知道FLASH的扩展芯片,比如说AT24C**,我不知道接上这块芯片后,我的程序要怎么...
比如我写的程序比较大,编译出来比如说是20K,而我的单片机的FLASH只有16K,我知道FLASH的扩展芯片,比如说AT24C**,我不知道接上这块芯片后,我的程序要怎么改,才能把程序烧进入。我的程序大的原因是有很大的全局变量,比如uchar buf[512],用来装中间变量的。
我写的是单片机U盘读写,常用uchar buf[512]注意是为了扇区写,一次性写入数据,提高U盘的寿命。
1楼 FLASH我指的是我编译出来的HEX文件比较大,我使用的AVR16装不了
2楼 和 3楼 我的这个全局变量是变化的 所以不能保存为const
4楼 是执行代码,我在考虑代码怎么优化 如果是数据,AVR怎么定义外部存储器,像51那样XDATA吗?
我用EEPROM,能这样做啊 展开
我写的是单片机U盘读写,常用uchar buf[512]注意是为了扇区写,一次性写入数据,提高U盘的寿命。
1楼 FLASH我指的是我编译出来的HEX文件比较大,我使用的AVR16装不了
2楼 和 3楼 我的这个全局变量是变化的 所以不能保存为const
4楼 是执行代码,我在考虑代码怎么优化 如果是数据,AVR怎么定义外部存储器,像51那样XDATA吗?
我用EEPROM,能这样做啊 展开
4个回答
展开全部
一般程序中是用不到这么多全局变量的
可以想办法 让其变为常量
就可以将RAM 变成FLASH 储存
const uchar buf[512]; //具体编译器 不同 关键字不同
如果实在是想要这么多RAM 随机存储器 ,可以选用大一点的IC 如:M32 M64
M128 或是高档一点的MCU。
在之前IC没有这么大的RAM 和FLASH的时候 曾经外扩过
可以用如 RAM 62256;ROM 29C02,29256
关于外扩电路 可以参考AVR的的相关书籍。
补: 你了解EEPROM吗?
他和RAM有什么区别? 你都不了解,还敢用?
RAM基本和IC的寿命是一样的,而EEPROM 最多只能擦写10万,现在最高也只有
100万次,而且写入和读出远远慢于RAM的速度。
注:要么提高MCU的档次,要么采用非常的手段,用在U盘读写上面。
可以想办法 让其变为常量
就可以将RAM 变成FLASH 储存
const uchar buf[512]; //具体编译器 不同 关键字不同
如果实在是想要这么多RAM 随机存储器 ,可以选用大一点的IC 如:M32 M64
M128 或是高档一点的MCU。
在之前IC没有这么大的RAM 和FLASH的时候 曾经外扩过
可以用如 RAM 62256;ROM 29C02,29256
关于外扩电路 可以参考AVR的的相关书籍。
补: 你了解EEPROM吗?
他和RAM有什么区别? 你都不了解,还敢用?
RAM基本和IC的寿命是一样的,而EEPROM 最多只能擦写10万,现在最高也只有
100万次,而且写入和读出远远慢于RAM的速度。
注:要么提高MCU的档次,要么采用非常的手段,用在U盘读写上面。
展开全部
你的程序有20K,是可执行代码的大小还是其中包含了大量的数据?如果是后面一种情况,就把数据保存在单片机外部的存储器中。如果把单片机执行的代码保存在外部存储器中是不可能执行的。
不知你用的AVR单片机属于哪个型号,如果是Atmega16的话,就换成Atmega32来代替,Atmega32有32K的存储空间,足够你使用。如果是Atmega8515/162,这就很好办了,因为这单片机和51一样可以外部扩展存储器。
不知你用的AVR单片机属于哪个型号,如果是Atmega16的话,就换成Atmega32来代替,Atmega32有32K的存储空间,足够你使用。如果是Atmega8515/162,这就很好办了,因为这单片机和51一样可以外部扩展存储器。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以试试把这些变量放在eeprom中存储,一般的数据被默认为flash存贮,
你先这样试试 eeprom ucahr buff[512];如果不行,你就用SPI串行通信,将你要装的中间变量暂且放到EEPROM(比如24c256)中存储,当然这个存贮方式是要你自己编辑个函数的来调用或者修改的。应该不难,理论上一定行得通,我就做过这个小测试。
对于较大的常量数组,你可以这样unsigned const int xxxx[]保存。
你先这样试试 eeprom ucahr buff[512];如果不行,你就用SPI串行通信,将你要装的中间变量暂且放到EEPROM(比如24c256)中存储,当然这个存贮方式是要你自己编辑个函数的来调用或者修改的。应该不难,理论上一定行得通,我就做过这个小测试。
对于较大的常量数组,你可以这样unsigned const int xxxx[]保存。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
全局变量好像是和RAM关系。和FLASH没啥关系吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询