您的位置 首页 技术

根据单片机的Flash在体系编程办法

一个完整的嵌入式系统必须要有一个合适的存储器存放用户代码。Flash是一种非易失性存储器,而且具有电可擦写、容量大、价格便宜等特点,通

一个完好的嵌入式体系有必要要有一个适宜的存储器寄存用户代码。Flash是一种非易失性存储器,并且具有电可擦写、容量大、价格便宜等特色,一般可用于在DSP体系中寄存用户代码。

Flash在正常运用前要进行编程,行将用户代码写入Flash。在体系编程办法不需求其他编程设备和编程电源,只借助于仿真器,可直接经过DSP烧写程序对Flash进行编程。本文所运用的编程办法就归于在体系编程。

本文首要介绍常见的Flash编程办法。然后具体介绍本文办法的原理,以及DSP体系上电加载原理,最终给出整个完结进程并剖析了Flash变成时需求留意的一些问题。

Flash编程办法

常见的Flash编程办法

Flash在正常运用前有必要写入用户程序,传统上有3种编程办法:由供货商出货前把程序代码写入Flash,编程器编程和在体系编程。

第1种办法不能满意用户更改代码的需求,所以在开发阶段不宜选用。当运用编程器编程时,要求Flash固定在PCB板前有必要把用户程序写入片内。因而,现在一般都优先考虑在体系编程办法,首要应确认所选的DSP是否支撑在体系编程。现行的在体系编程的办法一般是先把待加载程序(用户程序)的.out文件(COFF格局)转成HEX格局,然后去掉HEX格局文件的文件头,再经过烧写程序写到Flash里去,也可以不进行COFF格局到HEX格局的转化这一步,把COFF文件作为源文件,去除文件头信息后将其写入Flash。

本文办法的编程原理

本文的完结办法比较简略,首要把用户程序映射到体系RAM,再把用户程序作为数据直接从RAM搬入Flash中。

首要在CCS上完结用户程序,生成可履行的.out文件,将该文件设为文件1进行加载;然后加载烧写程序的.out文件,将其设为文件2;最终运转文件2,经过它把文件1烧入Flash。

操作进程十分简略,这儿要阐明几点,首要,2个.out文件各自独立,文件2加载后,文件1成为数据,CCS在运转时,运转的是最新加载的程序,也即文件2。其次,文件2与文件1映射到RAM中的物理空间各自独立,也便是文件2不能映射到文件1已暗射的当地,假如产生堆叠,文件2的内容就会掩盖原先文件1映射到该地址空间的内容,写入Flash的内容就会产生过错。再次,用户程序里包含了二次加载程序,以在自举时把用户程序从Flash复原到RAM中。

二次加载和Bootloader

要确保用户程序的正确运转,仅把程序写入Flash是不行的,有必要确保上电后,程序可以从Flash中正确康复到RAM,体系上电作业进程如图1所示。
 

DSP首要自检,得到程序的加载形式。在C6000中主要有2种形式,一种是主机加载形式,也即DSP从0x0000 0000开端履行程序;另一种是ROM加载形式,该形式又有8位、16位、32位几种,不同的DSP略有不同,这儿选用8位ROM形式,作业时,DSP先从地址0x9000 0000开端,把0x9000 0000-0x9000 0400这1K(在C62xx中是64K)的数据搬到0x0000 0000-0x0000 0400,然后再从0x0000 0000开端履行程序,这一次加载由DSP自行完结,可是1K的程序作为用户程序明显不行,因而,这1K的程序要做成加载其,也便是手艺写的Bootloader,使用它把用户程序从Flash搬入RAM。加载器转移用户程序又是一次加载,因而把这个进程统称为二次加载。

Bootloader要完结两项功用,榜首,把其他程序搬到指定的地址,第二、跳转到用户程序进口,这儿要先修正ISP,再跳转到复位中止,因而在Bootloader的最终总是一条跳转指令。因为Bootloader在Flash中的方位是0x9000 0000-0x9000 0400,而Bootloader又是放在用户程序里的,因而,为了便利烧写程序把Bootloader写到该方位,这儿在用户成程序的.cmd文件中把Bootloader定位在程序段的开始方位。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/254304.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部