本文期望将shell代码从启动到运行的逻辑理清。
背景知识:shell分为app和内核两部分(\apps\shell 和 \shell\full)
app shell最终编译为可执行文件,需要手动启动(见下图)。app shell接受命令后由内核shell处理
系统运行后,启动的是内核shell(下图白色提示符:OHOS:/$),app shell通过命令行启用(下图红色提示符:OHOS #)

我理解app shell的作用是留给实际应用的,可以向app shell添加自定义命令的处理,而不用修改内核shell(仅提供基本的命令)
初始化流程
-
汇编部分:arch\arm\arm\src\startup\reset_vector_mp.S or reset_vector_up.S (multiProcessor uniqueProcessor) 调用kernel的main函数
-
kernel 入口:kernel\common\mian.c–main()
-
内核shell的初始化属于内核模块任务:LOS_INIT_LEVEL_KMOD_TASK 中的OsSystemInit(\kernel\common\los_config.c–OsSystemInit()–SystemInit())
但是源码中没有SystemInit的定义,可知该函数是留给客户实现的

本文详细阐述了鸿蒙系统中shell从启动到运行的逻辑,包括appshell与内核shell的区别,以及它们的初始化流程,如Kernel的main函数调用、SystemInit的客户实现、shell命令注册和appshell加载等关键步骤。
最低0.47元/天 解锁文章
373

被折叠的 条评论
为什么被折叠?



