位置:51电子网 » 技术资料 » 存 储 器

基于单片机的Flash在系统编程方法

发布时间:2008/5/27 0:00:00 访问次数:478

        

    

    

    引言

    一个完整的嵌入式系统必须要有一个合适的存储器存放用户代码。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定位在程序段的起始位置。

    编程方法实现

    系统配置和参数设置

    tms320dm642是ti公司的一款视频图像dsp,工作时钟最高可达到600mhz,程序存储器最大可调至272m×8位,其emif接口分4个空间,即ce0-ce3,flash映射到ce1空间,其地址为0x9000 0000-0x90400000,上电时采用8位rom加载方式。

    

    am29lv033c是amd公司生产的

        

    

    

    引言

    一个完整的嵌入式系统必须要有一个合适的存储器存放用户代码。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定位在程序段的起始位置。

    编程方法实现

    系统配置和参数设置

    tms320dm642是ti公司的一款视频图像dsp,工作时钟最高可达到600mhz,程序存储器最大可调至272m×8位,其emif接口分4个空间,即ce0-ce3,flash映射到ce1空间,其地址为0x9000 0000-0x90400000,上电时采用8位rom加载方式。

    

    am29lv033c是amd公司生产的

相关IC型号

热门点击

 

推荐技术资料

循线机器人是机器人入门和
    循线机器人是机器人入门和比赛最常用的控制方式,E48S... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!