LCD驱动移植笔记

LCD 移植的那些坑-LCD屏幕配置常见的问题解决方案 在使用飞凌嵌入式开发板过程中,关于LCD屏幕配置有一些常见的问题 问题1,如何修改开机默认的屏幕尺寸? 全平台都可以通过uboot的选择菜单来选择默认的显示,对应配置方式可以参阅对应平台的应用手册。 i.MX6DL/i.MX6Q系列uboot已开源,可以通过直接修改uboot源码文件include/configs/mx6sabre_common.h(参考linux4.1.15内核版本) 如果是客... 阅读详情

LCD驱动程序往2.6.11内核
的移植总结
硬件环境:SBC-2410X开发板(CPU:S3C2410X)
内核版本:2.6.11.1
运行环境:Debian2.6.8
交叉编译环境:gcc-3.3.4-glibc-2.3.3
注:本驱动移植是基于s3c2400 framebuffer 的驱动。

一、从网上将Linux内核源代码下载到本机上,并将其解压:
#tar jxf linux-2.6.11.1.tar.bz2
二、打开内核顶层目录中的Makefile文件,这个文件中需要修改的内容包括以下两个方面。
(1)指定目标平台。
 移植前:
  ARCH      ?= $(SUBARCH)
 移植后:
 ARCH            :=arm
(2)指定交叉编译器。
  移植前:
 CROSS_COMPILE  ?=
 移植后:
 CROSS_COMPILE   :=/opt/crosstool/arm-s3c2410-linux-gnu/gcc-3.3.4-glibc-2.3.3/bin/arm-s3c2410-linux-gnu-
注:这里假设编译器就放在本机的那个目录下。
三、添加并修改驱动程序源代码,这涉及到以下几个方面。
(1)、将开发板配带的LCD驱动程序s3c2400fb.c、s3c2400fb.h源程序放到drivers/video/目录下,并修改名字为s3c2410fb.c/s3c2400fb.h。
#cp s3c2400fb.c . drivers/video/s3c2410fb.c
(2)、在s3c2410fb.c驱动程序里面添加:sbc_gpio_con_set()、sbc_gpio_pullup_set()、sbc_gpio_function_set()的声明以及实现代码用以替代2.4.18代码中的write_gpio_bit()、set_gpio_ctrl()函数,因为在2.4.18中这两个函数都是用指针的方式对CPU寄存器进行设置,而在2.6.11的驱动程序里面用了__raw_writel()的方式对寄存器设置进行了封装。
在驱动程序移植过程中由于是基于S3C2400的驱动,所以主要的修改工作就是根据所用开发板的硬件修改相应的寄存器的设置。
主要的修改有:s3c2410fb_mach_info结构,这个结果主要定义了所用显示屏的一些信息,如时钟、大小等;修改c2400fb_activate_var函数中关于寄存器的设置,这个函数涉及到了S3C2410 LCD控制器的有关设置,这些寄存器的设置要根据所用的屏幕(TFT/CSTN)来进行设置;修改s3c2400fb_set_controller_regs和s3c2400fb_lcd_init函数,这个函数涉及到了CPU与LCD的物理连接,要根据LCD与CPU的具体连接来设置各个CPIO寄存器。
注:具体修改详见驱动程序。
(3)、修改arch/arm/mach-s3c2410/s3c2410.c,在s3c2410_iodesc结构中添加:IODESC_ENT(LCD)
注:以上添加的语句就是为了将CPU的LCD寄存器的物理地址映射到所指向的虚拟地址上去,上面的结构还定义了虚拟地址所占用的区间,并指定了该区间所指向的域(的属性)。
(4)、修改drivers/video目录下的Kconfig文件,在最后添加如下内容:
config FB_S3C2410
 tristate "S3C2410 LCD support"
 depends on FB && ARM && ARCH_S3C2410
 help
   This is a framebuffer device for the S3C2410 LCD Controller.   If you plan to use the LCD display with your S3C2410 system, say   Y here.
(5)、修改drivers/video目录下的Makefile文件,在最后添加如下内容:
obj-$(CONFIG_FB_S3C2410)        += s3c2410fb.o cfbfillrect.o cfbcopyarea.o cfbimgblt.o
四、配置、编译内核。在内核顶层目录当中键入:
  #make smdk2410_defconfig
