Mstar理论及实践篇(4)

2020-04-03 12:16

UBoot环境变量(EnvironmentVariable)

U-Boot通过环境变量(env)为用户提供一定程度的可配置性,这些环境变量包括启动kernel的参数(bootargs)、本地IP(ipaddr)、网卡MAC地址(ethaddr),波特率(baudrate)等等。环境变量可以固化到非易失性存储介质中(比如spi flash),使用printenv/setenv/saveenv命令来查看和修改保存。环境变量可以理解为一个键值对,即name=value,通过name找到value,再对不同的value做不同的设置。MBoot把环境变量分成3类:普通的环境变量,process环境变量,kernel环境变量。通过下面代码实现:

几个关键的API:

查找指定的环境变量:

设置指定环境变量的值:

保存环境变量: 根据不同的硬件配置,环境变量存储的位置不一样,有spi flash、eeprom、nand flash等,mstar的android平台一般是用spi flash存储环境变量。具体使用哪种存储介质,在/MBoot/u-boot-2011.06/include/configs/Uboot_module_config.h

PM概述

PM即Power Manager,为待机控制管理模块。待机时有一颗C51内核的MCU在跑,负责待机时的电源管理,IR和按键处理等操作。 进入PM的方式有两种,从MBoot进入PM和从Supernova进入PM。

从MBoot进入PM

1. 定义Command

2. 注册Process类型Command

3. 执行Command

Main_loop()->MstarProcess()->App_Register_Process()、run_command(do_if_boot_to_pm)->

If_Boot_To_PM()->msAPI_Power_PowerDown_EXEC()->MDrv_PM_PowerDown(&PmPowerDownCfg)

在If_Boot_To_PM(void)根据环境变量\判断是否进入PM,可以开机后进入工厂菜单设置,也可以通过MBoot的CLI改写环境变量的方式。

在void msAPI_Power_PowerDown_EXEC(void)会传一个PmWakeCfg和PM_PowerDownCfg的结构体到PM,这些结构体定义了开机方法和中断的开关状态。另外需要注意,如果PM运行状态为E_PM_STANDBY,则表示PM是运行在Dram上,所以进入PM后Dram不能断电。

从Supernova进入PM

当按power off按键或者因为timer out而进入待机,将从Supernova进入PM: MSrv_Control_common::EnterSleepMode()->void

mapi_system::PowerDown()->MDrv_PM_PowerDown() 过程类似MBoot进入PM

Android内核(Kernel)概述

内核(kernel)是操作系统最基本的部分,主要负责管理系统资源。内核提供一种硬件抽象的方法,通过进程间通信机制(IPC)及系统调用(system call),应用进程可间接控制所需的硬件资源。如下图所示:

内核(Kernel)

IPC

系统调用 应用软件 Android内核在整个Android架构中的层次图:


Mstar理论及实践篇(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:[解析版]全国普通高等学校2017届高考数学二模试卷(文科)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: