- 博客(96)
- 资源 (3)
- 收藏
- 关注
原创 6410-DDR降低频率
修改s3c6410.inc和soc_cfg.h文件,其他不需要修改 soc_cfg.h#define TARGET_ARM_CLK CLK_66_5MHz ////#define TARGET_ARM_CLK CLK_133MHz ////#define TARGET_ARM_CLK CLK_266MHz ////#define TARGET
2009-11-24 19:44:00
821
原创 6410-DDR测试
问题: 6410 DDR的首地址为OX50000000,对DDR测试的时候程序死掉了,看不到测试结果。 分析: 应该测试的地址为它,但是由于EBOOT的运行导致不能从这个地址开始测试,这样会破坏EBOOT的数据,导致测试无法运行。 解决: 故将测试地址设为0x50100000,这个地址和DNW设置的DOWNLODE ADDRESS地址一样,
2009-11-24 11:30:00
739
转载 wince 基于ARM cpu 的内核启动的过程
1. Startup() -> Startup.s 位于%_WINCEROOT%/Platform//Src/Kernel/OAL 目录下这个函数是bootloader调转到run-time镜像后最先执行的代码,位于我们的BSP开发包中,由OEM定制.程序最后启动KernelStart().2. KernelStart() -> Armtrap.s (Private)
2009-09-09 11:23:00
539
原创 串口打印问题,怪
问题: 将IIC和ADC驱动加入操作系统打包下载后启动系统发现在加载注册表BUILDIN里的驱动时发现串口打印嘎然而止。后面没有打印信息了,系统照常启动。用CE的串口调试助手发现用来调试打印的串口居然被释放了,能够用调试助手操作。(正常的应该是不被系统占用了的) 没办法只要将ADC和IIC驱动卸掉,发现问题依旧。 还有一个现象:这个系统启动后应用程序运行得超级
2009-08-26 11:15:00
489
原创 TPC SERVER可以运行在CE5.0了
以前不能用网线开发的CE5.0的问题解决了,是以前直连的时候DM9000芯片的问题 TPC SERVER在5.0下机器的安装 首先要把一些乱起八糟的东西装进去,PNG ,VARIA,VISA等,而且必须装在默认的目录,否则后面没法装TPC服务器。 设置IP就可以用网线来开发了。
2009-08-20 11:26:00
271
1
翻译 系统在执行OEMInt()函数之后就死掉了
出现的问题: 在选中clean befor build之后,编译系统,以前用有三个错误没有了,但是系统在跑到OEMin函数之后就死了。以前的错误:BUILD: [01:0000001602:ERRORE] sdiocontroller.obj : error LNK2019: unresolved external symbol "public: __cdecl CSDIOC
2009-08-19 12:48:00
357
2
原创 WINCE 加入驱动DLL步骤
1 主要文件1)驱动程序源代码文件,例如driver.c;2)驱动程序头文件,例如driver.h;3)动态库导出文件,例如driver.def;4)makefile 文件,文件名固定为makefile,该文件指出了驱动程序的编译和链接方法,但实际上该文件并不做什么事情,具体的方法由sources 文件进行设置,一般来讲,所有驱动的makefile 文件都一样,直接拷贝过来即可使用;5)链接和编译
2009-08-19 11:29:00
1359
原创 IIC调试中寄存器映射的问题
出现的问题: 在IIC调试中,改好驱动后,发现寄存器写入的值和我用寄存器查看助手读出的值不一样,而且是所有的IIC的寄存器写入的值和读出的值都不一样,驱动调试陷入停顿。 问题的原因: 操作寄存器不对,问题的原因在于地址映射不对,但是我查了地址映射的方法和方式和其他的寄存器映射没有差别 解决问题: 在S2440.H中查看寄存器定义时发现:
2009-08-03 16:01:00
591
原创 memcmp和memset函数用法
memcmp 原型:extern int memcmp(void *buf1, void *buf2, unsigned int count); 用法:#include 功能:比较内存区域buf1和buf2的前count个字节。 说明: 当buf1 当buf1=buf2时,返回值=0 当buf1>buf2时,返回值>0memset 功 能: 将s所指向的某一块内存
2009-07-30 18:18:00
2222
原创 2440/2410 LCD 屏幕旋转的问题
2440/2410 LCD 屏幕旋转的问题winCE 4.2以上一.修改SMDK2440/DRIVERS/DISPLAY/S3C2440LCD 目录下的sources文件合适位置增加:CLEARTYPE=0ROTATE=1 //这句是我加的三.s3c2440disp.h文件头上加一句#define ROTATE四.s3c2440disp.cpp中S3C2440DI
2009-07-30 18:01:00
508
原创 WinCE5 sources文件中TARGETLIBS与SOURCELIBS字段的作用与区别
在WinCE里面,编译和链接的必备文件sources,做过WinCE BSP开发的一定都很熟悉,其中有2个关键字,targetlibs和sourcelibs,一直让我对其中的区别很感兴趣,故查阅了一些资料,与大家分享。 其实只要搜索以下就会得到一些基本的答案,比如:TARGETLIBS,如果一个库以DLL的形式提供给调用者,就需要用TARGETLIBS,它只链接一个函数地址,系统执
2009-07-30 17:56:00
376
原创 WINCE SOURCES文件详解
SOURCES文件是WINCE底层开发中最重要的文件之一,主要的配置项如下: TARGETNAME,定义模块名称. TARGETTYPE,模块的种类,可以是DYNLINK, LIBRARY,EXE. 如果TARGETTYPE是DLL,则可以定义DLLENTRY,将Dll入口定义成别的不是DLLMain的函数,如果DLL的入口是DllMain,则不需要别的定义。如果TA
2009-07-30 17:36:00
447
原创 IIC驱动从2410修改到2440
修改涉及到寄存器,中断定义等寄存器修改的地方修改地方: 1,所有IIC的寄存器由S3C2410X.H定义的的GPECON改成2440.H定义rGPECON 2,v_pIICPregs = (volatile S3C2410X_IICBUS_REG *)VirtualAlloc(0, sizeof(S3C2410X_IICBUS_REG), MEM_RESERVE
2009-07-30 14:29:00
691
原创 在EVC下编译链接LIB库和DLL库的方法
1,链接LIB静态库方法 步骤1:在PROTJECT SETTING 里的LINK栏的object/library modles中加入LIB库文件名,以空格的方式间隔 步骤2:在代码编辑中加入这个库的头文件,就可以引用这个头文件里的函数了 2,链接DLL动态链接库方法 只需将DLL拷到工程目录先即可引用DLL中的函数
2009-07-30 10:34:00
442
1
原创 MIPS 和ARM构架
出现的问题: 在使用DM2016的时候,要用到加密库,是LIB文件,将LIB文件加入到工程中编译出现如下问题:fatal error LNK1112: module machine type MIPS conflicts with target machine type THUMB分析问题: 提示是说目标系统平台不一样,很显然是库的问题解决问题:
2009-07-30 10:06:00
2714
原创 WinCE下直接启动自己应用程序的方法
WinCE下直接启动自己应用程序的方法 其实让一个程序在wince里启动和windows里差不多,直接设置其为启动项,这个有几个方法。一个就是制作一个快捷方式,指向我们的应用程序如app.exe,然后将快捷方式放到/windows/startup下面。 步骤如下:(假设app.exe已经拷贝到windows下面) 1 在pb中创建一个文件,文件类型选txt,然后命名
2009-07-29 18:53:00
380
原创 WINCE触摸声音驱动修改
触摸中断分析: WINCE500/PLATFORM/smdk2440/KERNEL/HAL/ARM armint.c 按下触摸,首先产生IntPendVal == INTSRC_ADC AD硬中断中断,下面程序判断是按下还是提起操作,修改odo_tsb->status = TOUCH_PEN_UP变量的值。并向上层返回SYSINTR_TOUCH_CHANGED软中断值。
2009-07-28 10:08:00
511
原创 LV事件机制问题
出现的问题 LV的事件机制中,用到BUTTON来驱动事件,选中的是KEY DOWN,但是在运行过程中却没有产生事件,只能靠VALUECHANG 才能产生事件问题的原因 可能是LV TOUCH 并不支持这一事件,除UALUE CHANG 事件以外,其他很多事件都不支持
2009-07-27 13:58:00
211
原创 驱动中间层向LV传数据出现的问题
出现的问题: 在中间层向底层读到数据向LV传数据时总是为零,但采用数组和指针却没有问题。分析原因: 一个函数可以有非指针和数字参数类型的输入,但是却输出却不行,只能通过RETURN才能返回非指针和数字参数类型,或者是通过指针数组的形式输出。解决问题: 数据类型改成指针或者数组类型。
2009-07-27 13:58:00
178
原创 LV调用底层过程中参数使用数组应注意的问题
出现的问题: ADC中断读取的过程中发现在调用一次ADC_IOControl()后,第二次调用时出现内核调用出错程序无法运行解决办法: LV在初始化时数组没有一个初始化清零的操作导致这个问题,加上后问题解决。数组参数必须要在LV中进行清零处理。 出现的问题: 在做除法运算的时候如果被除数为0的话会导致内核调用出错解决办法: 保证被除数不为0
2009-07-27 13:55:00
179
原创 DM9000AEP 004芯片有BUG
问题现象: 在上一块板子调试DM9000已经通过了,PC机能PING能上网,现在画的板子出现了奇怪的问题,只能通过路由器上网,PC机不能直接PING,但PC通过路由器能PING通。 和PC机通过网线直连的时候发现两个网络指示灯也显示不正常,光很暗。 分析问题: 能通过路由器上网说明芯片链路是通的,数据从DM9000到ARM端连接时没有问题的,现在怀疑
2009-07-07 13:01:00
579
转载 调用KernelIoControl获取逻辑中断号失败的原因
http://forums.microsoft.com/china/ShowPost.aspx?PostID=3768771&SiteID=15http://forums.microsoft.com/china/showpost.aspx?postid=2464232&siteid=15http://topic.youkuaiyun.com/u/20071127/10/515e9c1c-c848-4b
2009-06-23 17:27:00
1278
转载 KernelIoControl和OEMIoControl的分析和使用
对于KernelIoControl这个函数我们并不陌生,在2440 5.0BSP当中,这个函数在很多驱动中出现了,主要是用来申请中断,比如下面BOOL RetVal = KernelIoControl( IOCTL_HAL_REQUEST_SYSINTR, &Irq,
2009-06-23 17:23:00
1399
转载 显示驱动相关 -- DrvEscape和ExtEscape(动态旋转的例子)
DrvEscape是提供给应用程序的一个直接访问显示驱动的接口/机制,它类似流接口的IOCTLs方式的,完成标准GDI无法完成一些功能.上层应用程序调用ExtEscape()发送查询,设置等控制命令给显示(打印)驱动.这些命令字叫做escape code.系统已经定义的escape code有如下:QUERYESCSUPPORT 8 查询显示驱动是否支持用
2009-06-22 19:35:00
311
转载 wince挂起和唤醒(suspend/wakeup)
管任何方式的系统挂起,最终都会调用OEMPowerOff()函数来实现.OEMPowerOff()函数由OEM来完成,这个函数也许会位于 power.c或者off.c的文件中.OEMPowerOff()是OEM来实现的,代码和流程也许不同,但基本按照下面的方法来完成.挂起的过程:1.先进行平台相关的动作,比如清屏,设置AD,usb等.2.保存芯片所有的寄存器值到一个静态数组(就是堆栈中)3
2009-06-22 19:33:00
473
原创 WinCE显示驱动
wince的显示驱动和普通的设备驱动不一样.普通的设备驱动是由设备管理器device.exe加载和管理的;而显示驱动是由GWES.exe加载和管理的,类似的由GWES加载管理的还有键盘鼠标,触摸屏,打印机等驱动,这些叫本地驱动(内置驱动).所以,显示驱动ddi就不是常见设备驱动的ddi(流接口ddi).更具体说,它不是通过CreateFile这些文件系统api接口来访问.而是通过GDI接口,熟悉w
2009-06-22 19:32:00
1970
转载 延时函数中的volatile
调试wince驱动时候,有时候碰到us级别的时序要求的短延时,使用硬件定时器显得麻烦.一般我会用一个短延时delay().今天碰到了离奇事情. 实现一个短延时,用宏,内联函数或者函数都可以实现.下面是一个例子. #define delay(us) do{/ int t;/
2009-06-22 19:30:00
393
1
转载 关于full kernel mode和驱动访问寄存器或者内存的方式
驱动肯定要大量访问芯片的寄存器地址和内存.在没有MMU的时候是很惬意的事情.但在wince物理地址’消失’了,所有地址都被映射成为虚拟地址,wince的内核使用一张地址映射表转换物理地址到虚拟地址.在bsp下面可以找到这张表.比如对于arm,一般是在bsp的kernel/hal/arm/map.a.或者wince5的会放在src/inc/oemaddrtbl_cfg.inc中. g_o
2009-06-22 19:27:00
324
转载 sysgen环境变量到底怎么产生作用的?
在使用pb的时候,我们增加一个feather,事实上只是增加了这个feather对应的sysgen变量而已,如此简单. Sysgen变量本质是一个环境变量,它怎么可以影响代码,影响镜像的生成,影响注册表等所有相关的东西?比如,我增加一个usb鼠标功能,对应的是sysgen_usb_hid_mouse.你可以在pb的图形界面下从catalog窗口中add to os designed,也可以
2009-06-22 19:26:00
413
转载 wince下增加一个流驱动
应朋友要求,写下如何在wince的pb下增加一个简单的流驱动:先简单说项目的建立:1.在bsp的driver目录下新建一个驱动项目的目录,比如yourdirver.2.增加流驱动项目必要的文件,包含def文件,c或者c++文件,头文件,当然还有SOURCES文件.建议从driver目录其他驱动中参考SOURCES的写法.3.拷贝一个makefile文件,可以从其他driver下拷或者自己建立一个,
2009-06-22 19:23:00
329
转载 st16c550的驱动的问题
我用的是s3c2410开发板+wince5.0。eINT13连接到16550的INT脚; kkj@!1q(wO fpga (xc9536)的14脚 ST16c550_CS 经过244转换后,作为st16c550的片选;在cpld的程序中assign ST16c550_CS = nGCS1; 6& hiW]Adm 这样的话,相当于nGCS1作为片选,ST16c550的基地址该是0x0800_00
2009-06-22 19:18:00
954
1
转载 WinCE5串口驱动mdd层分析
以前版本的CE支持2种MDD(MDD表示分层结构的上层.PDD表示下层,平台相关层.),com_mdd和com_mdd2. CE5.0只支持com_mdd2,好处是简化PDD,并且能够实现多个物理串口共用一个dll驱动.使用com_mdd2要做的是在驱动的SOURCES里面把TARGETLIBS从com_mdd.lib改成com_mdd2.lib,增加-DUSE_NEW_SERIAL_MODEL到
2009-06-22 18:37:00
998
1
转载 wince 5.0下的串口驱动实现
中断注册是在mdd层实现的 在你PB的安装目录查找那个mdd.c文件 COM_Init函数里,StartDispatchThread( pSerialHead )为开启那个串口监视线程,这个函数里有下面的代码 InterruptInitialize(pSerialHead->pHWObj->dwIntID, pSerialHead->hS
2009-06-22 18:29:00
562
1
转载 一个最简单的问题:CreateFile()函数与COM_Open()函数的关系
请教大家一个最基本的问: 这两天研究了一下串口驱动程序(MDD,PDD),发现这么一个问题:CreateFile(L"COM1:",....)中的"COM1"的信息是怎样记录到COM_Open()的句柄中的。COM_init()(有DeviceArrayIndex和Priority256)和HWinit(有memorywindow,interrupt,physicalbase)中好像没有对C
2009-06-22 18:00:00
853
原创 YL2410添加串口
想到一个YL2410添加串口的方法,各位用过的朋友来给提提建议!用板子是yl2410的,优龙给的BSP是4.2移植到5.0的,所以网上一些4.2和5.0的方法都不管用,找论坛的帖子按上面的方法做都是不行,经过一段时间研究,想到一个办法,现在贴出来,请各位朋友高手看看有什么问题,或者给刚开始用yl2410的朋友一点提示,少走弯路。第一步,我把SMDK2410/DIRVERS下的serial这个驱
2009-06-22 17:58:00
452
转载 触摸屏问题
使用2440配800*480 7"屏,定制系统后触摸存在问题,就是校准笔针后触摸屏只有左边部分触摸效果良好,右边笔针不准并且抖动。排除了硬件问题,因为使用光盘里images/wince5/nk.bin触摸效果完全正常,但再也找不到能达到这种效果的BSP。看起来好像效果良好区域的尺寸约有3.5",再看 smdk2440/drivers/touchp/tchpdd.cpp 中定义了几个参数 #defi
2009-06-22 17:56:00
309
转载 2410串口——MDD和PDD的结合方法
我在我的BSP里面有MDD.c,ser2410_ser.c,ser2410_hw.c,三个源代码文件。MDD.c和单层驱动的结构类似,都是一些供应用程序调用的接口函数,调用了HWInit等函数。我看了几篇关于串口驱动分析的文章,结合代码,很多不明白。 //////////////////////////////////////////////////////// 1. HWOBJ结构
2009-06-22 17:49:00
404
1
转载 串口打印信息的奇怪问题
遇到的问题: 自己解决加入串口打印信息碰到了郁闷的事情。 刚开始,我只想把C:/WINCE500/PUBLIC/COMMON/OAK/DRIVERS/SERIAL/COM_MDD2编译成debug版本,来打印信息的。 我采用了如下方法: 第一种: 将下面这句代码加入到驱动所在目录中的sources文件中即可: CDEFINES=$(CDEFINES) -DDEBUG 第二种 #undef
2009-06-22 17:45:00
372
原创 如何使DEBUGMSG函数输出打印信息
如何使DEBUGMSG函数输出打印信息? WINCE的驱动开发中,我们一般将工程编译为release模式。如果编译为debug模式,编译结果(NK)将会非常大,超过代码中对NK的限制范围。 而且有的时候我们只需要了解个别设备驱动的调试信息,并不需要将整个工程编译为debug模式。 在这种情况下可以用这样的方法,在驱动文件的头部加上:#undef DEBUG
2009-06-22 17:44:00
739
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人