From 06b29ee78b8f71759bc9fd51e803a834c2e1ea8c Mon Sep 17 00:00:00 2001 From: JerryH Date: Tue, 10 Aug 2021 15:25:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=86=85=E6=A0=B8=E5=A4=9A=E6=A0=B8?= =?UTF-8?q?=E5=8F=8A=E5=86=85=E5=AD=98=E6=98=A0=E5=B0=84=E8=A7=A3=E8=80=A6?= =?UTF-8?q?=E5=B7=B2=E7=BB=8F=E4=B8=8A=E5=BA=93=E5=90=88=E5=85=A5=EF=BC=8C?= =?UTF-8?q?=E9=85=8D=E5=A5=97=E4=BF=AE=E6=94=B9=E7=A7=BB=E6=A4=8D=E6=96=87?= =?UTF-8?q?=E6=A1=A3=EF=BC=8C=E6=B7=BB=E5=8A=A0=E7=9B=B8=E5=85=B3=E8=AF=B4?= =?UTF-8?q?=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close #I44QY1 Signed-off-by: JerryH Change-Id: I4f49c24dac6c79a666bcbba88293f210e0c7c18c --- .../porting/transplant-smallchip-kernel-a.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/zh-cn/device-dev/porting/transplant-smallchip-kernel-a.md b/zh-cn/device-dev/porting/transplant-smallchip-kernel-a.md index f4de2f397db..47f73ccea04 100644 --- a/zh-cn/device-dev/porting/transplant-smallchip-kernel-a.md +++ b/zh-cn/device-dev/porting/transplant-smallchip-kernel-a.md @@ -26,10 +26,12 @@ LiteOS-A提供系统运行所需的系统初始化流程和定制化配置选项 如下图所示,LiteOS-A的初始化流程主要包含以下五步: 1. 新增target\_config.h文件,并且编写单板内存相关的配置宏DDR\_MEM\_ADDR和DDR\_MEM\_SIZE,分别表示内存起始地址和内存的长度,预链接脚本board.ld.S会根据这两个宏进行展开生成链接脚本board.ld。 -2. 链接阶段根据链接脚本board.ld生成内核镜像。 -3. 单核CPU镜像运行入口为汇编文件reset\_vector\_up.S,多核CPU的入口为reset\_vector\_mp.S,在汇编文件中进行中断向量表初始化、MMU页表初始化等操作。 -4. reset\_vector.S汇编代码最终会跳转到C语言的main函数,进行硬件时钟、软件定时器、内存和任务等初始化,这个过程会依赖target\_config.h的特性宏配置,最后会创建SystemInit任务,并且开启任务调度OsSchedStart\(\)。 -5. SystemInit任务在单板代码中实现,其中调用DeviceManagerStart函数进行HDF驱动初始化,这个过程会调用单板代码中的驱动配置文件hdf.hcs以及drivers源码实现。 +2. 新增定义MMU映射全局数组\(g_archMmuInitMapping\),指定各个内存段属性及虚实映射关系,内核启动阶段根据该表建立内存映射关系。 +3. 如果是多核,需要新增定义从核操作函数句柄\(struct SmpOps\),其中SmpOps\-\>SmpCpuOn函数需要实现唤醒从核的功能;接着定义SmpRegFunc函数,调用LOS_SmpOpsSet接口进行句柄注册;最后通过启动框架完成注册过程,即LOS\_MODULE\_INIT\(SmpRegFunc, LOS_INIT_LEVEL_EARLIEST\)。 +4. 链接阶段根据链接脚本board.ld生成内核镜像。 +5. 单核CPU镜像运行入口为汇编文件reset\_vector\_up.S,多核CPU的入口为reset\_vector\_mp.S,在汇编文件中进行中断向量表初始化、MMU页表初始化等操作。 +6. reset\_vector.S汇编代码最终会跳转到C语言的main函数,进行硬件时钟、软件定时器、内存和任务等初始化,这个过程会依赖target\_config.h的特性宏配置,最后会创建SystemInit任务,并且开启任务调度OsSchedStart\(\)。 +7. SystemInit任务在单板代码中实现,其中调用DeviceManagerStart函数进行HDF驱动初始化,这个过程会调用单板代码中的驱动配置文件hdf.hcs以及drivers源码实现。 整体启动流程如下图所示: -- Gitee