下载此文档

linux 2[1].6 启动流程分析.doc


文档分类:IT计算机 | 页数:约12页 举报非法文档有奖
1/12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/12 下载此文档
文档列表 文档介绍
,来控制内核启动的过程,例如:"console=ttyS2,115200mem=******@0xA0000000"这里指定了控制台是串口2,波特率是115200,内存大小是64M,物理基地址是0xA0000000。另外我们可以在内核中定义一些全局变量,使用这些全局变量控制内核的配置,例如usb驱动中定义了staticintnousb;/*DisableUSBwhenbuiltintokernelimage*/这个变量为1,则整个usb驱动不初始化,如果想将其置1,可在字符串命令行中添加nousb=1。在操作该变量之前,还要让系统知道该变量,方法是:__module_param_call("",nousb,param_set_bool,param_get_bool,&nousb,0444);__module_param_call这个宏定义在kernel\include\linux\:#define__module_param_call(prefix,name,set,get,arg,perm)\har__param_str_##name[]=prefix#name;\staticstructkernel_paramconst__param_##name\__attribute_used__\__attribute__((unused,__section__("__param"),aligned(sizeof(void*))))\={__param_str_##name,perm,set,get,arg}它定义了一个kernel_param类型的变量,这个变量被放到了段__param,kernel_param结构体的定义是:structkernel_param{constchar*name;unsignedintperm;param_set_fnset;param_get_fnget;void*arg;};__param这个段的声明有些平台是在arch/../../,而大多数平台是放到kernel\include\asm-generic\,定义如下:__param:AT(ADDR(__param)-LOAD_OFFSET){\VMLINUX_SYMBOL(__start___param)=.;\*(__param)\VMLINUX_SYMBOL(__stop___param)=.;\}内核启动时就会对字符串命令进行解析,在kernel\init\,内核启动函数start_kernel中对外部数组进行了声明:externstructkernel_param__start___param[],__stop___param[];然后调用函数parse_args对数组进行解析:parse_args("Bootingkernel",command_line,__start___param,__stop___param-__start___param,&unknown_bootoption);mand_line就是要解析的字符串命令行,unknown_bootoption是函数指针,它用来获取指定参数的=右边的值。parse_args就会在数组中找到和nousb名称一样的kernel_param变量,并调用它的set函数对其进行付值。,,但是该文件是由vmlinux-,根据编译选项的不同源文件还可以是vmlinux-,vmlinux-armv-。vmlinux-=arch/arm/vmlinux-:arch/arm/Makefile$(LD)\$(wildcardinclude/config/cpu/)\$(wildcardinclude/config/cpu/)\$(wildcardinclude/config/arch/*.h)***@echo'Generating$@'***@sed's/TEXTADDR/$(TEXTADDR)/;s/DATAADDR/$(DATAADDR)/'$(LD)>$***@vmlinux-:OUTPUT_ARCH(ar

linux 2[1].6 启动流程分析 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数12
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xxj16588
  • 文件大小0 KB
  • 时间2016-01-28
最近更新