WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(5)-TouchPanel驱动

2023-12-03 00:48

本文主要是介绍WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(5)-TouchPanel驱动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SMDK2410默认已经把TouchPanel的驱动实现了,在/PUBLIC/COMMON/OAK/CSP/ARM/SAMSUNG/S3C2410X/TOUCH/下,这个驱动不需要再进行修改.这里只介绍移植过程,具体的分析以后在写.

通过EBoot从PB把OS下载到内存中运行,然后会发现可以点击,但是坐标不对,我们需要进行触摸屏坐标的调整.
一.触摸屏坐标调整
1.在PB File-New Project or File,下添加一个新的空的WCE Application工程Touchadjust,然后在PB Projects目录下就可以看到新的工程了.
2.创建一个新的cpp文件touchadjust.cpp,添加代码为:

实际上就调用了一个函数TouchCalibrate(),运行这个函数屏幕会出现十字标志让你触摸进行坐标的调整.
编译时需要把StdAfx.h和pwinuser.h拷贝到该工程下.

3.重新生成系统镜像,下载到开发板运行,点击Target-Run Program选择touchadjust.exe运行就可以进行触摸屏坐标调整了.
或者在左边的命令行中运行:
Windows CE>s touchadjust
一样可以运行该程序.
4.调整好了,可以看到点击触摸屏位置都正确了,为了不用每次系统启动都要手动调整,我们需要把该坐标值保存到注册表中.
选择Tools-Remote Registry Editor,连上设备后可以看到系统里的注册表:
找到[HKEY_LOCAL_MACHINE/HARDWARE/DEVICEMAP/TOUCH/CalibrationData],将里面的坐标值复制下来,拷贝到BSP下的platform.reg文件中:
[HKEY_LOCAL_MACHINE/HARDWARE/DEVICEMAP/TOUCH]
  "MaxCalError"=dword:7
; portrait
  "CalibrationData"="480,636 866,128 92,131 90,1143 865,1135 "
; Landscape
;   "CalibrationData"="515,503 763,748 258,749 269,255 764,255 "
; @CESYSGEN ENDIF CE_MODULES_POINTER
5.重新Sysgen,以后每次启动坐标就正确了.

二.修改TouchPanel驱动的路径
这样的触摸屏驱动已经可以正常使用了,但是我想把驱动从CSP目录下复制到Platform的BSP目录下,这样可以进行修改调试,同时又不修改CSP下的代码.
1.将CSP下的Touch目录复制到/PLATFORM/GEC2410/SRC/COMMON/S3C2410X/TOUCH/
2.修改上层dir文件添加该目录
DIRS=/
 display/
 TOUCH

3./PUBLIC/COMMON/OAK/INC/touch.def到/PLATFORM/GEC2410/SRC/COMMON/S3C2410X/TOUCH/,并改名为s3c2410x_touch.def
4.修改source文件,将其编译为dll,原来的source文件只编译成lib,生成dll在/PUBLIC/COMMON/CESYSGEN/makefile中定义,我们把这两块内容都集中到现在的source文件

TARGETNAME=s3c2410x_touch
RELEASETYPE=PLATFORM
TARGETTYPE=DYNLINK

DLLENTRY=TouchPanelDllEntry

PREPROCESSDEFFILE=1
DEFFILE=s3c2410x_touch.def

INCLUDES=../inc

TARGETLIBS= /
    $(_COMMONSDKROOT)/lib/$(_CPUINDPATH)/coredll.lib

SOURCELIBS= /
 $(_COMMONOAKROOT)/lib/$(_CPUINDPATH)/tch_cal.lib /
 $(_COMMONOAKROOT)/lib/$(_CPUINDPATH)/tchmdd.lib /
 $(_COMMONOAKROOT)/lib/$(_CPUINDPATH)/ceddk.lib /

  
SOURCES=s3c2410x_touch.cpp
5.编译,你会发现错误:
BUILD: [01:0000000041:ERRORE] s3c2410x_touch.def : error LNK2001: unresolved external symbol TouchCreateEvent
BUILD: [01:0000000042:ERRORE] s3c2410x_touch.def : error LNK2001: unresolved external symbol TouchGetFocusWnd
BUILD: [01:0000000043:ERRORE] s3c2410x_touch.def : error LNK2001: unresolved external symbol TouchGetLastTouchFocusWnd
BUILD: [01:0000000044:ERRORE] s3c2410x_touch.def : error LNK2001: unresolved external symbol TouchGetQueuePtr
BUILD: [01:0000000045:ERRORE] s3c2410x_touch.def : error LNK2001: unresolved external symbol TouchGetValue
BUILD: [01:0000000046:ERRORE] s3c2410x_touch.def : error LNK2001: unresolved external symbol TouchRegisterWindow
BUILD: [01:0000000047:ERRORE] s3c2410x_touch.def : error LNK2001: unresolved external symbol TouchReset
BUILD: [01:0000000048:ERRORE] s3c2410x_touch.def : error LNK2001: unresolved external symbol TouchSetValue
BUILD: [01:0000000049:ERRORE] s3c2410x_touch.def : error LNK2001: unresolved external symbol TouchUnregisterWindow
原因是s3c2410x_touch.def里定义的CESYSGEN下的函数没有实现,但是在CSP编译时确没有错误.WCESHELLFE_MODULES_MSTRANSCRIBER或者SHELLW_MODULES_TRANSCRIBER都没有定义,为什么这里编译确认为其有效,一直没找到原因.
但是没有关系注释掉Touch这些函数名,因为实际并不会使用
LIBRARY  TOUCH

