工具与软件:
您好、我运行的是默认 TI 示例、而不使用操作系统。
我正在 C:\ti\default\mcu_plus_sdk_am243x_09_02_00_50\tools\ccs_load\am243x\sciclient_ccs_init.release.out 下使用
然后、我将 在 C:\ti\default\mcu_plus_sdk_am243x_09_02_00_50\examples\hello_world 下运行 hello_world 示例
C:\ti\default\mcu_plus_sdk_am243x_09_02_00_50\examples\hello_world\am243x-evm\r5fss0-0_nortos
键入 hello_world.c
我添加了此函数
static void __attribute__( naked) test_mem_read_stack_loop()
{
asm 易失性(
"LDR r0、=100000000\n"//将立即值加载到 r0中
"LDR R1、=memval\n"//将 memval 的地址加载到 R1中
"。 Lloop4:\n"
"Push{LR}\n"//保存链接寄存器
"LDR R2、[R1、#0]\n"//从 R1的存储器中加载值
"subs r0、r0、#1\n"//递减环路计数器
"弹出{LR}\n"//恢复链接寄存器
"BNE。 Lloop4\n"//如果 r0不为零、则循环
"bx LR\n"//从函数返回
".ltorg\n"
);
}
它是组件代码、基本上循环 10000000次、
uint64_t StartTime、EndTime、finaltime;
StartTime = ClockP_getTimeUsec ();
test_mem_read_stack_loop();
EndTime = ClockP_getTimeUsec ();
finaltime = EndTime - StartTime
我得到的最终时间= 1001038us 。 此数字对于800MHz 是否合理?
800MHz = 每 秒800,000,000条指令
1 (LDR)+ 1 (sub)+ 1 (bne)= 3个周期
1001038*1000 纳秒/ 100000000 *3 (指令)= 3.3纳秒/每指令。 我的计算结果是否正确?
