【问题标题】:MPLAB X freeze building using printfMPLAB X 使用 printf 冻结构建
【发布时间】:2021-05-07 11:58:40
【问题描述】:

我的设置是:

  • MPLAB X IDE v3.40
  • C30 编译器 v3.31
  • PIC24FJ128GA306

我尝试使用 printf 时出现问题。我可以打印一个字符串,但不能打印一个变量。

这一行是正确的:

printf("HI");

此行未正确构建:

unsigned int var;
var = 1; 
printf("%u", var);

相同的代码与其他 PIC (PIC24FJ512GA606) 和编译器 (XC16) 完美配合。 在这两个项目中,我们都使用来自同一个库 stdio.h 的 printf

当我尝试构建项目时,问题就来了。如果我使用 "printf("%u", var);"并构建它,IDE 挂起,我必须取消构建过程。之后我无法清理项目,IDE 会显示下一个文本:

rm: no se puede borrar build/SF_Utility_v31_RS485/production/interrupts_remapped.o: Permission denied
rm: no se puede borrar build/SF_Utility_v31_RS485/production/mult.o: Permission denied
rm: no se puede borrar build/SF_Utility_v31_RS485/production/SF_debug.o: Permission denied
rm: no se puede borrar build/SF_Utility_v31_RS485/production/SF_formatter.o: Permission denied
rm: no se puede borrar build/SF_Utility_v31_RS485/production/SF_HAL_axis_references.o: Permission denied
rm: no se puede borrar build/SF_Utility_v31_RS485/production/SF_internal_comms.o: Permission denied

CLEAN FAILED (exit value 1, total time: 123ms)

如果我转到该文件夹​​并尝试手动删除,则会出现一条消息说我无法删除它,因为“pic30-elf-gcc.exe”正在使用它。我必须关闭该进程,然后您可以使用“printf("Hi");”清理和重建项目...

EDIT1:当我构建项目时,我可以观察到每个文件都被正确编译。问题出在链接器上......当我尝试构建项目时,它会在下一行挂起:

"C:\Program Files (x86)\Microchip\MPLAB C30\bin\pic30-gcc.exe"   -omf=elf -mcpu=24FJ128GA306  -o dist/SF_Utility_v31_RS485/production/sf-device.production.elf build/SF_Utility_v31_RS485/production/DEE_Emulation/DEE_Emulation_16-bit_v2.2/DEE_Emulation_16-bit/DEE_Emulation_16-bit.o build/SF_Utility_v31_RS485/production/DEE_Emulation/DEE_Emulation_16-bit_v2.2/DEE_Emulation_16-bit/Flash_Operations.o build/SF_Utility_v31_RS485/production/RS485/SF_RS485.o build/SF_Utility_v31_RS485/production/src/ADC_Handler/ADC_Handler.o build/SF_Utility_v31_RS485/production/src/Event_Timer/osal_timers.o build/SF_Utility_v31_RS485/production/src/PWM/PWM_Core_Handler.o build/SF_Utility_v31_RS485/production/src/PWM/PWM_Func_Layer.o build/SF_Utility_v31_RS485/production/src/PWM/PWM_Hal_Layer.o build/SF_Utility_v31_RS485/production/HTS221.o build/SF_Utility_v31_RS485/production/LISXDH.o build/SF_Utility_v31_RS485/production/src/Tasks/LED_Status_Task.o build/SF_Utility_v31_RS485/production/src/Tasks/System_Task_Handler.o build/SF_Utility_v31_RS485/production/src/Tasks/Hum_Temp_Task.o build/SF_Utility_v31_RS485/production/configuration_bits.o build/SF_Utility_v31_RS485/production/main.o build/SF_Utility_v31_RS485/production/system.o build/SF_Utility_v31_RS485/production/traps.o build/SF_Utility_v31_RS485/production/user.o build/SF_Utility_v31_RS485/production/SF_controller.o build/SF_Utility_v31_RS485/production/SF_solar_calculations.o build/SF_Utility_v31_RS485/production/SF_solar_calculations_utils.o build/SF_Utility_v31_RS485/production/SF_time.o build/SF_Utility_v31_RS485/production/SF_tracker.o build/SF_Utility_v31_RS485/production/SF_settings.o build/SF_Utility_v31_RS485/production/SF_protocol.o build/SF_Utility_v31_RS485/production/SF_io_manager.o build/SF_Utility_v31_RS485/production/SF_inverter.o build/SF_Utility_v31_RS485/production/utils.o build/SF_Utility_v31_RS485/production/SF_main_loop.o build/SF_Utility_v31_RS485/production/SF_persistence.o build/SF_Utility_v31_RS485/production/SF_formatter_binary.o build/SF_Utility_v31_RS485/production/SF_GW_Common.o build/SF_Utility_v31_RS485/production/SF_tick.o build/SF_Utility_v31_RS485/production/mult.o build/SF_Utility_v31_RS485/production/SF_internal_comms.o build/SF_Utility_v31_RS485/production/interrupts_remapped.o build/SF_Utility_v31_RS485/production/SF_formatter.o build/SF_Utility_v31_RS485/production/SF_HAL_axis_references.o build/SF_Utility_v31_RS485/production/SF_debug.o        -legacy-libc -Wl,--defsym=__MPLAB_BUILD=1,--heap=1024,-Map="prueba.map",-Tp24FJ128GA306.gld

【问题讨论】:

  • 显示 var 的定义和更多代码。问题当然不仅仅是那条线,它只是表现出另一个问题。
  • 这显然是一个 IDE 问题/错误,与代码本身无关。如果给定一个可变参数函数并调用代码完成,也许它会变成木偶?
  • 这是一个非常大的项目,我无法展示它...我使用 var 的定义进行编辑,无论如何它可以与其他编译器/PIC 一起使用
  • 你的 IDE 太老了!也许尝试更新到 versin 5.45
  • 您的编译器 (C30) 也是一个相当过时的编译器,不再受支持 - 使用 XC 编译器怎么样?

标签: build pic mplab


【解决方案1】:

我有办法。问题是我的项目有旧库处于活动状态...取消选中项目配置中的该选项,它现在可以正常运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2012-10-06
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多