首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ATAG和cmdline有什么区别?

ATAG和cmdline有什么区别?
EN

Stack Overflow用户
提问于 2019-04-08 08:00:49
回答 1查看 455关注 0票数 1

据我所知,ATAG和cmdline都是将内核参数从引导加载程序传递到内核的方法。但是我不明白他们之间有什么区别。

当我移植设备驱动程序时,我使用ATAG和cmdline将内核参数从引导加载程序传递到内核。我搜查了它们,但我还是无法理解它们之间的关系。据我所知,ATAG是指ARM体系结构中使用的内核标记列表,以及与ATAG类似的扁平设备树功能。我可能可以说我有一些线索来理解ATAG。然而,cmdline却令人困惑。

ATAG像设备树吗?cmdline是向ATAG添加属性的工具吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-10 09:01:28

ATAG和DeviceTree是向内核传递参数的两种方法。命令行是参数之一。

以下面的LK代码(Little Kernel: app/aboot/aboot.c)为例,在函数boot_linux()中,根据DEVICE_TREE的定义,final_cmdline可以通过设备树传递给内核,也可以通过atag传递给内核。

代码语言:javascript
复制
    void boot_linux(void *kernel, unsigned *tags,
        const char *cmdline, unsigned machtype,
        void *ramdisk, unsigned ramdisk_size)
{
...
#if DEVICE_TREE
    dprintf(INFO, "Updating device tree: start\n");

    /* Update the Device Tree */
    ret = update_device_tree((void *)tags,(const char *)final_cmdline, ramdisk, ramdisk_size);
    if(ret)
    {
        dprintf(CRITICAL, "ERROR: Updating Device Tree Failed \n");
        ASSERT(0);
    }
    dprintf(INFO, "Updating device tree: done\n");
#else
    /* Generating the Atags */
    generate_atags(tags, final_cmdline, ramdisk, ramdisk_size);
#endif
...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55568721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档