更新时间: 2023-11-01
常数是那些用C语言的c**t类型关键词声明的数据结构。编译器把所有的常数放置在.ec**t段中(假定为大存储模式)。当前TMS320F28xx器件上的特殊管道(specialpipelining)提高Flash上运行代码的性能时.每次访问位于片上Flash中的数据常数会占用许多周期。特别是在150MHzTMS320F281xDSP上Flash等待状态要达到5个周期.100MHzTMS320F280DSP达到3个周期。所以,访问片上RAM中的常数与常数表则成为沉重的负担。然而,分立式嵌入式系统要求所有的初始化数据(如常数)**初都是位于非易失性存储器中,所以,必须为想访问的RAM中的常数建立独立的装载和运行地址.在运行时把这些常数从片上Flash中拷贝到RAM中。这里介绍两种不同的实现方法。
方法一:在RAM中运行所有的常数阵列。
这种方法是为整个.ec**t段**独立的装载和运行地址。其好处是容易使用,而坏处是RAM的使用量非常大(可能只有少量常数需要快速访问,但是用这种方法所有的常数都位于RAM)。
在用户连接命令文件中简单地为整个.ec**t段**独立的装载和运行地址,然后在运行时通过拷贝整个.ec**t段的方式往工程中添加代码。
在用户连接命令文件中简单地为整个.ec**t段**独立的装载和运行地址,然后在运行时通过拷贝整个.ec**t段的方式往工程中添加代码
方法二:在RAM中运行特定的常数阵列。
这种方法是在运行时有选择性地从Flash拷贝常数到RAM。与方法一相似,这个流程能够完成预期功能,不同点是只有在命名段中被选择了的常数才会被拷贝到RAM中(而不是把所有的常数都拷贝到RAM中)。
假定想创建在RAM中运行的5个字的常数阵列,并命名为table[]。DATA_SECTION指令用来把table[]放置在名为ramc**ts的用户自定义段中。
上一篇:13581301卡件
下一篇:13870801卡件