2010-04-07
今天进行的主要工作:
1)阅读EBOOT中和分区以及格式化有关的代码,此部分的代码主要在以下3个位置
%WINCEROOT%\PUBLIC\COMMON\OAK\DRIVERS\ETHDBG\BLCOMMON
%WINCEROOT%\PUBLIC\COMMON\OAK\DRIVERS\ETHDBG\BOOTPART
%WINCEROOT%\PUBLIC\COMMON\OAK\DRIVERS\BLOCK\MSFLASHFMD
2)通过网络下载EBOOT.BIN也解决了,原来只需要在已经有EBOOT的情况下,在Platform Settings菜单中把Target Bin选择为EBOOT.bin再下载即可:
3)在去掉触摸屏表面的一层塑料膜之后,触摸屏居然有反应了。ADS7843 但是需要进行进一步的校准。
4)既然触摸屏有反应了,自然开始进行触摸屏的初次校准工作。首先尝试调用系统自带的校准功能,看PB附带的文档,调用该功能只要一个TouchCalibrate函数就可以了。一开始我打算在现有的BSP代码中加入这个函数来完成第一次校准。但是找一圈没有找到合适的地方,因为如果放在触摸屏的初始化代码中的话可能会阻塞后面的函数调用。
没办法只好采用导出目标板SDK,用EVC4写用户态程序来调用TouchCalibrate了。直接包含头文件调用TouchCalibrate的方法没有成功。正好今天看过的有篇网络资料有这样的代码,用的是动态加载的方法,于是便发扬拿来就用主义了,在此感谢原作者。
启动WINCE内置的触摸屏校准程序int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { // TODO: Place code here. typedef BOOL (WINAPI *_TouchCalibrate)(); HINSTANCE hinstance = LoadLibrary(_T("coredll.dll")); if (hinstance == NULL) { //AfxMessageBox (L"instance == NULL"); return -1; } _TouchCalibrate TouchCalibrate = NULL; TouchCalibrate = (_TouchCalibrate)GetProcAddress(hinstance , L"TouchCalibrate"); if (TouchCalibrate == NULL) { //AfxMessageBox (L"TouchCalibrate == NULL"); return -1; } TouchCalibrate(); FreeLibrary(hinstance ); return 0; }
5)辛苦调试板子的日子,今天起暂时告一个段落。开始写方案准备立项,呵呵。