Microchip PIC MPLAB (MCC18) 编译器将其内存分段为 256 个 block (0x100)。
如何创建大于 256 字节的数组?
char buffer[256];
为了达到 256,我需要使用 #pragma
#pragma udata segment_name
char buffer[256];
#pragma udata
所以我可以强制 MCC18 分配更大的缓冲区吗?还是合并两个内存段?
最佳答案
粘贴答案来自:
http://forum.microchip.com/printable.aspx?m=39357
以防万一它消失。
In Three Easy Steps Step 1: Assign the variable into a named section in source code:
#pragma udata big_scn char big_array[0x180]; #pragma udata
Step 2: Create the larger region in the linker script: Before:
DATABANK NAME=gpr3 START=0x300 END=0x3FF DATABANK NAME=gpr4 START=0x400 END=0x4FF
After:
DATABANK NAME=big_scn START=0x300 END=0x47F PROTECTED DATABANK NAME=gpr4 START=0x480 END=0x4FF SECTION NAME=big_scn RAM=big_scn
Step 3: Reference only through a pointer:
char *big_array_ptr = &big_array[0]; big_array_ptr[0x100] = 5; while( big_array_ptr[x] != 20 )
注意:我相信您仍然可以直接引用数组而不是使用指针。似乎对我有用。
在以下文档中可以找到相同的信息:
MPLAB C18 C Compiler Getting Started Guide
第 104 页。
关于memory - 如何在 MPLAB 中增加内存块的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/529252/