开发者社区 > 物联网 > 正文

uboot使用do_go_exec无法启动standalone程序,求助帖

各位大佬好:

开发需要使用uboot的standalone功能:

  • 1、当前环境验证使用uboot中example demo预研,编译出的demo.bin通过tftp拷贝到系统0x82000000后,使用go命令成功运行;
  • 2、将demo.bin环境填充到uboot固件新定义的一个.myboot的section中,在uboot启动过程中找到这个段将bin拷贝到0x8200000后,执行do_go_exec()函数,该函数实现就是go命令的实现,但是会存在报错,内容如下:

    "Synchronous Abort" handler, esr 0x02000000
    elr: 0000000004918000 lr : 00000000808ae498 (reloc)
    elr: 0000000084000000 lr : 00000000fff96498
    x0 : 0000000000000001 x1 : 00000000fddd7b70
    x2 : 00000000fddd7b70 x3 : 0000000000000000
    x4 : 00000000840002a8 x5 : 00000000fddd74a8
    x6 : 0000000000000038 x7 : 000000000000000f
    x8 : 00000000fddd7b18 x9 : 0000000000000008
    x10: 00000000ffffffd8 x11: 0000000000000010
    x12: 000000000000785c x13: 00000000fddd79fc
    x14: 00000000fddd7bd0 x15: 0000000000000020
    x16: 0000000084000000 x17: 0000000000000000
    x18: 00000000fdde7df0 x19: 00000000fff964a8
    x20: 000000007f6e8000 x21: 00000000fffc07d0
    x22: 0000000000000000 x23: 0000000000000000
    x24: 0000000000000000 x25: 0000000000000000
    x26: 0000000000000000 x27: 0000000000000000
    x28: 0000000000000000 x29: 00000000fddd7b50

  • 3、自己的排查点:
    (1)修改do_hikboot运行时机,(1.1)run_main_loop之前;(1.2)在autoboot_command之前,调整启动位置无改善
    (2)直接调用do_go函数运行,失败,现象一致
    (3)更换启动地址为0x84000000后无改善,确认0x82000000可以运行,go命令可以启动

展开
收起
我还是阿言 2024-08-12 15:13:19 71 0
0 条回答
写回答
取消 提交回答
问答分类:
Go
问答标签:
问答地址:

物联网领域前沿技术分享与交流

相关电子书

更多
Go语言路上踩过的坑 立即下载
gohbase :HBase go客户端 立即下载
Go构建日请求千亿级微服务实践 立即下载