由于2.6的内核默认就支持了S3C2410,所以就有一个默认的内核配置文件。里面只是包括了一个简单的配置,要使LCD驱动编译进内核,还要进行手工配置。
#make menuconfig

  Graphics support  --->    
       [*] Support for frame buffer devices
     [*] S3C2410 LCD support(BASED ON S3C2400)
将刚才添加的LCD驱动程序静态添加到内核当中。
最后进行内核编译。
#make
然后将镜像下载到开发板中去.
而且在LCD显示屏上的左上角会显示一个小企鹅的图标。查看设备文件。
[root@fa /]# ls -al /dev/fb/0
由此可见,LCD已经成功驱动,要测试驱动程序可以用 自己写(见附件test.c)在显示屏上显示任意颜色的线条。
问题解析
在LCD驱动程序移植的过程中,出现的问题主要就是由于寄存器设置不正确而造成的问题。
在对驱动程序进行了函数替代以及改写了一些函数之后,将驱动程序编译进内核里,内核可以正确的编译连接并生成镜像文件,把镜像文件下载到开发板上,可以看到drivers/video目录下看到系统注册的一个设备文件,但是在系统启动之后就是无法看见小企鹅的图标并且用测试程序去测试,LCD屏幕上也无法显示任何有色的线条。通过多次查阅源代码,才发现原来就是CPU有关LCD的8个寄存器的设置以及对GPC和GPD寄存器的设置不正确。后来对这几个寄存器进行了正确的设置就可以在系统启动之后看到小企鹅的图标。由于屏幕的背景是蓝色的,所以该图标的颜色显示不正确,但是用自己写的测试程序去画设置好的颜色的线条,在屏幕上总能正确的显示出来,所以至于这个屏幕的颜色问题至今尚未解决。

基于imx6ull的LCD驱动移植 移植LCD驱动的同时也要触摸屏的驱动;对于LCD驱动的移植LCD的驱动在内核中很完善,驱动程序不用大改,只需要修改设备树,也就是修改硬件资源,根据具体的LCD屏幕修改参数。步骤为:确定所用LCD屏幕的分辨率,找到LCD厂家的设备树文件源码,可以在dts中直接搜索display-timings或者时序参数关键词找到对应的LCD详细时序和信号极性,替换到自己的设备树文件对应位置中。因为有转接板的原因,引脚的设置就不改了,由转接板完成引脚对应工作,但要记得检查LCD复位引脚。 阅读详情

相关推荐

AM335x(TQ335x)学习笔记——LCD驱动移植

TI的LCD控制器驱动是非常完善的,共通的地方已经由驱动封装好了,与按键一样,我们可以通过DTS配置完成LCD的显示。下面,我们来讨论下使用DTS方式配置内核完成LCD驱动的思路。(1)初步分析由于TQ335x使用的芯片是AM335x,故仍然可以参考am335x-evm.dts。当然,am335x-evmsk.dts、am335x-beagbone.dts都可以。本文以am335x-evm.dts

技术联盟 2771

【TINY4412】LINUX移植笔记:(27)设备树LCD驱动

【TINY4412】LINUX移植笔记:(27)设备树 LCD驱动 宿主机 : 虚拟机 Ubuntu 16.04 LTS / X64 目标板[底板]: Tiny4412SDK - 1506 目标板[核心板]: Tiny4412 - 1412 LINUX内核: 4.12.0 交叉编译器: arm-none-linux-gn

大水猫 3174

Excel聚光灯效果终极指南:VBA代码实现与条件格式避坑技巧

本文详细解析了Excel聚光灯效果的实现方法,包括VBA代码优化与条件格式的避坑技巧。通过模块化编程和性能优化技术,帮助用户高效处理大型数据表格,实现自定义高亮显示,提升数据分析和报表阅读体验。

v6b7n8m9q0的博客 456

【TINY4412】LINUX移植笔记:(20)设备树LCD背光驱动

【TINY4412】LINUX移植笔记:(20)设备树 LCD背光驱动 宿主机 : 虚拟机 Ubuntu 16.04 LTS / X64 目标板[底板]: Tiny4412SDK - 1506 目标板[核心板]: Tiny4412 - 1412 LINUX内核: 4.12.0 交叉编译器: arm-none-linux

大水猫 2123

手把手教你用IN-Sight智能相机实现双向TCP/IP通讯(附网络调试助手推荐)

