一、修改注册表校正触摸笔...2
二、屏蔽鼠标...3
三、LCD关屏,背光注册表值...3
四、kitl环境...3
五、按键...6
六、开机logo.6
七、wince6.0开发环境搭建...7
八、应用程序连接不上开发板...8
九、wince中查看驱动信息...8
十、WINCE应用程序开发流程...9
十一、 YC5.6寸屏配置参数...29
十二、处理触摸屏抖动的一些方法...30
十三、YC8寸屏配置参数...30
十四、开机运行自己的程序...32
一、修改注册表校正触摸笔
1、 在开发板上点击“控制面板à笔针à校准选项à再校准”。
2、 在开发板上找到注册表[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH]记录下CalibrationData中的值。
7寸屏上是“2097,2109556,687 516, 3526 3645,3583 3593,781”
;8''
"CalibrationData"="2122,20393163,2767 3122,1287 1083,1293 1092,2754"
;8''
#define TSP_ADC_DELAY (4000) // 40000,default:10000
#define TSP_SAMPLE_NUM (20) //default:8
"CalibrationData"="2094,19852985,2627 3000,1298 1169,1338 1164,2669"
"CalibrationData"="2160,2054 3018,2642 3020,14121347,1479 1306,2667"
"CalibrationData"="2077,20393129,2676 3091,1378 1036,1400 1032,2678"
3、 在platform.reg中找到
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH]
"DriverName"="touch_1wire.dll"
"MaxCalError"=dword:7
;"CalibrationData"="2007,20633398,525 581,526 592,3543 3422,3567"
"CalibrationData"="2007,20633398,525 581,526 592,3543 3422,3567"
将CalibrationData中的值换成开发板上经过校验的值(第二步中已经记录下来了)。
4、 使用makeimg重新生成NK并烧写系统。
经过以上操作以后每次烧写的系统都是经过校准的了。
二、屏蔽鼠标
1、屏蔽鼠标可以在程序里实现ShowCursor(SW_HIDE);//隐藏鼠标
2、也可在定制系统的时候找到Core OSàCEBASEàShell and User InterfaceàUser InterfaceàGestureàMouse取消前面的选择即可。
三、LCD关屏,背光注册表值
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\LCD]
"Prefix"="LCD"
"Dll"="LCD.dll"
"Index"=dword:1
"Order"="200"
[HKEY_CURRENT_USER\ControlPanel\Backlight]
"OnOff"=dword:00000001
"BatteryBrightness"=dword:00000010
"ACBrightness"=dword:00000010
"ACTimeoutUnchecked"=dword:00000000 ;Temporary store ACTimeout
"BatteryTimeout"=dword:78 ;unit is sec
"BacklightOnTap"=dword:1
"ACTimeout"=dword:258
"ACBacklightOnTap"=dword:00000001
"BatteryTimeoutUnchecked"=dword:00000000 ;Temporary storeBatteryTimeout
"ExtOnOff"=dword:00000001
四、kitl环境
1、SMDK6410.bat
set BSP_KITL=USBSERIAL
set BSP_NOUSBFN=1
2、kitl.c
if((pArgs->flags &OAL_KITL_FLAGS_ENABLED) == 0)
{
// RETAILMSG(1,(TEXT("KITL was Disabled from EBOOT !!\r\nPlease setKITL Configuration in EBoot !!\r\n")));
// return FALSE;
}
不返回,开启kitl
3、kitl.cfg
#if defined(KITL_SERIAL_UART0)
//#define KITL_SERIAL
//#define UART_KITL_IOBASE (S3C6410_BASE_REG_PA_UART0)
屏蔽以上两句,不用串口0作为kitl,使用usb
增加下面一句,使用usb
#define KITL_USBSERIAL // Add by MySelf
4、Kitlusbser.c
强制设定为DeviceMode
/* if (ucMode == INT_DEV_MODE)
{
OTGDEV_SetSoftDisconnect();
delayLoop(10);
OTGDEV_ClearSoftDisconnect();
OTGDEV_InitDevice();
}
else
{
EdbgOutputDebugString("Error : Current Mode is Host\n");
return;
}*/
ucMode= INT_DEV_MODE; //强制设定为从模式
if(ucMode ==INT_DEV_MODE)
{
OTGDEV_SetSoftDisconnect();
delayLoop(10);
OTGDEV_ClearSoftDisconnect();
OTGDEV_InitDevice();
}
5、打开wince6 工程—》property---》Build Options做如下选择
6、打开Target---》Connectivity Options 做如下配置
7、编译内核下载到核心板运行
五、按键
友善6410提供的wince6.0的BSP中关于按键的驱动为userkey。该驱动能识别用户按下按键的动作,在wince中使用的时候可以在一个线程(该线程随应用程序同时启动和关闭)中检测用户按键按下的动作,然后通过keybd_event函数执行响应的功能,如:keybd_event(VK_LEFT,0,0,0);就实现了左方向键的功能,该函数对当前活动窗口有效。
六、开机logo
Tiny6410 7寸屏支持24位位图,256色大小为800 X 480的BMP图片。
七、wince6.0开发环境搭建
Windows CE6.0开发环境需要安装的软件比较多、比较大,而且有着严格的安装顺序要求,一旦其中某一个环节出错,都会导致软件运行出现故障,为确保安装顺利,请仔细阅读本文,按照步骤一步一步进行安装。
1. 所需安装软件
Visual Studio 2005
Visual Studio 2005 ServicePack 1
MSDN(应用开发帮助)
Windows Embedded CE6.0
Windows Embedded CE 6.0 Platform BuilderService Pack 1
WINCE6.0 R2
SDK
Mini6410-WinCE6-Suite
2. 所用磁盘空间
在安装之前,请检查电脑的磁盘空间,VS2005和Windows Embedded CE6.0均是比较大的软件,要占硬盘好10G多的空间,建议不要装在C盘,但是我装WindowsEmbedded CE6.0的时候,发现不能更改安装路径,没办法,只能把Windows Embedded CE6.0装在C盘。
安装程序所用磁盘空间
序号 |
软件名称 |
占用磁盘空间(G) |
1 |
Visual Studio 2005 |
1.86 |
2 |
Visual Studio 2005 sp1 |
-- |
3 |
MSDN |
0.93 |
4 |
Windows Embedded CE6.0 |
8.3 |
5 |
Windows Embedded CE6.0 SP1 |
0.35 |
6 |
Windows Embedded CE6.0 R2 |
1 |
Visual Studio 2005 sp1的安装源程序大小是430M,安装后具体大小不清楚。
其余几项占用磁盘空间比较小,在此就不一一说明了。
3 安装顺序
3.1 安装VisualStudio 2005
最好选择自定义安装方式,把不用的一些组件都删掉,这样会节省不少的磁盘空间。WINCE6.0的Platform Builder不像WINCE5.0是独立的,而是作为VS2005的插件,以后建立和定制OS、编译调试全部在VS2005里完成。
3.2安装Visual Studio 2005 Service Pack 1
3.3安装MSDN
MSDN 的全称是 MicrosoftDeveloper Network。这是微软公司面向软件开发者的一种信息服务。MSDN 实际上是一个以 Visual Studio 和 Windows 平台为核心整合的开发虚拟社区,包括技术文档、在线电子教程、网络虚拟实验室、微软产品下载(几乎全部的操作系统、服务器程序、应用程序和开发程序的正式版和测试版,还包括各种驱动程序开发包和软件开发包)、Blog、BBS、MSDNWebCast、与 CMP 合作的 MSDN 杂志等等
3.4安装Windows Embedded CE6.0
直接双击Windows Embedded CE6.0.msi进行安装。在选择CPU类型时,根据您目标硬件平台来选择,考虑节省磁盘空间,建议只选ARMV4I和X86,这样可以节省不少的磁盘空间。安装时需要输入产品序列号。
Windows Embedded CE6.0 (plug-in for Visual Studio 2005):
H8RQR-MMKRP-XFRFC-9HKGJ-82R6J,网上很多人说是正版的,我也用的是这个。
可在http://www.microsoft.com/windows/embedded/eval/trial.mspx网站上下载一套完整的180天免费试用版Windows Embedded CE 6.0。
3.5安装Windows Embedded CE 6.0 Platform Builder Service Pack 1
直接双击Windows Embedded CE6.0 Platform Builder Service Pack 1.msi进行安装。
3.6安装WINCE6.0R2
八、应用程序连接不上开发板
(1)关掉VS2005。
(2)在C:\Documentsand Settings\yourname\Local Settings\Application Data\Microsoft\CoreCon
有个叫1.0的文件夹。删掉
(3)重启VS2005
九、wince中查看驱动信息
在wince中查看驱动信息方法:PB的Build window 中输入dumpbin/exports XXX.dll
十、WINCE应用程序开发流程
1概述
文档结构
该文档主要是运用VS2005(VisualStudio 2005)软件创建一个wince6.0内核(OSDesign),并详述创建流程;在生成wince6.0内核的基础上再导出相应的SDK(软件开发工具);然后安装SDK,在安装SDK的VS2005的环境中建立应用程序,编译应用程序。
在已建立的WINCE6.0(OS Design)内核基础上,我们还需添加组件来完善WINCE6.0(OS Design)内核,然后我们将导出的SDK的库就丰富,因为选择的组件越多,将来生成的SDK库就越多,但选择的组件越多会影响系统性能。
下面就是在添加组件:
第一步:首先用VS2005打开WINCE6.0(OS Design)内核的工程文件如下图:
会弹出相应的组件信息:如下图
然后点开Core OS选项:如下图
勾选上Core OS---->CEBASE--->Application-EndUser-àActiveSync和CAB FileInstaller 这两个主要是同步组件和安装组件
接着在Core OS---->CEBASE-àApplicationsand Services Development勾选下面的组件:如下图
接着在Core OS---->CEBASE-àCommunicationservices and Networking-----àNetworking-General勾选下面组件:
接着在Core OS---->CEBASE-àCommunicationservices and Networking-----àNetworking-Local Area Network勾选下面的组件:
接着在Core OS---->CEBASE-àCommunicationservices and Networking-----àNetworking-Wide Area Network(WAN) 如下图:
接着在Core OS---->CEBASE-àCoreServices--à下,勾选下面的组件,如下图:
接着在Core OS---->CEBASE-àFileSystem and Data Store下,勾选下面的组件,如下图:
接着在Core OS---->CEBASE-àInternetClient Services下,勾选下面的组件,如下图:
接着在Core OS---->CEBASE-àShelland User Interface下,勾选下面的组件,如下图:
接着在Device Driver--àUSB Function下,勾选下面的组件,如下图:
接着在Third Party---àBSP----àAT91SAM9261EK_BIN----àDeviceDrivers下,勾选下面的组件,如下图:
接着在ThirdParty---àBSP----àAT91SAM9261EK_BIN----àStorageDrivers
下,勾选下面的组件,如下图
然后点击Solutions Explorer 如下图:
然后编译该OS工程, 如下图:
编译以后就可以编译SDK,点击SDK图标,然后右击,如下图:
然后进行相关的设置 如下图:
最后点击确定
然后便可以编译生成SDK了
下面就是安装SDK,在安装SDK时请关闭VS2005软件。
找到相应的AT9261SDK_V004.msi文件,然后直接安装
等待安装完成,然后打开VS2005进行检查,检查方式为:在VS2005运行“Tools“菜单上的”Connect to Device”命令,确认在“Connect to Device”对话框的“Device”窗口列表中是否有”AT9261SDK_V004”一项,如果有,则说明SDK安装ok。
下面介绍的便是如何建立应用程序
首先打开VS2005软件,然后新建 如下图:
然后点击OK
设置相关的设置,如下图:
接着选择相应的平台,如下图
接着选择对话框如下图:
然后单击Finish,然后就跟开发一般的软件就可以写代码,然后编完代码后编译生成 .EXE文件,最后通过ActiveSync部署到板子上运行.(所以要装ActiveSync软件,在MCUZONE提供F:\AT91SAM9261\AT91SAM9261\配套软件\ActiveSyn文件下)
十一、 YC5.6寸屏配置参数
#elifdefined(LCD_T56)
#defineLCD_WIDTH 640
#defineLCD_HEIGHT 480
#defineLCD_VBPD_VALUE 11
#defineLCD_VFPD_VALUE 32
#defineLCD_VSPW_VALUE 2
#defineLCD_HBPD_VALUE 134
#defineLCD_HFPD_VALUE 16
#defineLCD_HSPW_VALUE 10
//#defineLCD_VBPD_VALUE /*11*/((33-1)&0xff)
//#defineLCD_VFPD_VALUE /*32*/((10-1)&0xff)
//#defineLCD_VSPW_VALUE /*2*/((2-1) &0x3f)
//#defineLCD_HBPD_VALUE /*134*/((48-1)&0x7f)
//#defineLCD_HFPD_VALUE /*16*/((16-1)&0xff)
//#defineLCD_HSPW_VALUE /*10*/((96-1)&0xff)
#defineLCD_RGB_OUT_MODE /*DISP_24BIT_RGB888_P*/DISP_16BIT_RGB565_P
#defineLCD_VCLK_POLARITY IVCLK_FALL_EDGE
#defineLCD_HSYNC_POLARITY IHSYNC_LOW_ACTIVE
#defineLCD_VSYNC_POLARITY IVSYNC_LOW_ACTIVE
#defineLCD_VDEN_POLARITY IVDEN_HIGH_ACTIVE
#defineLCD_PNR_MODE PNRMODE_RGB_P
#defineLCD_VCLK_SOURCE CLKSEL_F_LCDCLK
#defineLCD_VCLK_DIRECTION CLKDIR_DIVIDED
#defineLCD_FRAME_RATE 53 //default:80
#defineLCD_TFT_CLKVAL 5 //default:4
屏幕校准值"CalibrationData"="2115,2033 1313,2921 2918,29152920,1159 1305,1171 "
十二、处理触摸屏抖动的一些方法
我使用的是tiny6410。本来触摸屏用的是他们公司的一线触摸,后来换了屏使用的是ADC触摸驱动,发现有抖动。经过对touch驱动一些修改消除了抖动。下面是修改的具体内容。
1、 增加单位时间内的采样点数,#define TSP_SAMPLE_NUM (20) //default:8
2、 调整采样点筛选阈值,就是这个值#define TSP_INVALIDLIMIT (30),这个值可以过滤一些偏差很大的点,可以适当调小一些。
3、 通过算法,使采样点的平均值更合理。对所有采样点,去掉最小和最大的几个,留下中间的几个值取平均,。
4、 比较当前x,y值和前一次的x,y值,若相差在一定范围内则判定为同一点。阈值根据情况确定。这个是在网上看到的一篇文章,我做了一下,效果不错。
十三、YC8寸屏配置参数
一、C:\WINCE600\PLATFORM\SMDK6410\SRC\INC\options.h中做如下修改
#elif defined(LCD_L80)
#define LCD_WIDTH 800
#define LCD_HEIGHT 600
#define LCD_VBPD_VALUE ((23)&0xff)
#define LCD_VFPD_VALUE ((1)&0xff)
#define LCD_VSPW_VALUE ((1) &0x3f)
#define LCD_HBPD_VALUE ((46)&0x7f)
#define LCD_HFPD_VALUE ((16)&0xff)
#define LCD_HSPW_VALUE ((1)&0xff)
#define LCD_RGB_OUT_MODE DISP_16BIT_RGB565_P
#define LCD_VCLK_POLARITY IVCLK_FALL_EDGE
#define LCD_HSYNC_POLARITYIHSYNC_LOW_ACTIVE
#define LCD_VSYNC_POLARITYIVSYNC_LOW_ACTIVE
#define LCD_VDEN_POLARITY IVDEN_HIGH_ACTIVE
#defineLCD_PNR_MODE PNRMODE_RGB_P
#define LCD_VCLK_SOURCE CLKSEL_F_LCDCLK
#define LCD_VCLK_DIRECTION CLKDIR_DIVIDED
#define LCD_FRAME_RATE 80
#define LCD_TFT_CLKVAL 4
二、在s3c6410_touch.cpp中修改定义
#define TSP_ADC_DELAY (4000) //40000,default:10000
#define TSP_ADC_PRESCALER (24) // 49 // 200default:24
//#define TSP_ADC_PRESCALER (15) // 15 // 49 // 200
#define TSP_SAMPLE_RATE_LOW (50) // 50 Samples per Sec
#define TSP_SAMPLE_RATE_HIGH (50) // 100 Samples per Sec
#define TSP_TIMER_DIVIDER (1)
#define TSP_TIMER_CNT_LOW (S3C6410_PCLK/SYS_TIMER_PRESCALER/TSP_TIMER_DIVIDER/TSP_SAMPLE_RATE_LOW-1)
#define TSP_TIMER_CNT_HIGH (S3C6410_PCLK/SYS_TIMER_PRESCALER/TSP_TIMER_DIVIDER/TSP_SAMPLE_RATE_HIGH-1)
#define TSP_INVALIDLIMIT (40) //default40
#ifdef NEW_FILTER_SCHEME
#define TSP_FILTER_LIMIT (3)
#else
#define TSP_FILTER_LIMIT (25)
#endif
#ifdef DETAIL_SAMPLING
#define TSP_SAMPLE_NUM (20) //default:8
#else
#define TSP_SAMPLE_NUM (4)
#endif
十四、开机运行自己的程序
如何让WINCE系统启动直接运行自己的程序 |
|
发布日期:2007-2-26 12:28:02 作者: 出处: |
|
|
WINCE系统启动直接运行自己的程序 1. 假定Windows CE.NET目标工程目录为D:\WINCE420\PUBLIC\MyWinCE,并且工程已经Build成功,假定Windows CE.NET的应用程序为MyApp.exe; |
WinCE 应用程序开机自动运行的又一种方法 |
|
发布日期:2007-5-24 9:29:21 作者:未知 出处:不详 |
|
|
近日在开发过程中遇到WinCE应用程序开机自动运行的问题,在网上找了找,发现大概有以下三种方法: |