今天对LCD和一线触屏进行移植,翻阅各牛人,总结而来。按步骤可成功。

基于Tiny6410的LCD和一线触屏移植

一、LCD移植

1、vi arch/arm/plat-samsung/include/plat/map-base.h
第39行
增加
#define S3C_VA_LCD S3C_ADDR(0x01100000) /* LCD */

从友善的源码中将arch/arm/mach-s3c64xx/include/mach/regs-lcd.h拷贝过来

从友善的源码中将drivers/video/samsung整个文件夹拷贝过来

2、vi drivers/video/Kconfig

vi drivers/video/Kconfig
第2068行增加
source "drivers/video/samsung/Kconfig"

vi drivers/video/Makefile
120行增加
obj-$(CONFIG_FB_S3C_EXT) += samsung/

vi arch/arm/mach-s3c64xx/mach-mini6410.c
48行增加
#include <linux/delay.h>

136行mini6410_lcd_power_set函数里的内容改成
if (power) {
gpio_direction_output(S3C64XX_GPF(13), 1); //GPF13是USBpower用的,与lcd无关
gpio_direction_output(S3C64XX_GPF(15), 1); //GPF15是是真正的一线控制线连PWM1

/* fire nRESET on power up */
gpio_direction_output(S3C64XX_GPN(5), 0); //GPN5好像与lcd也无关,先copy吧
msleep(10);
gpio_direction_output(S3C64XX_GPN(5), 1);
msleep(1);
} else {
gpio_direction_output(S3C64XX_GPF(15), 0);
gpio_direction_output(S3C64XX_GPF(13), 0);
}
190行
增加
{
/* LCD support */
.virtual = (unsigned long)S3C_VA_LCD,
.pfn = __phys_to_pfn(S3C_PA_FB),
.length = SZ_16K,
.type = MT_DEVICE,
},
437行增加
gpio_request(S3C64XX_GPN(5), "LCD power");

gpio_request(S3C64XX_GPF(13), "LCD power");

去掉gpio_request(S3C64XX_GPE(0), "LCD power");

make menuconfig
Power management options --->
[ ] Power Management support 一定要去掉,不然会有
drivers/video/samsung/s3cfb_fimd4x.c:1440:2: error: implicit declaration of function

's3c6410_pm_do_save'的错误,郁闷了半天

<*> Support for frame buffer devices --->
< > Samsung S3C framebuffer support
<*> S3C Framebuffer Support (eXtended)
Select LCD Type (4.3 inch 480x272 TFT LCD) --->
<*> Advanced options for S3C Framebuffer
Select BPP(Bits Per Pixel) (16 BPP) --->
(4) Number of Framebuffers
[ ] Enable Virtual Screen (NEW)
[*] Enable Double Buffering
[ ] Backlight & LCD device support --->

