使用 microchip c18 编译器在 pic18f 上创建大缓冲区
使用带有 pic18f 的 Microchip C18 编译器,我想在程序数据空间中创建一个 3000 字节的“大”缓冲区。
如果我把它放在 main() (在堆栈上):
char tab[127];
我有这个错误:
Error [1300] stack frame too large
如果我把它放在全局中,我有这个错误:
Error - section '.udata_main.o' can not fit the section. Section '.udata_main.o' length=0x0000007f
如何创建一个大缓冲区?你有关于如何使用 c18 管理 pic18f 上的大缓冲区的教程吗?
Using Microchip C18 compiler with a pic18f, I want to create a "big" buffer of 3000 bytes in the program data space.
If i put this in the main() (on stack):
char tab[127];
I have this error:
Error [1300] stack frame too large
If I put it in global, I have this error:
Error - section '.udata_main.o' can not fit the section. Section '.udata_main.o' length=0x0000007f
How to create a big buffer? Do you have tutorial on how to manage big buffer on pic18f with c18?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是关于这一点的教程: http://www.dwengo.org/tips-tricks /large-variables
基本上,您在特殊部分中声明变量,并在默认部分中声明指向它的指针:
接下来,您通过添加如下内容来更新链接器脚本以定义大部分:
请注意,有通常不是任何未映射的内存,您可以在其中放置数据部分,但 USB 缓冲区通常是我的首选(当然,除非您在同一个项目中需要 USB...)
Here's a tutorial on exactly this: http://www.dwengo.org/tips-tricks/large-variables
Basically, you declare your variable in a special section, and a pointer to it in the default section:
Next, you update the linker script to define the large section by adding something like this:
Note that there usually isn't any unmapped memory in which you can just put your DATA section, but the USB buffers are usually my first choice to canibalize (unless you need USB in the same project of course...)