如何指定PIC代码的地址范围?
我想为 PIC16 使用 Claudiu Chiculitas 小型引导加载程序(我已对其进行修改以适合我的芯片),但由于该引导加载程序不会移动代码以防止覆盖引导加载程序,因此我必须以某种方式手动确保引导加载程序不被覆盖。我尝试像这样使用 --rom 选项:
--rom=default,-0-4,-3f00-3fff
我想要的是:代码内存的前 4 个字中没有代码,因为那是跳转到引导加载程序的位置,并且内存的最后 128 个字中没有代码,因为那是实际引导加载程序在哪里。 --rom 就像我用的那样什么也没做。我使用HI-TECH PICC STD编译器(Microchip PICmicro)V9.60PL3,芯片是pic16f876A。
I want to use Claudiu Chiculitas tiny bootloader for PIC16 (i have modyfied it to suit my chip) but since that bootloader does not move code to prevent overwriting the bootloader, I must somehow manually see to that the bootloader is not overwritten. I have tried to use the --rom option like this:
--rom=default,-0-4,-3f00-3fff
What I want is: No code in the first 4 words of code memmory, because thats where the jump to the bootloader is and no code in the last 128 words of memory because thats where the actual bootloader is. --rom like I use it does nothing. Im using HI-TECH PICC STD COMPILER (Microchip PICmicro) V9.60PL3 and the chip is pic16f876A.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您还可以使用自定义链接描述文件来执行此操作。通常,链接器脚本将包含以下几行,将复位向量放在前面,然后将代码(在名为“page”的页面中)放在后面:
对于 Microchip 的 FSDem 板中使用的引导加载程序(占据 0x0-0x800 范围,并期望您的程序在 0x800 处拥有自己的向量),这被下面的行替换,以防止链接器使用 0x800 以下的任何内容:
You can also do this with a custom linker script. Usually, your linker script would contain these lines to put the reset vectors first and the code (in the page named "page") behind it:
For the bootloader used in Microchip's FSDem board (which occupies the 0x0-0x800 range, and expects your program to have its own vectors at 0x800), this is replaced by the lines below which prevent the linker from using anything below 0x800: