【问题标题】:How to specify adress ranges for PIC code?如何指定 PIC 代码的地址范围?
【发布时间】:2009-09-15 14:08:40
【问题描述】:

我想为 PIC16 使用 Claudiu Chiculitas 微型引导加载程序(我已对其进行了修改以适合我的芯片),但由于该引导加载程序不会移动代码以防止覆盖引导加载程序,因此我必须以某种方式手动确保引导加载程序未被覆盖。我曾尝试像这样使用 --rom 选项:

--rom=default,-0-4,-3f00-3fff

我想要的是:代码内存的前 4 个字中没有代码,因为那是跳转到引导加载程序的地方,而最后 128 个字的内存中没有代码,因为那是实际的引导加载程序所在的位置。 --rom 就像我使用它一样,什么也没做。我使用的是 HI-TECH PICC STD 编译器(Microchip PICmicro)V9.60PL3,芯片是 pic16f876A。

【问题讨论】:

  • 这对我来说看起来不错,你在哪里添加了这一行?它应该在项目构建选项的全局选项卡的“附加命令行选项”框中。
  • 在一个 bat 文件中。我从命令行编译。无论如何,我决定简单地丢弃这些范围内的代码并手动修补它(使用脚本)。如果你把它放在一个答案中,你会得到一个免费的“正确答案”:-)

标签: linker pic rom


【解决方案1】:

您也可以使用自定义链接器脚本来执行此操作。通常,您的链接描述文件将包含这些行以将重置向量放在第一位,然后将代码(在名为“page”的页面中)放在后面:

CODEPAGE   NAME=vectors    START=0x0            END=0x29           PROTECTED
CODEPAGE   NAME=page       START=0x2A           END=0x7FFF

对于 Microchip 的 FSDem 板中使用的引导加载程序(占用 0x0-0x800 范围,并希望您的程序在 0x800 处有自己的向量),它被以下行替换,以防止链接器使用低于 0x800 的任何内容:

CODEPAGE   NAME=boot       START=0x0            END=0x7FF          PROTECTED
CODEPAGE   NAME=vectors    START=0x800          END=0x0x829        PROTECTED
CODEPAGE   NAME=page       START=0x82A          END=0x7FFF

【讨论】:

    猜你喜欢
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 2012-05-12
    • 2011-12-01
    • 1970-01-01
    • 2013-11-23
    相关资源
    最近更新 更多