- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
; Flash 存储器;1.2 存储器初始化 ;2. 存储器地址分布
一种典型的情况是启动ROM的地址重映射(remap)。
当一个系统上电后程序将自动从0地址处开始执行,因此在系统的初始状态,必须保证在0地址处存在正确的代码,即要求0地址开始处的存储器是非易失性的ROM或Flash等。但是因为ROM或Flash的访问速度相对较慢,每次中断发生后都要从读取ROM或Flash上面的向量表开始,影响了中断响应速度。因此有的系统便提供一种灵活的地址重映射方法,可以把0地址重新映射到RAM中去。在这种地址映射的变化过程当中,程序员需要仔细考虑的是程序的执行流程而不能被这种变化所打断。
;系统上电后从Flash内的0地址开始执行,启动代码位于地址0x100开始的空间,当执行到地址0x200时,完成了一次地址的重映射,把原来0开始的地址空间由Flash转给了RAM。接下去执行的指令(这里为简化起见,忽略流水线指令预取的模型)将来自从0x204开始的RAM空间。如果预先没有对RAM内容进行正确地设置,则里面的数据都是随机的,这样处理器在执行完0x200地址处的指令后,再往下取指执行就会出错。解决的方法就是要使RAM在使用之前准备好正确的内容,包括开头的向量表部分。 ;启动ROM地址重映射对程序执行流程的影响 ;1.3 Flash 的调试和程序固化 ;程序在Flash中调试与在RAM中调试工程配置不同:
1)调试选项中不需要执行脚本文件,该工作在启动
文件中完成,需要将连接后行为选项改为无。
2)调试过程也有所不同,连接仿真器后,无需再执
行下载程序操作,如果要从启动程序的入口开始
调试程序,必须先执行复位命令,此时程序将停
在零地址处。 ;2. 程序固化
在RAM中调试通过的程序与最终固化到Flash中的程序有所区别,用户需要在汇编器的预定义选项中设置编译定义符号,或者直接在初始化文件中增加定义编译项,由启动文件自己完成存储区的重映射而不是由命令脚本完成。
在链接器的链接文件中选择flash.ld,该链接文件和启动文件配合完成最初下载到Flash中的数据段的工作。 完成改动后,重新编译程序。然后使用Elf to Bin工具将.elf文件转换成二进制指令格式文件.bin。再利用Flash Programmer工具将.bin下载到Flash中。 ;1.4 Flash 器件SST39VF160的应用 ;SST39VF160的引脚分布图 ;SST39VFl60引脚功能描述 ;(1)读操作
SST39VFl60的读操作是由CE和OE信号线控制的。当两者都为低时,处理器就可以从SST39VFl60的输出口读取数据。 CE是SST39VFl60的片选线,当CE为高,芯片未被选中。OE是输出使能信号线。当CE或OE中某一个为高时,SST39VFl60的数据线为高阻态。;SST39VFl60读操作时序图 ;读时序参数 ;(2)字写入操作
SST39VFl60的写操作主要是以一个字接一个字的方式进行写入的。在写入之前,扇区中如果有数据,则必须首先进行充分地擦除。写操作分3步进行:第1步,送出“软件数据保护”的3字节;第2步,送出地址和数据;第3步,内部写入处理阶段,这个阶段在第4个WE或CE的上升沿时被初始化。被初始化后,内部写入处理将在20μs时间内完成。在内部写入阶段,任何指令都将被忽略。 ;SST39VF160的字写入流程图 ;通过 控制的字写入时序图 ;通过 控制的字写入时序图 ;(3)整片擦除操作
扇区或块擦除操作允许SST39VFl60以一个扇区接一个扇区,或一个块接一个块地进行擦除。扇区或块的地址在WE的第6个下降沿处锁存,指令字节(30h或50h)在的第6个上升沿处锁存,之后,开始内部擦除操作。可以采用Data Polling bit或Toggle bit的方法来判定内部擦除是否结束。
SST39VFl60还提供一个整片擦除的功能,允许使用者一次性快速擦除整个存储器(存储阵列每个单位都为1)。整片擦除同样通过执行6字节的指令序列来进行,6字节指令序列中包括片擦除指令(10h)和字节序列最后的地址5555h。 ;SST39VF160的擦除操作 ;2. 应用
(1)ST39VF160的擦除
SST39VF160具有3种擦除方式:整片擦除、
扇区擦除和块擦除。
扇区擦除子程序的主体:
void SST39VF160_SectorErase(INT32U SAaddr)
{Writeflash(0x5555,0xAA);
Writeflash(0x2AAA,0x55);
Writeflash(0x5555,0x80);
W
原创力文档


文档评论(0)