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

YunTu Forum

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

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

已定时 已固定 已锁定 已移动 开发环境搭建
3 帖子 3 发布者 97 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 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
    • DerrickD 离线
      DerrickD 离线
      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

      • 云途开发生态介绍

        快速上手云途开发生态

      • 云途论坛规则/Yuntu Forum Rules

        发帖前请查看

      • YT CONFIG TOOL调查问卷

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

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

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