导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    【FAQ】全志XR806芯片 汇编代码调试技巧

    其它全志芯片讨论区
    xr806 xr872 faq 技术支持
    1
    1
    1476
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • q1215200171
      budbool LV 9 最后由 编辑

      1.问题背景
      问题平台:XR806 + RTOS

      2.问题描述
      XR806(M33内核)适配新的RTOS时,沿用M4F的启动代码后出现了系统奔溃,但是expection显示的PC地址和LR地址都被修改,无法准确判断哪条语句导致的错误。

      3.问题分析

      • 通过log定位到是启动代码出现了问题。
      • arm汇编中,可利用b .进入死循环。
      • 在汇编中可以利用以下代码打印log:
      //.c文件中插入
      void AsmPrint(void)
      {
          printf("var = %#x\n",PrintMagic);
      }
      #汇编代码中插入以下代码查看R0的值
          LDR R8,=PrintMagic
          str R0,[R8]
          LDR R8,=AsmPrint
          bx R8
      
      • 最后发现汇编代码正常,但在运行第一个任务时系统奔溃。原因为M33内核新增了PSPlimit功能,任务栈超过了设定值时会直接触发usage Fault。同时RTOS在系统启动前修改了PC地址和LR地址,导致exception中无法正确显示PC地址和LR地址。

      4.解决方法
      使用__set_PSPLIM可以设置PSPlimit地址,在不确定PSP限制时,可以__set_PSPLIM(0)取消这个功能,MSP也是相同道理。

      1 条回复 最后回复 回复 引用 分享 1
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • 1 / 1
      • First post
        Last post

      Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

      行为准则 | 用户协议 | 隐私权政策