我是C语言和微控制器的新手,我正在尝试通过复制我在网上找到的项目来学习。在这里,我有一个在与我相同的硬件上创建的项目(PIC32MX534F064H),我基本上是将语法从mikroC转换到我正在使用的微芯片编译器(XC32 v1.34)。我使用MPLab集成开发环境X来实现这一点。
在这个项目中,我试图定义一个大的(32000)无符号整数向量,编译器向我抛出了一个错误,我的解释是这个向量对于设备来说太大了。事实并非如此,因为该项目在相同的硬件上工作,而是在mikroC上工作。
我试着降低向量大小,3200大小的向量编译起来很完美,所以我认为它与这个向量的大小有关,而不是语法。
我在谷歌上搜索了几个小时,并查看了数据表,发现对于较小的图片,有一种特定的方法来设计大型数组,但没有关于PIC32的文档。
所以当我这样定义我的向量时
#include <p32xxxx.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <xc.h>
#include <plib.h>
signed int data[32000];编译器把这个抛给我
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl'
failed /Applications/microchip/xc32/v1.34/bin/bin/gcc/pic32mx/4.5.2/../../../..
/bin/xc32-ld: dist/default/production/LED.X.production.elf section
`.bss' will not fit in region `kseg1_data_mem'
/Applications/microchip/xc32/v1.34/bin/bin/gcc/pic32mx/4.5.2/../../../..
/bin/xc32-ld: Link terminated due to previous error(s).现在,我不知道下一步该怎么做所以..任何帮助都是非常感谢的。
编辑
我的信息确实是错的,硬件被更新来处理这样的向量,而我并没有意识到这一点。谢谢你的回答
发布于 2019-04-22 13:52:35
从device overview可以明显看出,所讨论的M4K是32位的(“80 M4K/105DMIPS,32位MIPS MIPS内核”),因此signed int也是32位宽的。
数组元素的short怎么样?
注意,如果程序是可从闪存执行的,那么您可能希望确保它不会被加载到RAM中,否则就没有太多的空间了。
https://stackoverflow.com/questions/55789502
复制相似问题