跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. 开发环境搭建
  4. 【Bug反馈】YCT工具生成的RamInit0.s在4字节对齐配置下导致GHS编译报错

【Bug反馈】YCT工具生成的RamInit0.s在4字节对齐配置下导致GHS编译报错

已定时 已固定 已锁定 已移动 已解决 开发环境搭建
3 帖子 3 发布者 1.7k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • jinyiJ 离线
    jinyiJ 离线
    jinyi
    写于 最后由 编辑
    #1

    问题描述:

    在使用YCT工具配置工程时,当将RAM初始化区域配置为 4字节对齐 (4bytes align) 时,工具生成的 RamInit0.s 汇编代码在 Green Hills (GHS) 编译器下编译失败。

    环境信息:

    芯片型号: YTM32B1LE0x
    编译环境: Green Hills Software (GHS) / asarm
    报错文件: RamInit0.s

    复现步骤:

    1. 列表在YCT工具中,将RAM大小设置为4的倍数,触发四字节对齐。
    2. 生成代码。
    3. 使用GHS编译器进行编译。

    编译器报错如下:

    [asarm] (error #2071) ... RamInit0.s 63: bad parameter
    STR R0, [R1], #4

    19977c18-e357-41cc-afbe-832f9d796339-d93a61c7f1c448a84914ce789c91253b.jpg

    bcb572fa-e6cc-4442-b646-f8c3bf4f724d-3f545784704100c3579df506a0eb608f.jpg

    1 条回复 最后回复
    0
    • jiankang_wangJ 离线
      jiankang_wangJ 离线
      jiankang_wang YunTu
      写于 最后由 jiankang_wang 编辑
      #3

      这个是yt-link里的bug

      错误原因:


      YTM32B1LE0 是 Cortex-M0+ 内核,Armv6-M 架构,只支持部分Thumb2指令:

      79e31496-abb9-4450-9dba-de7a313867d3-image.png

      而这里使用的 LDR 指令的写法是 Thumb2 的 Post-indexed variant,在 Armv6-M 中是不支持的,Armv6-M 中只支持这样的指令形式:

      LDR{<q>} <Rt>, [<Rn> {, #+/-<imm>}]
      

      而这个文件里的写法是 Post-indexed variant

      LDR{<c>}{<q>} <Rt>, [<Rn>], #{+/-}<imm>
      

      d4411e9f-a8b2-4857-a911-5826cb2aa1fa-image.png

      修改方式


      写一次后手动增加寄存器:
      3955a4c1-2fb7-437f-ab70-10ba230ed14a-image.png

      _RAM_start:
      /* 4bytes align */
          LDR     R1, =RAM_memory_start
          LDR     R2, =RAM_memory_end
          
          SUBS    R2, R2, R1
          SUBS    R2, #1
          BLE     _RAM_end
      
          LDR     R0, =0x5A5A5A5A
       _RAM_loop:
          STR     R0, [R1, #4]
          ADDS    R1, #4
          SUBS    R2, #4
          BGE      _RAM_loop
       _RAM_end:
         BX LR
      
      1 条回复 最后回复
      0
      • D 离线
        D 离线
        Derrick YunTu
        写于 最后由 编辑
        #2

        像是语法问题,可以参这种写法:
        image.png

        1 条回复 最后回复
        0
        • jiankang_wangJ 离线
          jiankang_wangJ 离线
          jiankang_wang YunTu
          写于 最后由 jiankang_wang 编辑
          #3

          这个是yt-link里的bug

          错误原因:


          YTM32B1LE0 是 Cortex-M0+ 内核,Armv6-M 架构,只支持部分Thumb2指令:

          79e31496-abb9-4450-9dba-de7a313867d3-image.png

          而这里使用的 LDR 指令的写法是 Thumb2 的 Post-indexed variant,在 Armv6-M 中是不支持的,Armv6-M 中只支持这样的指令形式:

          LDR{<q>} <Rt>, [<Rn> {, #+/-<imm>}]
          

          而这个文件里的写法是 Post-indexed variant

          LDR{<c>}{<q>} <Rt>, [<Rn>], #{+/-}<imm>
          

          d4411e9f-a8b2-4857-a911-5826cb2aa1fa-image.png

          修改方式


          写一次后手动增加寄存器:
          3955a4c1-2fb7-437f-ab70-10ba230ed14a-image.png

          _RAM_start:
          /* 4bytes align */
              LDR     R1, =RAM_memory_start
              LDR     R2, =RAM_memory_end
              
              SUBS    R2, R2, R1
              SUBS    R2, #1
              BLE     _RAM_end
          
              LDR     R0, =0x5A5A5A5A
           _RAM_loop:
              STR     R0, [R1, #4]
              ADDS    R1, #4
              SUBS    R2, #4
              BGE      _RAM_loop
           _RAM_end:
             BX LR
          
          1 条回复 最后回复
          0
          • ,FrankieF Frankie 将这个主题转为问答主题
          • ,FrankieF Frankie 将这个主题标记为已解决

        • 云途开发生态介绍

          快速上手云途开发生态

        • 云途论坛规则/Yuntu Forum Rules

          发帖前请查看

        • YT CONFIG TOOL调查问卷

          帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

        • can
          25
          demo
          22
          lin stack
          13
          uds
          13
          md14
          6
          yt-link
          6
          fbl
          5
          adc模块
          4
          Online Users
          • 登录

          • 登录或注册以进行搜索。
          • 第一个帖子
            最后一个帖子
          0
          • 版块
          • 最新
          • 标签
          • 热门