本帖最后由 贪玩 于 2022-5-11 19:50 编辑
FAQ0089 AT32工程在M3内核芯片上运行 使用注意事项
Questions: AT32 工程在 M3 内核芯片上运行进入硬件错误处理函数( HardFault_Handler)
Answer:当使用 AT32 工程在其余 M3 内核芯片上运行, 需要注意由于 AT32 为 M4 内核芯片, 编译软件在 M4 内核基础上进行汇编, 诸如 16 位乘 32 位和 32 位乘 32 位编译器汇编出来的汇编指令不一致( 在 M4 内 16 乘位 32 位是SMULBB, 在 M3 内是 MUL, M3 内核不能执行 SMULBB), 部分 DSP 指令介绍见表 1。解决该问题, 在编译时将 M4 内核 DFP 卸载即可。
OPERATION | INSTRUCTIONS | CM3 | CM4 | 16X16=32 | SUBLBB, MULBT, SMULTB, SMULTT | n/a | 1 | 16X16+32=32 | SMLABB, SMLABT, SMLATB, SMLATT | n/a | 1 | 16X16+64=64 | SMLALBB, SMLALBT, SMLALTB, SMLALTT | n/a | 1 | 16X32=32 | SMULWB, SMULWT | n/a | 1 | 16X32+32=32 | SMLAWB, SMLAWT | n/a | 1 | (16X16)±(16X16)=32 | SMUAD, SMUADX, SMUSD, SMUSDX | n/a | 1 | (16X16)±(16X16)+32=32 | SMLAD, SMLADX, SMLSD, SMLSDX | n/a | 1 | (16X16)±(16X16)+64=64 | SMLALD, SMLALDX, SMLSLD, SMLSLDX | n/a | 1 | 32X32=32 | MUL | 1 | 1 | 32±32X32=32 | MLA, MLS | 2 | 1 | 32X32=64 | SMULL, UMULL | 5-7 | 1 | 32X32+64=64 | SMLAL, UMLAL | 5-7 | 1 | 32X32+32+32=64 | UMAAL | n/a | 1 | 32±32X32=32(upper) | SMMLA, SMMLAR, SMMLS, SMMLSR | n/a | 1 | 32X32=32(upper) | SMMUL, SMMULR | n/a | 1 |
类型: MCU 应用
适用型号: AT32 全系列: AT32F403, AT32F403A, AT32F413,AT32F415, AT32F407, AT32F421, AT32F435
主功能: 不针对具体功能
次功能: 不针对具体功能
|