@刘流鎏 好的 谢谢~
kk 发布的帖子
-
RE: FR8018HA JLINK MDK5在线调试老是断开
@刘流鎏
好的 我关闭看门狗好了很多,对于连接线 我后续看看。顺便请教一个问题,栈空间大小如何修改?
按照我的理解:
- 系统栈主要应该是用于中断的嵌套,一般在.s启动文件中配置,
在8018HA的SDK中,我发现app_boot_vector.s中“;Stack_Size EQU 0x280 ;0x00000400 ”是注释掉的,
并且没有 “Heap_Mem SPACE Heap_Size”分配栈空间的指令;
- 任务栈,底层应该是个FreeRTOS,那么任务栈是从堆空间分配的,
那么我是否可以通过FreeRTOSConfig.h中
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 17 * 1024 ) ) 来修改;
对于我们的应用,基本使用os_timer 和os_task,
现在遇到一些偶发的奇怪问题,现在分析怀疑可能在某些情况下可能调用过深;
所以想了解SDK中的栈是如何配置分配的,谢谢~ - 系统栈主要应该是用于中断的嵌套,一般在.s启动文件中配置,
-
RE: FR8018HA JLINK MDK5在线调试老是断开
@刘流鎏
感谢回复,debug的是自己的代码部分,
FR8010H.FLM 用比较工具确认了一下是git上sdk中最新的版本 -
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,
}, -
RE: FR8018运行时Crash, 请问有什么建议
@kawhi
可以确定os_timer_start()有执行到,在os_timer_start()后添加了打印log;
可以发现每次出现问题都是打印了log,没有看到进入os_timer function的log; -
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~
-
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定时器中有调用。
-
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_handlerPC:
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是否可以在使用时规避?
谢谢~
- commit 64ad073d946960eb486245ce25d15067be3e9514
-
trng相关的api原型
你好,看到sdk 中有trng相关的syscall函数,请问他们的原型是怎样定义的
因为在应用中需要使用一些随机数
0x0001c4d5 T trng_init
0x0001c4d9 T trng_read_rand_num
谢谢