嵌入式实验报告88069.doc_第1页
嵌入式实验报告88069.doc_第2页
嵌入式实验报告88069.doc_第3页
嵌入式实验报告88069.doc_第4页
嵌入式实验报告88069.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档江苏科技大学嵌入式实验报告专业名称: 计算机科学与工程 班 级: 学 号: 姓 名: 指导教师: 小组成员: 2017年 6 月 9 日 实验一 搭建嵌入式系统开发环境一、实验目的: 熟悉 Linux 开发环境,学会基于S3C2410 的Linux 开发环境的配置和使用。使用Linux的armv4l-unknown-linux-gcc 编译,使用基于NFS 方式的下载调试,了解嵌入式开发的基本过程。二、实验内容: 本次实验使用 Redhat Linux 9.0 操作系统环境,安装ARM-Linux 的开发库及编译器。创建一个新目录,并在其中编写hello.c 和Makefile 文件。学习在Linux 下的编程和编译过程,以及ARM 开发板的使用和开发环境的设置。下载已经编译好的文件到目标开发板上运行。三、预备知识 C 语言的基础知识、程序调试的基础知识和方法,Linux 的基本操作。四、实验设备及工具 硬件:UP-TECH S2410/P270 DVP 嵌入式实验平台、PC 机Pentium 500 以上, 硬盘10G以上。 软件:PC 机操作系统REDHAT LINUX 9.0超级终端(或X-shell)ARM-LINUX 开发环境。五、实验步骤:1、建立工作目录2、编写程序源代码在 Linux 下的文本编辑器有许多,常用的是vi 和Xwindow 界面下的gedit 等,我们在开发过程中推荐使用vi,用户需要学习vi 的操作方法,请参考相关书籍中的关于vi 的操作指南。 Kdevelope、anjuta 软件的界面与vc6.0 类似,使用它们对于熟悉windows 环境下开发的用户更容易上手。实际的hello.c 源代码较简单,如下:我们可以是用下面的命令来编写hello.c 的源代码,进入hello 目录使用vi 命令来编辑代码:按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按Esc 键进入命令状态,再用命令“:wq”保存并退出。这样我们便在当前目录下建立了一个名为hello.c的文件。3、编写Makefile要使上面的hello.c 程序能够运行,我们必须要编写一个Makefile 文件,Makefile 文件定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些文件需要重新编译等等更为复杂的命令。使用它带来的好处就是自动编译,你只需要敲一个“make”命令整个工程就可以实现自动编译,当然我们本次实验只有一个文件,它还不能体现出使用Makefile 的优越性,但当工程比较大文件比较多时,不使用Makefile 几乎是不可能的。下面我们介绍本次实验用到的Makefile 文件。4. 编译应用程序vi编辑器,编写代码,并使用armv4l-unknown-linux-gcc编译器进行编译Hello.c源代码为5. 下载调试1)主机设置NFS共享选中NFS- 设置共享文件夹2)实验箱终端输入:Mount-tnfs192.168.0.3:/lx/mnt/nfs运行编译后程序 五、实验心得: 通过这次试验配置,让我了解了对这个试验的流程,让我知道怎样配置Linux开发环境,也让我对知识进一步的加深理解,了解嵌入式开发的基本过程,在试验里做这些很有好处。实验二 s3c2410处理器A/D模块硬件设计一、实验目的:1熟悉硬件电路设计2掌握简单的S3c2410处理器的电路设计。3. 掌握protel软件的使用二、实验设备及工具:硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。软件:PC机操作系统REDHAT LINUX 9.0 、MINICOM 、AMRLINUX开发环境三、实验内容:使用protel 99se 做s3c2410处理器最小系统电路设计,A/D数据采集模块电路设计。四、实验原理:1.安装protel 99SE软件2.学习使用protel电路原理图设计新建。SCH文件创新芯片封装3.学习使用protel进行PCB设计新建。PCB文件创新芯片封装A/D 转换器A/D 转换器是模拟信号源和CPU 之间联系的接口,它的任务是将连续变化的模拟信号 转换为数字信号,以便计算机和数字系统进行处理、存储、控制和显示。在工业控制和数 据采集及许多其他领域中,A/D 转换是不可缺少的。S3C2410A的A/D转换器包含一个8通道的模拟输入转换,可以将模拟输入信号转换成10位数字编码。在AD转换时钟为2.5MHz时,其最大转换率为500KSPS,输入电压范围是03.3v 与A/D转换相关的寄存器:ADC控制寄存器(ADCCON)ADC触摸屏控制寄存器(ADCTSC)ADC启动延时寄存器(ADCDLY)ADC转换数据寄存器(ADCDATn)五、实验步骤1、定义与A/D转换相关的寄存器#define rADCCON (*(volatile unsigned *)0x58000000)#define rADCTSC (*(volatile unsigned *)0x58000004)#define rADCDLY (*(volatile unsigned *)0x58000008)#define rADCDAT0 (*(volatile unsigned *)0x5800000c)#define Radcdat1 (*(volatile unsigned *)0x58000010)2、对A/D转换器进行初始化。这里的参数ch表示选择的通道号Void AD_Init(unsigned char ch)Radcdly =100;Radctsc =0;rADCCON =(114|(496)|(ch3)|(02)|(07) return 0;For(i=0;i16;i+)rADCCON |= 0x1;Radccon = Radccon & 0xffc7 | (ch4);4. 原理图5、 实验心得:通过本次实验,我学习了 A/D 接口原理,了解实现A/D 系统对于硬件要求。阅读ARM 芯片文档,掌握ARM 的A/D 相关寄存器的功能,熟悉ARM 系统硬件的A/D 相关接口。还了解在 linux 环境下对S3C2410 芯片的8通道10 位A/D模块的硬件设计。实验三Kernel与root的设计和烧写一、实验目的: 1掌握Linux内核配置与裁剪的方法 2理解根文件系统配置。 3. 掌握嵌入式系统内核和根文件系统的烧写的过程二、实验设备及工具 : 硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。 软件:PC机操作系统REDHAT LINUX 9.0 、MINICOM 、AMRLINUX开发环境三、实验内容 : 对嵌入式Linux系统进行裁剪、配置和编译,生成自己需要的操作系统映像文件,并将其烧写到flash中。Linux 内核移植与编译实验下载Linux内核源码到用户开发目录make menuconfigmake cleanmake depmake zImage在arch/arm/boot目录下得到zImage在windows的超级终端中,启动bootloader,根据vivi提供的命令行现在新的kernel和root到实验箱的flash中,从而更新系统。load flash kernel x load flash root x1. 串口下载烧写2. 烧写vivi3. 烧写内核映象zImage四、实验结果五、实验心得: 通过本次实验,我初步掌握了Linux内核配置与裁剪的方法,更深的理解了根文件系统配置,也掌握了嵌入式系统内核和根文件系统的烧写的过程。 实验四、嵌入式软件设计与交叉编译一、实验目的: 1掌握嵌入式Linux软件设计方法原理 2掌握Makefile文件设计方法。 3. 熟悉Linux下静态库和共享库的设计 二、实验设备及工具:硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。软件:PC机操作系统REDHAT LINUX 9.0 、MINICOM 、AMRLINUX开发环境 三、实验内容: (1)编写一个带输入、输出的由5个文件组成的嵌入式软件; (2)写好makefile文件,并上机调试; (3)用变量指明两种编译器。四、实验步骤:1.在宿主机(PC)上建立用户开发目录,编写嵌入式程序文件,3个C文件+2个头文件。cd/mkdir shiyaninput.h#defineN10Voidinput(char *s)input.c#include#includeVoidinput(char *s)Printf(“inputyournameplease:”);Scanf(“%s”,s);output.h#defineM5Voidoutput(char *s)output.c#include#includeVoidoutput(char*s)Printf(“hello%s!n”,s);main.c#include#include#include“input.h”#include“output.h”Intmain()inti=0;charnameN;input(name);for(i=0;iM;i+)output(name);return0;2.编写Makefile文件,要求Makefile文件实现这5个文件的编译,有clean 和intall 选项,用变量选择86和arm编译器指明 CC= gcc或 CC= armv4l-unknown-linux-gcc 。#makefile#cc=arm4vl-unknown-linux-gcccc=gccmain:main.oinput.ooutput.o$(cc) o mainmain.oinput.ooutput.omain.o:main.cinput.houtput.h$(cc)cmain.cinput.o:input.c$(cc)cinput.coutput.o:output.c$(cc)coutput.cClean:rmmainmain.oinput.ooutput.o3.编译程序,并下载到实验箱上执行 mount t nfs 主机ip:/开发目录 /host。 在主机上运行: 挂载到目标板上运行:五、实验心得: 通过此次实验我认识了嵌入式系统上C语言编程与普通PC机上C语言编程的不同点,掌握了使用交叉编译环境编译嵌入式系统程序的方法。掌握了Makefile文件设计方法。实验五 嵌入式驱动程序设计一、 实验目的:1.学习在LINUX 下进行驱动设计的原理2.掌握使用模块方式进行驱动开发调试的过程二、 实验设备及工具:硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。软件:PC机操作系统REDHAT LINUX 9.0 、MINICOM 、AMRLINUX开发环境三、 实验内容: 在PC 机上编写简单的虚拟硬件驱动程序并进调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。在PC(宿主机)上编译调试驱动程序。1、阅读和理解源代码进入/arm2410cl/exp/drivers/01_demo,使用vi 编辑器或其他编辑器阅读理解源代码。2、编译驱动模块及测试程序上面介绍了在Makefile 中有两种编译方法,可以在本机上使用gcc 也可以使用交叉编确定# KERNELDIR = /arm2410cl/kernel/linux-2.4.18-2410clKERNELDIR = /usr/src/linux3、测试驱动程序如果使用gcc 编译的话,需要通过下面的命令来建立设备节点,如果使用交叉编译器的话,不需要建立设备节点。#mknod /dev/demo c 254 0首先要插入驱动模块demo.o,然后可以用lsmod 命令来查看模块是否已经被插入,在不使用该模块的时候还可以用rmmod 命令来将模块卸载。insmod demo.o lsmod demo.o./test_demo四、 实验结果分析:5、 实验心得: 经过本次实验,我初步实现了实验驱动的各个接口函数,分析并理解驱动与应用程序的交互过程。并学习了在LINUX下进行驱动设计的原理,掌握了使用模块方式进行驱动开发调试的过程。实验六 嵌入式A/D接口程序设计一、实验目的 了解在linux 环境下对S3C2410 芯片的8 通道10 位A/D 的操作与控制。二、实验内容 学习A/D 接口原理,了解实现A/D 系统对于系统的软件和硬件要求。阅读ARM 芯片文档,掌握ARM 的A/D 相关寄存器的功能,熟悉ARM 系统硬件的A/D 相关接口。利用外部模拟信号编程实现ARM 循环采集全部前4 路通道,并且在超级终端上显示。三、预备知识1、有C 语言基础。2、掌握在Linux 下常用编辑器的使用。3、掌握Makefile 的编写和使用。4、掌握Linux 下的程序编译与交叉编译过程。四、实验设备及工具硬件:UP-TECH S2410/P270 DVP 嵌入式实验平台、PC 机Pentium 500 以上, 硬盘10G 以上。软件:PC 机操作系统REDHAT LINUX 9.0MINICOMARM-LINUX 开发环境五、实验内容逐次逼近式A/D 转换器A/D 转换器在扩展板的连接A/D 转换器在扩展板的接法如图所示,前三路通过电位器接到3.3v 电源上。A/D 转换器在扩展板上的接法ad 驱动对用户来说只是下面的一个文件结构。在用户程序里只需要用到open、 read、write、 release 等内核函数即可。本实验采用的是模块方式加载,可以在实验箱的/mnt/yaffs/ad/ 中找到AD 的驱动程序。static struct file_operations s3c2410_fops = owner: THIS_MODULE,open: s3c2410_adc_open,read: s3c2410_adc_read,write:s3c2410_adc_write,release: s3c2410_adc_release,;下面我们对驱动部分重要函数进行说明。ad 驱动在内核里的代码我们放到了本次实验的src 文件下,s3c2410.h_chip.h 里为arm2410 头文件s3c2410.h 初始化ADC 的部分。所有代码也可以到内核里面去阅读。static int s3c2410_adc_open(struct inode *inode, struct file *file)init_MUTEX(&adcdev.lock);init_waitqueue_head(&(adcdev.wait);adcdev.channel=0;adcdev.prescale=0xff;MOD_INC_USE_COUNT;DPRINTK( adc openedn);return 0; /AD 通道和比例因子初始化static ssize_t s3c2410_adc_write(struct file *file, const char *buffer, size_t count, loff_t * ppos)int data;if(count!=sizeof(data)/error input data sizeDPRINTK(the size of input data must be %dn, sizeof(data);return 0;copy_from_user(&data, buffer, count);adcdev.channel=ADC_WRITE_GETCH(data);adcdev.prescale=ADC_WRITE_GETPRE(data);DPRINTK(set adc channel=%d, prescale=0x%xn, adcdev.channel, adcdev.prescale);return count; /告诉内核驱动读哪一个通道的数据和设置比例因子#define START_ADC_AIN(ch, prescale) do ADCCON = PRESCALE_EN | PRSCVL(prescale) | ADC_INPUT(ch) ; ADCCON |= ADC_START; while(0)/PRESCALE_EN 左移14使位比例因子有效;PRSCVL 左移6位设置比例因子;/ADC_INPUT 左移3 位选择通道;/ADCCON |= ADC_START; ADCCON 0 为置1,准备采集数据static ssize_t s3c2410_adc_read(struct file *filp, char *buffer, size_t count, loff_t *ppos)int ret = 0;if (down_interruptible(&adcdev.lock)return -ERESTARTSYS;START_ADC_AIN(adcdev.channel, adcdev.prescale);interruptible_sleep_on(&adcdev.wait);ret = ADCDAT0;ret &= 0x3ff; /把数据寄存器内容放入变量retDPRINTK(AIN%d = 0x%04x, %dn, adcdev.channel, ret, ADCCON & 0x80 ? 1:0);copy_to_user(buffer, (char *)&ret, sizeof(ret);/把ret 变量的内容传给用户缓冲区up(&adcdev.lock);return sizeof(ret); /由内核采集通道数据后把数据放回用户区main.c 的代码如下:#include #include #include #include #include #include #include #include s3c2410-adc.h#define ADC_DEV /dev/adc/0rawstatic int adc_fd = -1;static int init_ADdevice(void)if(adc_fd=open(ADC_DEV, O_RDWR)0)printf(Error opening %s adc devicen, ADC_DEV);return -1;static int GetADresult(int channel)int PRESCALE=0XFF;int data=ADC_WRITE(channel, PRESCALE);write(adc_fd, &data, sizeof(data);read(adc_fd, &data, sizeof(data);return data;static int stop=0;static void* comMonitor(void* data)getchar();s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论