1 背景
学习一个系统,先从启动过程开始。鸿蒙的wifiiot的初始化过程,涉及的文件并不多,但因为用到了一些复杂一些的宏定义,理解起来比较困难。
2 开发板系统的入口app_main
文件:vendor/hisi/hi3861/hi3861/app/wifiiot_app/src/app_main.c
鸿蒙wifiiot为单进程系统,整个系统的入口程序为app_main,但这个并没有找到明确的文档说明。
这件文件一开始部分,是定义了开发板相关的一些硬件设备的初始化过程,而最后一行,才真正进入鸿蒙操作系统的初始化。
void __attribute__((weak)) HOS_SystemInit(void)
{
return;
}
hi_void app_main(hi_void)
{
const hi_char* sdk_ver = hi_get_sdk_version();
printf("sdk ver:%s\r\n", sdk_ver);
hi_flash_partition_table *ptable = HI_NULL;
peripheral_init();
peripheral_init_no_sleep();
hi_u32 ret = hi_factory_nv_init(HI_FNV_DEFAULT_ADDR, HI_NV_DEFAULT_TOTAL_SIZE, HI_NV_DEFAULT_BLOCK_SIZE);
/* partion table should init after factory nv init. */
ret = hi_flash_partition_init();
ptable = hi_get_partition_table();
ret = hi_nv_init(ptable->table[HI_FLASH_PARTITON_NORMAL_NV].addr, ptable->table[HI_FL

本文详细解析了鸿蒙操作系统在WiFi IoT设备上的启动过程,从app_main入口开始,介绍了硬件初始化、鸿蒙内核初始化以及各模块的初始化。通过分析宏定义和函数调用,揭示了系统如何逐步执行初始化任务,并调用到应用程序的入口。
最低0.47元/天 解锁文章
768





