一、描述你遇到的问题
liteos的系统滴答怎么通过hisaprk studio设置,系统时钟频率已经在task菜单设置了,但是kconfig的python看不到这个菜单,只能看到kernel菜单,看不到设置系统滴答的task菜单。
二、你具体做的所有步骤结果截图
请插入图片
三、当前开发板状态全景照片
请插入图片
四、开发板串口所有日志
请在此处粘贴串口日志
liteos的系统滴答怎么通过hisaprk studio设置,系统时钟频率已经在task菜单设置了,但是kconfig的python看不到这个菜单,只能看到kernel菜单,看不到设置系统滴答的task菜单。
请插入图片
请插入图片
请在此处粘贴串口日志
在bearpi-pico_h3863/kernel/Kconfig中加一句
source "kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/kernel/Kconfig"
就能有菜单了(如果报错就改一下里面的路径),但是我用菜单改LOSCFG_BASE_CORE_TICK_PER_SECOND这个参数是没用的,这个参数是从output/ws63/acore/ws63-liteos-app/kernel/liteos/liteos_v208.5.0/menuconfig/include/menuconfig.h里读出来的,output下的文件都是编译文件,每次编译的时候都会重新生成,之前找半天,发现这些个参数应该都是在编译时读取kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/tools/build/config/ws63.config配置文件生成的,所以只能通过修改ws63.config这个文件来修改系统滴答
修改了以后VOID LOS_Msleep(UINT32 msecs) 这个函数延时不对了,找了半天,没找到这函数咋改
VOID LOS_Msleep(UINT32 msecs)这个函数看注释应该是通过UINT32 LOS_TaskDelay(UINT32 tick)这个函数实现的,我看了一下liteos内部提供的能看到源码的所有阻塞延时函数都是用这个实现的。这版内核就很怪,改了LOSCFG_BASE_CORE_TICK_PER_SECOND这个宏之后管你入参是ticks还是msecs全给你应用上了,估计默认这个宏是不可变的100,换算的时候直接简单粗暴乘10了,只能自己定义一个毫秒延时加换算了。(PS:实际用下来我的串口工具输出时间的时候看着LOS_Msleep这个函数似乎还是默认+1 tick的,所以要延时的准一点的话也得自己手动-1,这么麻烦还真不如自己写一个)
我也遇到同样的问题,把工程中所有跟LOSCFG_BASE_CORE_TICK_PER_SECOND相关的值修改为1000,调用osal_msleep(),还是一样会多10ms。
static void *tasks_test_task(const char *arg)
{
unused(arg);
osal_printk("Hello World BearPi init done.\r\n");
while (1) {
osal_printk("Hello World BearPi x_x ...\r\n");
osal_msleep(1000);
}
return NULL;
}
以下是日志,延时总是会多10ms:
[23:10:52.819]收←◆Hello World BearPi x_x ...
[23:10:53.827]收←◆Hello World BearPi x_x ...
[23:10:54.838]收←◆Hello World BearPi x_x ...
[23:10:55.848]收←◆Hello World BearPi x_x ...
[23:10:56.858]收←◆Hello World BearPi x_x ...
[23:10:57.868]收←◆Hello World BearPi x_x ...
[23:10:58.878]收←◆Hello World BearPi x_x ...
[23:10:59.888]收←◆Hello World BearPi x_x ...
[23:11:00.898]收←◆Hello World BearPi x_x ...