mini2440内核驱动LCD(TD35)彩屏程序移植

注:本人是第一次发表博客,难免会存在一些语言上的错误和技术上的错误,还请各位前辈批评指正,谢谢!

我的QQ是1345864482 邮箱是1345864482@qq.com,有什么批评指正的请发送至我的邮箱,谢谢。

本篇博客的技术支持来源于成都囯嵌嵌入式培训中心的视频指导,以及友善之臂的mini2440内核代码。

提醒:在修改内核代码时,不要删除源代码,最好是注释掉。在旁边修改

正文:

一、在移植LCD驱动时,我们所要做的就是对硬件的配置,下面成都囯嵌嵌入式培训中心谢老师在视频中所分析的流

程图可知,我们移植工作所要做的事情只有两个环节,

1、5设置引脚类型,

2、7注册帧缓存中的设置LCD控制器。

配置硬件我们还是根据裸机部分的代码进行配置,在裸机部分中,我们实现了LCD显示一张小企鹅的图片,证明我们

裸机部分的代码参数配置是正确的,所以,我们做Linux下的LCD驱动的时候直接就可以使用,

第一步、通过书本图标找到我们的s3c2410fb_init_registers,进入函数以后,我们找到如下部分函数

 

第二步、看modify_gpio()函数可知,这就是对LCD引脚进行配置的函数,后面的mach_info->gpcup,  mach_info->gpcup_mask

就是需要配置的参数,于是,我们通过搜索一下gpcup,

 

第三步、点击最左边的红色按钮跳转到该处,根据裸机的参数,我们将引脚配置成

 

二、引脚配置好了以后,根据流程图,我们接下来配置的是LCD控制器,

第一步、我们找到s3c2410fb_activate_var函数,

 

我们在这个函数中我们关心两个地方,一个是

1、clkdiv = DIV_ROUND_UP(s3c2410fb_calc_pixclk(fbi, var->pixclock), 2);

2、fbi->regs.lcdcon1 |=  S3C2410_LCDCON1_CLKVAL(clkdiv);

1是计算LCD时钟,2是设置时钟,这个地方暂且不用管,在测试中,也可以按照裸机的代码直接设置成6

fbi->regs.lcdcon1 |=  S3C2410_LCDCON1_CLKVAL(6);

第二步、我们继续配置regs.lcdcon1、regs.lcdcon2、regs.lcdcon3 、regs.lcdcon4、 regs.lcdcon5.在这里,我们需要找

到函数s3c2410fb_calculate_tft_lcd_regs函数,进入函数以后我们看到

 

bits_per_pixel这个参数其实就是我们的bpp的值,我们选用的是16为真彩,所以我们关注case 16:  在这个地方的

regs->lcdcon5我们可以按照他内核的参数配置,也可以按照我们裸机的参数直接进行配置

regs->lcdcon5 = (1<<11) | (1<<8) | (1<<9); (我开始使用原先的配置不能正常显示,花花花的刷,改用这个就显示友善之臂的小企鹅了)

往下看,我们看到的

 

看到这,有些同学可能会问在裸机中我们需要配置VSPW  VBPD  LINEVAL 等怎么都没有需要配置。仔细一看

S3C2410_LCDCON2_VBPD(var->upper_margin - 1)这就是在配置这些东西了,

第三步、我们找到mach-mini2440.c文件,找到

 

再点击LCD _UPPER_MARGIN按一下跳转按钮调到宏定义的地方,由于我的板子是TD35的tft彩屏,所以找到

 

现在开始进行参数的配置了,上面是我按照裸机配置过得参数,其他参数或许也能正确,

CONFIG_FB_S3C2410_T240320关于括号中的这个宏,有的同学显示的是黑色,点击也找不到对应的地方,这是你可以自己

将宏添加进去,先找一下上下哪个宏是红色的,然后双击该宏跳转过去,在下一行添加即可。

如我的上面显示CONFIG_FB_S3C2410_X240320是红色的,跳转过去以后,

于是我就在下面加了这样一行宏定义,

三、配置好了这些参数以后,我们还需要配置s3c2410fb_set_lcdaddr()的帧缓冲地址,按下跳转跳到该函数,

由于裸机部分我们已经配置过,我们直接就可以把配置的参数直接拷贝过来,但是你要注意的是,我们的

((U32)LCDBUFFER不再是这个了,而是变成了info->fix.smem_start,修改后的函数如下

 

配置好了以后移植就算基本完成了,在这里还需要做一件事,就是需要保存(最好是一步一步的保存,

当然在修改内核时,最好把源代码中的信息注释,而不是删除),在保存的时候会出现一个警告说是

不能修改之类的,这是权限问题,这是你就要对照所在的文件夹通过Linux系统进入,将其改为777

chmod 777 –R ./ 这条指令就可以将该文件夹的文件改为可读可写可执行了。

配置已完成,接下来在Linux下进行编译内核,然后下载到开发板过一会就能出现友善之臂的logo了。

posted @ 2016-05-16 13:42  lxping0826  阅读(1737)  评论(0编辑  收藏  举报