内核处理cmdline和atags流程

简介: BootLoader可以向Linux传递参数,编译内核时也可以配置boot options。 调试中使用的U-Boot bootargs如下: noinitrd root=/dev/mtdblock3 rw console=ttySAC0,115200 init=/linuxrc mem=64M 内核版本: 2.

BootLoader可以向Linux传递参数,编译内核时也可以配置boot options

调试中使用的U-Boot bootargs如下:

noinitrd root=/dev/mtdblock3 rw console=ttySAC0,115200 init=/linuxrc mem=64M

内核版本:

2.6.35.7

内核的处理参数的整体过程如下:

u-boot将配置参数地址通过寄存器传递给内核

内核(arch/arm/kernel/head-common.S 中的 __mmap_switched)将这个地址存入__atags_pointer(定义于

        &init_tags

        

        

 

        

 

        

        

        

 

        

                  

 

                                                      

                  

        

                   

 

        

         

         

         

        

                  

        

                  &init_tags      

 

        

                  &from&meminfo

 

        

                                 

                           

                  

                              

        

 

        

          

          

              

 

        

                

 

        

        

        

 

                      

 

        

        &meminfo

        

        

 

 

&command_line

     

                    

                    &unknown_bootoption

 

     

           

        

 

 

     

 

     

        

                                        

                  

                  

                           

                  

                           

                           

                           

                  

                           

        

 

        

        

                  

 

        

        &&

                  

 

        

                  

 

            

                  

                  

                  

                           

                                    

                                    

                           

                           

                                    

                  

                  

             

                  

                  

                  

                           

                                    

                                    

                           

                  

                  

        

        

 

    

相关文章
|
4月前
|
NoSQL Linux 编译器
内核实验(一):使用QEMU+GDB断点调试Linux内核代码
如何配置环境并使用QEMU虚拟机结合GDB进行Linux内核代码的断点调试,包括安装QEMU、交叉编译工具链,编译内核以及通过GDB远程连接进行调试的详细步骤。
180 0
内核实验(一):使用QEMU+GDB断点调试Linux内核代码
|
7月前
|
Linux 测试技术 API
xenomai内核解析之xenomai初探
本文是关于Xenomai实时操作系统的初探,Xenomai是一个实时性增强的Linux系统,它通过实时内核和用户空间库提供硬实时性能。Xenomai 3主要由实时内核Cobalt、实时驱动模型RTDM、用户空间库libcobalt等组成,支持两种构建实时系统的方式:Cobalt和Mercury。Cobalt在内核空间与标准Linux内核并存,通过I-Pipe处理中断,确保实时任务的执行。Mercury则是通过修改Linux内核实现。
533 0
xenomai内核解析之xenomai初探
|
7月前
|
存储 安全 Linux
Linux 内核启动流程与入口函数分析
Linux 内核启动流程与入口函数分析
244 0
|
7月前
|
关系型数据库 Linux 编译器
Linux内核学习(十):内核追踪必备技能--ftrace
Linux内核学习(十):内核追踪必备技能--ftrace
274 0
|
7月前
|
存储 Linux Shell
Linux内核追踪(一):proc/sys/debugfs
Linux内核追踪(一):proc/sys/debugfs
254 0
|
Linux 项目管理 开发者
Linux内核基础篇——printk调试
Linux内核基础篇——printk调试
|
Linux
内核是如何运行ko文件的--系统调用
内核是如何运行ko文件的--系统调用
367 0