嵌入式TM4C123GXL—— 编译效率

2017-12-14  本文已影响0人  泽泽馥泽泽

嵌入式导论实验报告Guo-Lab3

TM4C123GXL Performance

实验题目

熟悉实验环境和实验工具

熟练使用C语言和GPOI的定义和改变

实验目的

搭建实验环境—Code Compose Studio,熟悉开发板EK-TM4C123GXL

改变编译优先级观察开平方根运行效率

实验要求

先选择不同优化级别,运行程序,观察elapsed记录的对100和230400两个数求平方根的执行时间。

使用PF1开灯和关灯语句取代用定时器测量的elapsed语句,用逻辑分析仪观察PF1波形,计算函数运算时间

板级运行程序,观察pf2灯的亮灭、观察存入内存记录的PF2状态值,以及tt所求的ss平方根值

实验过程

  1. 先选择不同优化级别,运行程序,观察elapsed记录的对100和230400两个数求平方根的执行时间。
chart1.png
  ss = 230400;//100或100000;
  unsigned long sum=0;
  unsigned long i=10;
  while(i--)
  {
      before = NVIC_ST_CURRENT_R;//开始计时
      
      tt = sqrt(ss);
      
      elapsed = (before-NVIC_ST_CURRENT_R)&0x00FFFFFF;//相减计算出sqrt计算时间
      
      sum=sum+elapsed;

  }
  
  sum/=10;
  

优先级为1的10次开方平均时间

优先级低平均.png

优先级为3的10次开方平均时间

优先高平均.png
  1. 使用PF1开灯和关灯语句取代用定时器测量的elapsed语句,用逻辑分析仪观察PF1波形,计算函数运算时间
chart2.png
GPIO_PORTF_DATA_R= 0x02;   // turn on led LED

tt = sqrt(ss);

GPIO_PORTF_DATA_R = 0x00; // turn off led LED

优先级为1的波形

lab10.jpg

优先级为3的波形


lab10-2.jpg
  1. 板级运行程序,观察pf2灯的亮灭、观察存入内存记录的PF2状态值,以及tt所求的ss平方根值
chart3.png

Data的值,记录了LED的亮灭过程

data结果.png

Data[i]=0,灯灭;

Data[i]=2,灯亮;

Sqrt的值,记录了开根号的结果

sqrt结果.png

//拍照

    //Dump data to memory
    unsigned long i;
    unsigned long Sqrt[50];
    unsigned long Data[50];
    unsigned long Led;
    i = 0; // array index
    ss=10;
   while(1)
   {
       Led = GPIO_PORTF_DATA_R;   // read previous
       Led = Led^0x02;            // toggle red LED
       GPIO_PORTF_DATA_R = Led;   // output GPIO_PORTF_DATA_R;
       tt = sqrt(ss);
       if(i<50)
       {
          Sqrt[i] = sqrt(ss);  // sqrt
          Data[i] = GPIO_PORTF_DATA_R&0x02; // record PF2
          i++;
          ss=ss*2;
       }
        SysTick_Wait10ms(100);// wait 1s
    }

实验总结

板子开根号速度很快,如果用灯去观察计算的时间,灯亮灭就在瞬间除非加延迟。

板子开根号速度只是灯不能捕捉,但是相对于普通加减乘除运算是很慢的了。开根号是加减乘除的500倍左右的时间。

进行加减法运算


+-.png

进行乘除法运算


乘除..png

进行开根号运算

优先高平均.png 照片.png
上一篇下一篇

猜你喜欢

热点阅读