首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用microchip c18编译器在pic18f上创建大缓冲区

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

Stack Overflow用户
提问于 2010-06-06 18:32:52
回答 1查看 7K关注 0票数 6

使用带有pic18f的Microchip C18编译器,我想在程序数据空间中创建一个3000字节的“大”缓冲区。

如果我把它放在main() (在堆栈上)中:

代码语言:javascript
复制
char tab[127];

我有这个错误:

代码语言:javascript
复制
Error [1300] stack frame too large

如果我把它放在全局中,我会得到这样的错误:

代码语言:javascript
复制
Error - section '.udata_main.o' can not fit the section. Section '.udata_main.o' length=0x0000007f

如何创建一个大的缓冲区?你有关于如何用c18管理pic18f上的大缓冲区的教程吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-06 18:36:12

这里有一个关于这方面的教程:http://www.dwengo.org/tips-tricks/large-variables

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

代码语言:javascript
复制
  #pragma udata DATA // section DATA
  int large_table[768];

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

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

代码语言:javascript
复制
DATABANK   NAME=data      START=0x200          END=0x7FF          PROTECTED
SECTION    NAME=DATA      RAM=data

请注意,通常没有任何未映射的内存,您只能将数据段放入其中,但USB缓冲区通常是我的首选(当然,除非您在同一项目中需要USB ...)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2983875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档