본문 바로가기

ARM9/STR9

STR911 GPIO 토글링 속도 측정

STR911 GPIO 토글링 속도 측정

while(1)
{
   GPIO2->DR[0x3FC] ^= 0xFF;
}


기본 예제로 클럭 설정시 25Mhz에서
  SCU_MCLKSourceConfig(SCU_MCLK_OSC);         /*Use OSC as the default clock source*/
  SCU_PCLKDivisorConfig(SCU_PCLK_Div1);      /* ARM Peripheral bus clokdivisor = 1*/
대략 600kHz 정도 출력된다.

PLL 클럭으로 설정시
  SCU_MCLKSourceConfig(SCU_MCLK_PLL);    /*Use OSC as the default clock source*/
  SCU_PCLKDivisorConfig(SCU_PCLK_Div1); /* ARM Peripheral bus clokdivisor = 1*/
  SCU_PLLCmd  (ENABLE);
1.85Mhz, 280ns 정도 나온다.

이건... AVR수준인데... [다른 MCU속도 측정 결과]
클럭 설정에 대한 매뉴얼을 더 읽어봐야 할것 같지만 아무래도 PLL설정에 문제가 있는것 같고 GPIO를 위해 포인터 접근하는 부분도 문제가 있을것 같다...

추후 테스트 하는대로 정리 하도록->
코드를 살펴보니 어셈블 되었을때 4개의 명령어로 처리된다. 그래도 이정도 속도는 아닌데... PLL설정 부분을 확인하는것이 필요하다.

     67            while(1)
     68            {
     69            GPIO2->DR[0x3FC] ^= 0xFF;
   \                     ??main_1:
   \   0000006C   FC03D4E5           LDRB     R0,[R4, #+1020]
   \   00000070   FF0020E2           EOR      R0,R0,#0xFF
   \   00000074   FC03C4E5           STRB     R0,[R4, #+1020]
   \   00000078   FBFFFFEA           B        ??main_1
   \                     ??main_0:
   \   0000007C   ........           DC32     GPIO_InitStructure
     70            }


반응형