问题标签 [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 投票
0 回答
178 浏览

c - 使用 XC32 预留闪存空间

我正在为ATSAM使用MPLAB XXC32编译器的设备编写代码。这个设备有 1Mbytes 的闪存,我需要分开 200kBytes 作为配置脚本的占位符(主代码将执行这个脚本)。

我试图在不弄乱链接器的情况下做到这一点。这就是我正在做的事情:

虽然代码仍然有效,但我确实收到了来自编译器warning: 'region' attribute directive ignored [-Wattributes]的警告:最终地址确实被忽略了。

既然它来自 XC32 手册,为什么它被忽略了?

还有其他方法可以达到同样的效果吗?

0 投票
1 回答
454 浏览

embedded - Coverity 静态分析将 char 或 numbers 视为 C 中的 int

LHS 和 RHS 变量都是 uint8_t 变量,但问题被报告为“从 int 转换为 unsigned char”。我不明白这怎么可能是一个问题?

这同样适用于 8 位数字

两个问题中列出的所有变量都是 uint8_t

问题 1)

问题 2)

函数参数:

0 投票
1 回答
168 浏览

command-line-interface - 如何在 XC32 编译器中使用 SAMC21 控制器上的软件复位指令填充未使用的内存?

我正在使用 SAMC21 控制器和 xc32 编译器。我想用软件复位指令填充我所有未使用的 ROM 存储器。有谁知道,从 XC32 编译器执行软件重置的命令行选项是什么。

IDE - MPLABX
编译器 - XC32
微控制器 - SAMC21

0 投票
0 回答
100 浏览

microcontroller - 触发软件复位后跳转到 SAMD21G17D 控制器中的特定闪存位置(例如 0x2000)

我正在为 SAMD21G17D 控制器编写一个引导加载程序代码和应用程​​序代码。我想单独运行我的应用程序代码进行调试(不依赖于引导加载程序)。我只更改了链接描述文件中应用程序代码的起始位置。

更新链接描述文件后,我检查了生成的映射文件的向量表重定位,以及生成的十六进制文件(MPLAB X ide)中的起始闪存地址(0x2000),两者都很好。

但是当我调试时,我的应用程序控件没有进入重置处理程序功能。如果 ROM 原点是 0x0(从引导加载程序开始),那就没问题了。我不会从引导加载程序跳转到应用程序代码。是否有任何解决方案可以直接跳转到我的应用程序代码(任何链接器或编译器标志或任何其他选项)。下面列出了我正在使用的 IDE 和编译器:

IDE - MPLAB V5.30 控制器:SAMD21G18 编译器:XC32 调试器:EDBG(片上)

0 投票
2 回答
285 浏览

c - C 字符串标准库、memset 和废弃的 volatile 关键字

我在 xc32 编译器(基于 gcc 的微控制器编译器,不是开源的)上收到这样的警告。

modem_uart.c:66:5:警告:传递“memset”的参数 1 会从指针目标类型中丢弃“volatile”限定符 [默认启用]

这是代码:

有人可以解释为什么编译器会丢弃 volatile 吗?

0 投票
0 回答
15 浏览

debugging - MPLAB X 和谐调试器

我正在将MPLAB X Harmony 与 XC32 编译器一起使用,我在初始值为零时使用了计数器。当我调试程序时,计数器的值没有改变,并且计数器的地址显示为 0x00。延迟例程正常工作,但使用计数器变量时出现问题。请帮助我....我该如何调试它...

0 投票
1 回答
172 浏览

gcc - 在函数“_main_entry”中未定义对“main”的引用

这是我的问题,我用这个命令行用“xc32-ar.exe”建立了一个档案。

使用这个库和另一个库,我尝试构建一个 .elf。

我有这个错误

我使用 xc32-nm 列出索引表。

是否有可能做到这一点?

0 投票
0 回答
103 浏览

microchip - MPLAB X IDE 在闪烁后显示消息“Hold in reset not implemented”

