
Embedded - 开发
文章平均质量分 62
tywali
长期从事嵌入式系统,呼叫中心,MIS的开发
展开
-
开发一般PC机软件与嵌入式应用的区别
刚刚参加工作的时候我从事的是嵌入式应用系统的开发,后来又经历了长达10年的PC机应用软件的开发,直到最近,才又返回来进行嵌入式系统的开发,对于这两种软件开发的区别颇有一点心得。总的来说,嵌入式开发与一般计算机软件开发的区别如下:1、终端软件把大量的功能集中在一个程序中,代码规模非常大,源代码动辄几M、几十M、甚至上百M;而嵌入式系统一般把功能分散在不同的硬件模块中,使用分散的程序是先系统功原创 2008-04-21 20:33:00 · 7247 阅读 · 2 评论 -
基于OHCI的USB主机 —— OHCI(端点)
OHCI (Open Host Controller Interface),是康柏、微软、国家半导体等公司共同制定的一个USB主机接口规范,它提供一个更抽象的接口来完成USB数据传输工作。在OHCI规范中,最重要的几个概念是端点(EndPoint - ED)、传输描述符(Transport Descriptor -TD)、主机控制器通信区(HCCA)。其中ED负责确定传输类型(控制传输原创 2009-12-07 10:37:00 · 1417 阅读 · 0 评论 -
基于OHCI的USB主机 —— 寄存器(其它)
USB端口关电对USB端口进行关电处理的目的主要有两个,一是安全拔下U盘,防止带电插拔造成数据丢失或错误,另一个是为了再次开电,对U盘内部程序进行复位。/** * 断开USB端口的供电 */short ohciHardDisable(void)原创 2009-12-07 10:35:00 · 981 阅读 · 0 评论 -
基于OHCI的USB主机 —— 寄存器(复位)
USB端口复位当USB设备连接到某个端口上以后,根据规范,需要对相应USB端口进行复位 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE原创 2009-12-07 10:32:00 · 790 阅读 · 0 评论 -
基于OHCI的USB主机 —— 寄存器(传输)
启动控制传输进行控制传输之前,需要设置好相应的ED和TD参数(参见下一章),启动传输时需要设置OHCI寄存器中的控制传输ED头指针寄存器和控制传输的当前ED指针寄存器,然后设置控制寄存器允许处理控制传输列表,控制状态寄存器有控制传输列表数据需要传输,代码如下:/** * 通过Control端口传原创 2009-12-04 17:09:00 · 849 阅读 · 0 评论 -
基于OHCI的USB主机 —— 寄存器(初始化)
硬件初始化的操作比较简单,主要代码从例程《AT91RM9200-BasicUHP》中抄过来,另外增加了中断向量初始化的部分。在AM9200中,USB的中断是基于AIC中断的,因此要设置对应的AIC中断。在此之前要设置OHCI的中断寄存器,代码如下:/** * USB主机初始化原创 2009-12-04 17:07:00 · 7809 阅读 · 0 评论 -
基于OHCI的USB主机 —— OHCI(基本流程)
根据上面的介绍可以发现,通过USB端口进行数据收发的主要工作就是构建ED和TD列表。其中ED列表控制数据的传输方向,TD列表完成具体的数据打包和传输。按照OHCI规范,ED和TD列表都是可以在使用过程中对某个节点进行修改,比如增加和删除。但是为了程序处理简便起见,最好采用顺序处理模式,也就是一个命令执行完毕以后,再重新构建新的ED和TD列表,执行下一个命令。进行控制/批量传输的主要处理流程原创 2009-12-07 18:02:00 · 1041 阅读 · 0 评论 -
基于OHCI的USB主机 —— OHCI(传输描述符)
传输描述符(TD) 传输描述符(TD)是系统内存的数据结构,被HC用于定义从端点收发数据的缓冲区。TD分为2个类型:通用TD和同步TD。通用TD用于中断、控制和批量端点,同步TD用于同步传输。使用两种不同的TD类型是因为缓冲区类型的不同。对于U盘主机控制器来说,不使用同步传输。原创 2009-12-07 10:38:00 · 1242 阅读 · 0 评论 -
基于OHCI的USB主机 —— 寄存器(设备连接)
读取USB设备连接状态读取HcRhPortStatus寄存器可以得到相应USB端口是否有设备连接,但是在嵌入式系统中,为了增强系统的稳定性,要有适当的算法保证在一段时间内,连续读到设备连接或断开,则才能确定设备的连接状态,下面的函数在定时中断中被调用,用来检测USB设备的连接状况:/** * 读取USB原创 2009-12-07 10:34:00 · 811 阅读 · 0 评论 -
基于OHCI的USB主机 —— 寄存器层(说明)
AM9200支持标准的OHCI规范,在其开发文档中对于USB主机部分的说明干脆就直接说参见OHCI规范。阅读AM9200的例程《AT91RM9200-BasicUHP》代码,发现系统已经提供了访问OHCI寄存器的指针pUhp,使用该指针就可以访问到所有的OHCI寄存器,因此读写寄存器的操作就是对pUhp指针进行操作。按照面向对象的编程思想,将所有寄存器看作是一个对象,对其操作都是通过接口来原创 2009-12-04 17:02:00 · 1696 阅读 · 0 评论 -
基于OHCI的USB主机 —— 总体构架
写在前面的话:这篇文章原来发表在我的51CTO技术博客里,最近把优快云这边的空间恢复了,于是把那边的文章搬过来。 在我们的系统中,USB主机就是用来对U盘进行读写操作,因此在设计和构架上就完全围绕这个目的而进行。整个系统所涉及到的内容比较多,按照嵌入式系统开发的一般原则,采用层次化的体系结构,将系统按照功能划分为若干层次,每一层完成相应的功能。根据系统的业务需要,系统总体构架原创 2009-11-30 19:59:00 · 796 阅读 · 0 评论 -
基于OHCI的USB主机 —— 背景介绍
写在前面的话:这篇文章原来发表在我的51CTO技术博客里,最近把优快云这边的空间恢复了,于是把那边的文章搬过来。使用AT91RM9200作为主控CPU,利用该芯片的USB主机接口访问U盘,根据接收的上层命令把相应数据保存到U盘的指定文件上。不使用额外的专用USB控制芯片,要求稳定可靠,效率高,不能影响运行在该CPU上的其它程序。AT91RM9200程序加载后直接运行,没有原创 2009-11-30 19:56:00 · 697 阅读 · 0 评论 -
基于OHCI的USB主机 —— 前言
写在前面的话:这篇文章原来发表在我的51CTO技术博客里,最近把优快云这边的空间恢复了,于是把那边的文章搬过来。很久以前,大概是前年年底吧,因为公司项目的要求,我做了基于OHCI的USB主机访问U盘的程序,用来把系统中产生的一些数据保存到U盘中。本来做的时候就想把其中的一些经验体会发表的,可是工作实在是太忙,而且也的确有点懒,就一直拖到了现在。做访问U盘的USB主机,原创 2009-11-30 19:43:00 · 531 阅读 · 0 评论 -
嵌入式操作系统随想
算来算去,我从事嵌入式开发的年头也很久了,从最早的8031,到最近的EZ80、AT91AM9200,一个共同的特点是所有的系统中都没有使用嵌入式操作系统。这完全是历史原因造成的。在最早使用8031的时候,还没有听说过嵌入式操作系统这个名词,当然也谈不上使用了。等到现在,嵌入式操作系统也出来了,使用的CPU AM9200也可以支持嵌入式操作系统了,可是找来找去,看来看去,商业的太贵,VxWork原创 2008-04-23 19:43:00 · 679 阅读 · 0 评论 -
面向对象开发的一点心得 - 文档
面向对象的软件开发是目前计算机软件开发的主流,其设计思想和原则虽然简单,但是如何应用好这些思想和原则却是需要在长期的实践中不断体会和提高。本人虽然从事了长达10年的软件开发,但是说来惭愧,每次看到自己的代码,总是觉得欠缺多多。使用面向对象的方法设计软件,如果结构设计的好,则软件易于扩展,但是如果软件规模较大的话,对于代码的阅读和维护会带来一定的困难。譬如对于工厂模式,在同一个父类下有若干个实现原创 2008-04-23 19:22:00 · 541 阅读 · 0 评论 -
基于OHCI的USB主机 —— OHCI(HCCA)
主机控制器通信区(HCCA)是一个256字节对齐的内存数据结构,被系统软件用于与HC进行通信,收发相关控制和状态信息。系统软件通过HcHCCA寄存器设置HCCA的地址到HC。该结构允许软件给HC的函数指明方向,而不需要从HC读取,除非不寻常的状况发生(例如发生错误)。通常与HC的交互可以通过读取HCCA结构的值或者写入原创 2009-12-07 10:38:00 · 1838 阅读 · 1 评论