双系统初始化概述:

根据双系统业务部署规划,Huawei LiteOS 系统主要运行媒体服务,开机后先于 linux启动,不依赖于 Linux 端。而 Linux 系统主要运行人机交互、网络、录像、拍照、存储等业务,其中运行的录像、拍照等业务依赖于 Huawei LiteOS 系统中的媒体服务。根据启动顺序要求,在调试双系统业务时,建议先将 Huawei LiteOS 系统调试稳定,再来调试Linux 系统。

liteos的初始化代码置于:ndk/out/slave/init/

linux的初始化代码置于:./references/dv_reference/product/hi3559/init_master


Huawei LiteOS 初始化特性:

1.board_config 函数
该函数在主入口之前调用,主要用来配置系统内存等。

文件:ndk/out/slave/init/hi_init_os.c

HI_VOID board_config(HI_VOID)
{g_sys_mem_addr_end = SYS_MEM_BASE + SYS_MEM_SIZE_DEFAULT;g_uwSysClock = OS_SYS_CLOCK;
#ifdef CFG_DEBUG_LOG_ONg_uart_fputc_en = 1;
#elseg_uart_fputc_en = 0;
#endif/*if usb transfer port interface on liteos, macro LOSCFG_DRIVERS_USB will define in liteos*/
#ifdef LOSCFG_DRIVERS_USBextern unsigned long g_usb_mem_addr_start;extern unsigned long g_usb_mem_size;g_usb_mem_addr_start = g_sys_mem_addr_end;g_usb_mem_size = 0x20000; //recommend 128K nonCache for usb
#endifos_init_debug_startup_log();
}

2.liteos系统的主入口
Huawei LiteOS 提供的初始化函数为 app_init(),而不是 main(),该函数所在的线程栈很小,只有 24K,满足不了某些业务初始化要求,因此在 app_init 函数中创建一个栈大小为 0.5M 的 liteos_app_main 线程。

文件:ndk/out/slave/init/hi_init_liteos_main.c

void app_init(void)
{pthread_attr_t threadattr;pthread_attr_init(&threadattr);threadattr.stacksize = 0x80000;pthread_t stThreadid;if (0 != pthread_create(&stThreadid, &threadattr, (void*)liteos_app_main, NULL)){ILOGE("pthread_create liteos_app_main failed\n");return;}(void)pthread_join(stThreadid, NULL);return;
}

对于 Huawei LiteOS APP 初始化,我们从整体上划分为 5 个初始化模块:

1.OS init

− 模块职责:Huawei LiteOS 操作系统本身提供的模块的初始化及调试性功能的初始化。
− 内容介绍:当前 OS Init 依次执行了 proc 文件系统的初始化、串口及 shell 初始化、双核通信初始化、I2C/SPI 等总线驱动初始化、sharefs 初始化、网络初始化等操作。sharefs 提供了让 Huawei LiteOS 访问 Linux 文件系统的通路。

2.board init

− 模块职责:主要负责片内媒体相关器件的寄存器配置,包括管脚复用、器件复位、器件初始化等。原则上在 uboot 表格中未配置的媒体寄存器均应在这个文件中配置。
− 内容介绍:当前 Board Init 依次执行了 CPU 片内的 VI 的引脚配置、各个模块的时钟配置、引脚复用功能配置、VO 引脚配置等操作。需要根据单板特性进行修改。

3.peripheral init

主要负责片外驱动的初始化

4.media init(不需要客户修改)

主要负责 NDK 媒体模块的加载及 NDK 媒体服务中双核通讯的初始化。 当前 Media Init 依次执行了 SDK 的初始化、MAPI 系统初始化以及媒体的调试 log 模块初始化

5.service init

主要负责客户定制业务的初始化,在 Reference 里,Service Init 当前依次执行了系统参数初始化、双核通信服务注册、产品媒体初始化、预览图像输出等操作。

Huawei LiteOS APP 初始化文件视图:

liteos app初始化序列:


linux端的初始化:

普通版本与快速启动版本在总体启动流程上是一致的,只在部分细节上有所区别。linux app初始化流程:

Linux APP 初始化流程说明:
为了 USB 调试方便,普通版本在 load_module 脚本中默认加载了 USB 驱动,并配置了 USB 网卡,但在快速启动版本中,需要手动调用/komod/USB2.0net 脚本进行USB 驱动加载。
为了调试方便,普通版本启动时需要手动启动 main_app,而快速启动版本会直接启动 main_app。

linux_param_init 先初始化,可以让后续的业务根据系统参数做出启动差异化。

ko_startthread 是一个异步加载的过程,普通版本的 kernel 内置了 mmc 驱动,在快速启动版本中为了延后 mmc 的加载,缩短启动时间,特在 APP 中根据启动需要加载 mmc ko。
ui_start 是一个阻塞式调用,且必须与 ui_init 在同一个线程中调用,因此把post_service_init 函数做成了一个线程,不影响 ui_start 的调用。

