基于arm的网络智能家居系统的设计与实现内容摘要:
5V、。 为触摸屏提供5V直流稳压电源。 这三种电压产生方法是5V从外部直接引入,作为系统的总电源,一路直接供给作为工作电源,一路分流到LT1085的输入端;,一路供给板子上器件,一路分流到稳压MAX8860EUA的输入端, V。 图 31 电源电路原理图 时钟复位模块S3C2410部分需要两路时钟输入,一路是S3C2410工作时钟输入,另一路提供给RTC电路。 S3C2410工作时钟是一个有源晶振,直接输出12MHz时钟信号到S3C2410,由S3C2410内部PLL倍频到200MHz。 图 32 时钟电路原理圈 复位对于系统来说很重要,由于各个单元要进入正常工作状态,需要可靠地复位,正常情况下,一般有上电复位和手动复位。 如果电源电压出现波动,系统会非正常复位,这个时候会发生复位时间不够而造成一些错误甚至死机,所以复位监控电路也是必要的。 复位电路选用的芯片是MAX811S。 图 33 复位电路 RS232串口模块S3C2410的UART单元提供独立的异步串行I/O端口,每个都可以在中断和DMA两种模式下工作。 支持最高波特率为1152kbps,每个UART通道包含2个16位的FIFO,分别用于接收和发送数据。 UART可以进行以下参数设置:可编程波特率,红外收/发模式,1或2个停止位,5位、6位、7位或8位数据宽度和奇偶校验位。 每个UART包含一个波特率发生器、发送器、接收器和控制单元。 波特率发生器以MCLK作为时钟。 发送器和接收器包含16字节的FIFO和移位寄存器。 系统中采用芯片MAX3232作为RS232的电平转换,实现串口通信。 图 34 串口UART模块 JTAG模块 JTAG对于产品来说不需要这个接口,但是在开发产品的过程中,JTAG接口是必不可少的,板子运行的第一个程序:Bootloader是通过JTAG下载,调试阶段JTAG也起到非常重要的作用.其原理图见图3.5。 图 35 JTAG电路原理图 Flash存储模块与Flash存储器相比较,SDRAM不具有掉电保持数据的特性,但其存储速度大大高于F1ash存储器,且具有读写的属性,因此,SDRAM在系统中主要用作程序运行空间,数据及堆栈区。 当系统启动时,CPU首先从复位地址0x0处读取启动代码,完成系统初始化后,程序代码一般应调入SDRAM中运行,以提高系统的运行速度,同时.系统及用户堆栈、运行数据也都放在SDRAM中。 S3C2410在片内具有独立的SDRAM刷新控制逻辑,可方便地与SDRAM接口。 本系统采用的两片Samsung公司的K4S56132CTC75芯片构建32位的SDRAM存储器系统。 每片K4S561632C的存储容量为16组*6M位,,常见封装为54脚TSOP,兼容LVTTL接口,支持自动刷新(AutoRefresh)和自刷新(SelfRefresh),16位数据宽度,、。 图 36 SDRAM电路原理图(a) 图 37 SDRAM电路原理图第4章 智能家居远程控制系统软件开发 嵌入式开发软件平台目前市场上流行的嵌入式操作系统比较多,主要有:嵌入式Linux、uC/OS、WinCE等。 相比之下Linux从诞生到现在短短的十几年的时间已经发展成为功能强大、设计完善的操作系统。 不仅在通用系统领域与Windows等商业系统分庭抗争,而且在嵌入式操作系统领域也获得了飞速的发展。 嵌入式Linux对标准的Linux进行了小型化裁剪处理,固化在存储器或单片机中。 在操作系统的选择上,对实时系统,uC/OSII当然是比较好的选择,但本智能家居系统中对实耐性要求不高,况且uC/OSII的驱动程序太少。 缺少必要的“基础设施”,许多设备比如以太网口都要自己编制驱动程序,相比之下,嵌入式Linux是个不错的选择。 因为既有以下优势:(1)开放源码.有丰富的软件资源。 (2)功能强大的内核,性能高教、稳定,多任务。 (3)支持多种体系结构(4)完善的网络通信、图形和文件管理机制(5)支持大量周边的硬件设备(6)大小功能都可定制。 交叉编译环境交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。 这里的平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。 同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。 举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 winNT平台实际上是Intel x86体系结构和windows NT for x86操作系统的简称。 就ARM而言,之所以使用交叉编泽是因为在该硬件上无法安装我们所需的编译器,只好借助于宿主机,在宿主机上对即将运行在目标机上的应用程序进行编译,生成可在目标机上运行的代码格武。 UBoot原理分析与移植UBoot除了支持PowerPC系列的处理器外,还能支持MIPS、x8ARM、NIOS、XScale等诸多常用系列的处理器。 UBoot源码目录结构1. board:开发板相关目录2. mon:通用的命令函数3. cpu:特定CPU架构相关目录,如arm920t4. doc:uboot的开发、使用文档5. drivers:uboot支持的设备驱动程序,比如串口,nandflash,网卡6. fs: 支持的文件系统,Uboot现在支持cramfs、fat、fdos、jffs2和registerfs。 7. include:头文件和开发板配置文件,configs目录下是开发板的配置文件8. lib_xxxx: 与体系结构相关的库文件。 如与ARM相关的库放在lib_arm中。 9. lib_generic:通用的库函数10. net:各种网络协议,TFTP协议、NFS协议等。 11. tools:uboot自带的工具 UBoot的移植,进入UBOOT目录,修改Makefile:在smdk2410_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0加上XJB2410_config:unconfig @$(MKCONFIG) $(@:_config=) arm arm920t XJB2410 NULL s3c24x0在第128行:ifeq ($(ARCH),arm) CROSS_COMPILE = armlinux修改完Makefile后,在board目录下,新建自己的开发板目录XUJINB2440,把smdk2410目录下的所有文件拷到XUJINB2440。 修改该目录下的Makefile。 COBJS := 将board目录下所有文件夹全部删除,只留XUJINB2440,在include/configs目录下创建板子的配置头文件,再把所有的文件全部删除,用chmod 764 mkconfig加上权限,然后再make,成功后可出现 Configuring for XUJINB2440 board.....修改SDRAM配置,在board/XUJINB2440/,检查define B6_BWSCON (DW32) 位宽为32,把B1_BWSCON 改为(DW16) B5_BWSCON 改为(DW8)根据HCLK设置SDRAM 的刷新参数,主要是REFCNT寄存器,开发板HCLK为100M,将 define REFCNT 0x1113 改为 define REFCNT 0x4f4,增加对S3C2440的支持,2440的时钟计算公式、NAND操作和2410不太一样。 对于2440开发板,将FCLK设为400MHz,分频比为FCLK:HCLK:PCLK=1:4:8。 编译UBoot, make,利用Embest Online Flash Programmer for ARM软件, Flash中,烧写地址为:0x000000000x00020000。 烧写完成后,重启开发板就可以在超级终端中看到UBoot的启动信息了。 至此,UBoot的移植工作就完成了。 移植开发环境搭建完成,接下来就可以进行Linux内核的移植了。 Linux内核分析与移植(1)内核源码目录结构分析Arch:与体系结构相关的代码。 Drivers:所有设备驱动程序代码,它占整个内核代码量一半以上,每一个子目录对应一类驱动程序。 Fs:文件系统代码,每个支持的文件系统有相应的子目录,如cramfs,yaffs,jffs2等include:包括编译内核所需的大部分头文件,与平台无关的头文件放在include/linux子目录下,平台相关的头文件如include/asmarminit: 内核初始化代码kernel: 内核管理核心代码lib: 库函数代码Mm: 内存管理代码Net: 网络支持代码Sound: 音频设备驱动代码Scripts: 用于配置内核的脚本文件Documentation: 内核相关文档(2)Linux的启动过程第一阶段: 检查内核是否支持当前处理器架构和开发板,禁止Cache,使能MMU,设置栈指针,调用start_kernel。 第二阶段: init/ start_kernel 完成内核初始化全部工作,最后调用rest_init函数启动init进程。 内核文件:vmlinux 编译出来的最原始的内核文件,未压缩 zImage是vmlinux经过gzip压缩后的文件uImage是Uboot专用的映像文件,由bootm命令启动 (3)准备移植 获得内核源码: 到官网。 解压源码,进入目录: tar xjvf cd 修改Makefile的183 行: ARCH。 = arm —指定系统硬件架构 CROSS_COMPILE ?= armlinux —指定交叉编译器 修改时钟: 修改arch/arm/machs3c2440/ 的163行 static void __init smdk2440_map_io(void) { s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc))。 s3c24xx_init_clocks(12000000)。 —输入时钟为12MHz s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs))。 } 修改:arch/arm/tools/machtypes的379 行: s3c2440 ……………………… XXX 配置: make menuconfig —进入图形化配置界面 在配置菜单中选择这一项:Load an Alternate Configuration File,输入2440的默认配置文件:arch/arm/configs/s3c2410_defconfig,这个文件就是S3C24XX系列开发板板级支持包(BSP )然后选择OK,按回车。 进入System Type选项单,里面的选项保持默认在S3C24XX Machine选项中只配置这几项(其他的选项取消): S3C2410 Machine [*] SMDK2410/A9M2410 S3C2440 Machine [*] SMDK2440 [*] SMDK2440 with S3C2440 cpu moudle 配置完后,回到主菜单,选择这一项Save an Alternate Configuration File,输入要保存的配置文件名称:.config (默认)或自。基于arm的网络智能家居系统的设计与实现
相关推荐
度 备注 ID bigint 主键 newstitle nvarchar 50 新闻标题 tNewsClass nvarchar 50 新闻类别 newscontent ntext 新闻内容 addtime datetime 添加时间 newsclick int 浏览次数 表 2 tNewsClass(新闻类别表 ) 列名 数据类型 长度 备注 ID bigint 主键 classname
Uint32 *sp。 /*定义一个 32位的指针 */ Uint16 i,PRD。 /*读取因子表 PRD=PRD55[3]。 sp=(Uint32 *)0x3ff000。 /*旋转因子表的起始地址 Uint32 *sp。 */ for(i=0。 iSPWM_NUM。 i++) { SPWM55[i]=(*sp15)。 /*由 Q30变成 Q15格式 OK*/ 初始化读 f
类型。 一种是基于数字录像设备为核心的视频监控系统,另外一种是基于嵌入式视频 web 服务器的视频监控系统。 基于数字录像设备的视频监控系统通常采用 PC 机作为视频监控的主机,其中集成了录像机、视频矩阵、图像分割器等众多的功能,这使视频监控系统的结构大大的简化,采用数字多媒体技术、计算机网络技术的远程网络监控没有距离上的限制,系统采用光盘存储器或者大容量磁盘阵列的硬盘,
的低速时钟为驱动;因此,即使主时钟发生故障它也仍然有效。 窗口看门狗由从 APB1 时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的 行 为。 在键寄存器 (IWDG_KR)中写入 0xCCCC,开始启用独 立 看门狗 ;此时计数器开始从其复位值 0xFFF 递减计数。 当计数器计数到末尾 0x000 时,会产生一个复位信号 (IWDG_RESET)。 无论何时
低功耗、大容量、擦写速度快、可整片或分扇区在系统编程(烧写)、擦除等特点,并且可由内部嵌入的算法完成对芯片的操作,因而在各种嵌入式系统中得到了广泛的应用。 作为一种非易失性存储器,Flash在系统中通常用于存放程序代码、常量表以及一些在系统掉电后需要保存的用户数据等。 常用的Flash为8位或16位的数据宽度,编。 Flash技术根据不同的应用场合也分为不同的发展方向,有擅长存储代码的NOR
CPU,各种容量的 ROM、 RAM 以及功能各异的 I/O 接口电路等等,但是,单片机的品种规格仍然有限,所以只能选用某种单片机来进行扩展。 扩展的方法有两种:一种是并行总线,另一种是串行总线。 由于串行总线的连线少,结构简单,往往不用专门的母板和插座而直接用导线连接各个设备。 因此,采用串行线可大大简化系统的硬件设计。 PHILIPS 公司早在十几年前就推出了 I2C 串行总线,利