当前位置:首页 > 嵌入式 > 嵌入式硬件

0、引言

随着通信领域新业务需求的不断增长及计算机技术,半导体技术和电子技术的术的迅速发展,嵌入式系统异军突起,已经渗透到社会生活的方方面面了。它是集软件,硬件于一体的高可靠性系统。其最大特点即为可以通过裁减装卸系统模块来配置整个平台所要求的功能。

Windows CE是由微软公司所开发的一个嵌入式操作系统,它与Windows平台的编程接口有很强的兼容性。其平台开发工具Platform Builder是一个完全集成的开发环境(IDE)。本项目所涉及的硬件开发套件 Zylonite Development 装配有的Xscale芯片处理器Monahans L(PXA300),并配有相关外设电路接口(.0,SD/MMC,音频,以太网口等)及外设(,KEYPAD,,听筒,话筒等)。其独特的结构优化能力保证了操作环境和通用应用设备可以在高频率和的情况下快速处理任务。

1、WINCE 下的SD卡驱动架构

Wince 下SD卡驱动协议栈组成 :

uHOST硬件底层部分 (主控制端驱动)SDHC_XXX.DLL

uBUS 中间逻辑命令层 (总线驱动)SDBUS.DLL

u上层(客户端驱动)SDMEMORY.DLL

1.1、主控制端驱动

主控制端驱动控制包含主控制器硬件,遵循主控制端驱动接口,它被用于总线驱动通信和设置操作参数。主控制器驱动接口提供一个硬件提取层,在总线和主控制端执行之间。即:SDHC_XXX.DLL是最底层,因为这层是硬件关联层,因此取名XXX便是为了对应的具体的硬件BSP包(如本项目的硬件平台是ZYLONITE,其硬件供应商给的BSP包名即为ZYLONITE,在实际项目中我们便将SDHC_XXX.DLL取代为SDHC_ZYLONITE.DLL),它负责具体的发命令,大多数情况下都需要修改。

1.2、总线驱动

总线驱动作为提取和管理层处于主控制驱动和客户端驱动之间。它包括在SDbus.dll文件。为客户端驱动提供了标准的API,允许运行在任何的基于windows ce设备。总线驱动将是独立于应用程序和主控制端驱动,在不同的处理器之间移植,并不需要改动。SDBus.dll是中间层,负责整合命令和管理。

1.3、客户端驱动

客户端驱动和SD客户端驱动通信接口允许客户端驱动去和SD设备通信。客户端驱动接口是有计划地抽象SD总线物理设备的执行,提供了客户端驱动最大的弹性。客户端驱动接口允许客户端驱动去衡量一个单一的,同步的访问存储卡驱动使用一个线程,异步通信设备驱动。SDMemory.dll是最高层,类似于应用层。

2.立足微软SD卡协议栈开发Zylonite 的BSP包的SD卡驱动

当我们开发SD卡驱动时,并详细分析比较了Microsoft的SD驱动架构和所提供的BSP内的参考SD卡驱动以后,可以得出如下结论:

针对主控制端驱动(SDHC_XXX.DLL):因为这一层是直接操作硬件的一层,所以大多数情况下都需要修改。修改的内容基本为收发命令部分以及数据传输和硬件初始化部分.

针对总线驱动(SDBUS.DLL):因为这一层处于主控制驱动和客户端驱动之间,用于他们之间的通信,SD卡总线请求都放在它里面,微软提供了非常完备的样例代码,所以我们一般都不需要改动,直接调用它的接口就可以了。

针对客户端驱动( SDMEMORY.DLL):因为SDMemory就是所谓的层,类似于应用层,它还可用来识别卡的,不同种类的卡,比如sd 等,鉴于我们只需开发SD卡部分的驱动,所以也不需要怎么修改了(如果我要开发SD接口的设备,那么就得在这层做比较大的改动了)。

Intel所提供的BSP内的参考SD卡驱动自己实现了主控制端驱动(SDHC_ZYLONITE.DLL),而调用并保留了总线驱动(SDBUS.DLL)和客户端驱动( SDMEMORY.DLL)。因此结合具体的硬件设计(SD卡的等),我们的主要任务便是利用BSP内的SD卡主控制端驱动代码,开发(配置并改进)我们实际项目内的SD卡驱动。

2.1、Zylonite BSP内的SD卡主控制端驱动概述

