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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1H系列
  4. 云途HA 调用 __main 来代替 RamInit1

云途HA 调用 __main 来代替 RamInit1

已定时 已固定 已锁定 已移动 YTM32B1H系列
11 帖子 3 发布者 161 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • gaoShengG 离线
    gaoShengG 离线
    gaoSheng
    写于 最后由 gaoSheng 编辑
    #1

    由于客户部分应用层采用C++方式开发,但在启动代码,并没有调用全局默认构造函数。 是否可以直接调用KEIL中的__main来构造bss data 以及全局构造函数?也就是要去掉RamInit1 增加__main

    1 条回复 最后回复
    0
    • FrankieF 离线
      FrankieF 离线
      Frankie YunTu
      写于 最后由 编辑
      #2

      可以用RamInit2,目前这个函数是weak的,里面没有任何代码。

      gaoShengG 1 条回复 最后回复
      0
      • gaoShengG 离线
        gaoShengG 离线
        gaoSheng
        在 回复了 Frankie 最后由 编辑
        #3

        Frankie 感谢大佬的回复,意思是我可以在 RamInit2() 里调用 __main 吗

        1 条回复 最后回复
        0
        • FrankieF 离线
          FrankieF 离线
          Frankie YunTu
          写于 最后由 Frankie 编辑
          #4

          gaoSheng 可以,__main 是newlib自带的函数?(这个东西可能会导致bss/data等区域重新初始化)

          1 条回复 最后回复
          0
          • snikeguoS 离线
            snikeguoS 离线
            snikeguo
            写于 最后由 编辑
            #5

            Frankie 是的,会再次初始化bss data

            1 条回复 最后回复
            0
            • snikeguoS 离线
              snikeguoS 离线
              snikeguo
              写于 最后由 编辑
              #6

              Frankie 请您问下ARM 官方,如何获取全局构造函数的地址,现在卡在这里 没有初始化好C++环境.

              1 条回复 最后回复
              0
              • FrankieF 离线
                FrankieF 离线
                Frankie YunTu
                写于 最后由 编辑
                #7

                查看这个例子:ha0.yct
                这个例子包含:

                1. init_array (对应构造函数)
                2. RTT (对应jlink的RTT配置)
                3. 一些其他的配置
                  593799bc-6b96-4de1-96e8-d0e1a95ff742-image.png
                1 条回复 最后回复
                0
                • FrankieF 离线
                  FrankieF 离线
                  Frankie YunTu
                  写于 最后由 编辑
                  #8

                  还要加上这个代码(GCC 和 IAR, keil自行搜索解决):

                  void CallConstructors(void) { 
                  #if defined(__GNUC__)   
                      // Get the address of the first entry in .myinit section
                      extern func_ptr __init_array_start[];
                      
                      // Get the address of the last entry in .myinit section
                      extern func_ptr __init_array_end[];
                      func_ptr *ptr = __init_array_start;
                  
                      // Call each constructor function
                      while(ptr < __init_array_end) {
                          (*ptr)();
                          ptr++;
                      }
                  #else
                      __iar_data_init3();
                  #endif
                  }
                  
                  1 条回复 最后回复
                  0
                  • snikeguoS 离线
                    snikeguoS 离线
                    snikeguo
                    写于 最后由 编辑
                    #9

                    Frankie GCC不像KEIL那么奇葩,知道怎么解决,KEIL没发解决,为了方便调试,我才用的KEIL。VSCODE调试并不好用,虽然KEIL不大稳定吧。现在打算放弃了KEIL了。我重写了所有的启动文件,放弃了你们生成的,手动调用__main,结果发现bss data啥的并没有初始化。原因也知道,就是__main找符号找不到没法调,问题出在我写的链接脚本的问题。KEIL的链接脚本非常奇葩。从FLash复制到RAM不知道用KEIL脚本怎么写。

                    1 条回复 最后回复
                    0
                    • snikeguoS 离线
                      snikeguoS 离线
                      snikeguo
                      写于 最后由 编辑
                      #10

                      StartUp_重新启动_手动调用__KEIL的main.zip

                      1 条回复 最后回复
                      0
                      • snikeguoS 离线
                        snikeguoS 离线
                        snikeguo
                        写于 最后由 编辑
                        #11

                        重写LINK文件后,问题已解决,还是使用的__main

                        1 条回复 最后回复
                        0

                      • 云途论坛规则/Yuntu Forum Rules

                        发帖前请查看

                      • YCT离线License申请流程

                        帮助没办法联网的电脑使用YCT

                      • YT CONFIG TOOL调查问卷

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

                      • demo
                        12
                        can
                        9
                        lin stack
                        6
                        yt-link
                        5
                        vscode
                        3
                        adc模块
                        2
                        i2c
                        2
                        uuid
                        2
                        Online Users
                        • 登录

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