• [技术干货] 鸿蒙LiteOs-a中shell程序源码分析
    1 之前自己写过一篇介绍shell的文章hi3518 openharmony shell命令代码修改,并没有全面介绍shell,这次全面介绍一下。liteos-a中shell相关代码是有两处,但是这两处有什么区别和联系,本文着重介绍一下。2 liteos-a中的两个shell地方,我们可以把它俩叫做app_shell和full_shell,一个是用户空间程序,会生成单独的shell文件,放到了跟文件系统的bin目录下,代码位置如下:另一个地方运行在内核空间,和内核固件放到了一起,代码位置如下:我们在串口操作命令,不管是系统命令还是运行二进制文件,都会走到如下函数,在如下函数会判断两种情况,调用不同的系统调用,从而由用户态切换到内核态。运行效果如下:其中execve和syscall(__NR_shellexec, cmdName, cmdline)分别执行二机制文件和系统命令,关于系统调用简单说就是通过软中断方式由用户态进入到内核态,内核态会有对应的处理函数,此文不着重介绍,这两个判断函数所在文件如下所示:3 先说系统命令的调用流程,从用户态进入内核态之后,进入到的函数名称如下,从函数位置名字和里边的copyfromuser可以看出这就是一个系统调用处理函数,还有从用户空间往内核空间拷贝命令的操作。在这个函数里最终调用的函数为 OsCmdExec,注意内核代码中有两个这个函数的实现不要弄混,用户程序的shell代码中的这个函数是不对的,代码中也有注释说明。在这个函数中最终在全局变量中找到命令匹配的执行函数,完成了命令的调用。4 然后说一下二进制文件调用的流程execve最终的系统调用执行函数是SysExecve然后直接调用在这个函数里,最终调用到了运行加载运行elf二进制文件的操作5 app_shell和full_shell的这两部分代码,有好多函数名都一样,代码逻辑也类似,很很容易让人疑惑,操作系统接受命令时,默认会初始化串口shell控制台,还有一个功能时telnet服务器在启动时会初始化telnet控制台,串口是启动时调用,telnet是自己运行命令调用,后续我们在单独介绍telnet shell相关代码,敬请期待。转载于鸿蒙开发微信公众号
  • [问题求助] 【LiteOS STM32L496_Nucleo】【OTA差分升级】
    【功能模块】LiteOS  OTA差分升级【操作步骤&问题现象】请教各位大佬:1、LiteOS\targets目录下的所有目标板都支持差分升级吗?例如STM32L496_Nucleo2、LiteOS和LiteOS_Lab两个仓库中的差分升级有什么区别?3、只编译bootloader该如何编译?【截图信息】1、在linux环境下使能STM32L496_Nucleo的OTA能力,编译不通过。【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] LiteOS Studio官方网站无法打开
    【功能模块】LiteOS Studio官方网站无法打开【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] LiteOS版本,MQTTS证书方式连接,初始化失败
    【功能模块】LiteOS版本,MQTTS证书方式连接,初始化失败证书相关配置【操作步骤&问题现象】烧录后初始化报错【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] 有没有可定制的基于liteos的北斗开发方案
    淘宝上都不提供方案的源码啊。。没法定制开发好痛苦。
  • [问题求助] 【新手求教】Lite OS移植STM32F103VC 驱动LED的IO口,无法驱动LED亮灭
    各位大神,首先感谢支持,支持!为了更好的支持国产系统软件,开始逐步转型使用国产相关编程工具,第一次接触LiteOS Studio这个编译环境,开始移植到STM32F103VC和APM32F103VC上使用,发现一下问题,不知道和原因,请各位大神指点一二,谢谢了。问题状态:一、先贴出任务代码:#include "sys_init.h"#include "demo_entry.h"#include "gpio.h"#include "menuconfig.h"#define LED_TASK_PRIORITY   5static UINT32 g_led_tskHandle;UINT32 num=0;//static UINT8 buf[8]={1,2,3,4,5,6,7,8};STATIC UINT32 LedTask(VOID){    //UART_HandleTypeDef huart1;    UINT32 ret = LOS_OK;    while (1) {        HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_6);        num++;        if(num>=10000)            num=0;        LOS_TaskDelay(100);        USART1->DR=0X36;        printf("\r\nrunning led task![%d]\r\n",num);   }   return ret;}STATIC UINT32 LedTaskCreate(VOID){    uint32_t ret = LOS_OK;    TSK_INIT_PARAM_S task_init_param;    memset(&task_init_param, 0, sizeof(TSK_INIT_PARAM_S));    task_init_param.usTaskPrio = LED_TASK_PRIORITY;    task_init_param.pcName = "LedTask";    task_init_param.pfnTaskEntry = (TSK_ENTRY_FUNC)LedTask;    task_init_param.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE;    ret = LOS_TaskCreate(&g_led_tskHandle, &task_init_param);    if (ret != LOS_OK) {        return ret;    }    return ret;}VOID app_init(VOID){    printf("Hello, welcome to liteos!\n");    LedTaskCreate();    DemoEntry();}二、移植应该是成功的,下载到项目板后出现以下现象:1、LedTask创建应该是成功的,因为任务中的这部分代码功能是正常的        num++;        if(num>=10000)            num=0;        LOS_TaskDelay(100);        USART1->DR=0X36;        printf("\r\nrunning led task![%d]\r\n",num);通过串口监控输出显示正常********Hello Huawei LiteOS********LiteOS Kernel Version : 5.1.0build date : May 11 2022 10:47:17**********************************OsAppInitcpu 0 entering schedulerHello, welcome to liteos!Hello, welcome to liteos demo!Huawei LiteOS # 6running led task![1]6running led task![2]6running led task![3]现在的问题是:任务中的以下语句输出不正常,也就是说,LED没有变化,一直是灭的HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_6);请问哪位大神知道是什么原因?请指教以下,非常感谢!!
  • [问题求助] 小熊派IoT板子在IoT直接场景中属于哪类接入方式,是LiteOS吗
    小熊派IoT板子在IoT直接场景中属于哪类接入方式,华为云IoTDA云服务支持这六种接入方式,小熊派是基于哪种开发的?从资料上看,你们用的是LiteOS这种模式,但你们用的移远NB-IoT模组,这个模组据我了解在云市场上架,也是和IoTDA做了认证模组开发模式的适配的,那搭配你们板子一起用的话,通信这块,你们是用基于LiteOS的模式进行控制,还是NB模组自行配置完成通信?
  • [问题求助] 智慧烟感案例,板子一直显示初始化界面
    【功能模块】【操作步骤&问题现象】1、板子烧录了LiteOS的烟感代码,又去重新烧录了vscode里面的IoT Link插件的烟感代码,最后重新换回了LiteOS代码2、Nb卡刚买的,是有用的,不知道为什么LiteOS的代码就是实现不了了,只有loT Link下的代码有用【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] LiteOS导入工程在哪
    【功能模块】【操作步骤&问题现象】1、看视频及教材实验智慧路灯,使用LiteOS-Studio开始界面就有“导入其他嵌入式工程(gcc)),为什么我的没有 只有新建或者打开工程2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] HUAWEI-LiteOS-Studio 新建工程无法找到添加的芯片
  • [问题求助] 使用liteos进行差分升级
    请问一下在使用liteos中的差分升级时,M4内核的stm32在liteos中可以找到(hwpatch.lib)这个链接库,库里面包含升级时必要的函数,但是M0内核的找不到,请问有高手整过M0内核的吗?
  • [问题求助] 【LiteOS Studio】【STM32103ZE】编译失败
    【功能模块】【操作步骤&问题现象】1、按照官方指导操作2、STM32103ZE板编译失败(同样的配置STM32F429IG可编译通过)【截图信息】【日志信息】(可选,上传日志内容或者附件)make[1]: Entering directory 'd:/Code_Study/Test_Studio/ST'python  d:/Code_Study/Test_Studio/ST/tools/menuconfig/usr_config.py savemenuconfigprocess_begin: CreateProcess(NULL, python d:/Code_Study/Test_Studio/ST/tools/menuconfig/usr_config.py savemenuconfig, ...) failed.make (e=2): 系统找不到指定的文件。make[1]: *** [tools/menuconfig/Makefile.kconfig:12: savemenuconfig] Error 2make[1]: Leaving directory 'd:/Code_Study/Test_Studio/ST'make: *** [Makefile:53: d:/Code_Study/Test_Studio/ST/targets/menuconfig.h] Error 2Terminal will be reused by tasks, press any key to close it.
  • [问题求助] 物联网终端开发到底采用哪种开发环境好,是vscode+iotlink 还是LIteOS Studio?
    【功能模块】【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] HUAWEI LiteOS Studio 编译报错
    【功能模块】【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] 【hi3518ev300】【LCD】LiteOS如何驱动LCD使用framebuffer?
    在3518ev300上接了TTL TFT,不知从何入手驱动,有没有随便一些LCD在liteos的驱动代码可以参考下?