德特五金网 >> 电线接头

Flash单片机自编程技术的探讨拖链

2022-06-25

Flash单片机自编程技术的探讨

Flash单片机自编程技术的探讨 2011年12月04日 来源: Flash的可自编程性(Self-Programmability)是指,用Flash存储器中的驻留软件或程序对Flash存储器进行擦除/编程,但是,要求运行程序代码的存储区与待编程的存储区不在同一模块中。因此,只有一个片上Flash存储器模块的微处理器,是不能在进行擦除/编程Flash操作的同时执行程序的。目前,有两种途径可以解决:①在擦除/编程Flash的过程中,将CPU置于空闲状态;②将擦除/编程Flash的指令复制到RAM,再由CPU来执行。TI公司的MSP430系列Flash型单片机内部集成有Flash控制器,可以采用外部编程器进行烧写,也可以利用自己的程序修改Flash的内容,且不用外加编程电压。在进行系统设计时,可以利用片内的Flash保存一些运行数据,实现掉电保护;还可以修改Flash中的整个程序或局部程序,实现在系统升级。本文以TI公司的MSP430系列Flash型芯片为例,对如何进行Flash的自编程操作做进一步的探讨。1 MSP430芯片Flash存储器的结构Flash存储器模块是一个可独立操作的物理存储器单元。全部模块安排在同一个线性地址空间中,一个模块又可以分为多个段。当对Flash存储器段中的某一位编程时,就必须对整个段擦除,因此,Flash存储器必须分为较小的段,以方便地实现擦除和编程。图1是MSP430芯片上Flash存储器模块的结构框图。该Flash存储器模块包含如下部分:◆ 控制逻辑——控制Flash擦除和编程时的机器状态和时序发生器;◆ Flash保护逻辑——避免意外的Flash擦除和编程操作;◆ 编程电压发生器——提供Flash擦除和编程所需全部电压的集成电荷泵;◆ 3个16位控制寄存器——FCTL1、FCTL2、FCTL3控制Flash模块的全部操作;◆ 存储器本身。

2 Flash存储器的擦除和编程操作通常CPU访问Flash是为了读取数据或者是执行程序,这时数据、地址锁存器是透明的,时序发生器和电压发生器关闭。然而,我们有时候需要在程序执行的过程中对Flash的内容进行修改,这时就需要对控制寄存器FCTLx进行适当的设置,以保证擦除/编程操作的正确执行。当进行擦除/编程操作时,Flash模块中的时序发生器将产生全部内部控制信号,控制全部执行过程。这时CPU是不能访问Flash的,因此所要执行的程序指令必须从别的地方调用,如RAM,或者将CPU置于空闲状态。当Flash的编程结束后,CPU才能重新获得对Flash的控制权。MSP430系列芯片中只集成了一个Flash模块用作程序和数据存储器。这就意味着在对Flash进行编程时,中断向量是不起作用的,任何中断请求都得不到响应。所有可能的中断源(包括看门狗)在对Flash进行擦除/编程操作前,都应该被屏蔽掉,如程序1所示。程序1:禁止所有中断和WatchdogDINT ;禁止所有可屏蔽中断CLR.B &IE1 ;禁止NMI、ACCV和OF中断MOV #5A80H, &WDTCTL ;关闭片内看门狗2.1 直接进行的Flash自编程MSP430独有的一个特点就是,其Flash模块可以不用把程序代码拷贝到其它的存储器就可实现自编程。在Flash自编程过程中,当CPU从Flash中取指令时,Flash会返回值3FFFh(JMP $)给CPU,使CPU处于无限循环直到Flash自编程的结束,才会将下一条指令返回,从而使程序继续执行下去。 下面给出的程序2,对MSP430芯片的Flash进行自编程是非常容易实现的。不过这种方法也存在一个缺点:在Flash进行自编程的过程中,CPU处于空闲状态,所以这时既不能执行程序,也不能响应中断,而且这种Flash自编程方法只可用于字或字节编程模式,而不适用于速度更快的段写模式。程序2:用同一模块软件将一个字写入Flash存储器Fxkey .set 03300hFwkey .set 0A500h…… ;禁止所有中断MOV #(Fwkey + WRT), &FCTL1 ;允许对Flash编程MOV #123h, &0FE1Eh ;编程一个字MOV #Fwkey, &FCTL1 ;编程位复位XOR #(Fxkey + Lock), &FCTL3 ;LOCK位置位…… ;允许中断2.2 通过RAM程序调用实现Flash自编程在Flash进行擦除和编程期间,CPU只能访问存于片上RAM的程序指令。将Flash中的程序复制进堆栈中,如程序3所示。当对Flash进行擦写时,CPU就可以从RAM中执行程序。Flash的擦写操作完成后,Flash就可以重新被访问,程序指针PC就会再次指向Flash存储器,堆栈指针SP也会恢复。从RAM中执行程序,可以使CPU在Flash被改写时依然保持运行。因此,MSP430系列芯片在Flash编程期间仍然可以通过UART模块接收数据。不过,在这种模式下是否接收到数据,只能通过查询UART的接收标志位来进行判断。程序3:将Flash中的程序指令拷贝进堆栈的程序Flash_wwDINT ;禁止所有中断CLR.B &IE1 ;禁止NMI、ACCV和OP中断MOV #5A80h, &WDTCTL ;关闭WatchdogMOV #Flash_ww_end, R13 ;定义拷贝进RAM程序的;结束地址和长度MOV #Flash_ww_length, R15 MOV #0A500h, &FCTL3 ;清除LOCK位CopyPUSH @R13 ;将程序拷贝进RAMDECD R13DEC R15JNZ CopyMOV SP, R15MOV #0A54oh, &FCTL1 ;WRT = 1CALL R15 ;调用RAM中的Flash写程序MOV #0A500h, &FCTL1 ;WRT = 0MOV #0A510h, &FCTL3 ;LOCK = 1ADD #2*Flash_ww_length, SPRETFlash_ww_startMOV R14, 0(R12) ;向Flash写1字节Wait_bfBIT #1, &FCTL3 ;检测BUSY位JNZ Wait_bfFlash_ww_endRETFlash_ww_length EQU(Flash_ww_end ?Flash_ww_start + 2)/2ENDMOD结 语本文提出的两种Flash自编程方法各有利弊。当CPU必须对事件作出快速反应时,如通过UART进行的数据通信,采用Flash自编程开始时将Flash中的程序代码复制进RAM再执行的方法。如果对实时性要求不高,在Flash自编程过程中,将CPU置于空闲状态的办法更为简单、直接。可以相信,随着Flash型芯片的广泛应用和技术的不断发展,Flash的自编程技术也将会有新的突破。(end)

