TI中文支持网
TI专业的中文技术问题搜集分享网站

am1808跑裸机程序执行速度问题

我用AM1808板子跑一个裸机程序算法程序,该裸机程序运行在AM1808的片上RAM中。起初,我将CCS编译优化选项设置成NONE,发现算法执行速度相当于在30M的CPU平台上的效果,后来将优化选项设置成LOCAL,算法执行时间由原来的5ms提高到了800us。将该算法在带有操作系统的AM1808上面跑,运行在DDR上,算法执行时间只需要400us。两者的CPU设置都是300MHz。

请问:问题存在什么地方,如何将裸机程序的执行时间提高到跟跑操作系统的一样快。

谢谢。

Yaoming Qin:

我猜想你的算法会不会特别小,都是放在cache里, 然后片上ram是不能cache的

Tony Tang:

回复 Yaoming Qin:

通溃操作系统会使能MMU,从而使能了Data Cache.

裸机程序则需要自己配置MMU。可以参考starterware相关的裸机代码。

peng lee1:

回复 Yaoming Qin:

我的算法从代码量上看不算大,也就几k,cache完全可以放下。

我不理解“片上ram是不能cache的”这句话,我已经把指令cache和Datacache使能了。片上RAM不能cache,那什么可以cache?

谢谢。

Yaoming Qin:

回复 peng lee1:

DDR sdram是可以cache的,我只是担心片上ram不会被cache映射到,所以慢点

peng lee1:

回复 Tony Tang:

我尝试使用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");

Yaoming Qin:

回复 peng lee1:

你把整个starterware 编过了么?尝试过用gcc编译么

peng lee1:

回复 Yaoming Qin:

gcc编译器能在windows系统中用吗?如果能用,怎么样用?

Yaoming Qin:

回复 peng lee1:

1.gcc  只能在linux 下用。

2. 建议你用ccs gcc 分别把整个starterware 编一下,然后,再看看代码,会不会是搞错了

jianyi wang:

回复 peng lee1:

编译不过时,Console里的提示是什么?有可能是没有引用对应的Lib文件所致。

赞(0)
未经允许不得转载:TI中文支持网 » am1808跑裸机程序执行速度问题
分享到: 更多 (0)