嵌入式系统设计实验四
- 格式:doc
- 大小:1.38 MB
- 文档页数:7
嵌入式实验报告总结嵌入式实验报告总结近年来,嵌入式系统在各个领域中得到了广泛的应用。
嵌入式系统是指将计算机系统嵌入到其他设备或系统中,以实现特定功能的一种计算机系统。
在本次嵌入式实验中,我深入学习了嵌入式系统的原理和应用,并通过实际操作,加深了对嵌入式系统的理解。
实验一:嵌入式系统的基本概念和发展历程在本实验中,我们首先了解了嵌入式系统的基本概念和发展历程。
嵌入式系统的特点是紧凑、高效、实时性强,并且适用于各种各样的应用场景。
通过学习嵌入式系统的发展历程,我们了解到嵌入式系统在不同领域的应用,如智能家居、医疗设备、汽车电子等。
这些应用领域的嵌入式系统都有着各自的特点和需求,因此在设计嵌入式系统时需要根据具体应用场景进行优化。
实验二:嵌入式系统的硬件平台与软件开发环境在本实验中,我们学习了嵌入式系统的硬件平台和软件开发环境。
硬件平台是嵌入式系统的基础,包括处理器、内存、外设等。
而软件开发环境则提供了开发嵌入式系统所需的工具和库函数。
我们通过实际操作,搭建了嵌入式系统的硬件平台,并使用软件开发环境进行程序的编写和调试。
通过这个实验,我深刻理解了硬件平台和软件开发环境对嵌入式系统的影响,以及它们之间的协同工作。
实验三:嵌入式系统的实时操作系统在本实验中,我们学习了嵌入式系统的实时操作系统。
实时操作系统是嵌入式系统中非常重要的一部分,它能够保证系统对外界事件的响应速度和可靠性。
我们通过实际操作,学习了实时任务的创建和调度,以及实时操作系统的中断处理机制。
实时操作系统的学习让我更加深入地了解了嵌入式系统的实时性要求和相关的调度算法。
实验四:嵌入式系统的通信与网络在本实验中,我们学习了嵌入式系统的通信与网络。
嵌入式系统通常需要与其他设备或系统进行通信,以实现数据的传输和共享。
我们学习了嵌入式系统的通信协议和网络协议,如UART、SPI、I2C、TCP/IP等。
通过实际操作,我掌握了这些通信和网络协议的使用方法,以及在嵌入式系统中如何进行数据的传输和处理。
竭诚为您提供优质文档/双击可除嵌入式系统看门狗实验报告篇一:《嵌入式系统原理与应用》实验报告04-看门狗实验《嵌入式系统原理与接口技术》实验报告实验序号:4实验项目名称:看门狗实验1234篇二:嵌入式实验报告目录实验一跑马灯实验................................................. (1)实验二按键输入实验................................................. .. (3)实验三串口实验................................................. . (5)实验四外部中断实验................................................. .. (8)实验五独立看门狗实验................................................. (11)实验七定时器中断实验................................................. (13)实验十三ADc实验................................................. .. (15)实验十五DmA实验................................................. .. (17)实验十六I2c实验................................................. (21)实验十七spI实验................................................. .. (24)实验二十一红外遥控实验................................................. .. (27)实验二十二Ds18b20实验................................................. (30)实验一跑马灯实验一.实验简介我的第一个实验,跑马灯实验。
实验一熟悉Linux开发环境一、实验目的1.熟悉Linux开发环境,学习Linux开发环境的配置和使用,掌握Minicom串口终端的使用。
2.学习使用Vi编辑器设计C程序,学习Makefile文件的编写和armv4l-unkonown-linux-gcc编译器的使用,以及NFS方式的下载调试方法。
3.了解UP-NETARM2410-S嵌入式实验平台的资源布局与使用方法。
4.初步掌握嵌入式Linux开发的基本过程。
二、实验内容本次实验使用Redhat Linux 9.0操作系统环境,安装ARM-Linux的开发库及编译器。
创建一个新目录,并在其中编写hello.c和Makefile文件。
学习在Linux 下的编程和编译过程,以及ARM开发板的使用和开发环境的设置。
下载已经编译好的文件到目标开发板上运行。
三、预备知识C语言的基础知识、程序调试的基础知识和方法,Linux的基本操作。
四、实验设备及工具(包括软件调试工具)硬件:UP-NETARM2410-S嵌入式实验平台、PC机Pentium 500以上, 硬盘10G以上。
软件:PC机操作系统REDHAT LINUX 9.0+MINICOM+ARM-LINUX开发环境五、实验步骤1、建立工作目录[root@zxt smile]# mkdir hello[root@zxt smile]# cd hello2、编写程序源代码在Linux下的文本编辑器有许多,常用的是vim和Xwindow界面下的gedit等,我们在开发过程中推荐使用vim,用户需要学习vim的操作方法,请参考相关书籍中的关于vim的操作指南。
Kdevelope、anjuta软件的界面与vc6.0 类似,使用它们对于熟悉windows环境下开发的用户更容易上手。
实际的hello.c源代码较简单,如下:#include <stdio.h>main(){printf(“hello world \n”);}我们可以是用下面的命令来编写hello.c的源代码,进入hello目录使用vi命令来编辑代码:[root@zxt hello]# vi hello.c按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按Esc键进入命令状态,再用命令“:wq”保存并退出。
嵌入式系统实验报告书20 13– 20 14第1学期院系:电子通信工程系姓名:蒋瑾专业:通信工程学号:101307313指导老师:赵成实验一 认识嵌入式开发平台一、实验目的认识UP-NETARM2410-S 嵌入式开发平台,了解使用的ARM9 S3C2410嵌入式微处理器芯片,了解相应外围电路及接口的硬件电路设计,从而了解嵌入式系统的作用及其实现的功能。
二、实验内容观察嵌入式开发平台,认识板载的核心微处理器、存储芯片、电源电路部分、显示屏、键盘、网络接口、RS232接口、RS485接口、ADC 部分、DAC 部分、IrDA 部分、SD 卡接口、PCMCIA 卡接口、笔记本电脑硬盘接口部分、CF 卡接口、IC 卡接口、PS/2键盘鼠标接口、音频接口、USB 接口以及JTAG 调试接口等内容,了解相应电路及接口的电路原理。
三、预备知识了解常用的接口芯片及计算机外围设备;熟悉模拟及数字电路设计。
四、实验设备 1. 硬件环境配置计算机:Intel(R) Pentium(R) 及以上 内存:1GB 及以上实验设备:UP-NETARM2410-S 嵌入式开发平台 2. 软件环境配置操作系统:Microsoft Windows XP Professional Service Pack 2 虚拟机:VMware WorkStation 7Linux 系统:Red Hat Enterprise Linux AS 4 (2.6.9-5.EL)五、实验步骤六、遇到的问题及解决方法S3C2410核心资源LCD 驱动音频电路PS/2鼠标键盘接口小键盘IC 卡插口CF 卡插口IDE 硬盘接口PCMCIA 、SD 卡插口168Pin 扩展槽电源部分RS232/485接口USBJTAG 网络接口ADC/DAC IrDA 红外实验二安装VMWARE7.0虚拟机环境一、实验目的熟悉嵌入式系统开发环境的建立,学会Windows系统环境与Linux系统环境共享资源的基本方法。
实验四串口通信实验一.实验目的:1.掌握ARM的串行口工作原理。
2.学习并编程实现AR,的UART通信。
3.掌握S3C2410X寄存器配置方法。
二、实验设备:PC机一台 ADT IDE集成开发环境 JXARM9-2410教学实验箱三、实验内容:实现查询方式串口的收发功能。
接受来自串口(通过超级终端)的字符,并将接收到的字符发送到超级终端。
四、基础知识:1.异步串行通讯(1)异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。
(2)数据的各不同位可以分时使用同一传输通道,因此串行I/O 可以减少信号连线,最少用一对线即可进行。
接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。
为了恢复发送的信息,双方必须协调工作。
(3)在微型计算机中大量使用异步串行I/O 方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。
但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。
2.异步串行通信中的字符传送格式❑开始前,线路处于空闲状态,送出连续“1”。
传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。
❑每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。
后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。
也可以约定不要奇偶校验,这样就取消奇偶校验位。
最后是表示停止位的“1”信号,这个停止位可以约定持续1 位、1.5 位或2 位的时间宽度。
❑至此一个字符传送完毕,线路又进入空闲,持续为“1”。
经过一段随机的时间后,下一个字符开始传送才又发出起始位。
3.DB-25 DB-9引脚定义DB-25 DB-9引脚说明:RS-232C接口通信的两种基本连接方式:五、实验步骤:1.新建一个工程UART,将对应的文件添加到工程中去。
北邮嵌入式系统设计实验-实验报告嵌入式试验报告学院:xxx班级:xxx学号:xxx姓名:xxx成员:xxx一、基础学问部分1.多线程试验本章主要讲解线程的概念和线程间的同步方式。
试验一主要介绍线程的概念和线程的创建,试验二、试验三、试验四分离介绍了信号量、互斥锁、条件变量的作用和使用。
1.1 线程的介绍线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。
线程是程序中一个单一的挨次控制流程。
进程内一个相对自立的、可调度的执行单元,是系统自立调度和分派CPU 的基本单位指运行中的程序的调度单位。
在单个程序中同时运行多个线程完成不同的工作,称为多线程。
线程是允许应用程序并发执行多个任务的一种机制,是程序运行后的任务处理单元,也是SylixOS操作系统任务调度的最小单元。
在多核CPU中,同时可以有多个线程在执行,实现真正意义上的并行处理。
线程入口函数是一个能够完成特定任务的函数,因此线程入口函数的编写上与一般函数没有太多区分。
线程的创建函数如下:●创建线程失败,函数返回非0的错误代码,胜利返回0;●*thread pthread_t类型的缓冲区,保存一个线程的线程ID;●*attr 设置线程属性,设置为NULL标识创建的新线程使用默认属性;●*(*start_routine) 线程入口函数函数名●*arg 向所创建线程传入的参数1.2 信号量的概念信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。
在进入一个关键代码段之前,线程必需猎取一个信号量;一旦该关键代码段完成了,那么该线程必需释放信号量。
其它想进入该关键代码段的线程必需等待直到第一个线程释放信号量。
信号量是一个在进程和线程中都可以使用的同步机制。
信号量类似于一个通知,某个线程发出一个通知,等待此通知的线程收到通知后,会执行预先设置的工作。
嵌入式系统实验报告学号:姓名:班级:13电子信息工程指导老师:苏州大学电子信息学院2016年12月实验一:一个灯的闪烁1、实验要求实现PF6-10端口所连接的任意一个LED灯点亮2、电路原理图图1 LED灯硬件连接图3、软件分析RCC_Configuration();/*配置系统时钟*/GPIO_Configuration(); /* 配置GPIO IO口初始化*/for(;;){GPIOF-〉ODR = 0xfcff;/* PF8=0 —-〉点亮D3 */Delay(1000000);GPIOF-〉ODR = 0xffff; /* PF8=1 -—> 熄灭D3 */Delay(1000000);4、实验现象通过对GPIOF8的操作,可以使LED3闪烁5、实验总结这是第一次使用STM32开发板,主要内容是对IO端口进行配置,点亮与IO端口相连接的LED灯,闪烁周期为2S。
通过本实验对STM32开发板的硬件原理有了初步了解。
实验二:流水灯1、实验要求实现PF6-10端口所连接的5个LED灯顺次亮灭2、电路原理图图1 流水灯硬件连接图3、软件分析int main(void){RCC_Configuration();/* 配置系统时钟*/GPIO_Configuration();/* 配置GPIO IO 口初始化*/for(;;){GPIOF—>ODR = 0xffbf;/*PF6=0 —-> 点亮LED1 */ Delay(5000000);GPIOF—〉ODR = 0xff7f;/*PF7=0 --〉点亮LED2 */Delay(5000000);GPIOF—>ODR = 0xfeff;/* PF8=0 -—> 点亮LED3 */Delay(5000000);GPIOF—>ODR = 0xfdff;/*PF9=0 ——> 点亮LED4 */Delay(5000000);GPIOF-〉ODR = 0xfbff;/* PF10=0 --> 点亮LED5 */ }}4、实验现象LED1~LED5依次点亮,亮灭的时间间隔都为1S。
嵌入式系统实验指导书计算机科学与技术学院实验教学中心2007-9-1目录实验一JediView调试环境及软件编程 (3)实验二系统初始化和存储器实验 (8)实验三键盘和中断实验 (12)实验四S3C44B0X定时器实验 (19)实验五LCD显示实验 (22)实验六、uclinux文件系统实验 (26)实验一JediView调试环境及软件编程一、实验目的1. 了解调试软件JediView,掌握在JediView环境中新建工程,及其编译,调试工程的方法。
2. 掌握在JediView环境下arm系统中C语言编程及调试方法3. 掌握arm汇编语言编程及调试方法。
二、实验内容1.学习使用JediView集成开发环境:新建一个工程arm1_1,设置并编译该工程,通过JEDI仿真器下载已经编译好的文件到实验仪中运行。
观察实验仪上的执行结果。
掌握调试程序方法,为下面调试应用程序打下基础。
2. 建立工程arm1_2,编写C语言程序arm1_2.c实现1+2+3+…+N(arm1_2.c写在预习报告上)。
3. 建立工程arm1_3,用arm汇编语言编写程序arm1_3.s,实现带参数的子程序调用(用程序跳转表实现),调用参数r0=0,做r1+r2=>r0;r0=1,做r1-r2=>r0(arm1_3.s写在预习报告上)。
三、预备知识1.关于JediView调试环境基本使用方法。
JediView具备一个标准调试软件的绝大部分功能,主要由以下模块组成:源程序编辑器(Editor):用来完成源程序的编辑、修改等任务。
编译器(Build System):把源程序(包括C,C++,汇编)编译生成机器码和可调试代码。
调试器(Debugger):对编译成功的源程序进行调试,如走单步,设断点,全速运行等。
项目管理器(Project Manager):管理项目设置,包括运程序路径,编译选项等。
2.ARM指令系统,汇编语言编程知识。
嵌入式实时操作系统实验报告2实验名称:多任务编程实验姓名:王文班级:信科10-4班学号: 08103567多任务编程实验一、实验目的本实验的目的是让学生了解uC/OS-II中怎样创建一个任务以及了解uC/OS-II的多任务调度机制二、实验内容1、在Eg1的基础上新建一个任务;2、在该任务函数中打印提示信息。
三、基础知识添加任务ID1、在eg1.c文件中声明任务堆栈,任务栈以全局变量的方式静态分配,然后在创建任务时使用。
下面代码中黑体字表示的为新添加的代码/* task stack */OS_STK StackLED[STACKSIZE]= {0, };OS_STK StackSEG[STACKSIZE]= {0, };OS_STK StackTEST[STACKSIZE]= {0, };任务函数声明/* task entry function */void TaskLED(void *Id);void TaskSEG(void *Id);void TaskTEST(void *Id);四、实验步骤1、打开实验四模板工程3、按照“基础知识”部分内容编辑Eg1.c文件3、编译工程Eg1,如果出错,进行修改后再编译4、将Eg1下载并运行,正确结果将看到数码管和跑马灯闪烁,同时在超级终端上看到三个任务的提示信息,如下所示:a)Task1() turnedb)Task2() turnedc)Task3() turned五、程序代码/** eg1.c uC/OS移植及应用编程** 内容:* uC/OS移植及应用编程,建立一个工程,应用程序含两个任务,一个任务不断显示跑马灯,另外一个任务不断显示数码管* 目的:* uC/OS移植及应用编程,对多任务及应用编程有直观的了解。
**/#include "Includes.h" /* uC/OS interface */#include "option.h"#include "2410lib.h"#include "uhal.h"/* 任务栈*/OS_STK StackLED[STACKSIZE]= {0, }; // 任务LED任务栈OS_STK StackSEG[STACKSIZE]= {0, }; // 任务SEG任务栈OS_STK StackTEST[STACKSIZE]= {0, };/* 任务ID */char IdLED = '1'; // 任务LED IDchar IdSEG = '2'; // 任务SEG IDchar IdTEST = '3';/* 任务处理函数*/void TaskLED(void *Id); // 任务LED任务处理函数void TaskSEG(void *Id); // 任务SEG任务处理函数void TaskTEST(void *Id);/** 跑马灯闪烁函数,调用一次,四个跑马灯由亮变灭或者由灭变亮*/void User_LED_Blink(void){static int led_status = 0;led_status += 1;if(led_status % 2 == 0)Led_Display(0x0f);elseLed_Display(0x00);}/** 数码管显示实验,由0到F依次显示*/void User_SEG_Blink(void){static unsigned char seg_value[] = { 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e };static int seg_status = 0;*((unsigned char *)0x10000006) = 0x3e;*((unsigned char *)0x10000004) = seg_value[seg_status];seg_status += 1;if(seg_status > 15)seg_status = 0;}/** 任务LED任务处理函数* 1、OSStart调用之前创建的最高优先级任务,在该函数重启动时钟节拍定时器* 2、每隔100 ticks即1000ms,闪烁跑马灯*/void TaskLED(void *Id){uHALr_printf("Task1() called\n");/* 启动时钟节拍定时器,开始多任务调度*/ARMTargetStart();for (;;){/* 锁定任务调度*/OSSchedLock();/* 向串口打印提示字符*/sprintf(print_buf, "Task%c() turned\n", *(char *)Id);uHALr_printf(print_buf);/* 调用User_LED_Blink函数闪烁跑马灯*/User_LED_Blink();/* 解锁任务调度*/OSSchedUnlock();/* 延迟1000ms */OSTimeDly(100);}}/** 任务SEG任务处理函数* 1、每隔100 ticks即1000ms,闪烁数码管*/void TaskSEG(void *Id){uHALr_printf("Task2() called\n");for (;;){/* 锁定任务调度*/OSSchedLock();/* 向串口打印提示字符*/sprintf(print_buf, "Task%c() turned\n", *(char *)Id);uHALr_printf(print_buf);// User_SEG_Blink();/* 调用User_SEG_Blink函数闪烁数码管*/User_SEG_Blink();/* 解锁任务调度*/OSSchedUnlock();/* 延迟1000ms */OSTimeDly(100);}}void TaskTEST(void *Id){uHALr_printf("Task3() called\n");for (;;){OSSchedLock();sprintf(print_buf, "Task%c() turned\n", *(char *)Id);uHALr_printf(print_buf);User_SEG_Blink();OSSchedUnlock();OSTimeDly(100);}}/** Main函数.* 1、初始化目标系统,初始化硬件定时器等,与操作系统无关* 2、调用OSInit初始化uC/OS-II软件数据结构等,必须在打开时钟节拍中断之前调用* 3、创建两个任务,TaskLED和TaskSEG,TaskLED的优先级为5,TaskSEG的优先级为13,TaskLED的优先级高于TaskSEG* 4、调用OSStart启动uC/OS-II*/void Main(void){/** 目标系统初始化*/ARMTargetInit();/** uC/OS-II软件初始化*/OSInit();/** 创建两个任务,TaskLED和TaskSEG,TaskLED的优先级为5,TaskSEG的优先级为13,TaskLED的优先级高于TaskSEG*/OSTaskCreate(TaskLED, (void *)&IdLED, (OS_STK *)&StackLED[STACKSIZE - 1], 5);OSTaskCreate(TaskSEG, (void *)&IdSEG, (OS_STK *)&StackSEG[STACKSIZE - 1], 13);/** 启动多任务调度*/OSStart();/** 正常情况下,永远不会执行到这里*/return;}六、实验结果。
计算机与信息学院《嵌入式系统》实验报告学生姓名:学号:专业班级:2014 年 6 月20 日实验一(1):熟悉Linux 开发环境一、实验目的熟悉Linux 开发环境,学会基于Mini6410 的Linux 开发环境的配置和使用。
使用Linux 的arm-linux-gcc 编译,minicom串口方式下载调试二、实验内容本次实验使用Fedora 9.0 操作系统环境,安装ARM-Linux 的开发库及编译器。
创建一个新目录,并在其中编写hello.c 和Makefile 文件。
学习在Linux 下的编程和编译过程,以及ARM 开发板的使用和开发环境的设置。
下载已经编译好的文件到目标开发板上运行。
三、实验设备及工具(包括软件调试工具)硬件:Mini6410嵌入式实验平台、PC机Pentium 500以上, 硬盘10G以上。
软件:PC机操作系统Fedora9+MINICOM+ARM-LINUX 开发环境四、实验步骤1 、建立工作目录[root@zxt smile]# mkdir hello[root@zxt smile]# cd hello2 、编写程序源代码在 Linux 下的文本编辑器有许多,常用的是 vi 和 Xwindow 界面下的 gedit 等,开发过程中推荐使用 vi。
Kdevelope、anjuta 软件的界面与 vc6.0 类似,使用它们对于熟悉 windows 环境下开发的用户更容易上手。
实际的 hello.c 源代码较简单,如下:#include <stdio.h>main() {printf(“hello world \n”);}我们可以是用下面的命令来编写 hello.c 的源代码,进入 hello 目录使用 vi 命令来编辑代码:[root@zxt hello]# vi hello.c按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按 Esc 键进入命令状态,再用命令“:wq”保存并退出。