遇到的问题如下:
- USB设备未编译,导致编译内核失败。
- 设备初始化代码段不对,导致指针错误。
- LED背光设备、NAND等结构体缺失元素(不影响启动)
- 背光灯先亮后灭;
解决的方法如下:
- 设备未编译,导致编译内核失败,添加编译规则即可,打开linux2.6.31/arch/arm/mach-s3c2440/Kconfig;在92行后添加如下内容:
- 初始化代码不对,这个我也不是很清楚原因,待知道的兄弟解释一下,我是从http://code.google.com/p/mini2440的代码库里得到的解决方法。解决办法就是打开linux2.6.31/arch/arm/mach-s3c2440/mach-mini2440.c,将除了下面这一句之外的所有的 __init去掉即可
复制代码- static char mini2440_features_str[12] __initdata = "0tb";
|
另外提一下,上面这一句是设置mini2440初始化参数的。
- 结构体缺失的问题,应该不影响启动,但是为了代码规范还是注意点比较好。解决方法,同样是打开linux2.6.31/arch/arm/mach-s3c2440/mach-mini2440.c,将
复制代码- static struct s3c2410_platform_nand mini2440_nand_info __initdata = {
- .tacls = 0,
- .twrph0 = 25,
- .twrph1 = 15,
- .nr_sets = ARRAY_SIZE(mini2440_nand_sets),
- .sets = mini2440_nand_sets,
- .ignore_unset_ecc = 1,
- };
|
修改为:
复制代码- static struct s3c2410_platform_nand mini2440_nand_info __initdata = {
- .tacls = 0,
- .twrph0 = 25,
- .twrph1 = 15,
- .nr_sets = ARRAY_SIZE(mini2440_nand_sets),
- .sets = mini2440_nand_sets,
- .ignore_unset_ecc = 1,
- .select_chip = NULL
- };
|
再将
复制代码- static struct s3c24xx_led_platdata mini2440_led_backlight_pdata __initdata = {
- .name = "backlight",
- .gpio = S3C2410_GPG(4),
- .def_trigger = "backlight",
- };
|
修改为:
复制代码- static struct s3c24xx_led_platdata mini2440_led_backlight_pdata __initdata = {
- .name = "backlight",
- .gpio = S3C2410_GPG(4),
- .flags = S3C24XX_LEDF_STARTON,
- .def_trigger = "backlight",
- };
|
即加上复制代码- .flags = S3C24XX_LEDF_STARTON,
|
这一行。并且打开arch/arm/mach-s3c2410/include/mach/leds-gpio.h,在18行后添加下面一行:
复制代码- #define S3C24XX_LEDF_STARTON (1<<2) /* Initialise 'on' */
|
以定义从开机一直保持液晶常亮的宏参数。
- 背光灯的问题,有两种解决方法,一是在启动参数中加上参数;而是修改上面的
复制代码- static char mini2440_features_str[12] __initdata = "0tb";
|
为
复制代码- static char mini2440_features_str[12] __initdata = "0t";
|
即可,这里实际上是mini2440移植的时候作的一个参数化的处理。具体可以参考linux2.6.31/arch/arm/mach-s3c2440/mach-mini2440.c的584行到625行这一段。
相关的补丁如下: mini2440-stuff.patch.tar.bz2 (3 K) 下载次数:94 [ 此帖被athurg在2009-10-03 13:59重新编辑 ]