我正在做一个项目,我们使用 Microchip 的 SAM L10 MCU。我们将 MPLAB X IDE v5.50 与 XC32C 编译器 v3.0.1 和 Harmony 3 配置器一起使用。有一段时间一切都很好。

最近我们使用 SAM D20 MCU 创建了一个硬件版本,我需要安装更新的插件(bsp、csp、core、mhc,...),以便 Harmony 能够使用该 MCU 创建一个新项目。对于那个项目,我总是在闪烁后两次收到“保持重置未实施”的消息。此外,我需要在闪烁后进行电源循环。

最初我认为这可能是我们的 SAM D20 板的问题。

但是现在我更新了 L10 项目以使用新插件,而且每次在板之间切换时切换 Harmony 文件夹非常烦人。

Harmony 显示了一些关于版本不匹配的警告,然后成功转换了配置。之后代码生成和编译工作正常。

缺点是现在我的 SAM L10 板也收到了相同的消息,需要进行电源循环,这很烦人。

使用 Segger J-32 调试探针在 MPLAB X IDE 中完成闪存。

有什么技巧可以避免该重置问题吗?

由于旧插件版本不允许使用 Harmony for SAM D20,因此恢复更新并不是一个真正的选择。

更新:似乎并不总是需要电源循环,但我还不确定在什么情况下我需要它。

0 投票
1 回答
40 浏览

assembly - MIPS bne 汇编指令在 Microchip XC32 下无法正确执行

因此,我在使用 XC32 的 MPLABX 项目中编译了以下代码,目的是检查是否需要更改 RTOS 实现的上下文:

当两个指针中的值不同时,程序执行将无法分支到 ConfirmSwitch,而是继续执行 AbortSwitch(注意非常细心的人:我在此文件中的代码中使用了“noat”设置)。无论价值以 1 美元和 2 美元结束,分支永远不会发生。我尝试了其他变体,例如bne $1, $2, ConfirmSwitch并最终得到相同的结果。我不知道我可能做错了什么,因为这个功能是如此基本。

0 投票
0 回答
32 浏览

mips - 在 XC32 下为 MPLABX 崩溃处理器创建 MIPS 程序集 ISR

这个问题涉及在 MIPS 汇编中为 MPLABX 中由 XC32 编译的项目编写 ISR。

我的主要项目是用 C 编写的,因此我成功地分支到 Timer1 中断,如下所示:

但是,当我尝试使用这种格式使这个 ISR 的汇编版本工作时:

我永远不能用断点来捕获程序执行。打开计时器后,我的代码处于无限循环中,但是(可能)在计时器关闭后,程序没有进入 ISR,而是跳到代码的不同部分。

一些需要注意的事情:ISR 的 C 版本也崩溃了,直到我在控制寄存器中将向量间距设置为 8 字节(上电时默认为零)。除非我在链接器文件中也将向量间距设置为 8,否则 MIPS 版本根本无法编译(注意,没有这个,C 版本仍然可以正常运行!)。我必须将向量间距设置为 16 以避免 MIPS ISR 引发异常,即使当我检查生成的 lst 文件时,它占用的空间也不会超过任何默认异常处理程序。向量间距为 8 时,处理器会在计时器关闭后立即抛出异常,我什至无法在断点处捕获任何内容。我使用的是 PIC32,Coprocessor0 的 Cause 寄存器中的值为 0x801c10,应该告诉我来源等同于“保留”)。

在另一个论坛答案(https://www.microchip.com/forums/m306645.aspx)中,一位评论者说发帖者应该看看编译器如何翻译 ISR 的 C 版本,但我不知道该怎么做那。在 lst 文件中,我只能查看最终的汇编命令,而不是如何使用所有 .section 等内容编写它,尽管暗示这可以通过他们提供的示例来完成。我还应该注意,作为 XC32 示例提供的核心计时器的 ISR 如下所示:

...所以我不确定我会如何搞砸(注意:我也尝试过这种简单的风格,但无济于事。这个示例项目甚至不包含自定义链接器脚本,所以我没有不知道他们如何避免向量间距的问题。这里的任何帮助将不胜感激。