中国·芯片交易在线
首页 | 供应信息 | 求购信息 | 库存查询 | 新闻中心 | 展会资讯 | IC厂商 | 技术资料 | 自由区域
   新闻首页 |  行业动态 | 新品发布 | 政策法规 | 科技成果 | 模拟技术 | 嵌入系统 | 传感控制 | 存储设计  
当前位置:IC72首页>> IC新闻中心>> 传感控制 >>电子行业新闻正文

基于ARM智能家居控制器设计与实现

时间:2007/9/1 9:49:00  作者:  来源:ic72  浏览人数:1615
 
 

      如何将家庭里相对独立的设备连接成一个系统,从而方便进行本地和远程控制?本文通过采用ARM构成智能家居控制器来实现这个目标。智能家居控制器使用S3C2410、SIM100-E等元件来组成硬件平台,再将Linux系统移植到硬件平台上,然后设计好相应的驱动程序和应用程序,最后将软件下载到硬件平台来对家电进行本地和远程控制。

      随着数字化家用电器的飞速发展,如何对家庭中相对独立的家用电器进行智能化管理和操作?这是人们非常关心的一个问题。智能家居控制器能够将许多相对独立的家用电器构成一个统一的系统,从而方便对家用电器进行本地操作,也可通过互联网或GPRS系统对家用电器实现远程控制等等。本文主要讨论智能家居控制的设计和实现。

      1 智能家居控制器的硬件设计

      在设计智能家居控制器时,考虑到系统的稳定性和扩展性,因此将控制器硬件设计成核心板和控制板2部分。核心板主要用来构成一台嵌入式计算机系统,控制板主要是一些外围接口。系统硬件如图1所示。

IC72新闻中心

      图1 智能家居硬件结构图

      核心板采用三星公司生产的S3C2410微处理器。ROM采用SAMSUNG K9F1208芯片构成64MNAND FLASH,将FLASH芯片连接到系统的nGCS0,所以它的起始地址为:0x00000000。RAM采用2片HY57V561620AT-H构成64M ,将它连接到系统nGCS6,所以它的起始地址为:0x03000000。为了让系统从NAND FLASH启动,要将S3C2410的OM0和OM1引脚都接地。最后将S3C2410处理器的串口控制信号、USB主机控制信号、LCD控制信号、触摸屏信号、数据总线、地址总线、控制总线、外部中断等信号全部连接到核心板上的200芯插座上。

      GPRS模块采用SIMCOM公司生产的SIM100-E芯片。通过第三个串口信号线TXD2和RXD2和处理器相连接。

      LCD直接由CPU来控制,不过要增加驱动电路。

      触摸屏采用4线电阻式,直接将它和CPU的nYPON、YMON、nXPON、XMON相连。

      传感器接口的输出信号连接到CPU的EINT9外部中断引脚上,当传感器接收到某个信号时,就可以通过外部中断引脚向CPU申请服务。

      家电控制接口的输入控制信号连接到CPU的GPIO端口,当要对某个家电进行控制时,只需向指定的端口写入0或1,然后再由家电控制接口发遥控信号去控制相应的家电。

      2  智能家居控制器操作系统的移植及裁剪

      考虑到成本,以及系统对实时性的要求不高等因素,所以决定选用Linux操作系统。目前发行的Linux操作系统都能支持ARM机的体系结构,所以只要根据平台的具体结构进行移植。移植主要包括建立交叉编译环境、修改内核源码、内核裁剪和内核编译4等个环节。

      2.1 建立交叉编译环境

      交叉编译是指利用运行在某台计算机上的编译器编译某个源程序生成在另一种结构计算机上运行的目标代码的过程。编译器的生成依赖于相应的函数库,而这些函数库又得依靠编译器来编译。建立交叉编译环境就是将ARM使用的编译器(如:arm-linux-gcc)和函数库(如:glibc)安装到指定目录,并使用configure配置好Makefile文件。

      2.2 修改内核源代码

      修改内核源代码主要包括启动代码的修改、内核的链接及装入、参数传递和内核引导几个部分。Linux内核分为体系结构相关部分和体系结构无关部分。在Linux启动的第一阶段,内核与体系结构相关部分首先执行,它会完成硬件寄存器设置,内存映射等初始化工作。

      然后把控制权转给内核中与系统体系结构无关的部分。在移植工作中要修改的代码主要集中在与体系结构相关的部分。ARM芯片的体系结构在arch/arm目录下。首先根据芯片手册修改boot/init.S文件中的:片选组基地址寄存器、DRAM存储配置寄存器、DRAM片选寄存器、中断屏蔽寄存器等。然后修改内核的链接及装入ELF。最后将系统中可用页面的数目、文件系统大小等信息以参数形式从启动代码传给内核,完成设置陷阱,初始化中断,初始化计时器,初始化控制台等一系列操作而使内核正常启动。

      2.3 内核裁剪和编译

      内核裁剪是根据控制系统的要求将不需要的模块从内核中裁剪了,Linux内核的裁剪有好几个版本,可以使用命令make menuconfig对系统进行裁剪。

      内核裁剪之后,最后要进行交叉编译生成内核映象文件zImage。具体命令如下:

      make clean   //清理编译环境

      make dep    //编译依赖文件
 
      make zImage  //编译内核

      3 驱动程序的设计

      智能家居控制器要多个设备驱动程序,有的驱动程序可以采用标准的驱动程序,有的要专门设计。芯片SIM100-E是通过第三个串口与S3C2410相连的,所以可以直接使用标准的串口驱动程序。传感器接口和家电控制接口要设计专用的驱动程序。控制器的处理器通过外部中断来检测传感器,通过GPIO端口来控制家电,虽然它们的工作原理有所不同,但驱动程序设计的方法没有很大差别,因为在嵌入式Linux系统中设备驱动程序有一个标准的框架,设计驱动程序的大部分工作就是根据硬件结构来“填写”框架中的函数。主要的函数包括open()、read()、write()、ioctl()、release()、module_init()和module_exit()等等。

      下面以传感器接口驱动程序设计为例,简介驱动程序的“填写”过程。

      3.1 设备初始化模块和退出模块

      设备初始化模块的主要功能是:设置和申请中断、向内核注册设备等。设备退出模块的主要功能是:释放设备所占用的资源。具体函数如下:

      int __init S3C2410_int_init(void)

      {┅

      set_external_irq(IRQ_EINT9, ┅);//设置外部中断

      request_irq(IRQ_EINT9,demo_int_handler, ┅);//申请外部中断

      ret = register_chrdev(0, DEVICE_NAME, &S3C2410_exio_fops); //申请主设备号

      devfs_int_demo= devfs_register(NULL, int_demo, ┅); //注册设备文件

      ┅}

      void __exit S3C2410_int_exit(void)

      {┅

      free_irq(IRQ_EINT9,NULL);//释放中断

      devfs_unregister(devfs_int_demo); //删除设备文件

      unregister_chrdev(exioMajor, DEVICE_NAME); //释放主设备号

 
【相关文章】
·基于ARM智能家居控制器设计与实现
·福禄克电气和电能质量测试产品在供配电系统中的应用
·EDGE设计:获得继续演进的动力
·采用FPGA实现广播视频基础系统设计
·基于CC2420的无线传感器网络节点的设计
·高级控制系统优化软件PROFI在电厂DCS中的应用
 
 
IC新闻搜索
 
热点新闻
基于红外超声光电编码器的室内移动小车定位系
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
非移动市场需求飙升,ARM预计2010年出货量超50亿片
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于ARM9内核Processor对外部NAND FLASH的控制实现
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9