CCS5 编译器手动设置dsp支持可变参数宏等问题
2013-10-15 18:35
288 查看
IDE:CSS5.4,compiler不支持可变参数宏。需要手动设置编译器相关选项:
Language Option-》Language Mode —》no strict ANSI。
1.#pragma DATA_ALIGN( rxdata_stream, 128)
就是让rxdata_stream地址的末尾7位是0(二进制地址),就是128字节对齐。
对齐的目的,一般是位了CACHE读写外存。
如果一个CACHE的line是128字节。这样,如果数据128字节对齐,那么取一个128字节的数据,只使用一个CACHE行就够了。
2.dsp中的near和far关键字
near和far中意味着,near是指同一个段,far是指的不同段。
far int *p.
意味着p指针是指向一个int的远指针,即p能访问更大的数据空间,如不同的section等。
3. burst 突发模式
,
4.dm6437中的中断函数不加关键字interrupt时,进入中断向量表,可以定位、找到服务程序,程序执行一次后,由于没有B IRP,进行中断返回,程序结束以后CPU和其他正常,但DSP的中断由于没有执行B IRP,使得中断环境破坏,使得其他中断都不会再次响应。
5.CCS提供了4级的文件优化方案,分别是O0、O1、O2、O3,以下具体说明。
(1) O0 寄存器级别
● 执行控制流程简化
● 用寄存器分配变量
● 执行交替循环
● 排除未用的代码
● 简化公式和表述
● 扩大对内连函数的调用
(2) O1 局部级别
执行所有O0级别的优化,并且:
● 执行局部常量的传播
● 排除未用的赋值
● 排除局部共用表达式
(3) O2 函数级别
执行所有O1级别的优化,并且:
● 执行循环优化
● 排除全局共用子表达式
● 排除全局不用的赋值
● 执行打开循环
(4) O3 文件级别
执行所有O1级别的优化,并且:
● 排除未被调用的函数
● 简化返回值没被使用的函数
● 让小函数变成内联调用
● 保存函数说明,以便主函数被优化时知道被调用 函数的属性
● 识别文件级别的变量的特性
在使用O3级别的优化时,还可以使用别的选项执行更细致的优化
● OLN 得到标准库函数的文件
● ONN 创造优化信息文件
● PM 执行程序级别优化,编译多个源文件
而我们在做优化时,选的是O2级别的优化,因为使用O2级别优化后产生的汇编文件带有比较多的注释信息,比较容易看懂程序,建议对程序不太熟和对汇编语言不太熟练的人使用。
Language Option-》Language Mode —》no strict ANSI。
1.#pragma DATA_ALIGN( rxdata_stream, 128)
就是让rxdata_stream地址的末尾7位是0(二进制地址),就是128字节对齐。
对齐的目的,一般是位了CACHE读写外存。
如果一个CACHE的line是128字节。这样,如果数据128字节对齐,那么取一个128字节的数据,只使用一个CACHE行就够了。
2.dsp中的near和far关键字
near和far中意味着,near是指同一个段,far是指的不同段。
far int *p.
意味着p指针是指向一个int的远指针,即p能访问更大的数据空间,如不同的section等。
3. burst 突发模式
,
4.dm6437中的中断函数不加关键字interrupt时,进入中断向量表,可以定位、找到服务程序,程序执行一次后,由于没有B IRP,进行中断返回,程序结束以后CPU和其他正常,但DSP的中断由于没有执行B IRP,使得中断环境破坏,使得其他中断都不会再次响应。
5.CCS提供了4级的文件优化方案,分别是O0、O1、O2、O3,以下具体说明。
(1) O0 寄存器级别
● 执行控制流程简化
● 用寄存器分配变量
● 执行交替循环
● 排除未用的代码
● 简化公式和表述
● 扩大对内连函数的调用
(2) O1 局部级别
执行所有O0级别的优化,并且:
● 执行局部常量的传播
● 排除未用的赋值
● 排除局部共用表达式
(3) O2 函数级别
执行所有O1级别的优化,并且:
● 执行循环优化
● 排除全局共用子表达式
● 排除全局不用的赋值
● 执行打开循环
(4) O3 文件级别
执行所有O1级别的优化,并且:
● 排除未被调用的函数
● 简化返回值没被使用的函数
● 让小函数变成内联调用
● 保存函数说明,以便主函数被优化时知道被调用 函数的属性
● 识别文件级别的变量的特性
在使用O3级别的优化时,还可以使用别的选项执行更细致的优化
● OLN 得到标准库函数的文件
● ONN 创造优化信息文件
● PM 执行程序级别优化,编译多个源文件
而我们在做优化时,选的是O2级别的优化,因为使用O2级别优化后产生的汇编文件带有比较多的注释信息,比较容易看懂程序,建议对程序不太熟和对汇编语言不太熟练的人使用。
相关文章推荐
- CCS5编译器手动设置dsp支持可变参数宏等问题
- CCS5 编译器手动设置dsp支持可变参数宏等问题
- [解决]VS2010尝试设置 IDE 的进程内编译器的“References”参数时出现问题。对 COM 组件的调用
- 在调用支持可变参数格式化的函数时的一个很掩蔽问题
- 设置编译器让CodeBlock支持C99标准
- Eclipse X64版本下使用VS2010的VC编译器,库路径设置问题
- 07.java语言基础-java5对数组的支持-方法的可变参数
- printf关于支持可变参数
- [C] 让VC支持C99的整数类型V1.01。避免包含目录问题,更名auto_stdint.h、auto_inttypes.h(在VC6至VC2012、GCC、BCB等编译器下测试通过)
- 多学多得呀,关于函数的可变参数问题
- C#关于静态函数与普通函数之间的调用问题,以及可变参数的使用
- 参数NLS_LENGTH_SEMANTICS的设置问题
- 程序编码问题..如何设置引用控件支持字符编码.解决传参中编码问题
- 解决IE浏览器中javascript,js不支持NEW DATE()带参数的问题
- android的多分辨率支持机制 由anyDensity设置导致OpenGL贴图不能显示的问题谈开
- 编辑TIN时设置参数为esriTinSurfaceType.esriTinHardReplace导致边缘不整齐的问题
- 解决IE下不支持new Date()带参数的问题
- stat不支持两个参数问题
- 透析C语言可变参数问题 (转)
- [C] 让VC支持C99的整数类型V1.01。避免包含目录问题,更名auto_stdint.h、auto_inttypes.h(在VC6至VC2012、GCC、BCB等编译器下测试通过)