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了。