本文详细解析了IN-Sight智能相机实现双向TCP/IP通讯的完整流程。通过将相机同时配置为TCP服务器和客户端,构建了与上位机(如PLC、MES)稳定可靠的数据交换通道。文章深入剖析了发送(TCPDevice)与接收(ReadDevice)通道的独立配置、关键参数设置(如结束符CR+LF)、高效调试工具选择以及实战避坑指南,帮助工程师快速掌握这一构建柔性产线数据节点的核心技术。

qsc9012345的博客 671

QML实现ListView的拖动排序

现有一种需求,就是用鼠标拖动某项,动态去改变某一项在ListView中显示的顺序位置,经过研究及实践实战,实现方式的核心代码如下: import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Window 2.2 import QtQuick.Dialogs 1.2 Rectangle { width: 800 ...

草上爬的博客 7563

移植驱动到内核学习笔记3-----LCD及输入系统

1、把驱动程序放到服务器上,修改Makefile并进行编译 修改Makefile里面的内核目录 进行编译 2、编译出现错误并解决 没有头文件就把它注释掉 3、把生成的驱动拷贝到网络文件系统 配置内核吧原来的LCD驱动程序去掉 把s3c2410  LCD framebuffer support设置为M 最后编译内核 4

qingkongyeyue的博客 1966

【Bug已解决】Codex CLI 报 stream disconnected before completion 解决方案

方案适用场景推荐指数更新根证书库社区验证的最常见根因⭐⭐⭐⭐⭐检查系统时间虚拟机/容器等特殊运行环境⭐⭐⭐⭐核对 base_url 配置排除证书问题后的下一步排查⭐⭐⭐⭐更换网络环境测试怀疑本地网络设备存在干扰⭐⭐⭐升级到最新版本已知版本缺陷的场景⭐⭐⭐⭐报错虽然表现形式很像网络连接问题,但社区排查的多个真实案例表明,很大一部分情况的根因其实是本机系统的 TLS 证书信任链异常或系统时间不准确,而不是单纯的网络质量问题。优先检查并更新系统根证书库,这是社区验证过的高频根因。

一键难忘的博客 8016

【TINY4412】LINUX移植笔记:(22)设备树LCD按键驱动

【TINY4412】LINUX移植笔记:(22)设备树 LCD按键驱动 宿主机 : 虚拟机 Ubuntu 16.04 LTS / X64 目标板[底板]: Tiny4412SDK - 1506 目标板[核心板]: Tiny4412 - 1412 LINUX内核: 4.12.0 交叉编译器: arm-none-linux

大水猫 843

手把手教你学Simulink--基于Simulink的机械臂工业装配任务仿真建模

特点高精度要求:装配过程通常需要非常高的位置精度。多步骤操作:一个完整的装配任务可能包含多个连续的子任务,如抓取零件、移动到特定位置、装配等。动态环境:工作环境可能是动态变化的,例如其他机器人或人员在同一空间内工作。挑战复杂性管理:需要处理复杂的运动学和动力学问题,以及可能的碰撞避免。实时性:某些应用场景下需要快速响应以保证生产效率。集成度:需要与其他系统(如传感器、PLC等)无缝集成。首先明确要模拟的装配任务内容。零件的位置和尺寸。装配顺序。

MHD0815的博客 239

Debezium报错处理系列之第112篇:Cannot replicate because the master purged required binary logs. Replicate the

Debezium报错处理系列之第112篇:Cannot replicate because the master purged required binary logs.

zhengzaifeidelushang的博客 726

【TINY4412】LINUX移植笔记:(23)设备树LCD触摸屏驱动

【TINY4412】LINUX移植笔记:(23)设备树 LCD触摸屏驱动 宿主机 : 虚拟机 Ubuntu 16.04 LTS / X64 目标板[底板]: Tiny4412SDK - 1506 目标板[核心板]: Tiny4412 - 1412 LINUX内核: 4.12.0 交叉编译器: arm-none-linu

大水猫 4419

如何提高电路的抗干扰能力

本内容详细介绍了电源传导干扰处理,包括滤波、Feedthrough电容器、磁环、磁珠、屏蔽的使用与选型,EMC电磁兼容测试项目简介与要求,单片机与电源抗干扰处理等。

让你爱上电路设计 8596

AM335x(TQ335x)学习笔记——LCD驱动移植 分类: TI-...

TI的LCD控制器驱动是非常完善的,共通的地方已经由驱动封装好了,与按键一样,我们可以通过DTS配置完成LCD的显示。下面,我们来讨论下使用DTS方式配置内核完成LCD驱动的思路。(1)初步分析由于TQ335x使用的芯片是AM335x,故仍然可以参考am335x-evm.dts。当然,am335x-evmsk.dts、am335x-beagbone.dts都可以。本文以am335x-...

weixin_30507269的博客 222

FFDNet-pytorch版本代码训练教程

该文章为FFDNet-pytorch版本代码训练教程,抓紧订阅学习!尽早入门发论文哦!

假技术Po主 1506

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Linux驱动开发:uboot移植流程

Linux系统启动的第一个关键程序bootloader,也就是说芯片上电后先运行一段bootloader程序。bootloader 和 Linux 内核的关系 就跟 PC 上的 BIOS 和 Windows 的关系一样,bootloader 就相当于 BIOS。所以Linux 系统移植第一步就需要进行bootloader的移植,现有的bootloader有很多,比如:U-Boot、vivi、RedBoot 等,其中以 U-Boot 使用最为广泛。内部有个以太网MAC外设,也就是ENET,需要外接一个PHY。

指尖动听知识库 361

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

RT-Thread 学习笔记(十一)--- 开启基于RTGUI的LCD显示功能(1)<LCD驱动接口移植>

软件环境:Win7,Keil MDK 4.72a, IAR EWARM 7.2, GCC 4.2,Python 2.7 ,SCons 2.3.2 硬件环境:Armfly STM32F103ZE-EK v3.0开发板 参考文章:RT-Thread编程指南 RT-Thread_1.2.0+lwip+rtgui0.8.0 移植心得 RT-Thread RTOS组件:RTGUI

aping_cs_dn的专栏 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

MTK功能机驱动及调试相关资源集

MTK功能机驱动及调试相关资源集 去发现同类优质开源项目:https://gitcode.com/ 本资源库提供了MTK功能机的驱动与调试相关资源,内容涵盖了从DrvGen工具的使用到MTK屏移植调试的各个方面。以下是资源集的详细内容介绍: 资源列表 DrvGen工具使用方法:介绍DrvGen工具在60平台camera中的应用及操作流程。 Flash Tool烧写方法:详细描述了使用Fla...

gitblog_06743的博客 882

【亲测免费】 STM32F103学习笔记(4)——LCD段码屏HT1621使用

STM32F103学习笔记(4)——LCD段码屏HT1621使用 【下载地址】STM32F103学习笔记4LCD段码屏HT1621使用 本资源文件是《STM32F103学习笔记(4)——LCD段码屏HT1621使用》的相关内容。该笔记详细介绍了如何在STM32F103微控制器上使用HT1621驱动LCD段码屏。HT162...

gitblog_06582的博客 620

LCD的移植筆記(轉)

craig 发表于 2007-8-15 11:05 LCD驱动移植笔记(转) LCD驱动程序往2.6.11内核的移植总结硬件环境:SBC-2410X开发板(CPU:S3C2410X)内核版本:2.6.11.1 运行环境:Debian2.6.8 交叉编译环境:gcc-3.3.4-glibc-2.3.3 注:本驱动移植是基于s3c2400 framebuffer 的驱动。 一、从网上将Linux内核源...

weixin_34391854的博客 116

【亲测免费】 HT1622 LCD驱动芯片应用程序及应用笔记

HT1622 LCD驱动芯片应用程序及应用笔记 去发现同类优质开源项目:https://gitcode.com/ 本仓库提供了一个关于HT1622 LCD驱动芯片的应用程序及应用笔记资源文件。该资源文件包含了两个实例程序和一个通用程序,这些程序基于NXP芯片MC9S08DZ60进行配置。对于使用其他MCU的用户,只需进行必要的基础配置即可。相信这些资源对初次使用HT1622芯片的用户会有很大的帮助...

gitblog_09732的博客 584

基于mini2440的ucgui图形库移植

这些天学习了LCD屏的使用,主要是搞明白各驱动函数的作用,花了一整天的功夫实现了mini2440上裸奔ucgui,现在还有不少东西不理解,等过些天理解更加透彻了再对整个移植过程做个小结。 很好的两篇参考文档,耐心照着步骤来。 http://blog.chinaunix.net/link.php?url=http://blog.sina.com.cn%2Fs%2Fblog_4d4fb33

aceshow的专栏 697
上一篇: cs8900a驱动移植笔记
下一篇: devfs介绍
NetGeek
博客等级 码龄22年 15粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值