CCS6 中的 MSP430 内存地址

MSP430 MEMORY ADDRESS IN CCS6

我已经编写了我的第一个 MSP-EXP430F5529LP LED 开/关程序。

我想分析我的程序。但我在第一步遇到了问题。

我从板上提取了我的 LED 程序,但我得到了不清楚的数据。 (3)

这是我的第一个问题。那是什么文件格式?我的意思是我想知道我的内存转储文件的文件格式。 (3)

我的第二个问题是为什么 CCS 6 不能正确指示内存地址?

我知道 MSP430 是 16 位 MCU。所以每个内存地址都应该是 16 位宽。但我从 CCS6 反汇编视图中复制的汇编代码 (2) 向我显示地址,就像 01XXXX 格式一样。

相对数据取消引用和执行流程分支运行良好。但为什么 CSS6 让我感到困惑?我的意思是我想知道为什么 CCS6 显示内存地址为 24 位宽??

任何知道解释我想知道什么的 TI 文档在哪里的人,请告诉我。请不要提及 MSP430xxxx 用户指南。

对不起我的英语:(

1.c 代码

1
2
3
4
5
6
7
8
9
10
11
12
#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.汇编代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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.内存转储(主)

1
2
3
4
5
6
7
:1044000031400044b113ec000c930224b1130000be
:104410000c43b113c200b113f00000000200000011
:10442000840001001a44000000240000ffffffff89
:10443000ffffffffffffffffffffffffffffffff8c
:10444000ffffffffffffffffffffffffffffffff7c
...
...

如果有人阅读用户指南(这就是它们存在的原因),那么就会被告知程序计数器是 20 位的。所以,现在您知道为什么会看到 20 位范围内的地址了。

MSP430 用户指南链接:http://www.ti.com/lit/ug/slau208n/slau208n.pdf

The 20-bit PC (PC/R0) points to the next instruction to be executed.
Each instruction uses an even number of bytes (2, 4, 6, or 8 bytes),
and the PC is incremented accordingly. Instruction accesses are
performed on word boundaries, and the PC is aligned to even addresses.
Figure 6-3 shows the PC.

以上内容摘自用户指南。这一点我怎么强调都不过分——但您确实需要阅读用户指南。不这样做并尝试对微控制器进行编程会损害您的心理健康。

内存转储似乎是 Intel hex 文件格式 https://en.wikipedia.org/wiki/Intel_HEX