问题标签 [xc32]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
115 浏览

pic - 如何在没有 MPLABX 或 XC32 的情况下为 PIC32MM 开发

在使用 MPLABX5.5 + XC32 3.01 工作仅一个月时,我已经有 3 个单独的实例,其中代码编译不正确,导致我的程序在堆栈或帧指针开始使用不正确的地址后失败。我想转储这些工具并尝试其他方法,因为跟踪编译器错误占用了我太多时间。还有什么其他东西可以用来与 PIC32MM 一起工作吗?即使访问与 XC32 不同的编译器也可能会有所帮助。

0 投票
1 回答
52 浏览

c - MPLAB X32 编译器和将函数移动到 RAM 会导致链接器错误

我正在使用 Microchips XC32 C 编译器和工具为 SAM E70 处理器构建可执行文件。

我必须创建一个从 RAM 而不是 ROM/Flash 执行的函数,因为该函数使用特殊指令在 Flash 开头读取唯一的 128 位。

所以我定义了函数的开头是这样的:

根据文档__ramfunc__应该确保该函数是从 ram 执行的。

但是,在链接时,会出现以下错误。

任何帮助或指示将不胜感激。

0 投票
0 回答
43 浏览

c - plib 中对标准库函数的未定义引用

xc32 v2.41 或更早版本可以使用 plibs 但最新版本的 xc32

产生此错误:

“C:\Program Files\Microchip\xc32\v4.00\bin\xc32-gcc.exe”-mprocessor=32MX664F128L -o dist/default/production/led.X.production.elf build/default/production/main。 o -DXPRJ_default=default -Wl,--defsym=__MPLAB_BUILD=1,--no-code-in-dinit,--no-dinit-in-serial-mem,-Map="dist/default/production/led. X.production.map",--memorysummary,dist/default/production/memoryfile.xml -mdfp="C:/Program Files/Microchip/MPLABX/v6.00/packs/Microchip/PIC32MX_DFP/1.5.259" nbproject/ Makefile-default.mk:140:目标“dist/default/production/led.X.production.hex”的配方失败 make[2]:离开目录“C:/Users/Embedded Web/OneDrive/Documents/Mplax/v6 .0/ledTest/led.X' nbproject/Makefile-default.mk:91:目标'.build-conf'的配方失败 make [1]:离开目录'C:/Users/Embedded Web/OneDrive/Documents/Mplax /v6.0/ledTest/led.X' nbproject/Makefile-impl.mk:39:目标 '.build-impl' 的配方失败 c:\program files\microchip\xc32\v4.00\bin\bin\gcc\pic32mx\ 8.3.1........\bin/pic32m-ld.exe: c:/program files/microchip/xc32/v4.00/bin/bin/../../lib/gcc/pic32mx/ 8.3.1/../../../../pic32mx/lib\libmchp_peripheral_32MX664F128L.a(eth_descriptors_add_lib.o):在函数中EthDescriptorsAdd': /home/mwmann/work/pic32-plib/peripheral/eth/source/_eth_dcpt_lists.h:(.text.EthDescriptorsAdd+0x64): undefined reference to calloc' c:\program files\microchip\xc32\v4.00\bin\bin\gcc\pic32mx\8.3.1........\bin/pic32m-ld.exe: /home/mwmann/work /pic32-plib/peripheral/eth/source/_eth_dcpt_lists.h:(.text.EthDescriptorsAdd+0x124): undefined reference to `calloc'

信息:加载文件:./C:/Program Files/Microchip/MPLABX/v6.00/packs/Microchip/PIC32MX_DFP/1.5.259/xc32/32MX664F128L/p32MX664F128L.ld collect2.exe:错误:ld返回255退出状态make [2]: *** [dist/default/production/led.X.production.hex] 错误 255 make[1]: *** [.build-conf] 错误 2 make: *** [.build-impl ] 错误 2

BUILD FAILED(退出值2,总时间:2s)

我该如何解决这个问题,谢谢

0 投票
0 回答
30 浏览

c - MPLAB X IDE / XC32 / SAMD21XPlained Pro / printf() 不工作

我正在使用一块SAMD21XPlained Pro板子Mac (OS Big Sur)MPLAB X IDE v6.00 (XC32 compiler)我目前在尝试通过该printf()功能在我的终端上显示消息时遇到问题。

我是嵌入式编程的初学者,我尝试遵循有关STDIO 串行通信的教程:https ://www.youtube.com/watch?v=3pwdpYj5s_A&t=397s

根据本教程,我首先尝试只做 aprintf()但我没有在终端上看到任何东西(我没有尝试scanf()第一次尝试)。我唯一改变的是我包含了 stdio.h 文件,我用 a 做了第二次测试baud rate 9600(因为我真的不知道如何定义波特率,我想像那样测试)。

我在几个论坛上读到问题来自XC32编译器默认使用的事实,UART2printf()必须使用UART1在终端上显示。一些人建议xc.h重新定义默认值UART1( __XC_UART = 1),但这似乎仅适用于PIC32MXµC。根据我对XC32编译器文件的研究,xc.h文件 forPIC32MX与for 的文件不同,PIC32/SAM而仅用于PIC32MX定义的文件__XC_UART

我还尝试将“ Microchip Developer Help ”中针对“ Redirect stdout for Use With printf() ”的建议应用到以下XC32类别: https ://microchipdeveloper.com/xc32:redirect-stdout

问题是它似乎也仅适用于PIC32MXµCs(p32xxxx.h包含在代码开头的文件仅存PIC32MX在于XC32编译器中)。

经过几天的研究,我尝试了不同论坛上提出的许多解决方案,但仍然找不到有效的解决方案,所以我想知道您是否有想法?

谢谢 !

0 投票
0 回答
6 浏览

mplab - MPLAB XIDE XC32 和部分

尝试为 ATSAMV17Q21 构建项目时遇到一些问题。具体来说,我正在尝试将常量数据定位到外部 eeprom 中。我以前在 GCC 中做过这个没有问题,但是 XC32 很痛苦。

在 GCC 中,这很容易:

const int somevariablename属性((section(".nvdata")) = value

然后,通过将这些部分定位在“假”内存区域中,我使用 objcopy 吐出重新定位到地址为零的 eeprom s-record。我们的代码知道它是否在这个“假”内存区域中遇到一个地址,以便仅使用低地址位从 spi eeprom 读取,并且它工作正常。

但是,在 XC32 中,为了在没有部分重叠的情况下正确定位事物,我不得不使用: attribute ((space(data), section(".nvdata"))

我可以在链接器映射中看到它找到了该部分中的所有变量,并且使用 objcopy 我可以生成一个 s-record。

但是...我注意到代码闪存部分非常大。当我在十六进制查看器中查看内容时,我看到所有文本字符串(具有相似属性)都集中到初始化数据部分,因为我可以在十六进制查看器中读取它们。我们将常量数据放入外部 eeprom 的主要原因是我们为代码腾出代码闪存。如何指定属性让 XC32 配合?