Console display driver support --->
<*> Framebuffer Console support 这个也一定要选,不然会有
drivers/built-in.o:(.data+0x174): undefined reference to `soft_cursor'的错误,其中解决这些错误花了我不少时间。

[*] Bootup logo --->
[ ] Standard black and white Linux logo
[ ] Standard 16-color Linux logo
[*] Standard 224-color Linux logo
其他的默认就行

这时lcd的驱动其实已经移植好了,引导信息也正常,如
S3C_LCD clock got enabled :: 133.000 Mhz
LCD TYPE :: N43 will be initialized
Window[0] - FB1: map_video_memory: clear ff600000:0007f800
FB1: map_video_memory: dma=5d780000 cpu=ff600000 size=0007f800
Window[0] - FB2: map_video_memory: clear ff63fc00:0003fc00
FB2: map_video_memory: dma=5d7bfc00 cpu=ff63fc00 size=0003fc00
Console: switching to colour frame buffer device 60x34
fb0: s3cfb frame buffer device
Window[1] - FB1: map_video_memory: clear ff680000:0007f800
FB1: map_video_memory: dma=5cc00000 cpu=ff680000 size=0007f800
Window[1] - FB2: map_video_memory: clear ff6bfc00:0003fc00
FB2: map_video_memory: dma=5cc3fc00 cpu=ff6bfc00 size=0003fc00
fb1: s3cfb frame buffer device
Window[2] - FB1: map_video_memory: clear ff700000:0003fc00
FB1: map_video_memory: dma=5d740000 cpu=ff700000 size=0003fc00
fb2: s3cfb frame buffer device
Window[3] - FB1: map_video_memory: clear ff740000:0003fc00
FB1: map_video_memory: dma=5cc80000 cpu=ff740000 size=0003fc00
fb3: s3cfb frame buffer device

但lcd屏却没有反应,百思不得其解。后来终于发现了,过程明天在说
先做一线触摸的驱动

拷贝
arch/arm/mach-s3c64xx/dev-ts-mini6410.c
arch/arm/mach-s3c64xx/include/mach/ts.h
arch/arm/plat-samsung/include/plat/regs-adc.h
drivers/input/touchscreen/mini6410_1wire_host.c
drivers/input/touchscreen/mini6410-ts.c
drivers/input/touchscreen/ts-if.c
到相应目录

vi arch/arm/mach-s3c64xx/Makefile
末尾增加
obj-$(CONFIG_TOUCHSCREEN_MINI6410) += dev-ts-mini6410.o

vi drivers/input/touchscreen/Makefile
末尾加入
obj-$(CONFIG_TOUCHSCREEN_MINI6410) += mini6410-ts.o
obj-$(CONFIG_TOUCHSCREEN_1WIRE) += mini6410_1wire_host.o
obj-$(CONFIG_FB_S3C_EXT_TFT800480) += ts-if.o
obj-$(CONFIG_FB_S3C_EXT_TFT480272) += ts-if.o
obj-$(CONFIG_FB_S3C_EXT_X240320) += ts-if.o

vi drivers/input/touchscreen/Kconfig
190行左右加入
config TOUCHSCREEN_MINI6410
tristate "S3C touchscreen driver for Mini6410"
depends on ARCH_S3C2410 || ARCH_S3C64XX || ARCH_S5P64XX || ARCH_S5PC1XX
default y
help
Say Y here to enable the driver for the touchscreen on the
FriendlyARM Mini6410 development board.

If unsure, say N.

To compile this driver as a module, choose M here: the
module will be called mini6410-ts.

config TOUCHSCREEN_1WIRE
tristate "Mini6410 1-Wire host and Touch Screen Driver"
depends on MACH_MINI6410
help
Say Y here to enable the 1-Wire host and Touch Screen driver for
FriendlyARM Mini6410 development board.

If unsure, say N.

To compile this driver as a module, choose M here: the
module will be called mini6410_1wire_host.

vi arch/arm/mach-s3c64xx/mach-mini6410.c
44行 将#include <plat/ts.h>
改成#include <mach/ts.h>

320行将
static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
.delay = 10000,
.presc = 49,
.oversampling_shift = 2,
};
改成
static struct s3c_ts_mach_info s3c_ts_platform __initdata = {
.delay = 0xFFFF,
.presc = 0xFF,
.oversampling_shift = 2,
.resol_bit = 12,
.s3c_adc_con = ADC_TYPE_2,
};

436行将
s3c24xx_ts_set_platdata(&s3c_ts_platform);
改成 s3c_ts_set_platdata(&s3c_ts_platform);

vi arch/arm/plat-samsung/Makefile
60行
注释掉obj-$(CONFIG_SAMSUNG_DEV_TS) += dev-ts.o
不然会有multiple definition of `s3c_device_ts'的错误很奇怪,友善的源码CONFIG_SAMSUNG_DEV_TS=n,而我的源码出来后CONFIG_SAMSUNG_DEV_TS=y,还改不掉。

vi drivers/input/touchscreen/mini6410-ts.c
增加头文件#include<linux/sched.h> 奇怪的是友善的mini6410-ts.c

里没这个头文件也能找到需要的东西

Input device support --->
[*] Touchscreens --->
<*> S3C touchscreen driver for Mini6410
<*> Mini6410 1-Wire host and Touch Screen Driver

lcd好用了,开机出现了那只小企鹅,挂NFS后触摸屏也能用了

