打印
[AI]

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

[复制链接]
1020|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)的影响

使用特权

评论回复
5
powerantone| | 2024-7-26 18:52 | 只看该作者
AC的不工作可能与配置或初始化代码有关,而与优化选项无直接关系。然而,优化可能导致这些代码的执行路径发生变化,从而间接影响DAC的功能。

使用特权

评论回复
6
stormwind123| | 2024-7-26 18:53 | 只看该作者
禁用“One ELF Section per Function”选项

使用特权

评论回复
7
probedog| | 2024-7-26 18:53 | 只看该作者
检查编译器警告和错误

使用特权

评论回复
8
classroom|  楼主 | 2024-7-26 18:53 | 只看该作者
检查DAC的硬件连接和配置

使用特权

评论回复
9
漫天星yl| | 2024-8-28 12:27 | 只看该作者
One ELF Section Function 是 Keil MDK 的一个功能,目的是将函数和数据放在同一个 ELF 节区(Section)中,从而简化内存布局和优化链接。

使用特权

评论回复
10
公羊子丹| | 2025-3-16 07:50 | 只看该作者
开启 One ELF Section Function 可能会影响代码段的分布,检查一下 DAC 相关的中断或寄存器配置是否被优化掉了。

使用特权

评论回复
11
周半梅| | 2025-3-16 07:51 | 只看该作者
你用的是什么 MCU?有些芯片对函数位置比较敏感,特别是涉及中断和 DMA 的情况。

使用特权

评论回复
12
帛灿灿| | 2025-3-16 07:54 | 只看该作者
试试看在 DAC 初始化函数前加 __attribute__((section(".ARM.__at_0xXXXX"))),手动固定代码位置,看看有没有影响。

使用特权

评论回复
13
童雨竹| | 2025-3-16 07:55 | 只看该作者
One ELF Section Function 可能会影响 inline 函数或者 weak 函数的链接方式,检查 DAC 相关的 HAL 库是否有 __weak 定义的函数。

使用特权

评论回复
14
万图| | 2025-3-16 07:56 | 只看该作者
用 fromelf 反汇编看看 DAC 相关的代码是否被合并优化,可能某些关键的寄存器配置被省略了。

使用特权

评论回复
15
Wordsworth| | 2025-3-16 07:57 | 只看该作者
试试关闭 Link-Time Optimization (LTO),看看是否和链接时优化有关。

使用特权

评论回复
16
Bblythe| | 2025-3-16 07:58 | 只看该作者
你是用 DMA 方式驱动 DAC 的吗?如果是,检查一下 DMA 相关的缓冲区地址是否被优化影响了。

使用特权

评论回复
17
Pulitzer| | 2025-3-16 07:59 | 只看该作者
试试给 DAC 相关的函数加上 __attribute__((noinline)),避免它被合并优化。

使用特权

评论回复
18
Uriah| | 2025-3-16 08:00 | 只看该作者
One ELF Section Function 可能导致某些初始化代码顺序发生变化,试试在 main() 里手动延时再初始化 DAC,看看是否有改善。

使用特权

评论回复
19
Clyde011| | 2025-3-16 08:01 | 只看该作者
你试过在 MAP 文件里找 DAC 相关的函数和变量位置吗?看看它是不是被放到了错误的段,导致 DAC 不工作。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

460

主题

2612

帖子

1

粉丝