导航

    Freqchip开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 最新
    1. 主页
    2. kk
    3. 帖子
    K
    • 继续与 kk 聊天
    • 开始与 kk 的新会话
    • 举报资料
    • 资料
    • 关注
    • 粉丝
    • 屏蔽
    • 主题
    • 帖子
    • 最佳
    • 群组

    kk 发布的帖子

    • RE: FR8018HA JLINK MDK5在线调试老是断开

      @刘流鎏 好的 谢谢~

      发布在 FR801xH
      K
      kk
    • RE: FR8018HA JLINK MDK5在线调试老是断开

      @刘流鎏
      好的 我关闭看门狗好了很多,对于连接线 我后续看看。

      顺便请教一个问题,栈空间大小如何修改?

      按照我的理解:

      1. 系统栈主要应该是用于中断的嵌套,一般在.s启动文件中配置,
        在8018HA的SDK中,我发现app_boot_vector.s中“;Stack_Size EQU 0x280 ;0x00000400 ”是注释掉的,
        并且没有 “Heap_Mem SPACE Heap_Size”分配栈空间的指令;
      1. 任务栈,底层应该是个FreeRTOS,那么任务栈是从堆空间分配的,
        那么我是否可以通过FreeRTOSConfig.h中
        #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 17 * 1024 ) ) 来修改;

      对于我们的应用,基本使用os_timer 和os_task,
      现在遇到一些偶发的奇怪问题,现在分析怀疑可能在某些情况下可能调用过深;
      所以想了解SDK中的栈是如何配置分配的,谢谢~

      发布在 FR801xH
      K
      kk
    • RE: FR8018HA JLINK MDK5在线调试老是断开

      @刘流鎏
      感谢回复,debug的是自己的代码部分,
      FR8010H.FLM 用比较工具确认了一下是git上sdk中最新的版本

      发布在 FR801xH
      K
      kk
    • FR8018HA JLINK MDK5在线调试老是断开

      使用JLINK OB V2断点单步调试程序,但是单步执行老是断,
      大家有没有遇到这样的情况,很头痛,不能友好的调试代码,严重影响效率;

      JLINK 输出信息:
      **JLink Warning: CPU could not be halted
      ***JLink Error: Can not read register 15 (R15) while CPU is running
      ***JLink Error: Can not read register 16 (XPSR) while CPU is running
      ***JLink Error: Can not read register 0 (R0) while CPU is running
      ***JLink Error: Can not read register 1 (R1) while CPU is running
      ***JLink Error: Can not read register 2 (R2) while CPU is running
      ***JLink Error: Can not read register 3 (R3) while CPU is running
      ***JLink Error: Can not read register 4 (R4) while CPU is running
      ***JLink Error: Can not read register 5 (R5) while CPU is running
      ***JLink Error: Can not read register 6 (R6) while CPU is running
      ***JLink Error: Can not read register 7 (R7) while CPU is running
      ***JLink Error: Can not read register 8 (R8) while CPU is running
      ***JLink Error: Can not read register 9 (R9) while CPU is running
      ***JLink Error: Can not read register 10 (R10) while CPU is running
      ***JLink Error: Can not read register 11 (R11) while CPU is running
      ***JLink Error: Can not read register 12 (R12) while CPU is running
      ***JLink Error: Can not read register 13 (R13) while CPU is running
      ***JLink Error: Can not read register 14 (R14) while CPU is running
      ***JLink Error: Can not read register 15 (R15) while CPU is running
      ***JLink Error: Can not read register 16 (XPSR) while CPU is running
      ***JLink Error: Can not read register 17 (MSP) while CPU is running
      ***JLink Error: Can not read register 18 (PSP) while CPU is running
      ***JLink Error: Can not read register 20 (CFBP) while CPU is running

      硬件连接:
      VCC GND SWD CLK

      代码中已经屏蔽了相关patch:
      #if 0
      [4] = {
      .patch_pc = 0x00004aae,
      .replace_function = frspim_rd,
      },
      [3] = {
      .patch_pc = 0x00004b02,
      .replace_function = frspim_wr,
      },

      0_1665366786179_111.png

      发布在 FR801xH
      K
      kk
    • RE: FR8018运行时Crash, 请问有什么建议

      @kawhi
      另外,拉取最新的sdk,测试几个小时候有同样的问题

      发布在 FR801xH
      K
      kk
    • RE: FR8018运行时Crash, 请问有什么建议

      @kawhi
      可以确定os_timer_start()有执行到,在os_timer_start()后添加了打印log;
      可以发现每次出现问题都是打印了log,没有看到进入os_timer function的log;

      发布在 FR801xH
      K
      kk
    • RE: FR8018运行时Crash, 请问有什么建议

      @kawhi 在 FR8018运行时Crash, 请问有什么建议 中说:

      是不是在执行比较耗时的操作

      这个目前还在排查是否有异常情况导致占用时间较长;
      因为Crash的问题优化后这几天测试没复现;
      目前有个比较奇怪的问题,
      如上次所说: os_timer_start启动一个单次定时器os_timer_start(&xxx_timer, 100, false);
      有时候定时器函数没有被执行,导致应用程序的一些流程没有执行,从而影响了正常的业务逻辑;

      请问os_timer_start() 启动软件定时器,为什么会有不执行的情况? 如上次所说,在timer0中断 和 非中断中有调用;
      中断中尝试了关中断调用os_timer_start(), 测试几小时后还是会出现。
      GLOBAL_INT_DISABLE();
      os_timer_start(&xxx_timer, 100, false);
      GLOBAL_INT_RESTORE();

      尝试了os_timer_start()之前先调用os_timer_stop(),测试后也没有解决问题。

      是因为os_timer_start()没有执行成功吗?而os_timer_start()这些API都没有返回值,如何判断是否成功?
      是否也是有像FreeRTOS那样,如果不能将timer添加到定时list就会失败?

      以上有什么建议? Thanks~

      发布在 FR801xH
      K
      kk
    • RE: FR8018运行时Crash, 请问有什么建议

      ke_timer_init 这个是sdk里面的,应用程序并没有调用,请问这是一个和os_timer相关的,还是硬件定时器相关的?
      进一步调试发现os_timer有概率不会执行,使用os_timer_start(&test_timer, 100, false);
      启用os_timer,根据log发现会有没有执行的情况,请问可能原因?os_timer_start 没有成功?

      另外根据论坛及SDK相关demo,推测应该是使用FreeRTOS, 那么根据FreeRTOS相关,
      软件定时器Start是有区分在中断中使用的 和非中断的;

      那么os_timer_start是可以在中断中调用的吗?目前是在Timer0定时器中有调用。

      发布在 FR801xH
      K
      kk
    • FR8018运行时Crash, 请问有什么建议

      你好,在我们的项目中,客户反馈设备会有假死的情况;
      经过长时间的测试,发现会有某个地方长时间占用cpu,导致空闲任务os_user_loop_event_set(&loop_callback)
      执行的时间间隔会大于1秒(在程序中做了打印,超过时间间隔打印log);
      这种情况下的直观现象:用于处理串口数据的软件定时器(os_timer)不能被执行。
      在找问题过程中,长时间放置(根据log大概50分钟),MCU重启了,重启时打印的PC LR值如下:
      [14:16:15.004]收←◆Crash, dump regs:
      PC = 0x000036DC
      LR = 0x0000AB33

      根据LR PC值,发现应该时ROM里的内容,根据sdk里的syscall.txt文件定位问题,大概是:
      LR:
      0x0000aa09 T ke_time
      0x0000aa45 T ke_timer_active
      0x0000aa6d T ke_timer_adjust_all
      0x0000aa85 T ke_timer_clear
      0x0000aaed T ke_timer_init
      0x0000ab4d T ke_timer_set
      0x0000abf9 T ll_channel_map_ind_handler

      PC:
      0x000035ff T co_list_init
      0x00003607 T co_list_insert_after
      0x00003631 T co_list_insert_before
      0x00003659 T co_list_merge
      0x00003671 T co_list_pool_init
      0x000036d5 T co_list_pop_front
      0x000036e9 T co_list_push_back
      0x000036fd T co_list_push_back_sublist

      根据这些信息,不知道是不是和os_timer相关。

      另外查看了SDK的代码提交记录,发现有关于修复os_timer issue的描述:

      • commit 64ad073d946960eb486245ce25d15067be3e9514
        | Author: owen owen@freqchip.com
        | AuthorDate: Thu Nov 25 10:39:47 2021 +0800
        | Commit: owen owen@freqchip.com
        | CommitDate: Thu Nov 25 10:39:47 2021 +0800
        |
        | synchronize with internal version d235a6b
        | 1. fix packet transfer failed in secure connection pairing procedure.
        | 2. support l2cap lecb channel
        | 3. fix os_timer issues
        |

      我们使用的SDK版本:SDK Compiled: Nov 23 2020 09:49:26
      考虑到可能存在的兼容问题,目前没有升级SDK,基于之前的代码升级新SDK会比较麻烦

      请问有什么建议,来定位问题,如果是os_timer的问题,可能的原因是什么,如果不升级SDK是否可以在使用时规避?

      谢谢~

      发布在 FR801xH
      K
      kk
    • RE: trng相关的api原型

      @kawhi 好的 验证了可以 Thanks

      发布在 FR801xH
      K
      kk
    • trng相关的api原型

      你好,看到sdk 中有trng相关的syscall函数,请问他们的原型是怎样定义的
      因为在应用中需要使用一些随机数
      0x0001c4d5 T trng_init
      0x0001c4d9 T trng_read_rand_num
      谢谢

      发布在 FR801xH
      K
      kk