成功移植UT6410的800*480的LCD驱动
来源:互联网 发布:中国洪涝灾害数据分析 编辑:程序博客网 时间:2024/05/29 08:39
在UT6410默认的android内核中是没有7寸屏的LCD驱动的,所以在昨天移植网络之后我们今天接着把LCD的驱动拿移植好。
首先我们在纯linux内核中找到800*480的驱动源文件,根据config选项我找到了源文件的位置,它位于/drivers/video/samsung下面,一个为s3cfb_UT_LCD7A.c的文件,把这个文件拷贝到我们android kernel下面相应的位置。然后修改相应的kconfig和Makefile需要注意的是在drivers/video/samsung目录下面是没有Kconfig文件的,所以我们需要在上一层目录的Kconfig中添加相关的信息,简介如下:
在
config FB_S3C_LTV350QV
bool "LTV350QV"
---help---
TBA
下面添加
config FB_URBETTER_UT_LCD7A
bool "UT_LCD7A 800*480"
---help---
TBA
然后选择相关的内核编译选项我们就可以进行编译了,在编译的时候我们会发现报如下错误:
drivers/video/samsung/s3cfb_UT_LCD7A.c: In function 's3cfb_set_fimd_info':
drivers/video/samsung/s3cfb_UT_LCD7A.c:49: error: 's3cfb_fimd' undeclared (first use in this function)
drivers/video/samsung/s3cfb_UT_LCD7A.c:49: error: (Each undeclared identifier is reported only once
drivers/video/samsung/s3cfb_UT_LCD7A.c:49: error: for each function it appears in.)
make[3]: *** [drivers/video/samsung/s3cfb_UT_LCD7A.o] Error 1
make[2]: *** [drivers/video/samsung] Error 2
make[1]: *** [drivers/video] Error 2
make: *** [drivers] Error 2
仔细看一下,原来是s3cfb_fimd这个结构体名字在新的内核驱动中被改了个名字,所以我们把它改过来就可以了,也就是把所有的s3cfb_fimd改成s3c_fimd,这样编译就可以过去了,很简单吧。
就在我以为大功告成的时候,发现在内核启动的时候挂了,报如下错误:
S3C_LCD clock got enabled :: 133.000 Mhz
LCD TYPE :: UT_LCD7A will be initialized
Window[0] - FB1: map_video_memory: clear ffc00000:00177000
FB1: map_video_memory: dma=57a00000 cpu=ffc00000 size=00177000
Window[0] - FB2: map_video_memory: clear ffcbb800:000bb800
FB2: map_video_memory: dma=57abb800 cpu=ffcbb800 size=000bb800
Console: switching to colour frame buffer device 100x30
fb0: s3cfb frame buffer device
Failed to allocate video RAM: -12
Trying to free already-free IRQ 62
kernel BUG at mm/slab.c:591!
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 805 [#1] PREEMPT
Modules linked in:
……
然后内核就崩溃了,啊,哥好伤心啊,怎么办,只好跟源码了,我们跟踪源码后发现原来是在第二次申请dma的时候没有申请到,以前4寸屏的时候就可以申请到,现在怎么申请不到了啊,仔细一想可能是dma的申请限制太小了,还好以前遇到这样的问题,解决方法如下:
把/arch/arm/include/asm/memory.h中的
#define CONSISTENT_DMA_SIZE SZ_2M修改成
#define CONSISTENT_DMA_SIZE (SZ_8M + SZ_4M),这样申请的大小限制就变成了12M了,没有任何问题了,LCD的显示就OK了。
结果如下:
xdyang 2011-3-22 于南京IC学院302
转http://hi.baidu.com/xdyang1986/blog/item/4c92fed0727df62d9b5027bb.html自
- 成功移植UT6410的800*480的LCD驱动
- LCD驱动的移植
- 移植tiny210 的lcd驱动
- SylixOS的LCD驱动移植
- linux-2.6.26.5内核的 lcd驱动移植 lcd 触摸屏移植 tslib-1.4移植
- linux-2.6.26.5内核的 lcd驱动移植 lcd 触摸屏移植 tslib-1.4移植 (转)
- linux-2.6.26.5内核的 lcd驱动移植 lcd 触摸屏移植 tslib-1.4移植
- 基于S3C2410平台的LCD for Linux 2.6 驱动移植
- S3C2410 LCD驱动的移植(基于linux-2.6.15.4内核)
- linux2.6.24下lcd驱动移植的小结
- u-boot-2009.11在MINI2440上的移植 LCD驱动
- linux-2.6.35内核移植—LCD驱动的添加
- s3c2416 AT070TN83的LCD wince6.0驱动移植
- LCD驱动在OK2440开发板的移植
- linux2.6.22.6中针对s3c2410的LCD驱动移植
- s3c2416 AT070TN83的LCD wince6.0驱动移植
- linux-2.6.26.5内核的 lcd驱动移植…
- linux-2.6.26.5内核的 lcd驱动移植…
- Qt程序在运行的目标机上Gif等格式的图片无法显示问题
- Win7下安装OpenCV开发环境:Code::Blocks+MinGW+DX+OpenCV
- 使用Struts2验证框架实现输入校验
- JAVA中的I/0流实验(一)
- uva 10673 - Play with Floor and Ceil
- 成功移植UT6410的800*480的LCD驱动
- 考勤时间计算方法探讨
- 【orange】关于从软盘加载内核到内存的一点感悟
- zoj 1331
- 无知
- 类
- iPhone UI开发建议
- 平面多边形面积问题
- java.security.SecureRandom导致jetty、hadoop启动受阻问题