需求:
公司有多种类型的产品,处理器相同,外围 电路不同(例如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这个变量了