SMEM :shared memory,是高通平台各子系统共享信息的一种机制,通过SMEM机制,PBL可以将信息传递给SBL1,SBL1可以将信息传递给RPM、LK。下面分析一个SMEM信息传递的具体实现过程。

1 Platform id信息

SBL1会将board level platform id信息通过SMEM机制保存,LK在启动过程中会自动platform detect,检测当前平台board infor信息,根据检测到的board infor加载相应的device tree

SBL1:从emmc中读取platform id等CDT信息,并保存到约定的smem中

voidboot_config_data_table_init(bl_shared_data_type* bl_shared_data)

{

/*populate configuration data table's info*/

config_data_table_info.size =config_data_table_size;

config_data_table_info.cdt_ptr =config_data_table; //platform id & ddr default parameter

boot_update_config_data_table(&config_data_table_info);

/*put a pointer to the table info into sblshared data so next sbl can access it*/

bl_shared_data->sbl_shared_data->config_data_table_info =&config_data_table_info;

}

LK通过读取smem获取platform infor信息

static void platform_detect()

{

ret= smem_read_alloc_entry(SMEM_BOARD_INFO_LOCATION,

&board_info_v8,

board_info_len);

board.platform= board_info_v8.board_info_v3.msm_id;

board.platform_version= board_info_v8.board_info_v3.msm_version;

board.platform_hw= board_info_v8.board_info_v3.hw_platform;

board.platform_subtype= board_info_v8.platform_subtype;

}

同理,SBL1可通过SMEM将DDR default parameter传递给RPM,当然也可以将OEM定制信息通过SMEM保存,在启动阶段根据不同OEM信息进行相应的特制化。

2 如何在SBL1和LK间通过SMEM传递客制化信息

step1. Add a new enum (i.e SMEM_OEM_MAGIC_INFO = XXX)in smem_mem_type

step 2. After the boot_smem_init() is called, you use smem_alloc() to allocate the SMEM space for your data,i.e:

  • smem_oem_magic_ptr = (uint32 *) smem_alloc( SMEM_OEM_MAGIC_INFO, sizeof(uint32));

step3. On lk side add a new enum (i.e SMEM_OEM_MAGIC_INFO =XXX) in smem_mem_type_t

step4. In lk code, you can usethe smem_read_alloc_entry() to read data which is passed from SBL1,i.e:

  • smem_read_alloc_entry( SMEM_OEM_MAGIC_INFO,&apps_oem_magic_info, sizeof( uint32));

SMEM介绍的更多相关文章

  1. Linux监控工具介绍系列——smem

    smem工具介绍 smem是Linux系统上的一款可以生成多种内存耗用报告的命令行工具.与现有工具不一样的是smem可以报告实际使用的物理内存(PSS),这是一种更有意义的指标.可以衡量虚拟内存系统的 ...

  2. smem – Linux 内存监视软件

    导读 Linux 系统的内存管理工作中,内存使用情况的监控是十分重要的,在各种 Linux 发行版上你会找到许多这种工具.它们的工作方式多种多样,在这里,我们将会介绍如何安装和使用这样的一个名为 sm ...

  3. CSS3 background-image背景图片相关介绍

    这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ...

  4. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  5. Windows Server 2012 NIC Teaming介绍及注意事项

    Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...

  6. Linux下服务器端开发流程及相关工具介绍(C++)

    去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...

  7. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  8. HTML DOM 介绍

    本篇主要介绍DOM内容.DOM 节点.节点属性以及获取HTML元素的方法. 目录 1. 介绍 DOM:介绍DOM,以及对DOM分类和功能的说明. 2. DOM 节点:介绍DOM节点分类和节点层次. 3 ...

  9. HTML 事件(一) 事件的介绍

    本篇主要介绍HTML中的事件知识:事件相关术语.DOM事件规范.事件对象. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三 ...

随机推荐

  1. tomcat连接池配置和使用

    一种方法是在conf/context.xml文件中配置,配置oracle连接池的一个例子的context内容如下: <?xml version='1.0' encoding='utf-8'?&g ...

  2. MongoDB 查询文档

    语法 MongoDB 查询数据的语法格式如下: >db.COLLECTION_NAME.find() find() 方法以非结构化的方式来显示所有文档. 如果你需要以易读的方式来读取数据,可以使 ...

  3. PHP Zip File 函数

    通过 PHP 中的相关函数,你可以实现 zip 文件的解压缩操作! PHP Zip File 简介 Zip File 函数允许您读取压缩文件. 安装 如需在服务器上运行 Zip File 函数,必须安 ...

  4. 使用Java可以做得一些事

    安卓 Web JSP使用Echarts的最简单的例子 微信 wechat4j weixin-java-tools weixin4j 网络服务器

  5. Cloudera: Start Impala service by cloudera manager in docker quickstart image

    How to start Impala service in docker quickstart image docker run --hostname=quickstart.cloudera --p ...

  6. BlockingQueue(阻塞队列)详解

    一. 前言 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全"传输"数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量 ...

  7. 5秒让你的View变3D,ThreeDLayout使用和实现

    在很久很久以前,写了一篇自定义3d view的博客.但是只是讲了如何实现,实现起来还是比较耗时,所以本着平易近人的心态,把他封装成了一个ViewGroup,只需要在你的view或者布局外面包裹一层Th ...

  8. Sencha EXTJS6的 Eclipse 插件安装指南

    Sencha EXTJS的 Eclipse 插件安装指南 (翻译:苏生米沿) 本文地址:http://blog.csdn.net/sushengmiyan/article/details/52566 ...

  9. 微信小程序基础之交互操作控件

    好久没有写关于微信小程序的文章了,今天简单的发表一篇,内容比较简单,包括:ActionSheet上拉菜单.AlertAction提示框.SuccessAction完成框.LoadingAction加载 ...

  10. 网卡配置和DNS配置,手动挂在nas存储的共享目录,网络相关其它操作命令,修改防火墙中的端口配置,resolv.conf配置详细介绍和网卡信息配置详细介绍

    1.   网卡配置和DNS配置 若想服务器能够发邮件,需要让部署的服务器能够访问到外网环境.若部署的服务器访问不到外网,通过ping www.baidu.com的方式执行的时候,会出现以下问题: &q ...