我用AM1808板子跑一个裸机程序算法程序,该裸机程序运行在AM1808的片上RAM中。起初,我将CCS编译优化选项设置成NONE,发现算法执行速度相当于在30M的CPU平台上的效果,后来将优化选项设置成LOCAL,算法执行时间由原来的5ms提高到了800us。将该算法在带有操作系统的AM1808上面跑,运行在DDR上,算法执行时间只需要400us。两者的CPU设置都是300MHz。
请问:问题存在什么地方,如何将裸机程序的执行时间提高到跟跑操作系统的一样快。
谢谢。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我用AM1808板子跑一个裸机程序算法程序,该裸机程序运行在AM1808的片上RAM中。起初,我将CCS编译优化选项设置成NONE,发现算法执行速度相当于在30M的CPU平台上的效果,后来将优化选项设置成LOCAL,算法执行时间由原来的5ms提高到了800us。将该算法在带有操作系统的AM1808上面跑,运行在DDR上,算法执行时间只需要400us。两者的CPU设置都是300MHz。
请问:问题存在什么地方,如何将裸机程序的执行时间提高到跟跑操作系统的一样快。
谢谢。
我猜想你的算法会不会特别小,都是放在cache里, 然后片上ram是不能cache的
DDR sdram是可以cache的,我只是担心片上ram不会被cache映射到,所以慢点
我尝试使用starterware中的裸机代码,发现代码编译过不去,不知道怎么解决。
使用环境:ccs4.2
安照starterware中的裸机代码调用 CP15TtbSet((unsigned int )pageTable);
编译器提示我:CP16TtbSet没有定义,不知道哪出错了,希望专家给予帮助。谢谢。
__asm(" .sect \".text:CP15TtbSet\"\n"
" .clink\n"
" .global CP15TtbSet\n"
"CP15TtbSet:\n"
" mov r1, #0\n"
" mcr p15, #0, r1, c8, c7, #0\n"
" ldr r1, [r15, #8]\n"
" mcr p15, #0, r1, c3, c0, #0\n"
" mcr p15, #0, r0, c2, c0, #0\n"
" bx lr\n"
" .word 0x55555555\n");
你把整个starterware 编过了么?尝试过用gcc编译么
1.gcc 只能在linux 下用。
2. 建议你用ccs gcc 分别把整个starterware 编一下,然后,再看看代码,会不会是搞错了
编译不过时,Console里的提示是什么?有可能是没有引用对应的Lib文件所致。