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

YunTu Forum

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

云途HA 调用 __main 来代替 RamInit1

已定时 已固定 已锁定 已移动 YTM32B1H系列
11 帖子 3 发布者 161 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 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
                      • 版块
                      • 最新
                      • 标签
                      • 热门