atag和command line

bootloader用atag向kernel传递信息:
atag的info可以在 rel="File-List" href="file:///C:%5CDOCUME%7E1%5CCindy%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"> include/asm-arm/setup.h 找到:
rel="File-List" href="file:///C:%5CDOCUME%7E1%5CCindy%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"> 参数链表必须以ATAG_CORE 开始,以ATAG_NONE 结束。这里的ATAG_COREATAG_NONE 是各个参数的标记,本身是一个32 位值,例如:ATAG_CORE=0x54410001
rel="File-List" href="file:///C:%5CDOCUME%7E1%5CCindy%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"> 其它的参数标记还包括: ATAG_MEM32 ATAG_INITRD ATAG_RAMDISK ATAG_COMDLINE 等。每个参数标记就代表一个参数结构体,由各个参数结构体构成了参数链表。参数结构体的定义如下:

struct tag
{
struct tag_header hdr;
union {
struct tag_core core;
struct tag_mem32 mem;
struct tag_videotext videotext;
struct tag_ramdisk ramdisk;
struct tag_initrd initrd;
struct tag_serialnr serialnr;
struct tag_revision revision;
struct tag_videolfb videolfb;
struct tag_cmdline cmdline;
struct tag_acorn acorn;
struct tag_memclk memclk;
} u;
};

参数结构体包括两个部分,一个是 tag_header 结构体,一个是u 联合体。

tag_header
结构体的定义如下:
struct tag_header
{
u32 size;
u32 tag;
};

其中 size:表示整个tag 结构体的大小(用字的个数来表示,而不是字节的个数),等于tag_header 的大小加上u 联合体的大小,例如,参数结构体ATAG_CORE
rel="File-List" href="file:///C:%5CDOCUME%7E1%5CCindy%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"> size= (sizeof(tag->tag_header)+sizeof(tag->u.core))>>2 ,一般通过函数 tag_size(struct * tag_xxx)来获得每个参数结构体的size。其中tag:表示整个tag 结构体的标记,如:ATAG_CORE等。
eg:
static struct init_tags {
    struct tag_header hdr1;//一个header
    struct tag_core   core; //一个内容
    struct tag_header hdr2;
    struct tag_cmdline cmdline;
    struct tag_header hdr3; //结束的,不需要内容
} init_tags = {
    { tag_size(tag_core), ATAG_CORE },
    { 1, PAGE_SIZE, 0xff },
    { tag_size(tag_cmdline), ATAG_CMDLINE },
    { "" },
    { 0, ATAG_NONE }
};


tool:
build a atag include a command line:  Makefile update_atag.sh gen_cmdline.c






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值