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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. UART发送过程中直接进入到HARDFAULT错误

UART发送过程中直接进入到HARDFAULT错误

已定时 已固定 已锁定 已移动 YTM32B1M系列
15 帖子 5 发布者 1.7k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • guangnanG 离线
    guangnanG 离线
    guangnan
    在 回复了 Diga 最后由 编辑
    #5

    Diga 附上CPU和Core寄存器的情况0a72ff13-2a37-4ded-8bb9-70a662c0dee5-image.png 35de8e08-41a5-44e0-b132-df3b7b814b98-image.png dd029bbb-2439-44f2-9b04-88ee522776bf-image.png

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

      初步看是 bus fault,bus fault 的错误地址是 0x20010000
      看起来像是你的 tx buff 这个指针在野蛮生长,已经超出 RAM 范围了

      guangnanG 1 条回复 最后回复
      0
      • guangnanG 离线
        guangnanG 离线
        guangnan
        在 回复了 Diga 最后由 guangnan 编辑
        #7

        Diga 我这边查看的linflexd_uart_config1_State的txBuff确实是越界了,但是重复几次现象也没有看到这个txbuff在疯狂变化,直接就从正常指针地址跳到 0x20010000。进错误之前传进去的数据还是正常的。这边检查了有操作linflexd_uart_config1_State.txBuff的也只有这个发送回调函数。
        b1d58fb9-d1b8-4717-95fc-ffc83858eb97-image.png 1c3702c2-290b-4c49-9d0b-837f6c10350c-image.png

        1 条回复 最后回复
        0
        • DigaD 离线
          DigaD 离线
          Diga
          写于 最后由 编辑
          #8

          看起来像 state->txBuff 指向的是一个局部变量,位置应该是在栈内,然后这个位置被你的代码冲掉了
          你可以把你的 txDataAddr 拿出来当全局变量,固定占一个坑

          guangnanG XgqX 2 条回复 最后回复
          0
          • guangnanG 离线
            guangnanG 离线
            guangnan
            在 回复了 Diga 最后由 guangnan 编辑
            #9

            Diga 刚刚尝试了把这个txDataAddr 修改为全局变量还是会出错。

            1 条回复 最后回复
            0
            • HarlanH 离线
              HarlanH 离线
              Harlan YunTu
              写于 最后由 编辑
              #10

              Debug排查到,主函数与中断都有调用“LINFlexD_UART_DRV_PutData()”函数,存在函数重进入的情况;机缘巧合下txsize会自减2次,如果txsize是1,则会自减为0xffffffff(0D4,294,967,295),最终导致txbuff爆掉,进入Hardfault。

              image.png
              image.png

              解决方法:①避免中断和主函数都调用同一个函数,②通过其他方式做好逻辑管理。

              1 条回复 最后回复
              3
              • XgqX 离线
                XgqX 离线
                Xgq
                写于 最后由 编辑
                #11

                请问一下串口的DMA发送怎么配置?

                1 条回复 最后回复
                0
                • XgqX 离线
                  XgqX 离线
                  Xgq
                  在 回复了 Diga 最后由 编辑
                  #12

                  Diga 你好,方便指导一下MC0的串口DMA配置吗?DMA初始化有点迷糊

                  1 条回复 最后回复
                  0
                  • qinzhaoQ 离线
                    qinzhaoQ 离线
                    qinzhao YunTu
                    写于 最后由 编辑
                    #13

                    直接在uart的配置里选DMA:
                    image.png,然后DMA模块不需要配置,
                    image.png;在串口初始化之前增加DMA初始化函数
                    image.png。就可以使用了。

                    1 条回复 最后回复
                    0
                    • qinzhaoQ 离线
                      qinzhaoQ 离线
                      qinzhao YunTu
                      写于 最后由 编辑
                      #14

                      增加一个DEMO:
                      UART_IDLE_DMA.zip

                      XgqX 1 条回复 最后回复
                      0
                      • XgqX 离线
                        XgqX 离线
                        Xgq
                        在 回复了 qinzhao 最后由 编辑
                        #15

                        qinzhao 我这边测了下,使用这个函数UART_DRV_SendData()发送6个8位数据需要大概200us,有没有直接使能DMA传输标志位就可以不用MCU管理的方法?

                        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
                        FrankieF
                        Frankie
                        frankieqqF
                        frankieqq
                        ColinC
                        Colin
                        z123456111Z
                        z123456111
                        AlexzA
                        Alexz
                        HAIYANGH
                        HAIYANG
                        SelinhuangS
                        Selinhuang
                        PedroCaoP
                        PedroCao
                        majorM
                        major
                        车友车行车
                        车友车行
                        zhaodong1Z
                        zhaodong1
                        jinyiJ
                        jinyi
                        limanjiangL
                        limanjiang
                        yt0503Y
                        yt0503
                        runR
                        run
                        DerrickD
                        Derrick
                        • 登录

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