LuvSea

ATmega128은 Little endian일까 Big endian일까?? 본문

sTudy

ATmega128은 Little endian일까 Big endian일까??

사랑海 2009. 8. 10. 15:20
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

이를 확인하기 위해 다음과 같은 프로그램을 작성하였다.

 
  1. #include <avr/io.h>   
  2.   
  3. void delay_us(unsigned char time_us)   
  4. {   
  5.   
  6.         register unsigned char i;   
  7.   
  8.         for(i=0; i<time_us; i++)                      
  9.         {   
  10.                 asm volatile(" PUSH R0 ");      
  11.                 asm volatile(" POP R0 ");       
  12.                 asm volatile(" PUSH R0 ");   
  13.                 asm volatile(" POP R0 ");      
  14.                 asm volatile(" PUSH R0 ");    
  15.                 asm volatile(" POP R0");      
  16.         }   
  17. }   
  18.   
  19. void delay_ms(unsigned int time_ms)   
  20. {   
  21.         register unsigned int i;   
  22.         for(i=0; i<time_ms; i++)   
  23.         {   
  24.                 delay_us(250);   
  25.                 delay_us(250);   
  26.                 delay_us(250);   
  27.                 delay_us(250);   
  28.         }   
  29. }   
  30.   
  31. int main()   
  32. {   
  33.     int iData= 0x1234;   
  34.     unsigned    char *cP = (unsigned char*)&iData;   
  35.        
  36.     DDRF = 0xFF;    //포트F를 출력으로 설정   
  37.        
  38.     PORTF = *cP;   
  39.     delay_ms(3000);  //3초간 딜레이   
  40.     PORTF = *(cP+1);   
  41.        
  42.     return 0;   
  43. }  


 소스 코드를 보면 2바이트 int형 데이터를 선언하고(atmega128에서 int형은 2바이트),
1바이트 포인터로 주소값을 저장하였다.

 만약, Big endian이라면 0x12가 먼저 출력되고 3초뒤에 0x34가 출력될테고,
Little endian이라면 0x34가 먼저 출력되고 3초뒤에 0x12가 출력될 것 이다.

 키트를 연결시킨후 hex파일을 전송 시켜보았다.





 여기서 켜지는 것이 0이고, 불이 들어오지 않은 것이 1이다.
위의 사진에서 00110100으로 출력되고 3초뒤의 모습인 아래 사진에서 00010010으로 출력되는 것을 알 수 있다.
즉, 0x34 -> 3초뒤 ->0x12로 출력되는 것이다.

 따라서, 0x1234가 34, 12 의 순으로 역순으로 저장되어있기 때문에 Little endian방식으로 메모리에 저장하는 것을 알 수 있다.

'sTudy' 카테고리의 다른 글

Boot Code(Startup Code)  (0) 2009.08.10
RS232 시리얼 통신 관련 레지스터 정리  (0) 2009.08.10
Volatile 한정자  (0) 2009.08.10
DDRA, PORTA를 찾아보자.  (0) 2009.08.10
부호 확장(Sign extension)  (0) 2009.08.10
Comments