自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(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 786 1

原创 6410-DDR测试

问题:       6410 DDR的首地址为OX50000000,对DDR测试的时候程序死掉了,看不到测试结果。 分析:      应该测试的地址为它,但是由于EBOOT的运行导致不能从这个地址开始测试,这样会破坏EBOOT的数据,导致测试无法运行。 解决:     故将测试地址设为0x50100000,这个地址和DNW设置的DOWNLODE ADDRESS地址一样,

2009-11-24 11:30:00 703

转载 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 510

原创 串口打印问题,怪

问题:      将IIC和ADC驱动加入操作系统打包下载后启动系统发现在加载注册表BUILDIN里的驱动时发现串口打印嘎然而止。后面没有打印信息了,系统照常启动。用CE的串口调试助手发现用来调试打印的串口居然被释放了,能够用调试助手操作。(正常的应该是不被系统占用了的)     没办法只要将ADC和IIC驱动卸掉,发现问题依旧。     还有一个现象:这个系统启动后应用程序运行得超级

2009-08-26 11:15:00 463

原创 TPC SERVER可以运行在CE5.0了

以前不能用网线开发的CE5.0的问题解决了,是以前直连的时候DM9000芯片的问题 TPC SERVER在5.0下机器的安装 首先要把一些乱起八糟的东西装进去,PNG ,VARIA,VISA等,而且必须装在默认的目录,否则后面没法装TPC服务器。 设置IP就可以用网线来开发了。

2009-08-20 11:26:00 258 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 337 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 1321

原创 IIC调试中寄存器映射的问题

出现的问题:      在IIC调试中,改好驱动后,发现寄存器写入的值和我用寄存器查看助手读出的值不一样,而且是所有的IIC的寄存器写入的值和读出的值都不一样,驱动调试陷入停顿。 问题的原因:      操作寄存器不对,问题的原因在于地址映射不对,但是我查了地址映射的方法和方式和其他的寄存器映射没有差别 解决问题:      在S2440.H中查看寄存器定义时发现:

2009-08-03 16:01:00 565

原创 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 2187

原创 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 487

原创 WinCE5 sources文件中TARGETLIBS与SOURCELIBS字段的作用与区别

在WinCE里面,编译和链接的必备文件sources,做过WinCE BSP开发的一定都很熟悉,其中有2个关键字,targetlibs和sourcelibs,一直让我对其中的区别很感兴趣,故查阅了一些资料,与大家分享。     其实只要搜索以下就会得到一些基本的答案,比如:TARGETLIBS,如果一个库以DLL的形式提供给调用者,就需要用TARGETLIBS,它只链接一个函数地址,系统执

2009-07-30 17:56:00 357

原创 WINCE SOURCES文件详解

SOURCES文件是WINCE底层开发中最重要的文件之一,主要的配置项如下:      TARGETNAME,定义模块名称.     TARGETTYPE,模块的种类,可以是DYNLINK, LIBRARY,EXE. 如果TARGETTYPE是DLL,则可以定义DLLENTRY,将Dll入口定义成别的不是DLLMain的函数,如果DLL的入口是DllMain,则不需要别的定义。如果TA

2009-07-30 17:36:00 432

原创 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 664

原创 编译小常识

1.两者的区别#include #include "dm2016.h" ""包含的头文件编译器会直接在当前目录下找这个。H文件。 

2009-07-30 10:58:00 249

原创 在EVC下编译链接LIB库和DLL库的方法

1,链接LIB静态库方法     步骤1:在PROTJECT SETTING 里的LINK栏的object/library modles中加入LIB库文件名,以空格的方式间隔     步骤2:在代码编辑中加入这个库的头文件,就可以引用这个头文件里的函数了 2,链接DLL动态链接库方法     只需将DLL拷到工程目录先即可引用DLL中的函数  

2009-07-30 10:34:00 423 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 2652

原创 WinCE下直接启动自己应用程序的方法

 WinCE下直接启动自己应用程序的方法    其实让一个程序在wince里启动和windows里差不多,直接设置其为启动项,这个有几个方法。一个就是制作一个快捷方式,指向我们的应用程序如app.exe,然后将快捷方式放到/windows/startup下面。     步骤如下:(假设app.exe已经拷贝到windows下面)     1 在pb中创建一个文件,文件类型选txt,然后命名

2009-07-29 18:53:00 360

原创 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 495

原创 LV事件机制问题

出现的问题    LV的事件机制中,用到BUTTON来驱动事件,选中的是KEY DOWN,但是在运行过程中却没有产生事件,只能靠VALUECHANG 才能产生事件问题的原因    可能是LV TOUCH 并不支持这一事件,除UALUE CHANG 事件以外,其他很多事件都不支持

2009-07-27 13:58:00 190

原创 驱动中间层向LV传数据出现的问题

出现的问题:      在中间层向底层读到数据向LV传数据时总是为零,但采用数组和指针却没有问题。分析原因:      一个函数可以有非指针和数字参数类型的输入,但是却输出却不行,只能通过RETURN才能返回非指针和数字参数类型,或者是通过指针数组的形式输出。解决问题:      数据类型改成指针或者数组类型。

2009-07-27 13:58:00 163

原创 LV调用底层过程中参数使用数组应注意的问题

出现的问题:    ADC中断读取的过程中发现在调用一次ADC_IOControl()后,第二次调用时出现内核调用出错程序无法运行解决办法:    LV在初始化时数组没有一个初始化清零的操作导致这个问题,加上后问题解决。数组参数必须要在LV中进行清零处理。 出现的问题:    在做除法运算的时候如果被除数为0的话会导致内核调用出错解决办法:    保证被除数不为0

2009-07-27 13:55:00 164

原创 DM9000AEP 004芯片有BUG

问题现象:      在上一块板子调试DM9000已经通过了,PC机能PING能上网,现在画的板子出现了奇怪的问题,只能通过路由器上网,PC机不能直接PING,但PC通过路由器能PING通。      和PC机通过网线直连的时候发现两个网络指示灯也显示不正常,光很暗。 分析问题:     能通过路由器上网说明芯片链路是通的,数据从DM9000到ARM端连接时没有问题的,现在怀疑

2009-07-07 13:01:00 561

转载 调用KernelIoControl获取逻辑中断号失败的原因

http://forums.microsoft.com/china/ShowPost.aspx?PostID=3768771&SiteID=15http://forums.microsoft.com/china/showpost.aspx?postid=2464232&siteid=15http://topic.csdn.net/u/20071127/10/515e9c1c-c848-4b

2009-06-23 17:27:00 1263

转载 KernelIoControl和OEMIoControl的分析和使用

对于KernelIoControl这个函数我们并不陌生,在2440 5.0BSP当中,这个函数在很多驱动中出现了,主要是用来申请中断,比如下面BOOL RetVal = KernelIoControl( IOCTL_HAL_REQUEST_SYSINTR,                                   &Irq,                              

2009-06-23 17:23:00 1371

转载 显示驱动相关 -- DrvEscape和ExtEscape(动态旋转的例子)

DrvEscape是提供给应用程序的一个直接访问显示驱动的接口/机制,它类似流接口的IOCTLs方式的,完成标准GDI无法完成一些功能.上层应用程序调用ExtEscape()发送查询,设置等控制命令给显示(打印)驱动.这些命令字叫做escape code.系统已经定义的escape code有如下:QUERYESCSUPPORT             8      查询显示驱动是否支持用

2009-06-22 19:35:00 299

转载 wince挂起和唤醒(suspend/wakeup)

管任何方式的系统挂起,最终都会调用OEMPowerOff()函数来实现.OEMPowerOff()函数由OEM来完成,这个函数也许会位于 power.c或者off.c的文件中.OEMPowerOff()是OEM来实现的,代码和流程也许不同,但基本按照下面的方法来完成.挂起的过程:1.先进行平台相关的动作,比如清屏,设置AD,usb等.2.保存芯片所有的寄存器值到一个静态数组(就是堆栈中)3

2009-06-22 19:33:00 457

原创 WinCE显示驱动

wince的显示驱动和普通的设备驱动不一样.普通的设备驱动是由设备管理器device.exe加载和管理的;而显示驱动是由GWES.exe加载和管理的,类似的由GWES加载管理的还有键盘鼠标,触摸屏,打印机等驱动,这些叫本地驱动(内置驱动).所以,显示驱动ddi就不是常见设备驱动的ddi(流接口ddi).更具体说,它不是通过CreateFile这些文件系统api接口来访问.而是通过GDI接口,熟悉w

2009-06-22 19:32:00 1962

转载 延时函数中的volatile

 调试wince驱动时候,有时候碰到us级别的时序要求的短延时,使用硬件定时器显得麻烦.一般我会用一个短延时delay().今天碰到了离奇事情.    实现一个短延时,用宏,内联函数或者函数都可以实现.下面是一个例子.    #define delay(us) do{/                                        int t;/          

2009-06-22 19:30:00 380 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 309

转载 sysgen环境变量到底怎么产生作用的?

在使用pb的时候,我们增加一个feather,事实上只是增加了这个feather对应的sysgen变量而已,如此简单. Sysgen变量本质是一个环境变量,它怎么可以影响代码,影响镜像的生成,影响注册表等所有相关的东西?比如,我增加一个usb鼠标功能,对应的是sysgen_usb_hid_mouse.你可以在pb的图形界面下从catalog窗口中add to os designed,也可以

2009-06-22 19:26:00 402

转载 wince下增加一个流驱动

应朋友要求,写下如何在wince的pb下增加一个简单的流驱动:先简单说项目的建立:1.在bsp的driver目录下新建一个驱动项目的目录,比如yourdirver.2.增加流驱动项目必要的文件,包含def文件,c或者c++文件,头文件,当然还有SOURCES文件.建议从driver目录其他驱动中参考SOURCES的写法.3.拷贝一个makefile文件,可以从其他driver下拷或者自己建立一个,

2009-06-22 19:23:00 318

转载 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 909 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 977 1

转载 wince 5.0下的串口驱动实现

中断注册是在mdd层实现的 在你PB的安装目录查找那个mdd.c文件 COM_Init函数里,StartDispatchThread( pSerialHead )为开启那个串口监视线程,这个函数里有下面的代码 InterruptInitialize(pSerialHead->pHWObj->dwIntID,                               pSerialHead->hS

2009-06-22 18:29:00 552 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 839

原创 YL2410添加串口

想到一个YL2410添加串口的方法,各位用过的朋友来给提提建议!用板子是yl2410的,优龙给的BSP是4.2移植到5.0的,所以网上一些4.2和5.0的方法都不管用,找论坛的帖子按上面的方法做都是不行,经过一段时间研究,想到一个办法,现在贴出来,请各位朋友高手看看有什么问题,或者给刚开始用yl2410的朋友一点提示,少走弯路。第一步,我把SMDK2410/DIRVERS下的serial这个驱

2009-06-22 17:58:00 430

转载 触摸屏问题

使用2440配800*480 7"屏,定制系统后触摸存在问题,就是校准笔针后触摸屏只有左边部分触摸效果良好,右边笔针不准并且抖动。排除了硬件问题,因为使用光盘里images/wince5/nk.bin触摸效果完全正常,但再也找不到能达到这种效果的BSP。看起来好像效果良好区域的尺寸约有3.5",再看 smdk2440/drivers/touchp/tchpdd.cpp 中定义了几个参数 #defi

2009-06-22 17:56:00 293

转载 2410串口——MDD和PDD的结合方法

我在我的BSP里面有MDD.c,ser2410_ser.c,ser2410_hw.c,三个源代码文件。MDD.c和单层驱动的结构类似,都是一些供应用程序调用的接口函数,调用了HWInit等函数。我看了几篇关于串口驱动分析的文章,结合代码,很多不明白。 //////////////////////////////////////////////////////// 1. HWOBJ结构    

2009-06-22 17:49:00 396 1

转载 串口打印信息的奇怪问题

遇到的问题: 自己解决加入串口打印信息碰到了郁闷的事情。 刚开始,我只想把C:/WINCE500/PUBLIC/COMMON/OAK/DRIVERS/SERIAL/COM_MDD2编译成debug版本,来打印信息的。 我采用了如下方法: 第一种: 将下面这句代码加入到驱动所在目录中的sources文件中即可: CDEFINES=$(CDEFINES) -DDEBUG 第二种 #undef

2009-06-22 17:45:00 360

原创 如何使DEBUGMSG函数输出打印信息

如何使DEBUGMSG函数输出打印信息?  WINCE的驱动开发中,我们一般将工程编译为release模式。如果编译为debug模式,编译结果(NK)将会非常大,超过代码中对NK的限制范围。        而且有的时候我们只需要了解个别设备驱动的调试信息,并不需要将整个工程编译为debug模式。      在这种情况下可以用这样的方法,在驱动文件的头部加上:#undef DEBUG

2009-06-22 17:44:00 712

DNW V0.6C S3C6410BOOT会用到

DNW V0.6C -FOR WINCE, S3C6410BOOT会用到

2009-05-27

S3C6410 SD BOOT

S3C6410 从SD BOOT的烧写工具

2009-05-27

S3C6410 WINCE下3D演示应用程序

S3C6410 WINCE下3D演示应用程序

2009-05-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除