SD卡的驱动程序是以流的形式提供的,而该SD卡主控制端驱动以sdhc_zylonite.dll 的形式提供,入口在: WINCE500PLATFORMZylonitepubliccspmonahanssdhc

有如下两个文件:

sdcontrol.c:内含一个非常重要的线程---SDControllerISTHandler,主要负责卡与控制器的交互,处理控制器接收的消息等,具体的控制和处理函数均在此文件中。

main.c: SDH(主控制端驱动)的导出流接口在该文件中实现,并包含有主控制端驱动的(sdhc_zylonite.dll)的入口点。

SD卡硬件初始化及其主控制端驱动的注册表信息设置路径为:

WINCE500PLATFORMZylonitePlatformZYLONITESRCDRIVERSSDHC

主要文件为:

.c: 主要是在加载SD卡主控制端驱动时初始化硬件。内含一个非常重要的线程---- SDCardDetectIstThread,专门处理SD卡的插拔操作。但是具体的插拔操作也是在Sdcontrol.c文件实现的。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

新一代人工智能的发展,是国家层面的战略大协作。由科技部主导,共15个国家部门构成的新一代人工智能发展规划推进办公室,着力推进项目、基地、人才统筹布局,打造国家级专家库,成立新一代人工智能战略咨询委员会。很多时候企业拥有重...

关键字: 人工智能 自动化 平台

没想到一家半导体公司创始人的经历可以如此传奇,从大屠杀中活了下来,他就是威世(Vishay)创始人费利克斯·赞德曼(Felix Zandman)。本以为世界级半导体公司的创始人都是从小理科天赋过人、名校背景,成长故事如同...

关键字: 半导体 平台 公司

对于法系车,在广大消费者心目中,它最大特点或许是在欧洲设计理念的平台上,设计前卫、操控性好、底盘扎实,突出人性化。一旦你接受并习惯这种法式的设计感后,就会爱得无法自拔,正如法国的艺术品一样。所谓纯正的法系车,只能意会不能...

关键字: 设计感 理念 平台

史胜辉,在MTK工作了11年,一直在基带芯片的USB驱动领域做开发和验证。从最开始做USB2.0/3.0 IP验证和驱动开发到后面带领团队做上层协议驱动开发,以及跟硬件设计部门合作开发全新的USB硬件加速器。

关键字: 基带芯片 驱动领域 驱动开发

摘 要 :从智慧旅游平台的构建可行性出发,基于物联网技术对智慧旅游平台进行了总体设计,并分析了平台各子系统功能,总结了平台的总体功能与实际应用价值,以期能够将物联网技术的应用效益最大程度发挥出来,使其更好地服务于智慧旅游...

关键字: 物联网技术 旅游业 智慧旅游 应用效益 信息化 平台

点击上方名片关注我们朱老师推荐语:此岗位为AIoT终身成长大会员同学提供的自己公司的岗位内推,总部在深圳,是一家专业从事闭路电视监控设备、会议摄像机的研发、制造、销售的高科技企业,有学过嵌入式课程或者海思项目的同学,想换...

关键字: 开发工程师 linux驱动 驱动开发

最近在学习MIPI接口的LCD驱动开发与调试,这里我主要用的是MIPI-DSI接口,它学习起来真的是太复杂了,特别是对于我这种很久都没写驱动来说更是头疼,但是头疼归头疼,工作咱们还是要完成的,那就只能硬着头皮往下肝吧!首...

关键字: MIPI 驱动开发 调试

关注、星标嵌入式云IOT技术圈,精彩及时送达来源|  Linux与SoC整理出了6种驱动开发时与设备注册、设备树相关的调试方法,彼此间没有优先级之分,每种方法不一定是最优解,但可以作为一种debug查找问题的手段,快速定...

关键字: 驱动开发

最近在学习MIPI接口的LCD驱动开发与调试,这里我主要用的是MIPI-DSI接口,它学习起来真的是太复杂了,特别是对于我这种很久都没写驱动来说更是头疼,但是头疼归头疼,工作咱们还是要完成的,那就只能硬着头皮往下肝吧!首...

关键字: MIPI 驱动开发 调试

哈喽,我是老吴,我来继续分享我的学习心得啦。gpio和pinctrl子系统在内核里的使用率非常高,和嵌入式产品的关联非常大。从这两个子系统开始学习驱动开发是个不错的入门选择。本文目录:一、gpio 与 pinctrl二、...

关键字: gp pi 驱动开发
关闭
关闭