基于Tiny6410的LCD与一线触屏移植相关推荐

  1. 织女星开发板RISC-V核通过SPI协议驱动ARDUINO LCD模块(触屏)

    前言 之前写了一个通过SPI协议初始化LCD屏幕并显示字符串和图片的文章,这次再尝试一下触屏的功能. 准备工作 1,焊接织女星开发板J1,J2,J3,J4的双排母座,以便与LCD屏通信.前段时间免费申 ...

  2. 基于STM32F469I-DISCOVERY的触屏版中国象棋

    基于STM32F469I-discovery的触屏版中国象棋 项目代码已开源于github:基于STM32F469I-DISCOVERY的触屏版中国象棋 项目简介 中国象棋是中国棋文化,也是中华民族的 ...

  3. 基于mini2440的两种触屏中断程序(T35)

    稍微的整理一下,触摸屏的中断也就两种信号,INC_ADC和INC_TC,处理好这两个信号的发生关系,就能很轻易的对触摸进行操作. 1.其中的一种是2440test中自带的Touchpanel.c,但是 ...

  4. 基于ijkplayer的视频播放器,仿Bilibili客户端,集成沉浸式全屏、弹幕、触屏控制、视频源切换等功能

    该视频播放器基于Bilibili的开源项目ijkplayer做的,是在github上的demo基础上搭建了个播放界面,如果你之前有研究过这个demo代码,那你看这个库就非常简单了.至于还不知道ijkp ...

  5. 【基于物联网的智能草莓种植系统的设计与实现系列教程】7-树莓派触3.5寸控屏连接翻转与触屏校准 (课程设计、毕设项目、树莓派、yolov5)

    [基于物联网的智能草莓种植系统]项目3.5寸触控屏连接验证与相关问题解决 项目各章节跳转 树莓派环境说明 显示屏硬件连接 驱动获取与传输 驱动安装与调试 猜你需要 项目各章节跳转 可点击跳转到对应章节 ...

  6. 鸿合一体机触屏没反应怎么办_【干货】嵌入式工控一体机选择电容屏还是电阻屏?...

    随着触屏手机和工业触摸一体机在近几年里的不断主流化,触屏的概念已渐渐深入人心,但是你知道吗?我们的触屏是有分电阻屏和电容屏的,那你又知道电阻屏和电容屏有什么区别吗?你的手机又是什么屏的吗?下面我们就来 ...

  7. 手机qq2008触屏版_天猫精灵 CC10 电池版体验:只卖 799 元的平板电脑,比 iPad 更适合老人小孩...

    现阶段的触屏音箱功能上已经十分丰富,基本不需要再考虑有用无用.值不值的问题. 很多新的产品形态在火爆的时候,会有无数的声音质疑其用处,而当市场上争论的声音销声匿迹的时候,恰恰是它真正走进人们生活的那一 ...

  8. [Android] 触屏setOnTouchListener实现图片缩放、移动、绘制和添加水印

        前一篇文章讲述了Android实现图片Matrix矩阵类缩放.旋转.对比度.亮度.饱和度处理,但是真正的图片软件都是使用触屏实现图片缩放.移动.添加水印等功能,所以该篇文章主要通过setOnT ...

  9. Hammer.js移动端触屏框架的使用

    hammer.js是一个多点触摸手势库,能够为网页加入Tap.Double Tap.Swipe.Hold.Pinch.Drag等多点触摸事件,免去自己监听底层touchstart.touchmove. ...

  10. android 使用shell模拟触屏_Appium常用操作之「微信滑屏、触屏操作」

    坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 目录 一.滑屏操作 1.访问之后,马上就滑屏可以吗? 2.连续实现 2 次滑屏 3.代码 二.模拟触屏 ...

最新文章

  1. 螃蟹学PHP设计模式之解释器模式
  2. pyecharts学习(part4)--pyecharts饼图
  3. Jenkins配置与使用
  4. 天大校花,博士发Nature,30岁不到当耶鲁教授!
  5. Spring AOP技术(基于AspectJ)的XML开发
  6. 简介NoSqlOnSql在SQL上实现NOSQL
  7. 有了它,Java语法也可以变得甜甜的
  8. 桌面图标有蓝底怎么去掉?
  9. [生存志] 第48节 叔向忧羊舌
  10. python入门(三)--文件处理
  11. 【MySQL】函数提取字符串中的数字
  12. 码云上面优秀的java项目_秒建一个后台管理系统?用这5个开源免费的Java项目就够了...
  13. 论绝对式编码器是否需要执行回原点
  14. 别再说自己不会了!2021年教你增加拿到BAT等大厂offer几率,醍醐灌顶!
  15. CCS Uniflash烧写CC3200开发板的简易操作笔记
  16. 【美团】职级、薪酬、绩效全认知
  17. 抓取国家统计局网站上的最新县及县以上行政区划代码,并保存成json格式的文件
  18. Git实战技巧-比较不同分支之间的差异和代码的改动
  19. 看微软IE7.0更新的一家之言(转)
  20. html css div自适应屏幕宽度,高度

热门文章

  1. 七年级上册计算机工作计划,七年级上册班主任工作计划
  2. 南京、无锡、苏州三地部分it岗待遇简况
  3. 合同html样式,css 合同打印print--水印
  4. 使用Glide切换图片时闪动
  5. 时空数据挖掘一(城市计算)
  6. 统计学的Python实现-019:任意正态分布计算概率
  7. vue+barcode实现扫一扫功能
  8. python 线性插值处理_详解Python实现线性插值法
  9. 深圳中科智美3D精确数据化整形软件系统三维扫描模块
  10. 德·摩根定律的验证(De Morgan’s Laws)