以定义參数 cus_param 为例。int型变量。

1. Preloader部分

Platform.h(mediatek\platform\[$platform]\preloader\src\drivers\inc\platform.h)

在例如以下结构体中加cus_param变量。假设是char型,请注意4byte对其:

typedef struct {

    u32 magic;

    boot_mode_t mode;

    u32 e_flag;

    u32 log_port;

    u32 log_baudrate;

    u8  log_enable;

    u8  part_num;

    u8  reserved[2];

    u32 dram_rank_num;

    u32 dram_rank_size[4];

    u32 boot_reason;

    u32 meta_com_type;

    u32 meta_com_id;

    u32 boot_time;

    da_info_t da_info;

    SEC_LIMIT sec_limit;     

    part_hdr_t *part_info;

    u8  md_type[4];

    u32  ddr_reserve_enable;   

    u32  ddr_reserve_success;

    u32 cus_param; //mediatek add

} boot_arg_t;

 

Platform.c(mediatek\platform\[$platform]\preloader\src\drivers\platform.c)

在此函数中加入对cus_param的赋值。通过函数,或者直接写入所需的值:

void platform_set_boot_args()

{

#if CFG_BOOT_ARGUMENT

    bootarg.magic = BOOT_ARGUMENT_MAGIC;

    bootarg.mode  = g_boot_mode;

    bootarg.e_flag = sp_check_platform();

    bootarg.log_port = CFG_UART_LOG;

    bootarg.log_baudrate = CFG_LOG_BAUDRATE;

    bootarg.log_enable = (u8)log_status();

    bootarg.dram_rank_num = get_dram_rank_nr();

    get_dram_rank_size(bootarg.dram_rank_size);

    bootarg.boot_reason = g_boot_reason;

    bootarg.meta_com_type = (u32)g_meta_com_type;

    bootarg.meta_com_id = g_meta_com_id;

    bootarg.boot_time = get_timer(g_boot_time);

 

    bootarg.part_num =  g_dram_buf->part_num;

    bootarg.part_info = g_dram_buf->part_info;

 

    bootarg.ddr_reserve_enable = g_ddr_reserve_enable;

    bootarg.ddr_reserve_success= g_ddr_reserve_success;

 

    //mediatek add,mt_get_cus_param这个函数是客制化得到cus_param的函数,请自行实现

    bootarg.cus_param = mt_get_cus_param();

 

2.LK 部分

Boot_mode.h(mediatek\platform\[$platform]\lk\include\platform\boot_mode.h)

在例如以下结构体中相同加入cus_param变量。假设是char型,请注意4byte对其:

typedef struct {

  u32      maggic_number;

  BOOTMODE boot_mode;

  u32      e_flag;

  u32      log_port;

  u32      log_baudrate;

  u8       log_enable;

  u8       part_num;

  u8       reserved[2];

  u32      dram_rank_num;

  u32      dram_rank_size[4];

  u32      boot_reason;

  META_COM_TYPE meta_com_type;

  u32      meta_com_id;

  u32      boot_time;

  da_info_t da_info;

  SEC_LIMIT sec_limit;

  part_hdr_t *part_info;

  u8 md_type[4];

  u32  ddr_reserve_enable;   

  u32  ddr_reserve_success;

  u32 cus_param; //mediatek add。和preloader部分同样,两个结构体要一样

} BOOT_ARGUMENT;

 

Mt_boot.c(bootable\bootloader\lk\app\mt_boot\mt_boot.c)

在此函数中,将cus_param的信息加入到cmdline上:

int boot_linux_from_storage(void)

{

    .....

    strlen += sprintf(commanline, "%s fps=%1d", commanline, mt_disp_get_lcd_time());

    strlen += sprintf(commanline, "%s cus_param=%1d", commanline, g_boot_arg->cus_param); //mediatek add

 

3.Kernel部分

saved_command_line 这是一个全局变量,在您所须要此參数的driver文件里。extern saved_command_line变量。

通过查找 cus_param 的字符串就可以:

    char * ptr;

    int cus_param;

    ptr = strstr(saved_command_line, "cus_param=");

    ptr += strlen("cus_param=");

    cus_param = simple_strtol(ptr, NULL, 10);

此时 cus_param就是最初的int值。

android 利用cmdline,将參数从preloader传递到kernel的更多相关文章

  1. 菜鸟学习Spring——60s利用JoinPoint获取參数的值和方法名称

    一.概述 AOP的实现方法在上两篇博客中已经用了两种方法来实现如今的问题来了尽管我们利用AOP,那么client怎样信息传递?利用JoinPoint接口来实现client给详细实现类的传递參数. 二. ...

  2. 将參数从PHP传递到JavaScript中

    php: //自己定义数组參数 $newarr = array('a1' => 'a1', 'a2' => 'a2', 'a3' => 'a3'); $config = CJavaS ...

  3. android利用剪切板来实现数据的传递

    在Android开发中我们经常要遇到的一个问题就是数据在不同的Activity之间的共享.在Android开发中有很多种方法可以达到这个目地. 这里介绍一种比较常见.又常用的一种方法就是使用剪切板.我 ...

  4. linux kernel的cmdline參数解析原理分析

    利用工作之便,今天研究了kernel下cmdline參数解析过程.记录在此.与大家共享.转载请注明出处.谢谢. Kernel 版本:3.4.55 Kernel启动时会解析cmdline,然后依据这些參 ...

  5. android意图传參数(四)

    一.依照向导创建一个project,layout的activity_main.xml文件内容例如以下: <RelativeLayout xmlns:android="http://sc ...

  6. Scala入门到精通——第十九节 隐式转换与隐式參数(二)

    作者:摇摆少年梦 配套视频地址:http://www.xuetuwuyou.com/course/12 本节主要内容 隐式參数中的隐式转换 函数中隐式參数使用概要 隐式转换问题梳理 1. 隐式參数中的 ...

  7. 关于mybatis中,批量增删改查以及參数传递的问题

    1.參数传递的问题 大多数情况下,我们都是利用map作为參数,而且大部分情况下都是仅仅有一个參数. 可是,我们也能够利用@param注解,来传入多个參数,此时,mybatis会自己主动将參数封装成ma ...

  8. 我的Spring之旅(二):为请求加入參数

    1.前言 在上一篇我的Spring之旅(一)中,我们仅仅是利用不带參数的请求返回一个网页或一段json,在实际的B/S.C/S网络交互中,请求中须要自己定义的參数.本篇将简单地为之前的请求加入參数. ...

  9. java參数传递方式问题

    java的參数传递方式到底是值传递还是引用传递,这一直是一个争论不休的问题,一直以来没有形成统一意见. 在这里,我也仅仅是说一说个人见解,不保证是对的,全当是抛砖引玉. 首先我的观点是java採用的是 ...

随机推荐

  1. bzoj1004 purfer 序列

    之前没不知道这个数列. 一个purfer序列与一棵树一一对应. 长度为n的purfer的集合: A = { s | s is a sequence and a∈[1,len(s)+2] 一个直接的结论 ...

  2. BSGS算法+逆元 POJ 2417 Discrete Logging

    POJ 2417 Discrete Logging Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4860   Accept ...

  3. CDOJ 1048 Bob's vector 三分

    Bob's vector 题目连接: http://acm.uestc.edu.cn/#/problem/show/1048 Description Bob has a vector with mm ...

  4. 使用STL中的list容器实现单链表的操作

    #include<iostream> #include<list> #include<algorithm> using namespace std; void Pr ...

  5. 基于ARM的射频识别读卡器电路设计

    http://tech.yktworld.com/201010/201010032128115666.html 来源:一卡通世界      作者:江小平,李中捷,余晓峰      2010-10-3 ...

  6. Python pass 语句

    Python pass 语句 Python pass是空语句,是为了保持程序结构的完整性. pass 不做任何事情,一般用做占位语句. Python 语言 pass 语句语法格式如下: pass 实例 ...

  7. 【spring cloud】子模块module -->导入一个新的spring boot项目作为spring cloud的一个子模块微服务,怎么做/或者 每次导入一个新的spring boot项目,IDEA不识别子module,启动类无法启动/右下角没有蓝色图标

    如题:导入一个新的spring boot项目作为spring cloud的一个子模块微服务,怎么做 或者说每次导入一个新的spring boot项目,IDEA不识别,启动类无法启动,怎么解决 下面分别 ...

  8. 《Java虚拟机原理图解》3、JVM执行时数据区

    [last updated :2014/11/7]     JVM执行时数据区(JVM Runtime Area)事实上就是指JVM在执行期间,其对计算机内存空间的划分和分配.本文将通过下面几个话题来 ...

  9. JS是否存在方法重载

    java里面是存在重载的,那么js中呢?这个问题面试的时候会经常遇到.但是可以肯定的说,js中是不存在重载的,但是我们可以通过其他的方式来模拟重载,我们可以通过argument方法来实现. argum ...

  10. matlab从文件夹名中获得该文件夹下所图像文件名

    function [s,nameC]=get_FileNameFromFolderPath(path) % 函数调用:[s,nameC]=get_FileNameFromFolderPath(path ...