hi3559v100的amp双系统初始化相关推荐

  1. 安装双系统ubuntu,并且初始化

    文章目录 装双系统 配置国内源 安装搜狗拼音 插入耳机无法主动识别 美化ubuntu 美化终端 修改分辨率 网易云音乐 截屏工具 配置wine,可以使用微信QQ 昨天尝试了一下wsl和vscode,说 ...

  2. XP硬盘安装Ubuntu 10.10双系统图解(转)

    原文地址: http://www.ylmf.net/ubuntu/guide/201010297968.html http://www.ylmf.net/ubuntu/guide/2010102979 ...

  3. win10安装net3.5不成功出现 0x8024402c_在移动硬盘中安装win10和macos双系统

    本文通过在SSD移动硬盘中安装win10和macos双系统,实现操作系统随身携带 小慢哥的原创文章,欢迎转载 目录 ▪ 目标 ▪ 准备工作 ▪ Step1. 清空分区,转换为GPT ▪ Step2. ...

  4. bios设置开机双系统选择_打破专家的断言,突破微软和英特尔的封锁,惠普电脑玩转双系统...

    引子: 新电脑,win10系统,界面略显繁琐,开始菜单不能一步直达,工作效率低.况且,厂家说不能安装win7,不信邪.研究如何,打破专家的断言,突破封锁,安装win7.成功安装后win7,再进一步安装 ...

  5. ubuntu 20.04双系统安装_win10上跑Ubuntu不用虚拟机不用双系统!

    Window 和Linux 官方虽然从来没有公开宣战过,但是吃瓜群众特别喜欢拿他们来比较(易用性啊,安全性啊),作为成年人我们都知道 :尺有所短,寸有所长,每个人的尺寸都不一样. 但是鄙视链这个东西肯 ...

  6. win10刚安装linux黑屏,win10 + Ubuntu18.04 双系统,UEFI+GPT,从win10切换到Ubuntu时黑屏问题...

    1.现象: ①win10主系统,从win10重启,立即黑屏,之后会进入Ubuntu(还是黑屏)(为什么会知道进入了Ubuntu:按音量键可以听到Ubuntu音量加减的系统声音,数字锁定和大小写锁定均有 ...

  7. DELL戴尔Win10双硬盘安装Ubuntu20.04双系统(附带ROS安装教程)

    DELL戴尔Win10双硬盘安装Ubuntu20.04双系统(附带ROS安装教程) 1.安装场景及注意事项 1.1.确认电脑的引导方式 1.2.关闭电脑BitLocker硬盘保护 2.安装步骤 2.1 ...

  8. 实体机安装双系统多系统教程 及引导修复指南

    介绍在实体机装双系统或者多系统的方法, 对于离不开windows娱乐环境又要使用linux系统开发的小伙伴,以及对计算机运行流程不太清晰的小伙伴一定有帮助 系统硬件组成 显示器.鼠标.键盘等外设 CP ...

  9. 双系统基础上装三系统教程

    我电脑本来有win7家庭普通版和Ubuntu16.04两个系统,不知道为啥,win7家庭普通版这个系统突然就不能播放视频和玩游戏了,一弄就蓝屏,一开始以为是显卡坏了,于是禁用独显,然后使用集显看视频, ...

  10. 在移动硬盘中安装win10和macos双系统

    本文通过在SSD移动硬盘中安装win10和macos双系统,实现操作系统随身携带 小慢哥的原创文章,欢迎转载 目录 ▪ 目标 ▪ 准备工作 ▪ Step1. 清空分区,转换为GPT ▪ Step2. ...

最新文章

  1. 关于肠道菌群研究的7大事实和5大倡议
  2. CSS基础篇--CSS/CSS3中的原生变量var详解
  3. 真我新格调 勇敢使梦想×××
  4. 为取消大小周而欢呼?字节员工可不那么想...
  5. 鸭鸭邀请------青龙毛毛
  6. PCIe - 周扒皮,扒扒TLP层
  7. oracle中角色和用户权限,Oracle用户、角色、权限管理
  8. Alictf 2015决赛题目设计和解题思路
  9. Box2D的Edge Shape的碰撞处理
  10. python txt 操作_python TXT文件操作
  11. learn to study
  12. 互换元素(swap,swap_ranges)
  13. List<实体>转json
  14. 【机器学习基础】常用激活函数(激励函数)理解与总结
  15. 计算机网络:令牌环网IEEE 802.5
  16. 2014年优秀动画片推荐:马来西亚动画片《Ribbit》
  17. Android:RecycleView基本使用(瀑布流)
  18. 微信,该文件已过期或已被清理
  19. java 微信获取用户地理位置_Java微信公众平台开发之获取地理位置
  20. x265-1.8版本-common/lowres.cpp注释

热门文章

  1. 倒计时 妙味课堂_妙味课堂javascript视频教程
  2. VS2019+OpenCV3.4.1_vc14vc15配置简介(防忘记)
  3. 关于visual studio和vc版本之间的对应关系(更新至2020.07)
  4. 【台词】严厉的愛Tough Love」(后妈茶话会)
  5. A Simple but Tough-to-Beat Baseline for Sentence Embeddings阅读笔记
  6. CodeProject.com上微软BizTalk平台技术文章集锦
  7. Newifi Y1S刷潘多拉(Pandora)固件
  8. java 实例化数组_java数组实例化
  9. 数据库之DB2数据库备份
  10. win10的 程序员计算器