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

TMS320F28xx DSP中内部Flash的应用研究

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

        

    

    

    来源:国外电子元器件 作者:王敏 陈富林

    

    1 前言

    

    tms320f28xx dsp片内有128 k×16 bit字的flash、两块4 k x16bit字的单周期访问ram(saram)lo和l1、一块8 kxl6 bit字的单周期访问ram(saram)ho、两块1 kxl6 bit字的单周期访问ram(saram)m0和m1。由于存储器种类多、容量大,所以从系统的高度来配置各个存储器必须有合适的方法,而这些方法一般都与片内flash有关。另外,tms320f28xx dsp片内有看门狗定时器模块(wdt)、引导rom(rom bootloader)模块、代码安全模块(csm),要合理地使用这些模块为整个系统服务,必定也要用到flash。

    

    由此可以看出,flash的地位和作用比较显著.所以本文就flash的几种用法作了研究。

    

    2 从flash拷贝段到ram

    

    2.1拷贝中断向量

    

    在tms320f28xx器件中,外设扩展中断(pie)模块管理中断请求。上电时,所有中断向量必须位于非易失性存储器(如flash)中,但是要把中断向量拷贝到pievect ram中,这是用户代码中器件初始化程序的一部分。pievect ram是一个特定的ram块,它在当前tms320f28xx器件中是一个256×16的块.在数据空间中的起始地址为ox000d00。

    

    把中断向量连接到flash,然后在运行时把中断向量拷贝到pievect ram中,有许多方法可以实现。一个方法是创建包含函数指针的常量c结构体,该结构体包括128个32-bit向量。如果使用dsp281x或者dsp280x外设的结构体.这个结构体叫做pievecttableinit,它已经在dsp281x_pievect.c或者dsp280x_pievect.c创建(参看ti提供的例程)。因为这个结构体使用const类型关键词,所以它将会被编译器放置在.econst段中。运行时只需要把这个结构体拷贝到pievect ram中。c编译器运行时支持库包含名为memcpy的存储器拷贝函数,该函数可以被用来完成拷贝任务,其用法如下所示:

    

    

    

    以上这个例子为pie ram起始地址使用的硬编码地址(hard coded address),明确指定为0x000d00。但是硬编码地址并不是较好的编程方式,用户可以使用data_section指令创建一个非初始化的假变量(dummy variable),并把这个变量连接到pie ram.然后用这个假变量的名字来代替硬编码地址。例如,当使用dsp281x或者dsp280x外设结构体时,创建一个名为pievecttable的非初始化结构体,并把该结构体连接到pievect ram。前面例子中的memcpy()函数可以被替换为:

    

    memcpy(&pievecttable,&pievecttableinit,256);

    

    注意拷贝长度是256个16-bit字.对应为128个32-bit字。

    

    2.2初始化flash控制寄存器

    

    flash控制寄存器fopt、fpwr、:fstdby-wait、factivewait、fbankwait、fotpwait的初始化代码不能从flash存储器当中运行.否则就会有不可预料的结果出现。所以,flash控制寄存器的初始化函数在运行时必须从flash(它的装载地址)拷贝到ram(它的运行地址)。

    

    flash控制寄存器由code security module(csm)保护。如果csm被保护起来了,那么必须从被保护的ram(例如:l0或者l1 saram)运行flash控制寄存器的初始化代码,否则flash控制寄存器的初始化代码无法访问flash控制寄存器。要注意的是,当器件复位的时候csm一般都是被保护起来的,虽然使用假密码0xffff时rom bootload-er会把它解锁。

    

    c编译器的code_section指令可以用来为flash控制寄存器的初始化函数创建独立的可连接段。例如:假定flash控制寄存器的配置在c函数initflash()中实现,并且想把这个函数放置在名为secureramfuncs的可连接段当中。下列的c代码例程显示了code_section命令在flash存储器配置中的正确用法:

    

    

    

    secureramfunc

        

    

    

    来源:国外电子元器件 作者:王敏 陈富林

    

    1 前言

    

    tms320f28xx dsp片内有128 k×16 bit字的flash、两块4 k x16bit字的单周期访问ram(saram)lo和l1、一块8 kxl6 bit字的单周期访问ram(saram)ho、两块1 kxl6 bit字的单周期访问ram(saram)m0和m1。由于存储器种类多、容量大,所以从系统的高度来配置各个存储器必须有合适的方法,而这些方法一般都与片内flash有关。另外,tms320f28xx dsp片内有看门狗定时器模块(wdt)、引导rom(rom bootloader)模块、代码安全模块(csm),要合理地使用这些模块为整个系统服务,必定也要用到flash。

    

    由此可以看出,flash的地位和作用比较显著.所以本文就flash的几种用法作了研究。

    

    2 从flash拷贝段到ram

    

    2.1拷贝中断向量

    

    在tms320f28xx器件中,外设扩展中断(pie)模块管理中断请求。上电时,所有中断向量必须位于非易失性存储器(如flash)中,但是要把中断向量拷贝到pievect ram中,这是用户代码中器件初始化程序的一部分。pievect ram是一个特定的ram块,它在当前tms320f28xx器件中是一个256×16的块.在数据空间中的起始地址为ox000d00。

    

    把中断向量连接到flash,然后在运行时把中断向量拷贝到pievect ram中,有许多方法可以实现。一个方法是创建包含函数指针的常量c结构体,该结构体包括128个32-bit向量。如果使用dsp281x或者dsp280x外设的结构体.这个结构体叫做pievecttableinit,它已经在dsp281x_pievect.c或者dsp280x_pievect.c创建(参看ti提供的例程)。因为这个结构体使用const类型关键词,所以它将会被编译器放置在.econst段中。运行时只需要把这个结构体拷贝到pievect ram中。c编译器运行时支持库包含名为memcpy的存储器拷贝函数,该函数可以被用来完成拷贝任务,其用法如下所示:

    

    

    

    以上这个例子为pie ram起始地址使用的硬编码地址(hard coded address),明确指定为0x000d00。但是硬编码地址并不是较好的编程方式,用户可以使用data_section指令创建一个非初始化的假变量(dummy variable),并把这个变量连接到pie ram.然后用这个假变量的名字来代替硬编码地址。例如,当使用dsp281x或者dsp280x外设结构体时,创建一个名为pievecttable的非初始化结构体,并把该结构体连接到pievect ram。前面例子中的memcpy()函数可以被替换为:

    

    memcpy(&pievecttable,&pievecttableinit,256);

    

    注意拷贝长度是256个16-bit字.对应为128个32-bit字。

    

    2.2初始化flash控制寄存器

    

    flash控制寄存器fopt、fpwr、:fstdby-wait、factivewait、fbankwait、fotpwait的初始化代码不能从flash存储器当中运行.否则就会有不可预料的结果出现。所以,flash控制寄存器的初始化函数在运行时必须从flash(它的装载地址)拷贝到ram(它的运行地址)。

    

    flash控制寄存器由code security module(csm)保护。如果csm被保护起来了,那么必须从被保护的ram(例如:l0或者l1 saram)运行flash控制寄存器的初始化代码,否则flash控制寄存器的初始化代码无法访问flash控制寄存器。要注意的是,当器件复位的时候csm一般都是被保护起来的,虽然使用假密码0xffff时rom bootload-er会把它解锁。

    

    c编译器的code_section指令可以用来为flash控制寄存器的初始化函数创建独立的可连接段。例如:假定flash控制寄存器的配置在c函数initflash()中实现,并且想把这个函数放置在名为secureramfuncs的可连接段当中。下列的c代码例程显示了code_section命令在flash存储器配置中的正确用法:

    

    

    

    secureramfunc

相关IC型号

热门点击

 

推荐技术资料

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


 复制成功!