2014-07-21 2 views
0

필자는 처음으로 MSP-EXP430F5529LP LED on/off 프로그램을 작성했습니다.MSP430 CCS6 메모리 주소

내 프로그램을 분석하고 싶습니다. 하지만 첫 걸음에서 문제가있었습니다.

보드에서 LED 프로그램을 추출했는데 불분명 한 데이터가 있습니다. (3)

이것이 나의 첫 번째 질문이다. 그 파일 형식은 무엇입니까? 내 메모리 덤프 파일의 파일 형식을 알고 싶습니다. (3)

제 2의 질문은 CCS 6이 메모리 주소를 올바르게 나타내지 않는 이유입니까?

MSP430은 16 비트 MCU입니다. 따라서 모든 메모리 주소는 16 비트 너비 여야합니다. 하지만 CCS6 Disassembly View에서 복사 한 어셈블리 코드 (2)는 01XXXX 형식과 같은 주소를 표시합니다.

상대적 데이터 참조 해제 및 실행 흐름 분기가 잘 작동합니다. CSS6가 왜 나를 혼란스럽게 만들었습니까? 나는 왜 CCS6이 24 비트 너비의 메모리를 표시하는지 알고 싶습니까?

알고 싶은 것을 설명하는 TI 문서가 어디에 있는지 알고있는 사람은 누구에게 알려주십시오. MSP430xxxx 사용자 설명서는 언급하지 마십시오. 내 영어 :(

1.C 코드

#include <msp430f5529.h> 

volatile unsigned int i; 

void main(void) { 
    WDTCTL = WDTPW | WDTHOLD; 
    P1DIR |= 0x01; 
    while(1){ 
     P1OUT ^= 0x01; 
     for(i = 20000;i > 0; i--); 
    } 
} 

2.assembly 코드

0100c2: 40B2 5A80 015C  MOV.W #0x5a80,&Watchdog_Timer_WDTCTL 
0100c8: D3D2 0204   BIS.B #1,&Port_A_PADIR 
0100cc: E3D2 0202   XOR.B #1,&Port_A_PAOUT 
0100d0: 40B2 4E20 2400  MOV.W #0x4e20,&i 
0100d6: 3C02    JMP  (0x00dc) 
0100d8: 8392 2400   DEC.W &i 
0100dc: 9382 2400   TST.W &i 
0100e0: 27F5    JEQ  (0x00cc) 
0100e2: 3FFA    JMP  (0x00d8) 
0100e4: 4303    NOP  
0100e6: D032 0010   BIS.W #0x0010,SR 
0100ea: 3FFD    JMP  (0x00e6) 
0100ec: 431C    MOV.W #1,R12 
0100ee: 0110    RETA  
0100f0: 4303    NOP  
0100f2: 3FFF    JMP  (0x00f2) 

3.memory 덤프 (MAIN)

:1044000031400044b113ec000c930224b1130000be 
:104410000c43b113c200b113f00000000200000011 
:10442000840001001a44000000240000ffffffff89 
:10443000ffffffffffffffffffffffffffffffff8c 
:10444000ffffffffffffffffffffffffffffffff7c 
... 
... 

답변

1

에 대한

죄송합니다 사용자 가이드를 읽는다면 (즉, y가 존재하면), 프로그램 카운터가 20 비트임을 통보 받는다. 이제 20 비트 범위의 주소가 왜 표시되는지 알게되었습니다. MSP430을 사용 설명서에

링크 : http://www.ti.com/lit/ug/slau208n/slau208n.pdf

20 비트 PC (PC/R0) 포인트 다음 명령을 실행합니다. 각 명령어는 짝수 바이트 (2, 4, 6 또는 8 바이트) 인 을 사용하며 그에 따라 PC가 증가합니다. 명령어 액세스는 단어 경계에서 수행되는 이며 PC는 짝수 주소로 정렬됩니다. 그림 6-3은 PC를 보여줍니다.

위의 내용은 사용자 가이드의 일부입니다. 충분히 강조 할 수는 없지만 사용자 가이드를 실제로 읽어야합니다. 그렇게하지 않고 마이크로 컨트롤러를 프로그래밍하려고 시도하는 것은 정신 건강에 지옥입니다.

메모리 덤프 인텔 헥사 파일 형식으로 https://en.wikipedia.org/wiki/Intel_HEX

+0

덕분에 많이 보인다! 덕분에 사용자 가이드를 읽는 것이 얼마나 중요한지 알았습니다. :) – combabo