EXPORTS
 STDAPI(TouchPanelGetDeviceCaps, 8);
 STDAPI(TouchPanelEnable,4);
 STDAPI(TouchPanelDisable,0);
 STDAPI(TouchPanelSetMode, 8);
 STDAPI(TouchPanelReadCalibrationPoint, 8);
 STDAPI(TouchPanelReadCalibrationAbort, 0);
 STDAPI(TouchPanelSetCalibration, 20);
 STDAPI(TouchPanelCalibrateAPoint, 16);
 STDAPI(TouchPanelPowerHandler, 4);
; @CESYSGEN IF WCESHELLFE_MODULES_MSTRANSCRIBER || SHELLW_MODULES_TRANSCRIBER
; TouchReset
; TouchRegisterWindow
; TouchUnregisterWindow
; TouchSetValue
; TouchGetValue
; TouchCreateEvent
; TouchGetFocusWnd
; TouchGetLastTouchFocusWnd
; TouchGetQueuePtr
; @CESYSGEN ENDIF 
然后在编译就OK了.生成新的系统镜像可以发现使用了是新的touch.dll

这篇关于WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(5)-TouchPanel驱动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/447483

相关文章

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

开发板NFS挂载文件目录

文章目录 序NFS1. 安装 NFS 服务器和客户端在服务器上(NFS 服务器端)在客户端上(NFS 客户端) 2. 配置 NFS 服务器创建共享目录编辑 `/etc/exports` 文件启动 NFS 服务 3. 在客户端挂载 NFS 共享创建挂载点挂载 NFS 共享验证挂载 4. 设置开机自动挂载5. 解决权限问题 序 本节主要实现虚拟机(服务器)与开发板(客户端)通过N

驱动(RK3588S)第七课时:单节点设备树

目录 需求一、设备树的概念1、设备树的后缀名:2、设备树的语法格式3、设备树的属性(重要)4、设备树格式举例 二、设备树所用函数1、如何在内核层种获取设备树节点:2、从设备树上获取 gpio 口的属性3、获取节点上的属性只针对于字符串属性的4、函数读取 np 结点中的 propname 属性的值,并将读取到的 u32 类型的值保存在 out_value 指向的内存中,函数的返回值表示读取到的

驱动安装注册表指令

HKCR: HKEY_CLASSES_ROOT HKCU: HKEY_CURRENT_USER HKLM: HKEY_LOCAL_MACHINE HKU: HEKY_USER HER: 相对根键

UMDF驱动安装

VS2013 + WDF8.1,UMDF驱动选择User Mode Driver,不要选User Mode Driver 2.0,否则Win7安装有问题,如图 另外,在驱动安装时不要忘记WUDFUpdate_<主版本号><次版本号>.dll文件,具体文件名在INF中查找。此文件可在WDF的安装目录中找到。注意:在WDF的安装目录中会有3个WUDFUpdate_xxx.dll文件,x86,x6

安卓开发板_联发科MTK开发评估套件串口调试

串口调试 如果正在进行lk(little kernel ) 或内核开发,USB 串口适配器( USB 转串口 TTL 适配器的简称)对于检查系统启动日志非常有用,特别是在没有图形桌面显示的情况下。 1.选购适配器 常用的许多 USB 转串口的适配器,按芯片来分,有以下几种: CH340PL2303CP2104FT232 一般来说,采用 CH340 芯片的适配器,性能比较稳定,价

电脑驱动分类

电脑驱动程序(驱动程序)是操作系统与硬件设备之间的桥梁,用于使操作系统能够识别并与硬件设备进行通信。以下是常见的驱动分类: 1. 设备驱动程序 显示驱动程序:控制显卡和显示器的显示功能,负责图形渲染和屏幕显示。 示例:NVIDIA、AMD 显示驱动程序。打印机驱动程序:允许操作系统与打印机通信,控制打印任务。 示例:HP、Canon 打印机驱动程序。声卡驱动程序:管理音频输入和输出,与声卡硬件

RT-Thread(Nano版本)的快速移植(基于NUCLEO-F446RE)

目录 概述 1 RT-Thread 1.1 RT-Thread的版本  1.2 认识Nano版本 2 STM32F446U上移植RT-Thread  2.1 STM32Cube创建工程 2.2 移植RT-Thread 2.2.1 安装RT-Thread Packet  2.2.2 加载RT-Thread 2.2.3 匹配相关接口 2.2.3.1 初次编译代码  2.2.3.

麒麟系统安装GPU驱动

1.nvidia 1.1显卡驱动 本机显卡型号:nvidia rtx 3090 1.1.1下载驱动 打开 https://www.nvidia.cn/geforce/drivers/ 也可以直接使用下面这个地址下载 https://www.nvidia.com/download/driverResults.aspx/205464/en-us/ 1.1.3安装驱动 右击,