Error[Li005]: no definition for "__aeabi_uldivmod" [referenced from G:\lyp\s32k144\meter\bootloader_new_RTM_4.0.3\hello_world_iar\Debug_RAM\Obj\lpit_driver.o]
在移植s32k144固件库RTM4.0.3到iar中出现该错误。
__aeabi_uldivmod是ARM架构中用于 64位无符号长整型(unsigned long long)除法运算的底层辅助函数
。因此,重点检查代码中所有涉及 unsigned long long类型的除法(/)和取模(%)运算。
-
显式64位除法 :直接检查代码中所有对
unsigned long long类型变量的除法和取模操作。 -
隐式类型转换与运算 :特别注意存在混合数据类型的表达式 。例如,当一个
uint32_t变量与一个uint64_t变量进行除法时,编译器可能会先将uint32_t提升为uint64_t,然后执行64位除法,从而可能调用__aeabi_uldivmod。确保在运算前,将操作数转换为一致的数据类型,有时可以避免不必要的64位运算。
iar工程配置

勾选automatic runtime library selectic