ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:696.98KB ,
资源ID:14275238      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/14275238.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式系统软硬件设计文档格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

嵌入式系统软硬件设计文档格式.docx

1、随着Internet技术和嵌入技术的高速发展,基于Internet的远程控制越来越普遍,工业现场运行维护模式正在发生深刻的网络变化:即将web服务器“嵌入”工业控制系统中接入Internet网中,在世界的任何一个地方可以通过网络Internet获得该工业控制的实时控制的信息。进而实现实时远程控制,调节,维护。显然这种基于web服务器的远程控制维护将大大减少成本。但是现有的远程控制系统都是基于C/S模式的,需要客户端程序的支持,这不仅加大客户端的编程,还加大客户端的维护的工作量。本小组选择了基于嵌入式web服务器远程控制系统。提供简单的人机交互页面的,减少了远程控制系统程序开发的难度。二、系统总

2、体方案2.1硬件资源本次课程实验采用的硬件平台友善公司的MINI2440开发板,如图1所示。Mini2440 是一款真正低价实用的ARM9开发板,是目前国内性价比最高的一款学习板; 它采用Samsung S3C2440为微处理器,并采用专业稳定的 CPU 内核电源芯片和复位芯片来保证系统运行时的稳定性。开发板提供了3个串行口、一个USB Host、一个USB Slave B、4个USER LED、1个PWM控制蜂鸣器、一个可调电阻等。根据本系统所涉及的模块做出系统硬件框图如图2所示。图1 MINI2440图2 系统硬件框图2.2 软件设计首先分析系统的功能需求,我们设计题目是基于嵌入式web服

3、务器的远程控制系统,那么此系统需要完成以下几个功能:1) WEB服务器的搭建经过查阅资料我们选择BOA服务器作为本系统的WEB服务器,BOA服务器是一个小巧高效的web服务器,是一个运行于unix或linux下的,支持CGI的、适合于嵌入式系统的单任务的http服务器,源代码开放、性能高。具体的搭建流程参考网络资料。2) 控制页面的编写控制页面主要是通过html语言编写,将页面文件放置在web服务的文件根目录下,等待浏览器访问web服务器时,服务器能够自动的返回我们所编写的页面,从而实现与远程的交互3) 服务器端CGI程序的编写根据html和CGI调用的规范,我们将事先写好的程序编译成CGI文

4、件放置到web服务器的相应文件夹中,当有相应的请求发生时,web服务器会自动条用相应的CGI程序。4) linux驱动的编写linux驱动主要涉及LED驱动、PWM驱动及DS18B20驱动。本系统大体的流程图如下:系统流程图三、驱动设计(个人工作)1、主要内容1) 蜂鸣器驱动的编写2) DS18B20驱动的编写2、设备驱动原理linux系统设备分为3类:字符设备、块设备、网路设备。基本框架如下图所示:字符设备:是指只能按字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后。字符设备是面向流的设备,常见的设备有鼠标、键盘、串口、控制台和LED设备等。块设备:是指可以从设备的任意

5、位置读取一定长度的设备。块设备包括硬盘、磁盘、U盘和SD卡等。编写字符设备驱动之前可以通过下图了解用户空间与字符设备是如何进行交互的:3、蜂鸣器驱动编写蜂鸣器的控制时通过改变PWM的占空比来实现的,MINI2440开发板提供了如下资源,通过控制GPB0的输出可以控制蜂鸣器的状态,因为本实验要实现的是对蜂鸣器响声的调节,所以需要调节引脚输出电平的频率和占空比来实现,这样就需要编写PWM驱动了。整个驱动设计流程如下图所示:1) 字符设备的定义struct pwm_dev struct cdev cdev;/字符设备结构体;定义一个结构体用来存放相关变量,有利于提高驱动的扩展性。2) 设备初始化cd

6、ev_init(&dev-cdev, &pwm_fops);通过调用cdev_init函数进行设备的初始化,第一个参数为字符设备结构体的地址,第二个变量为pwm设备的操作函数结构体地址。3) 设备号获取 if(pwm_major)/主设备号已经分配直接注册设备 devno = MKDEV(pwm_major, pwm_minor); result = register_chrdev_region(devno, 1, DEV_NAME); else /主设备号未分配,需要动态分配 result = alloc_chrdev_region(&devno, 0, 1, DEV_NAME); pwm_

7、major = MAJOR(devno); if(result private_data = pwm_devp; tyy_pwm_init(); printk(PWM init OK!n); return retval; void tyy_pwm_init( void ) tyy_pwm_gpio_init(); tyy_pwm_config();pwm_open函数中主要实现有关PWM引脚的配置、寄存器的配置,设定PWM引脚为TOUT、时钟频率62.5KHZ,同时定时器自动装载计数值。pwm_releasestatic int pwm_release( struct inode *inode

8、,struct file *filp ) tyy_pwm_close();close okn return 0;void tyy_pwm_close( void ) unsigned long val_TCON= _raw_readl(PWM_TCON); val_TCON &= PWM_TCON_TXRELOAD; _raw_writel(val_TCON ,PWM_TCON); s3c2410_gpio_cfgpin(PWM_GPIO, S3C2410_GPIO_OUTPUT); s3c2410_gpio_setpin(PWM_GPIO, 0);pwm_release主要实现PWM的关闭,

9、当设备文件关闭时,会调用此函数实现PWM定时器的停止,GPB0端口输出的设置(主要防止端口处于高定平导致蜂鸣器叫,因此需要设置为低电平)pwm_ioctlstatic long pwm_ioctl(struct file *file, unsigned int cmd, unsigned long arg) switch(cmd) case PWM_IOCTL_START: tyy_pwm_start(); return 0; default: return -EINVAL;pwm_ioctl函数主要实现对PWM的一些控制,本驱动中总共定义了三个CMD#define PWM_IOCTL_STA

10、RT _IO(PWM_MAGIC, 0) #define PWM_IOCTL_SET_TCNTB _IOW(PWM_MAGIC, 1, int)#define PWM_IOCTL_SET_TCMPT _IOW(PWM_MAGIC, 2, int)第一个为启动PWM定时器、第二个为设置PWM中TCNTB寄存器的值用于设定定时器的计数值、第三个为设置PWM中TCMPT的值用于设定占空比。6) 设备驱动的测试 int fd; fd = open(/dev/pwm_ctl, O_RDWR); if( fd 0 ) perror(Open device failed! exit(1); ioctl(fd

11、, PWM_IOCTL_SET_TCNTB, 3000); ioctl(fd, PWM_IOCTL_SET_TCMPT, 0); ioctl(fd, PWM_IOCTL_START);通过读取设备文件然后通过ioctl来控制PWM的输出及启动。4、DS18B20驱动编写DS18B20是常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。硬件连接图如下图所示(本系统DS18B20接在GPB1上)。其操作主要通过1-wire协议完成,根据数据手册提供的操作时序及命令定义即可实现温度的获取。由于DS18B20的驱动也是采用字符设备驱动所以在设计时很多东西都是和PWM设备驱动是相同的,下面主要介绍两者不同的地方。虽然在linux驱动说明提供有关的1-wire但一直没有找到相关使用资料,所以整个DS18B20的驱动只能采用IO的控制来实现读取数据。struct ds18b20_dev /字符设备结构体 struct mutex res_mutex; /互斥锁结构体与上面结构体不同的地方在于定义了一个mutex 变量,主要是因为DS18B20操作过程中有时序的操作,而时序又不能被其他程序所打扰,不然读出的数据是错误的,所以通过

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1