[AI] MDK开One ELF Section Function,DAC就不工作

[复制链接]
1721|18
 楼主| classroom 发表于 2024-7-25 15:01 | 显示全部楼层 |阅读模式
MDK开One ELF Section Function,DAC就不工作,优化等级0
七毛钱 发表于 2024-7-26 18:51 | 显示全部楼层
可能是代码优化导致的函数移除
laocuo1142 发表于 2024-7-26 18:52 | 显示全部楼层
编译器优化级别的影响
flycamelaaa 发表于 2024-7-26 18:52 | 显示全部楼层
中断服务例程(ISR)的影响
powerantone 发表于 2024-7-26 18:52 | 显示全部楼层
AC的不工作可能与配置或初始化代码有关,而与优化选项无直接关系。然而,优化可能导致这些代码的执行路径发生变化,从而间接影响DAC的功能。
stormwind123 发表于 2024-7-26 18:53 | 显示全部楼层
禁用“One ELF Section per Function”选项
probedog 发表于 2024-7-26 18:53 | 显示全部楼层
检查编译器警告和错误
 楼主| classroom 发表于 2024-7-26 18:53 | 显示全部楼层
检查DAC的硬件连接和配置
漫天星yl 发表于 2024-8-28 12:27 | 显示全部楼层
One ELF Section Function 是 Keil MDK 的一个功能,目的是将函数和数据放在同一个 ELF 节区(Section)中,从而简化内存布局和优化链接。
公羊子丹 发表于 2025-3-16 07:50 | 显示全部楼层
开启 One ELF Section Function 可能会影响代码段的分布,检查一下 DAC 相关的中断或寄存器配置是否被优化掉了。
周半梅 发表于 2025-3-16 07:51 | 显示全部楼层
你用的是什么 MCU?有些芯片对函数位置比较敏感,特别是涉及中断和 DMA 的情况。
帛灿灿 发表于 2025-3-16 07:54 | 显示全部楼层
试试看在 DAC 初始化函数前加 __attribute__((section(".ARM.__at_0xXXXX"))),手动固定代码位置,看看有没有影响。
童雨竹 发表于 2025-3-16 07:55 | 显示全部楼层
One ELF Section Function 可能会影响 inline 函数或者 weak 函数的链接方式,检查 DAC 相关的 HAL 库是否有 __weak 定义的函数。
万图 发表于 2025-3-16 07:56 | 显示全部楼层
用 fromelf 反汇编看看 DAC 相关的代码是否被合并优化,可能某些关键的寄存器配置被省略了。
Wordsworth 发表于 2025-3-16 07:57 | 显示全部楼层
试试关闭 Link-Time Optimization (LTO),看看是否和链接时优化有关。
Bblythe 发表于 2025-3-16 07:58 | 显示全部楼层
你是用 DMA 方式驱动 DAC 的吗?如果是,检查一下 DMA 相关的缓冲区地址是否被优化影响了。
Pulitzer 发表于 2025-3-16 07:59 | 显示全部楼层
试试给 DAC 相关的函数加上 __attribute__((noinline)),避免它被合并优化。
Uriah 发表于 2025-3-16 08:00 | 显示全部楼层
One ELF Section Function 可能导致某些初始化代码顺序发生变化,试试在 main() 里手动延时再初始化 DAC,看看是否有改善。
Clyde011 发表于 2025-3-16 08:01 | 显示全部楼层
你试过在 MAP 文件里找 DAC 相关的函数和变量位置吗?看看它是不是被放到了错误的段,导致 DAC 不工作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

541

主题

3413

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部