linux内核接收来自u-boot的自定义参数

需求:

公司有多种类型的产品,处理器相同,外围 电路不同(例如AD/DA, PWM,开关量采集,继电器输出等),以前不同的设备单独编译一个内核,一个设备对应一套内核代码,这样极不利于代码维护,现在的方案是在内核初始化阶段从u-boot命令行中获取一个自定义参数,然后根据这个参数来初始化不同的硬件。


实现方法:

u-boot 命令行参数:

bootargs=console=ttyO0,115200n8 root=ubi0:rootfs rw ubi.mtd=9,2048 rootfstype=ubifs rootwait=1device_type=1;

device_type=1就是内核需要接收并解析的自定义参数


在内核中:

自定义头文件:

 1 #ifndef __KLHA_DEVICE_INCLUDE
  2 #define __KLHA_DEVICE_INCLUDE
  3 unsigned int    device_type;
  4 #endif

在文件arch/arm/mach-omap2/board-am335xevm.c

加入:

  93 /*从U-BOOT中获取设备类型 */
  94 static int __init device_type_setup(char *str)
  95 {
  96     device_type = simple_strtol(str, NULL, 0);
  97     pr_info("KLHA ================> device_type = %d\n", device_type);
  98     return 1;
  99 }
 100 __setup("device_type=", device_type_setup);


以后内核的其他部份就可以全用device_type这个变量了

你可能感兴趣的:(内核参数)