|
发表于 2024-2-21 16:25:12
|
显示全部楼层
楼主,我编译子程序,base_platform会产生编译warning,提示该选项已被弃用,不知道是否会对动态加载产生影响?
移植后,主程序调用子程序export出来的接口,会卡死在主程序中:
主程序调用如下:
err=dl_load_file(&use_handle,"0:module.axf");
if (err == DL_NO_ERR)
{
printf("open module.axf ok\r\n");
test_cnt = dl_get_func(&use_handle, "test_cnt");
printf("test_cnt func:0x%p\r\n", test_cnt);
test_cnt(1000, 1);
printf("test_cnt done\r\n");
export_func=dl_get_func(&use_handle,"export_func");
printf("export_func:0x%p\r\n", export_func);
export_func(showtips);
printf("export_func done\r\n");
}
加载子程序的打印信息:
<<DL_DEBUG>>LOAD segment: 0, 0x00000000, 0x00000274
<<DL_DEBUG>>LOAD segment: 1, 0x00000400, 0x00005228
<<DL_DEBUG>>module size: 22056, vstart_addr: 0x00000000
<<DL_DEBUG>>max_align: 1024
<<DL_DEBUG>>mem_ptr : 0x24006800
<<DL_DEBUG>>entry_addr : 0x24006909
<<DL_DEBUG>>relocate symbol str shndx 2<<DL_DEBUG>>MOVW_ABS_NC:sym_addr:0x24006c00,*sym_addr:0x00000000<<DL_DEBUG>>MOVW_ABS_NC:where:2400690a,*where:0x0400f240,tmp:4400f646<<DL_DEBUG>>relocate symbol str shndx 2<<DL_DEBUG>>R_ARM_THM_MOVT_ABS:sym_addr:0x24006c00,*sym_addr:0x00000000<<DL_DEBUG>>MOVT_ABS:where:24006910,*where:0x0400f2c0,tmp:4400f2c2<<DL_DEBUG>>relocate symbol test shndx 2<<DL_DEBUG>>MOVW_ABS_NC:sym_addr:0x24007000,*sym_addr:0x00000000<<DL_DEBUG>>MOVW_ABS_NC:where:24006974,*where:0x0000f240,tmp:0000f247<<DL_DEBUG>>relocate symbol test shndx 2<<DL_DEBUG>>R_ARM_THM_MOVT_ABS:sym_addr:0x24007000,*sym_addr:0x00000000<<DL_DEBUG>>MOVT_ABS:where:2400697c,*where:0x0000f2c0,tmp:4000f2c2<<DL_DEBUG>>relocate symbol test_cnt.start shndx 2<<DL_DEBUG>>MOVW_ABS_NC:sym_addr:0x2400be20,*sym_addr:0x00000000<<DL_DEBUG>>MOVW_ABS_NC:where:240069d0,*where:0x0500f240,tmp:6520f64b<<DL_DEBUG>>relocate symbol test_cnt.start shndx 2<<DL_DEBUG>>R_ARM_THM_MOVT_ABS:sym_addr:0x2400be20,*sym_addr:0x00000000<<DL_DEBUG>>MOVT_ABS:where:240069de,*where:0x0500f2c0,tmp:4500f2c2<<DL_DEBUG>>relocate symbol test_cnt.total_run shndx 2<<DL_DEBUG>>MOVW_ABS_NC:sym_addr:0x2400be24,*sym_addr:0x00000000<<DL_DEBUG>>MOVW_ABS_NC:where:240069d4,*where:0x0600f240,tmp:6624f64b<<DL_DEBUG>>relocate symbol test_cnt.total_run shndx 2<<DL_DEBUG>>R_ARM_THM_MOVT_ABS:sym_addr:0x2400be24,*sym_addr:0x00000000<<DL_DEBUG>>MOVT_ABS:where:240069e2,*where:0x0600f2c0,tmp:4600f2c2
open module.axf ok
func:__aeabi_memset4
func addr:0x24006803
func:__aeabi_memset8
func addr:0x24006803
func:__semihosting$guard
func addr:0x24006813
func:__aeabi_memclr4
func addr:0x24006815
func:__aeabi_memclr8
func addr:0x24006815
func:__rt_memclr_w
func addr:0x24006815
func:_memset_w
func addr:0x24006819
func:export_func
func addr:0x2400696d
func:test_cnt
func addr:0x240069cd
可以帮忙看看是哪个点出问题了,有什么方向解决吗?
|
|