【问题标题】:How to correctly calculate address spaces?如何正确计算地址空间?
【发布时间】:2011-02-17 16:41:00
【问题描述】:

以下是我在计算机工程课程中的最后一次测试中给出的问题示例。有人介意向我解释如何获取每个的开始/结束地址吗?我已经在底部列出了正确答案...

MSP430F2410 器件的地址空间为 64 KB(基本的 MSP430 架构)。如果我们知道以下内容,请填写下表。地址空间的前 16 个字节(从地址 0x0000 开始)为特殊功能寄存器(IE1、IE2、IFG1、IFG2 等)保留,接下来的 240 个字节为 8 位外围设备保留,下一个256 字节为 16 位外围设备保留。 RAM 内存容量为 2 KB,从地址 0x1100 开始。地址空间的顶部是为代码和中断向量表保留的 56KB 闪存。

什么 起始地址 结束地址 特殊功能寄存器(16 字节) 0x0000 0x000F 8 位外围设备(240 字节) 0x0010 0x00FF 16 位外围设备(256 字节) 0x0100 0x01FF RAM 内存(2 KB) 0x1100 0x18FF 闪存(56 KB) 0x2000 0xFFFF

【问题讨论】:

    标签: memory-address spaces cpu-registers msp430


    【解决方案1】:
    #define NUM_SIZES 5
    uint16_t sizes[5] = {16, 240, 256, 2 * 1024, 56 * 1024};
    uint16_t address = 0;
    printf("Start   End\n");
    for (int i = 0; i < NUM_SIZES; i++)
    {
        printf("0x%04X 0x%04X\n", address, address + sizes[i] - 1);
        address += sizes[i];
    }
    

    【讨论】:

      【解决方案2】:

      对于初学者来说,不要被存储在每个段中的内容所迷惑——这只会让你感到困惑。问题只是要求您找出十六进制编号,这并不太难。以下是要求:

      • 64 KB 总内存
      • 地址空间的前 16 个字节(从地址 0x0000 开始)保留给特殊功能寄存器(IE1、IE2、IFG1、IFG2 等)
      • 接下来的 240 字节保留给 8 位外围设备
      • 下一个 256 字节保留给 16 位外围设备
      • RAM 内存容量为 2 KB,从地址 0x1100 开始
      • 地址空间的顶部是 56KB 为代码和中断向量表保留的闪存。

      由于内存地址中的每个十六进制数字都可以处理 16 个值 (0-F),因此您需要 4 位数字来显示 64KB 的内存(16 ^ 4 = 65536,或 64K)。

      您从 16 个字节开始,涵盖 0x0000 - 0x000F(地址的一个完整数字)。这意味着紧随其后开始的下一个段(8 位设备)从 0x0010(下一个字节)开始,由于它有 240 个字节长,它在字节 256 (240 + 16) 或 0x00FF 处结束。 /p>

      下一段(16 位设备)从下一个字节开始,即 0x0100,长度为 256 字节 - 结束于 0x01FF。

      然后是 2KB(2048 字节)的 RAM,但正如描述所述,它从 0x1100 开始,而不是紧跟在前一段之后,所以这是你的起始地址。再加上 2048,得到 0x18FF。

      最后一段覆盖了内存的上半部分,所以你必须向后工作,你知道它在 0xFFFF(可用内存的结尾)结束,它有 56KB 长。如果将 56KB 转换为十六进制,则为 0xDFFF。如果你想象这个段从 0 开始,那么剩下 2000 个未使用(0xE000-0xEFFF 和 0xF000-0xFFFF),那么你知道这个段必须从 0x2000 开始到内存空间的上端结束。

      我希望这更清楚,但当我阅读它时,我不知道它有什么帮助:(也许这就是为什么我会把这个概念留给更有资格的人来教授......

      【讨论】:

      • 这个解释正是我所需要的。随时来教我们的课。比现任老师提供更多帮助!非常感谢。
      猜你喜欢
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      • 2014-12-11
      • 2014-12-21
      • 1970-01-01
      相关资源
      最近更新 更多