86#ifndef LOSCFG_TEE_ENABLE
90#ifdef LOSCFG_PLATFORM_HWI
98 PRINT_ERR(
"OsTickInit error!\n");
107#if defined(LOSCFG_PLATFORM_UART_WITHOUT_VFS) && defined(LOSCFG_DRIVERS)
118#ifdef LOSCFG_BASE_IPC_SEM
121 PRINT_ERR(
"OsSemInit error\n");
126#ifdef LOSCFG_BASE_IPC_QUEUE
129 PRINT_ERR(
"OsQueueInit error\n");
138#ifdef LOSCFG_KERNEL_MMU
151#ifdef LOSCFG_BASE_CORE_SWTMR_ENABLE
159#ifdef LOSCFG_DEBUG_VERSION
160 const CHAR *buildType =
"debug";
162 const CHAR *buildType =
"release";
165 PRINT_RELEASE(
"\n******************Welcome******************\n\n"
167#ifdef LOSCFG_KERNEL_SMP
175 "build time : %s %s\n"
176 "Kernel : %s %d.%d.%d.%d/%s\n"
177 "\n*******************************************\n",
179#ifdef LOSCFG_KERNEL_SMP
180 LOSCFG_KERNEL_SMP_CORE_NUM,
183 KERNEL_NAME, KERNEL_MAJOR, KERNEL_MINOR, KERNEL_PATCH, KERNEL_ITRE, buildType);
189#ifdef LOS_INIT_STATISTICS
190 UINT64 startNsec, endNsec, durationUsec;
214 PRINT_RELEASE(
"\nmain core booting up...\n");
216#ifdef LOS_INIT_STATISTICS
265#ifdef LOSCFG_KERNEL_SMP
271#ifdef LOS_INIT_STATISTICS
273 durationUsec = (endNsec - startNsec) / OS_SYS_NS_PER_US;
274 PRINTK(
"The main core takes %lluus to start.\n", durationUsec);
280#ifndef LOSCFG_PLATFORM_ADAPT
283 PRINTK(
"dummy: *** %s ***\n", __FUNCTION__);
288#ifndef LOSCFG_ENABLE_KERNEL_TEST
297 sysTask.
uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE;
298 sysTask.
pcName =
"SystemInit";
299 sysTask.
usTaskPrio = LOSCFG_BASE_CORE_TSK_DEFAULT_PRIO;
300 sysTask.
uwResved = LOS_TASK_STATUS_DETACHED;
301#ifdef LOSCFG_KERNEL_SMP
GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器 http://weharmonyos.com/blog/44....
CHAR * HalIrqVersion(VOID)
LITE_OS_SEC_DATA_INIT UINT32 g_tickPerSecond
每秒Tick数,鸿蒙默认是每秒100次,即:10ms
LITE_OS_SEC_DATA_INIT UINT32 g_sysClock
系统时钟,是绝大部分部件工作的时钟源,也是其他所有外设的时钟的来源
STATIC INLINE const CHAR * LOS_CpuInfo(VOID)
Get cpu core name.
struct tagTskInitParam TSK_INIT_PARAM_S
LITE_OS_SEC_TEXT_INIT UINT32 LOS_TaskCreate(UINT32 *taskID, TSK_INIT_PARAM_S *initParam)
创建任务,并使该任务进入ready状态,如果就绪队列中没有更高优先级的任务,则运行该任务
VOID *(* TSK_ENTRY_FUNC)(UINTPTR param1, UINTPTR param2, UINTPTR param3, UINTPTR param4)
Define the type of a task entrance function.
LITE_OS_SEC_TEXT_MINOR UINT64 LOS_CurrNanosec(VOID)
获取自系统启动以来的纳秒数
VOID HalClockFreqWrite(UINT32 freq)
VOID OsArchMmuInitPerCPU(VOID)
原子操作 http://weharmonyos.com/openharmony/zh-cn/device-dev/kernel/kernel-small-basic-atomic....
LITE_OS_SEC_TEXT_INIT UINT32 OsMain(VOID)
由汇编调用,鸿蒙C语言层级的入口点
SystemRebootFunc OsGetRebootHook(VOID)
获取系统重启钩子函数
LITE_OS_SEC_TEXT_INIT VOID OsSystemInfo(VOID)
STATIC VOID SystemInit(VOID)
STATIC UINT32 OsSystemInitTaskCreate(VOID)
创建系统初始任务并申请调度
STATIC UINT32 OsSystemInit(VOID)
VOID OsSetRebootHook(SystemRebootFunc func)
设置系统重启钩子函数
LITE_OS_SEC_TEXT_INIT STATIC UINT32 ArchInit(VOID)
LITE_OS_SEC_TEXT_INIT STATIC UINT32 PlatformEarlyInit(VOID)
LITE_OS_SEC_TEXT_INIT STATIC UINT32 OsIpcInit(VOID)
LITE_OS_SEC_TEXT_INIT STATIC UINT32 KModInit(VOID)
LITE_OS_SEC_TEXT_INIT STATIC UINT32 PlatformInit(VOID)
LITE_OS_SEC_TEXT_INIT STATIC UINT32 ArchEarlyInit(VOID)
LOS_MODULE_INIT(OsSystemInit, LOS_INIT_LEVEL_KMOD_TASK)
LITE_OS_SEC_TEXT_INIT STATIC UINT32 EarliestInit(VOID)
STATIC SystemRebootFunc g_rebootHook
VOID(* SystemRebootFunc)(VOID)
VOID OsExcInit(VOID)
异常接管模块的初始化
STATIC INLINE UINT32 ArchCurrCpuid(VOID)
LITE_OS_SEC_TEXT_INIT UINT32 OsTickInit(UINT32 systemClock, UINT32 tickPerSecond)
节拍初始化
VOID OsInitCall(const UINT32 level)
初始化调用日志打印,这个函数的功能主要是为了记录某个步骤的耗时.在一个函数前后各调用一次就知道函数的执行情况. 这为开机调试提供了很重要的日志依据.
LITE_OS_SEC_TEXT_INIT UINT32 OsSystemProcessCreate(VOID)
VOID OsSchedRunqueueInit(VOID)
STATIC INLINE VOID OsCurrTaskSet(LosTaskCB *task)
注意任务地址由硬件保存,见于 CP15 | TPIDRPRW
LITE_OS_SEC_TEXT_INIT UINT32 OsSwtmrInit(VOID)
LosTaskCB * OsGetMainTask()
LITE_OS_SEC_TEXT_INIT UINT32 OsTaskInit(VOID)
UINT32 OsSysMemInit(VOID)
整个系统内存初始化
TSK_ENTRY_FUNC pfnTaskEntry