来源:
aweyfan 发表于 2007-12-12 22:41 侃单片机 ←返回版面
9楼: 抛块砖,请听题
想起了n年前做的一个东西 一片增强51核ic,无片内rom,就当它是8031,外扩32kram,512kflash rom,串口
现在希望能够做一个bootloader,可以写外扩的flash,更新程序和数据
俺做不出,硬是拔flash靠编程器烧完成
看看两位前辈有无良策
aweyfan 发表于 2007-12-12 23:14 侃单片机 ←返回版面
16楼: 这个是要在8031上实现iap功能,并不简单
擦除flash时,总线悬空,看看飞到哪里 arm86 发表于 2007-12-12 23:21 侃单片机 ←返回版面
18楼: “擦除flash时,总线悬空,看看飞到哪里”
有点意思了。刚才没有多想
flash是外扩的程序存储器,在这种情况下,硬件原理是否支持呢?得翻书了。翻书太累了,等别人来讲个明白吧。 hotpower 发表于 2007-12-13 01:39 侃单片机 ←返回版面
19楼: 匠人找俺开心...俺眩晕...把俺摆在案板上或火炉上...
回9楼: 我用过几乎所有的040芯片,从27/28/29/39. 并且自己做的擦写28/29/39程序支持10多个厂家的芯片(读ID).
做一个bootloader理论上是可以的. 关键要把它放置到最后面.最好用汇编编写.
但有几个问题不能不先说到明处.
1.首先程序的入口即引导必须在你的bootloader程序范围内控制. 这可能需要1个IO信号做为改写程序的分枝控制.
2.中断向量的问题. 因为程序的改动,程序向量即地址也会发生变动. 而1.中已要求引导到你的bootloader程序范围内. 故这里要考虑像ARM那样的向量分配或地址映射. 总之改好的程序要能正确地跳入到新的中断程序地址.
3.估计是有难度的 因为你只有1片040.bootloader程序不能擦除. 所以bootloader程序的位置定位很难受.
俺因为这个问题只要是自己工作需要的,那肯定能做到~~~
我在想8031的PC寻址是否能够做到,因为它是数据存储与程序存储相分离的。硬件该如何实现呢? 8031的#PSEN接了FLASH的#OE,那FLASH的#WR呢?如何才能够跟数据存储器的空间不冲突呢?实在是想不明白了。 我现在翻开书找了找,还是晕晕的,看来是对51的了解还不够。求教于大家了。
|