说说VDSP5
2008-07-18 11:27
29 查看
快乐虾 http://blog.csdn.net/lights_joy/ lights@hb165.com
本文适用于
ADI bf561 DSP
优视BF561EVB开发板
uclinux-2008r1-rc8 (移植到vdsp5)
Visual DSP++ 5.0
欢迎转载,但请保留作者信息
前段时间,将uclinux内核移植到了Visual DSP 5.0下,也就来说说对Vdsp5的一些看法。
总的说,VDSP5还是一个比较不错的IDE的,面对23M的dxe文件,都能正确地进行调试,虽然其下载速度变慢,大概要4分钟左右才可以下载完。
对VDSP的意见集中在下面几个方面:
比如仅仅在一行上打上一个分号,VDSP就会有强烈的意见。这一点可能不应该把帐算在VDSP的头上,但是我相信只要对编译器进行很小的改动就可以实现,这对于将软件从GCC编译器移植到VDSP却有莫大的好处。
2、.macro
在gcc下的汇编支持.macro,它类似于define,但是使用.macro可以在定义中使用#ifdef这样的条件编译,而用define则不行,希望未来VDSP也可以支持它。
3、.rept
使用.rept,相当于可以对代码进行copy / paste的操作,可以节省很多时间,希望未来VDSP也可以支持。
4、jump 1f
可恨,这么好的一个东西,VDSP居然不支持。
5、嵌入汇编
这是VDSP最烂的一个地方,如果你在C中嵌入汇编,而这个代码又很不幸地出错了,那你别指望VDSP会帮助你,它的错误提示完全让人不知所云!!
1、__builtin_expect
这个本来是个好东西,可惜有时它会引起编译器的崩溃,而且其提示让人不知所云!
2、inline
这个也是个好东西,但当内联超过多层的时候(不确定是否这个原因),也会引起编译器的崩溃!就像这样的:
../../mm/filemap.c
At end of source: : internal error: Uncaught exception Assertion failed raised
at ../../../bril/optimiser/dominators.c:910 (in pass
cleanup_scalar_stores_nonopt during compilation of
_find_or_create_page). Please submit a bug report with this message,
the command line used, type of machine and the output of the
compiler when you add -ED -v to the command line. Please also send
us the pre-processed file that is generated by the -ED option (the
file generated is named <original_filename>.i)
1 catastrophic error detected in the compilation of "../../mm/filemap.c".
Compilation aborted.
cc3089: fatal error: Compilation failed
2、在显示变量值的窗口(Expression)中,有一些结构体无法显示结构体的成员。
3、在跟踪inline函数时,无法查看其变量的值。这个似乎不应该归罪于VDSP,写下来供参考。
链接脚本里提供了一个FORCE_CONTIG的命令,但是实际发现它并不起作用!
本文适用于
ADI bf561 DSP
优视BF561EVB开发板
uclinux-2008r1-rc8 (移植到vdsp5)
Visual DSP++ 5.0
欢迎转载,但请保留作者信息
前段时间,将uclinux内核移植到了Visual DSP 5.0下,也就来说说对Vdsp5的一些看法。
总的说,VDSP5还是一个比较不错的IDE的,面对23M的dxe文件,都能正确地进行调试,虽然其下载速度变慢,大概要4分钟左右才可以下载完。
对VDSP的意见集中在下面几个方面:
1.1.1 关于汇编
1、不支持空行。比如仅仅在一行上打上一个分号,VDSP就会有强烈的意见。这一点可能不应该把帐算在VDSP的头上,但是我相信只要对编译器进行很小的改动就可以实现,这对于将软件从GCC编译器移植到VDSP却有莫大的好处。
2、.macro
在gcc下的汇编支持.macro,它类似于define,但是使用.macro可以在定义中使用#ifdef这样的条件编译,而用define则不行,希望未来VDSP也可以支持它。
3、.rept
使用.rept,相当于可以对代码进行copy / paste的操作,可以节省很多时间,希望未来VDSP也可以支持。
4、jump 1f
可恨,这么好的一个东西,VDSP居然不支持。
5、嵌入汇编
这是VDSP最烂的一个地方,如果你在C中嵌入汇编,而这个代码又很不幸地出错了,那你别指望VDSP会帮助你,它的错误提示完全让人不知所云!!
1.1.2 关于C编译器
关于C编译器,主要存在两个BUG,都和优化有关。1、__builtin_expect
这个本来是个好东西,可惜有时它会引起编译器的崩溃,而且其提示让人不知所云!
2、inline
这个也是个好东西,但当内联超过多层的时候(不确定是否这个原因),也会引起编译器的崩溃!就像这样的:
../../mm/filemap.c
At end of source: : internal error: Uncaught exception Assertion failed raised
at ../../../bril/optimiser/dominators.c:910 (in pass
cleanup_scalar_stores_nonopt during compilation of
_find_or_create_page). Please submit a bug report with this message,
the command line used, type of machine and the output of the
compiler when you add -ED -v to the command line. Please also send
us the pre-processed file that is generated by the -ED option (the
file generated is named <original_filename>.i)
1 catastrophic error detected in the compilation of "../../mm/filemap.c".
Compilation aborted.
cc3089: fatal error: Compilation failed
1.1.3 关于调试器
1、当要调试的系统变大时,偶而有不稳定的现象发生,比如下载完成后要将系统中断下来,此时当按下中断按钮时,直接就跑飞了,你再下载一次就OK了。这在系统较小时几乎不会发生。2、在显示变量值的窗口(Expression)中,有一些结构体无法显示结构体的成员。
3、在跟踪inline函数时,无法查看其变量的值。这个似乎不应该归罪于VDSP,写下来供参考。
1.1.4 关于链接器
这个就比较让人恼火了,如果你定义一块比较大的空间,然后将这个空间分成多个section,这个时候,链接器会自动将一些小代码或者小变量塞到一些内存的空隙中,以此提高对空间的利用率。本来是件好事情,但是在有些时候这却会造成致命的错误!链接脚本里提供了一个FORCE_CONTIG的命令,但是实际发现它并不起作用!
相关文章推荐
- 说说全栈工程师
- 说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
- 让你的jenkins能当奴隶主---说说几种Jenkins build框架
- 说说系统分析师考试(从考试介绍到考试心得)
- 说说观止软件产品管理
- 说说asp.net中的异常处理和日志追踪
- 说说最近招聘的经验
- 如何引用另外一个文件中的串, 顺便说说void print();和(void)print();的区别
- 说说你我上班那点尴尬事儿
- 转;说说AngularJS中的$parse和$eval
- 【小猿說】工作杂谈之说说工作中的二宗罪
- 说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
- 说说Spring中的WebDataBinder
- 说说nio2
- android中的binder机制(不是说代码,说说实现的原理,你不得错过)
- 简单说说PHP优化那些事
- IT人在IT博客上说说跟IT没关系的事儿
- 大钟的ios开发之旅(2)————简单说说ios中ARC与非ARC模式下的property的变量修饰词
- 说说图标设计的那点事