« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
☆★☆★☆★☆★☆★☆ 生活的点点记录,以及一些体会...........
喜欢是淡淡的爱,爱是深深的喜欢.
时间会见证一切.......................
欢迎大家指出错误,共同进步..........
期待中..............................
☆★☆★☆★☆★☆★☆ |
Blog信息 |
blog名称: 日志总数:162 评论数量:312 留言数量:0 访问次数:941798 建立时间:2005年5月17日 |

| |
[wince study]Eboot代码流程 文章收藏
oceanblue 发表于 2008/6/13 9:47:25 |
Eboot代码流程
----by nasiry 转载自:http://www.cnblogs.com/nasiry/archive/2004/11/10/62327.aspx
首先通常都是汇编代码:启动时由系统复位导致PC为0为触发条件:以244 |
|
[wince study]bootloader起步一 原创空间
oceanblue 发表于 2008/6/11 13:50:32 |
bootloader 通常是用来放置OS镜像到内存中,然后跳到OS起始地址。
bootloader 通常驻留在非易失存储设备,系统起来或重启回执行。
为了能够得到bootloader在开发板上,第一次开发者通常用JTAG接口烧入。
之后bootloader更新通过自己和更新OS.
|
|
[wince study]USB Mass Storage(转载) 文章收藏
oceanblue 发表于 2008/6/10 11:13:59 |
USB Mass Storage.
中介 MDD 到 SCSI 間的就是 BOT了 (果然)。 可以看到,跟USB Mass Storage Protocol 內容一樣,解開CBW 的就是BOT這一層
Pdd Initialize USB PostInit - Mass Storage Class BOT_InternalInit BOT_ReadConfigurationValue GetEndpointDescriptor BOT_ReadConfigurationValue BOT_TransferThread BOT_DeviceNotify .. BOT_ResetPipeState BOT_DeviceNotify BOT_HandleRequest BOT_DeviceNotify ..
BOT_InternalInit 呼叫 UfnMdd_Start ( &BOT_DeviceNotify |
|
[wince study]WINCE知识点滴 (文章收藏,权利属于原创作者) 文章收藏
oceanblue 发表于 2008/6/9 15:46:00 |
WINCE知识点滴
1.CE下同名设备不能大于10
CE5.0中已经没有这个问题了, 以前的版本可以这样做: 只给上层输出一个设备, 然后用一个IOCTL去打开一个个的物理设备 这样就可以做到不受任何限制了
2.MDD与PDD
一个驱动程序通常会被分成硬件相关(PDD)与硬件无关(MDD)层两部分。 当然,这种分层不是必须的,只是采用这种分层以后可以少写很多代码,因为微软提供了很多驱动程序的MDD。即使CE中没有我们所写的驱动程序的样例,采用这种结构以后,当需要写第二个程序时,就可以重用它的代码,就可以提高开发效率。
MDD是提供同类型的设备(比如串口)都会有的功能,这样PDD基本上就只有寄存器操作了。 像串口的中断处理,Read/Write函数,其大部分代码都是在MDD中实现的, 不同的串口实现中只需要提供一些实际操作寄存器的函数
不同的驱动程 |
|
[wince study]WINCE驱动程序快速入门 (文章收藏) 文章收藏
oceanblue 发表于 2008/6/9 15:31:39 |
WINCE驱动程序快速入门
有人也许和我一样比较心急,想尽快知道如何去写一个具体的驱动程序,这里,假设您对驱动程序已经有比较好的了解,告诉大家一个快速上路的方法。当然,如果您有足够的时间我建议在动手之前还是深入了解一下CE整个系统架构。 在CE中,最简单的一个驱动程序莫过于一个内置(Built-in)设备的流接口驱动。对于一个不支持热拔插的设备,最快捷的方法就是为其实现一个内置的流接口的驱动。 对于这样一类驱动程序,我们只需要按一种特定的规则实现一个动态库,其中实现对所有的硬件功能的调用,再将这个动态库加入系统中,然后设置相关的注册表项,使得在系统启动时设备管理器能识别并且加载这个设备即可。 3.1 实现动态链接库 此动态链接库与应用程序层所用的库并不很大差别,源文件可以是C、C++、甚至汇编,,只是它要实现以下函数。 DllEntry(HINSTANCE DllInstance, INT Reason, LPVOID Re |
|
[wince study]2410 UDC driver 分析1 文章收藏
oceanblue 发表于 2008/5/20 13:44:32 |
在 USB Function Controller 的MDD层 有函数 GetClientFunctions( PUFN_FUNCTIONS pUfnFunctions) 调用者通过传入 PUFN_FUNCTIONS 类型的指针变量 来获得 USB Function Controller MDD层的所有操作函数.
USB Function Controller 的MDD层的函数 UFN_Init( LPCTSTR pszContext )中 会创建一个PUFN_MDD_CONTEXT pContext指针变量 这个变量包括了MDD层的所有属性,这个变量还包括了一个指向 PDD层的指针变量UFN_PDD_INTERFACE_INFO PddInfo; PDD层的这个UFN_PDD_INTERFACE_INFO PddInfo里又包含了PDD层的一些属性和PDD层的所有操作函数指针,这样在UFN_Init() 函数中创建了一个 new CUfnBus(pszContext, pContext)USB总线对象,同时将包含MDD层所有属性的pC |
|
[wince study]注册表里的一些技巧 文章收藏
oceanblue 发表于 2008/5/13 15:32:59 |
一\ 如何实现开机后,还未进入WINCE界面就运行其他程序
假设应用程序为myapp.exe,那先将这个程序放到 SMDK2410\FILES\目录下.
接着在PB中的 PLATFORM.BIB文件中的 FILES目录下添加
myapp.exe $(_FLATRELEASEDIR)\myapp.exe NK U
可将该文件打包进NB0中;
再在PLATFORM.REG目录下添加以下内容,注意是90:
阅读全文(1892) | 回复(0) | 编辑 | 精华 | 删除 |
| | |
[wince study]USB设备驱动程序导读(9) 文章收藏
oceanblue 发表于 2008/5/12 16:26:04 |
以Bot.c文件中的BOT_DataTransfer()函数为例,在这个函数中,读写操作全部是调用了IssueBulkTransfer()函数,这个函数是由USBD提供的接口并且被usbclient.c程序进行了再次封装,它可以完成对物理USB设备的数据存取操作,这就要根据不同的设备来进行了,而且还要区分是命令操作还是数据操作,是命令状态操作还是其他操作等等,需要与设备及USB标准来对应。因为只是学习一个框架,所以有兴趣的话可以深入研究一下。
到此为止,一个USB设备驱动程序的最基本框架就已经浏览了一遍,很粗糙也很烦杂,到头来废话说了太多,也不知是否能说到关键之处。为了留下一个整体的印象,我们使用下面的图示进行回顾。
&n |
|
|