wy1000 发表于 2015-12-21 15:09:29

STM32L4在Keil下警告

STM32L4系列使用arm_fir_f32时在keil5.16下连接警告,"Warning: L6989W:Could not apply patch sdcomp-...",该如何处理?

若1989 发表于 2017-12-7 18:04:28

顶一下,同样遇到这样的问题,请问是怎么解决的?

Ethan12345 发表于 2018-3-28 15:42:35

CAUSE
Some members of the STM32L4 family have an eratta for the FMC (Flexible Memory Controller) where a read burst access of 9 words or more is not supported by FMC. To prevent burst accesses that are greater than 8 words, a special linker patch was developed to patch certain instructions that result in burst accesses of greater than 8 words. The patch can be applied in most cases with a few exceptions. One of these exceptions is when the instruction to be patched is inside an IT (If-Then) block and is not the last instruction in that block. In this case this warning will be generated.
RESOLUTION
Since the FMC is only used for external memory, you can ignore this warning if you are only using internal memory. If you are using external memory, make sure your stack is located on-chip. In compiled code, the use of IT blocks can be eliminated by using the --no_conditionalize compiler option. If you are using the DSP library, you will need to rebuild it with the --no_conditionalize compiler option to prevent this warning.This can increase the processing time for DSP functions, so this should only be done for the library used with the STM32L4xx. Also, some math functions such as log10() contain IT blocks that cannot be patched. Since these math functions are not available to be re-built, it may be difficult to eliminate the warning in all cases. In the case of log10(), you can use a similar function, log10f() that does not have the IT block restriction.

无薪税绵 发表于 2018-3-28 16:28:50

由于FMC仅用于外部存储器,因此如果仅使用内部存储器,则可以忽略此警告。
如果您使用外部存储器,请确保您的堆栈位于芯片上。

在编译代码中,可以通过使用--no_conditionalize编译器选项来消除IT块的使用。
如果您正在使用DSP库,则需要使用--no_conditionalize编译器选项重新构建它以防止出现此警告。
这可能会增加DSP功能的处理时间,因此只能针对与STM32L4xx一起使用的库完成此操作。

此外,一些数学函数(如log10()包含无法修补的IT块。
由于这些数学函数不可重新构建,所以在所有情况下可能很难消除警告。
对于log10(),您可以使用类似的函数log10f(),该函数不具有IT块限制。

stm1024 发表于 2018-3-28 18:12:48

帮你查了一下,哈哈
CAUSE
Some members of the STM32L4 family have an eratta for the FMC (Flexible Memory Controller) where a read burst access of 9 words or more is not supported by FMC. To prevent burst accesses that are greater than 8 words, a special linker patch was developed to patch certain instructions that result in burst accesses of greater than 8 words. The patch can be applied in most cases with a few exceptions. One of these exceptions is when the instruction to be patched is inside an IT (If-Then) block and is not the last instruction in that block. In this case this warning will be generated.

RESOLUTION
Since the FMC is only used for external memory, you can ignore this warning if you are only using internal memory. If you are using external memory, make sure your stack is located on-chip. In compiled code, the use of IT blocks can be eliminated by using the --no_conditionalize compiler option. If you are using the DSP library, you will need to rebuild it with the --no_conditionalize compiler option to prevent this warning.This can increase the processing time for DSP functions, so this should only be done for the library used with the STM32L4xx. Also, some math functions such as log10() contain IT blocks that cannot be patched. Since these math functions are not available to be re-built, it may be difficult to eliminate the warning in all cases. In the case of log10(), you can use a similar function, log10f() that does not have the IT block restriction.
页: [1]
查看完整版本: STM32L4在Keil下警告