注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

嵌入式开发实战4--内核的编译之九YAFFS2、RTC、DM9000、背光及LCD驱动的测试  

2012-06-17 13:07:18|  分类: ARM开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

嵌入式开发实战4--内核的编译之九YAFFS2、RTC、DM9000、背光及LCD驱动的测试
在前面移植了几个驱动,今天在板子上测试一下,看看有没有达到要求。
Yaffs2文件系统很正常过去了,在增加DM9000的驱动时候编译遇到了下面的问题:
arch/arm/mach-s3c2440/mach-mini2440.c: In function 'mini2440_machine_init':
arch/arm/mach-s3c2440/mach-mini2440.c:443: error: 'mini2440_fb_info'
undeclared (first use in this function)
arch/arm/mach-s3c2440/mach-mini2440.c:443: error: (Each undeclared identifier
is reported only once
arch/arm/mach-s3c2440/mach-mini2440.c:443: error: for each function it
appears in.)
make[1]: *** [arch/arm/mach-s3c2440/mach-mini2440.o] Error 1
make: *** [arch/arm/mach-s3c2440] Error 2
ping@ping-vm:~/linux2.6.32.2/linux-2.6.32.2$ make menuconfig
scripts/kconfig/mconf arch/arm/Kconfig

编译器报mini2440_fb_info
这个结构体找不到,打开文件,发现明明有这个结构体,这时候儿注意到这个结构体包含
#if defined (LCD_WIDTH)
这个宏里,查了下,这个宏定义在本文件的上方,是定义不同的液晶大小配置,比如:
#elif defined(CONFIG_FB_S3C2410_T240320)
而这里的宏CONFIG_FB_S3C2410_T240320是在后面的LCD驱动里的KCONFIG文件里设置的。前面的驱动移植里也说明了,这个问题与现在的网卡的驱动无关。所以

static void __init mini2440_machine_init(void)
{
#if defined (LCD_WIDTH)
 s3c24xx_fb_set_platdata(&mini2440_fb_info);
#endif
 s3c_i2c0_set_platdata(NULL);

 s3c2410_gpio_cfgpin(S3C2410_GPC(0), S3C2410_GPC0_LEND);

 s3c_device_nand.dev.platform_data = &friendly_arm_nand_info;
 s3c_device_sdi.dev.platform_data = &mini2440_mmc_cfg;
 platform_add_devices(mini2440_devices, ARRAY_SIZE(mini2440_devices));
 s3c_pm_init();
}
这个函数里增加红色预定义宏。
这样,重新编译后将ZIMAGE烧写进去,执行ifconfig
,看到了效果,这个就不再贴图了,和一般的LINUX运行这个命令结果基本一样。
RTC的驱动编译后的内核镜像可以在dev/rtc看到这个设备,说明基本正常。
然后就是背光和LCD,这两个应该说是连在一起的,一编译,出现了下面的错误:

drivers/net/dm9000.c:1565: warning: unused variable 'oldval_bankcon4'
  LD      drivers/net/built-in.o
  CC      drivers/video/mini2440_backlight.o
drivers/video/mini2440_backlight.c: In function 'dev_write':
drivers/video/mini2440_backlight.c:61: error: 'buffe' undeclared (first use in this function)
drivers/video/mini2440_backlight.c:61: error: (Each undeclared identifier is reported only once
drivers/video/mini2440_backlight.c:61: error: for each function it appears in.)
drivers/video/mini2440_backlight.c:61: error: expected ')' before 'r'
drivers/video/mini2440_backlight.c:61: error: too few arguments to function '
copy_from_user'
make[2]: *** [drivers/video/mini2440_backlight.o] Error 1
make[1]: *** [drivers/video] Error 2
make: *** [drivers] Error 2
悲伤的结果是:不知道为什么buffer
中间增加了一个空格,这可是从公司编译好的文件下搞出来的。删除空格,再编译通过。
运行IMAGE发现也基本达到目标,但是出现了图像的偏移,这个是屏得定位有问题,回头弄一下就可以了,总结一下,这次编译遇到的问题:

1、UBUNTU还得用chmod 777 patch-ker.sh
,增加文件的执行权限,否则报没有权限,一开始还以为是用户的等级低,后来忽然明白是没有执行权限的问题,在FD8中就没有遇到这个问题。可见不同的操作系统,细节还是有差别的。
2、烧写内核时,先用K烧写内核,再用Y烧写根文件。这里一疏忽给弄混了。
3、同时用两个终端打开LINUX内核根文件,发现有一个不能MAKE MENUCONFIG,真是的。不知道这个为什么这样,莫非又是UBNTU的原因。
4、mach-mini2440.c中的mini2440_fb_info这个变量要用预编译宏控制起来。

积小胜为大胜,量变到质变。
看来UBOOT的编译又得后推了。HOLD住。

  评论这张
 
阅读(768)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017