使用 microchip c18 编译器在 pic18f 上创建大缓冲区

发布于 2024-09-04 15:11:04 字数 424 浏览 9 评论 0原文

使用带有 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一场春暖 2024-09-11 15:11:04

这是关于这一点的教程: http://www.dwengo.org/tips-tricks /large-variables

基本上,您在特殊部分中声明变量,并在默认部分中声明指向它的指针:

  #pragma udata DATA // section DATA
  int large_table[768];

  #pragma udata // return to default section
  int *table_ptr = &large_table[0];

接下来,您通过添加如下内容来更新链接器脚本以定义大部分:

DATABANK   NAME=data      START=0x200          END=0x7FF          PROTECTED
SECTION    NAME=DATA      RAM=data

请注意,有通常不是任何未映射的内存,您可以在其中放置数据部分,但 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:

  #pragma udata DATA // section DATA
  int large_table[768];

  #pragma udata // return to default section
  int *table_ptr = &large_table[0];

Next, you update the linker script to define the large section by adding something like this:

DATABANK   NAME=data      START=0x200          END=0x7FF          PROTECTED
SECTION    NAME=DATA      RAM=data

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...)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文