05 2010 档案

摘要:1 platform\SMDK2440A\SMDK2440.bat里修改: set BSP_KITL=NONE 改成 rem set BSP_KITL=NONE rem set BSP_KITL=USBSERIAL 改成 set BSP_KITL=USBSERIAL set BSP_NOUSBFN= 改成 set BSP_NOUSBFN=1 set BSP_NOCS8900=1 改成 set BSP_NOCS8900=2 platform\SMDK2440A\Src\Inc\kitl_cfg.h //#define KITL_USBSERIAL 改成 #define KITL_USBSERIA 阅读全文
posted @ 2010-05-27 09:44 gmh 阅读(268) 评论(0) 推荐(0)
摘要:在调试休眠时候,出现这么一个现象RaiseException: Thread=83cd0000 Proc=8164c3c0 'device.exe'AKY=00000005 PC=03fa7434(coredll.dll+0x00037434) RA=80280390(NK.EXE+0x00080390) BVA=00000001 FSR=00000001Exception 'RaiseException' Thread=83cd0000 AKY=00000005 PC=00000065 BVA=00000001R0=802658e4 R1=00000000 R2=00002774 R3=00 阅读全文
posted @ 2010-05-24 17:22 gmh 阅读(320) 评论(0) 推荐(0)
摘要:在2440中进入休眠函数void OEMPowerOff(){ static UINT32 saveArea[51]; S3C2440A_INTR_REG *pIntr = (S3C2440A_INTR_REG*)OALPAtoVA(S3C2440A_BASE_REG_PA_INTR, FALSE); S3C2440A_IOPORT_REG *pIOPort = (S3C2440A_IOPORT_REG*)OALPAtoVA(S3C2440A_BASE_REG_PA_IOPORT, FALSE); S3C2440A_LCD_REG *pLCD = (S3C2440A_LCD_REG*)OALP 阅读全文
posted @ 2010-05-24 17:08 gmh 阅读(467) 评论(0) 推荐(0)
摘要:在MAP.A中地址映射表转换物理地址到虚拟地址EXPORT OEMAddressTable[DATA]; LTORG AREA OEMAddressTable, DATA, READONLY;OEMAddressTable ;;;------------------------------------------------------------- ;;; Virt Addr Phys Addr MB ;;;------------------------------------------------------------- DCD 0x80000000, 0x00000000, 32; 阅读全文
posted @ 2010-05-24 17:05 gmh 阅读(1509) 评论(0) 推荐(0)
摘要:在MAP.A中地址映射表转换物理地址到虚拟地址EXPORT OEMAddressTable[DATA]; LTORG AREA OEMAddressTable, DATA, READONLY;OEMAddressTable ;;;------------------------------------------------------------- ;;; Virt Addr Phys Addr MB ;;;------------------------------------------------------------- DCD 0x80000000, 0x00000000, 32; 阅读全文
posted @ 2010-05-12 20:28 gmh 阅读(269) 评论(0) 推荐(0)
摘要:到BSP后,直接按照《[WinCE50]S3C2440A_Installation Manual_V1.1.pdf》中的方法添加BSP到PB中,添加必要组件并编译。编译后生成六个文件:STEPLDR.nb0, STEPLDR.bin, EBOOT.nb0, EBOOT.bin, NK.nb0, NK.bin。由于开发板上只有NAND Flash,因此只能使用三星的stepstone技术来引导系统。stepstone的作用是系统上电复位时,将NAND Flash前4K的数据复制到内部的SRAM运行,可以在这4K里实现直接引导操作系统的功能,也可以复制eboot到外部SDRAM运行,再由eboot 阅读全文
posted @ 2010-05-09 21:28 gmh 阅读(592) 评论(0) 推荐(0)
摘要:不管任何方式的系统挂起,最终都会调用OEMPowerOff()函数来实现.OEMPowerOff()函数由OEM来完成,这个函数也许会位于power.c或者off.c的文件中.OEMPowerOff()是OEM来实现的,代码和流程也许不同,但基本按照下面的方法来完成.挂起的过程:1.先进行平台相关的动作,比如清屏,设置AD,usb等.2.保存芯片所有的寄存器值到一个静态数组(就是堆栈中)3.设置io,关闭kitl等4.呼叫OALCPUPowerOff()进行挂起.OALCPUPowerOff()是一个位于startup.s中的汇编函数,它按照下面的流程实现挂起功能5.保存通用寄存器r4-r12 阅读全文
posted @ 2010-05-08 21:48 gmh 阅读(929) 评论(0) 推荐(0)
摘要:作者:ARM-WinCE在WinCE OAL中的电源管理主要由OEMIdle和OEMPowerOff两个函数实现。应该说OEMIdle实现的是处理器级的电源管理,而OEMPowerOff实现的是板级的电源管理。在WinCE系统运行的时候,如果没有任何线程可以执行,那么内核就会调用OEMIdle函数。一般在OEMIdle中,处理器都会进入sleep模式或者idle模式,这取决于处理器本身所能支持的低功耗模式。应该说,这个时候系统中的各个设备还是正常工作的,只是处理器进入了一种低功耗模式。OEMIdle函数是OAL中必须实现的,微软也提供了一个例子,在%_WINCEROOT%\Platform\C 阅读全文
posted @ 2010-05-08 21:39 gmh 阅读(345) 评论(0) 推荐(0)
摘要:WINCE5.0的中断深入了解1.总体了解流程首先描述wince5.0 (2440BSP)的中断流程:流程1.创建事件aà创建线程ISTà用InterruptInitialize〈系统中断号绑定线程IST〉à线程IST进入等待事件a状态(挂起状态)。流程2.外部引发中断à OEMInterruptHandler屏蔽中断à把物理中断转换成系统中断,其他à重新使能中断。(ISR过程)à操作系统根据系统中断号触发事件a。流程3.挂起的IST线程等待到事件a进入就绪状态,得到执行时间后开始执行中断服务代码, 最后调用InterruptDone重新使能当前的中断。你需要为你的设备驱动写好中断处理请求 阅读全文
posted @ 2010-05-06 13:43 gmh 阅读(481) 评论(0) 推荐(0)
摘要:以前在CSDN写过一些wince5.0中断的文章,现在重新看看,发现以前的有些理解是错误的,想翻开来改改,可是郁闷的CSDN在前台没有返回后台的编辑功能,所以现在重新写一篇纠正一下。首先描述wince5.0 (2440BSP)的中断流程注册表等——》KernelIoControl(——》OEMIoControl——》OALIntrRequestIrqs )把物理中断转换成系统中断——》InterruptInitialize调用OEMInterruptEnable使能中断并用中断绑定线程——》OEMInterruptHandler屏蔽中断——》执行线程——》InterruptDone——》调用O 阅读全文
posted @ 2010-05-05 11:17 gmh 阅读(513) 评论(0) 推荐(0)
摘要:对于KernelIoControl这个函数我们并不陌生,在2440 5.0BSP当中,这个函数在很多驱动中出现了,主要是用来申请中断,比如下面BOOL RetVal = KernelIoControl( IOCTL_HAL_REQUEST_SYSINTR, &Irq, sizeof( Irq ), pSysIntr, sizeof( *pSysIntr ), NULL );-------------------其实他的作用远远不止申请/释放中断那么简单,下面来看看PB的帮助文档。This function provides the kernel with a generic I/O contr 阅读全文
posted @ 2010-05-05 10:24 gmh 阅读(1844) 评论(0) 推荐(0)