用户中心

资讯 > 嵌入式系统

嵌入式家庭网关中SPI接口的软件模拟

2007.07.28阅读 2454

  介绍嵌入式家庭网关的基本框架和信息流程控制工程网版权所有,及其CPU S3C4510B的体系结构和内部资源;说明在所选用uClinux操作系统下,添加SPI接口驱动程序的详细过程

  引言

  随着信息社会的发展,网络和信息家电越来越地出现在人们的生活中。人们普通要求将家庭内的所有家用电器与Internet连接起来CONTROL ENGINEERING China版权所有,实现主人在远方用计算机或电话通过Internet对象家庭电设施进行监控。家用电器制造商可以通过网络对其生产的设备进行售后跟踪服务;家用电器是故障时能自动按预设的邮件地址来发送电子邮件进行报警。这就需要有一个“家庭网络中央控制器”。它对外与Internet连接www.cechina.cn,对内通过家庭内部无线局域网将所有家用电器连接成一体,从而确保信息家电安全地接入Internet。当前,多数研究单位推出的家庭网络智能控制器,均以PC或准PC机作为硬件平台,由于价位高而均未被市场容纳。

  嵌入式Internet是近几年发展起来的一项新兴技术。以32位ARM嵌入式微处理器为硬件平台,通过移植嵌入式操作系统uClinux内核,开发相应的硬件驱动、微型GUI和上层应用软件,最终实现产品化的嵌入式家庭网络中央

控制器。该系统具有体积小、功耗低、价格便宜的特点。

  1 系统的硬件组成

  本系统以高性能、低价格的S3C4510B为主CPU。它是Samsung公司推出的基于ARM7TDMI核,精简指令系统的32位高速微处理器。工作电压为3.3V,内核ARM7TDMI的工作电压为2.5V,大大降低了芯片的功耗。S3C4510B片上资源:一个总线仲裁器可以根据总线仲裁优先级在片上功能模块和外围设备之间进行系统总线控制权分配;8KB指令、数据复用Cache,每128bit为1页,并可全部或部分设置为SRAM;1个主I2C总线控制器,可作为主发送器或主接收器,能连接多个从设备;2个通用DMA;18个通用I/O口; 2路4线UART口,其中一个支持IrDA 1.0,可用于红外通信;6组ROM/SRAM/Flash用于管理外部存储器。另外,可扩展4组动态存储器和4 BANK扩展I/O设备;2通道带有DMA传送方式的HDLC口;1个10M/100M自适应以太网控制器。

嵌入式家庭网关中SPI接口的软件模拟如图

  图1为家庭网关的硬件框图,以S3C4510B为基本核心系统,外围扩展一系列功能模块。有4×4键盘及以屏幕LCD显示构成良好的人机界面,用于手动本地参数查询和设定。家庭网关基本系统以SPI接口与PTR3000无线收发模块相连,同时家庭内部家电控制器也通过SPI接口扩展PTR3000无线模块。这样控制工程网版权所有,家庭网关的无线模块以轮询的方式与家庭内各家电控制器上无线模块进行通信,从而组成家庭内部无线子网。家庭网关基本系统只需对SPI口进行操作即可实现与家电通信。实现了家电以家庭网关为中介与Internet在物理层互联的三个通路:PC通过LAN经由Internet连接到基本系统的以太网口、PC通过Modem经由公司电话网与嵌入式Modem相连再到UART1、电话机经过公用电话网经语音卡连到UART1。


  2 uClinux嵌入式操作系统

  操作系统选用uClinux。它是一个完全符合GNU(GNU’s Not Unix,自由软件基金会)/GPL(General Pulic License,通用公共许可证)公约的完全开放代码项目,是标准Linux的一个分支,现在由Lineo公司支持维护。它专门针对没有MMU的CPUCONTROL ENGINEERING China版权所有,并且专为嵌入式系统做了许多小型化的工作。

  UClinux经过对标准Linux内核的改动,形成了一个高度优化的、代码紧凑的嵌入式Linux。虽然它的体积很小,但uClinux仍然保留了Linux的大多数的优点,稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支持以及标准丰富的API。它的主要特片如下:

  ①在linux-2.4.x/driver/char/Makefile添加1行:obj_$(CONFIG_SPI)+=SPI.0。在24行obj-y+=mem.o tty_io.o后加PI.o。

  ②在linux-2.4.x/driver/char/Config.in,添加1行:bool'SPI'CONFIG_SPI便于在make me nuconfig时选择。

  ③在linux-2.4.x/driver/char/mem.c在文件头部添加:#ifdef CONFIG_SPI /*编译时选择该项就执行SPI的初始化函数*/

  extern void SPI_init(void);
  #endif

  在chr_dev_init()函数添加:#ifdef CONFIT_SPI

  SPI_init();
  #endif

  ④修改v

版权声明:版权归控制工程网所有,转载请注明出处!
继续阅读

频道推荐

关于我们

控制工程网 & CONTROL ENGINEERING China 全球工业控制、自动化和仪器仪表领域的先锋媒体

CE全球

联系我们

商务及广告合作
任小姐(北京)                 夏小姐(上海)
电话:010-82053688      电话:18616877918
rendongxue@cechina.cn      xiashuxian@cechina.cn
新闻投稿:王小姐

关注我们的微信

关于我们 | 网站地图 | 联系我们
© 2003-2020    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688