引起妊娠合并宫颈癌的原因有哪些

上海皮肤病医院怎么走

佝偻症早期症状怎么检查出来

天津看精神病好的医院地址

专业治疗湿疹排名

癫狂病吃什么好如何预防

友情链接
脱发是什么原因引起的 经常心慌心悸头晕恶心怎么回事 试验机 广州护脊床垫订购 菱形式网带多少钱 爱依瑞斯软床 深度好睡眠 眼科管家 天和追风膏 楼宇对讲价格 装配式结构材料检测 吃了伟哥后的效果 短效口服避孕药与紧急避孕药 阳痿能治好吗 人老了后多梦健忘记忆力减退吃什么药好 做了肛肠手术需要注意什么 月经期有血块能服用葵花益母草颗粒吗 去黑头用什么药膏 灰指甲应该怎么样治疗 润洁玻璃酸钠滴眼液作用与功效 得百宁治疗带状疱疹 小孩肚子疼上吐下泻什么方法有效 宝宝不爱吃饭大便干燥怎么办 心绞痛发作时常用的缓解药物 参松养心胶囊有什么疗效 为什么骨质疏松从调理肾入手 肾气虚肾不藏精怎么回事 脱毛膏哪个品牌好 七个月宝宝便秘吃什么 枣椹安神口服液多久一个疗程 玫瑰痤疮用祛痘的产品管用不 电子试验机 服装定制 孩子感冒咳嗽有痰怎么办 六个月宝宝感冒了怎么办 婚姻律师 泉州皮肤病医院 家庭常备药 seo优化 离婚律师在线 北京离婚诉讼费多少钱 肺炎咳嗽可不可以喝无糖型强力枇杷露 网站建设 锦星服装定制 灰指甲早期和中期有区别吗 治灰指甲的民间偏方哪个好 口腔溃疡怎么引起 找医院 东阿阿胶阿胶块什么情况下吃 治疗更年期严重失眠的方法 陕西西安肛肠医院 上海离婚诉讼律师费用 济宁白癜风专科医院哪家好 上海离婚律师诉讼 韶关眼科医院哪家好 本地离婚律师热线 大理治疗不孕不育专科医院 梧州男科 小孩体质差经常感冒发烧怎么办 扬州双螺线网带厂家 土地征收 Test Instrument 书辞网 哈尔滨服装定做厂家 Flaw Detector Hardware Accessories 寻医问药 济南治疗抽动哪家医院好 四川银屑病医院地址 河南哪个医院看男科好 昆明哪家医院治疗妇产好 广东儿童疾病医院哪家好 乐萱网 Manufacturers In China