嵌入式系统实验四

合集下载

嵌入式系统看门狗实验报告

嵌入式系统看门狗实验报告

竭诚为您提供优质文档/双击可除嵌入式系统看门狗实验报告篇一:《嵌入式系统原理与应用》实验报告04-看门狗实验《嵌入式系统原理与接口技术》实验报告实验序号:4实验项目名称:看门狗实验1234篇二:嵌入式实验报告目录实验一跑马灯实验................................................. (1)实验二按键输入实验................................................. .. (3)实验三串口实验................................................. . (5)实验四外部中断实验................................................. .. (8)实验五独立看门狗实验................................................. (11)实验七定时器中断实验................................................. (13)实验十三ADc实验................................................. .. (15)实验十五DmA实验................................................. .. (17)实验十六I2c实验................................................. (21)实验十七spI实验................................................. .. (24)实验二十一红外遥控实验................................................. .. (27)实验二十二Ds18b20实验................................................. (30)实验一跑马灯实验一.实验简介我的第一个实验,跑马灯实验。

嵌入式系统原理与应用实验报告(实验四 环境的搭建)

嵌入式系统原理与应用实验报告(实验四 环境的搭建)

实验四环境的搭建一.实验目的和要求1了解嵌入式交叉编译的相关知识2能够搭建嵌入式Linux开发环境二.实验环境Windows XP的PC机,虚拟机,ARM开发板三,实验步骤(一)设置超级终端1.启动:开始->程序->附件->通讯->超级终端.2.是否将HyperTerminal作为默认的telnet程序?“否”3,位置信息窗口:“取消”4.需要拨号位置的电话信息,确实要取消吗?“是”“确定”。

5.为新的连接取名:sst6.连接实验箱的串口:“COM1”7.端口设置(即串口COM1的设置)8.进入vivi启动界面,“文件—>另存为”保存该连接设置(二)Xshell1)连接ARM开发板2)连接虚拟机1. XP的本地IP地址为192.168.1.11,子网掩码255.255.2555.0;默认网关192.168.1254.虚拟机改为自动获得IP地址。

2.Linux虚拟机内运行命令ifconfig,,查看虚拟机的网络设置3.启动Xshell后,点击左上角图标,新建一个会话连接虚拟机。

如下:8.在虚拟机的红帽菜单中“系统设置”->“服务器设置”->“samba”10.在XP的地址栏中输入\\192.168.1.12,即可访问Linux虚拟机的/home/uptech(三)将XP中的文件夹共享给虚拟机1.在虚拟机菜单中选择“虚拟机—>设置”2选择“选项” ”文件夹共享”;总是启用,可以添加想要共享的文件夹。

(四)NFS共享:将虚拟机中的文件夹共享给ARM开发板(五)测试U-Boot1.连接好串口,网线,断开关口;2.重新启动ARM开发板;3.在Xshell中随便按键,即可看到u-boot启动成功;4.常用命令:printenv (用于查看环境变量)Setenv 环境变量名环境变量值(用于修改环境变量)Saveenv (用于保存环境变量)Ping 192.168.1.12Help 得到帮助只要运行这些命令,说明u-boot成功!。

《嵌入式接口技术》实验报告4-LED点阵显示

《嵌入式接口技术》实验报告4-LED点阵显示
这个实验和实验二数码管的实验差不多,只是把接受数据的一段换成了led点阵,所以难度不是很大,复习一下实验二就能够做出来。
六、教师评语
签名:
日期:
日期:
成绩
PINSEL0=0x00000000;
IO0DIR=0x3f;
while(1)
{
screen();
}
return 0;
}
效果图:
五、分析与讨论
这个实验和实验二数码管的实验差不多,只是把接受数据的一段换成了led点阵,所以难度不是很大,复一下实验二就能够做出来。
这个实验和实验二数码管的实验差不多,只是把接受数据的一段换成了led点阵,所以难度不是很大,复习一下实验二就能够做出来。
Senddata_Row(ROW[j+1]);
Senddata_Line(LINE[j+1]);
Delay(50);
Senddata_Row(0xff);
Senddata_Line(0x00);
j=j+2;
Delay(1000);
}
}
int main (void)
{// add user source code
#define DS2 0x08
#define SH_CP1 0x02
#define ST_CP1 0x04
#define SH_CP2 0x10
#define ST_CP2 0x20
uint32 const ROW[]={0xc3,0xdb,0x87,0xb7,0x0f,0x6f,0x87,0xb7,0xc3,0xdb,0xe1,0xed,0xf0,0xf6,0xe1,0xed};
else
IO0SET=DS1;

实验四 Nios II 嵌入式处理器关浩亮2012029180002

实验四 Nios II 嵌入式处理器关浩亮2012029180002

实验四 Nios II 嵌入式处理器一、实验要求:1、实现一个由Nios II控制的由18个发光二级管组成的流水灯效果;2、为了点亮LED灯,程序运行速度不要太快,需要进行适当延时。

二、实验目的:1,掌握基于SOPC Builder和Nios SBT实现嵌入式系统的硬件、软件设计过程;2,学会根据需求定制一个Nios II硬件系统,并在此基础上编写应用程序。

三、实验原理和实验内容:1、SOPC技术SOPC(System On a Programmable Chip)是指用可编程逻辑技术把整个系统放到一块硅片上。

它是一种特殊的嵌入式系统。

一方面,它是片上系统(SOC),即由单个芯片完成整个系统的主要逻辑功能;另一方面,它是可编程系统,具有灵活的设计方式,可裁减、扩充、升级,并具备软硬件在系统可编程的功能。

这项技术将EDA、计算机设计、嵌入式系统、DSP等技术融为一体。

SOPC 结合了SOC 和PLD、FPGA 各自的优点,一般具备以下基本特征:至少包含一个嵌入式处理器内核;具有小容量片内高速RAM 资源;丰富的IP Core资源可供选择;足够的片上可编程逻辑资源;处理器调试接口和FPGA 编程接口;可包含部分可编程模拟电路;单芯片,低功耗,微封装。

随着EDA 技术的发展和大规模可编程器件性能的不断提高,SOPC 技术已被广泛应用于许多领域。

首先,SOPC 在极大提高了许多电子系统性能价格比的同时,还开辟了许多新的应用领域,如高端的数字信号处理、通信系统、软件无线电系统的设计、微处理器及大型计算机处理器的设计等等;同时,由于SOPC 具有基于EDA 技术标准的设计语言与系统测试手段、规范的设计流程与多层次的仿真功能以及高效率的软硬件开发与实现技术,使得SOPC 及其实现技术无可争议地成为现代电子技术最具时代特征的典型代表。

与基于ASIC 的SOC 相比,SOPC 具有更多的特点与吸引力:开发软件成本低,硬件实现风险低,产品上市效率高,系统结构可重构及硬件可升级等,它还具有设计者易学易用、高附加值、产品设计成本低等优势。

嵌入式系统 实验报告

嵌入式系统 实验报告

使能 IRQ 中断。
4 装载并使能外中断;
5 选用 DebugInExram 生成目标,然后编译连接工程。
6 选择【Project】->【Debug】,启动 AXD 进行 JTAG 仿真调试。
7 全速运行程序,LED 闪烁;
8 每一次按键 Key,蜂鸣器就会转换静音或鸣响状态。
四.测试数据及运行结果
1
五.总结
1.实验过程中遇到的问题及解决办法;
由于本次实验较简单,且我们之前学习的微机原理课程也进行了流水灯的设
计实验,所以对于本次实验,我完成地很顺利,在实验中没有遇到问题。
2.对设计及调试过程的心得体会。
本次实验是本学期该课程我们进行的第一次实验,总的来说,实验不是很难,
设计过程也相对简单,其主要目的是让我们熟悉一下实验环境,并且能在实验环
6
五.总结 1.实验过程中遇到的问题及解决办法;
实验第一次运行时,蜂鸣器一直处于鸣响状态,及时按了按键,蜂鸣器还是 一直鸣叫,不产生外中断。后来仔细检查了程序,发现原来是忘记使能 EINT0 中 断了,加上 VICIntEnable = 1<<0x0e 代码,程序就能正常运行了。 2. 对设计及调试过程的心得体会。
境下进行简单的实验操作,为之后的实验打下坚实的基础。
六.附录:源代码(电子版)
#include "config.h"
const uint32 LEDS8 = 0xFF << 18;//P1[25:18]控制 LED1~LED8,低电平点亮
const uint32 KEY = 1 << 16;
//P0.16 连接 KEY1
三.方案设计
① 启动 ADS1.2IDE 集成开发环境,选择 ARM Executable Image for lpc2131

嵌入式实习报告(共5篇)

嵌入式实习报告(共5篇)

嵌入式实习报告(共5篇)第一篇:嵌入式实习报告一、嵌入式系统开发与应用概述在今日,嵌入式ARM 技术已经成为了一门比较热门的学科,无论是在电子类的什么领域,你都可以看到嵌入式ARM 的影子。

如果你还停留在单片机级别的学习,那么实际上你已经落下时代脚步了,ARM 嵌入式技术正以几何的倍数高速发展,它几乎渗透到了几乎你所想到的领域。

本章节就是将你领入ARM 的学习大门,开始嵌入式开发之旅。

以嵌入式计算机为技术核心的嵌入式系统是继网络技术之后,又一个IT领域新的技术发展方向。

由于嵌入式系统具有体积小、性能强、功耗低、可靠性高以及面向行业具体应用等突出特征,目前已经广泛地应用于军事国防、消费电子、信息家电、网络通信、工业控制等各个领域。

嵌入式的广泛应用可以说是无所不在。

嵌入式微处理器技术的基础是通用计算机技术。

现在许多嵌入式处理器也是从早期的PC 机的应用发展演化过来的,如早期PC 诸如TRS-80、Apple II 和所用的Z80 和6502 处理器,至今仍为低端的嵌入式应用。

在应用中,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点。

嵌入式处理器目前主要有Am186/88、386EX、SC-400、Power PC、68000、MIPS、ARM 等系列。

在早期实际的嵌入式应用中,芯片选择时往往以某一种微处理器内核为核心,在芯片内部集成必要的ROM/EPROM/Flash/EEPROM、SRAM、接口总线及总线控制逻辑、定时/计数器、WatchDog、I/O、串行口、脉宽调制输出、A/D、D/A 等各种必要的功能和外设。

二、实习设备硬件:Embest EduKit-IV实验平台、ULINK2仿真器套件、PC机软件:μVision IDE for ARM集成开发环境、Windows 98/2000/NT/XP三、实习目的1.初步掌握液晶屏的使用及其电路设计方法;掌握S3C2410X处理器的LCD控制器的使用;掌握通过任务调用的方法把液晶显示函数添加到uC/OS-II中;通过实验掌握液晶显示文本及图形的方法与程序设计。

北邮研究生嵌入式系统实验课程——第4-4节 VxWorks网络编程

北邮研究生嵌入式系统实验课程——第4-4节 VxWorks网络编程
12
VxWorks网络组件
basic network initialization components: 基本的网络初始化组件
– VxWorks基本网络支持 – 网络设备的启动
network devices:网络设备
– 网络设备的类型
networking protocols:网络协议
– TCP/IP组件 – 应用及路由协议
2
1、网络基础
OSI七层协议 TCP/IP协议 路由 Internet Protocol(IP)
– 数据报(Datagram)通信协议 – 是一种尽力而为业务(Best-effort ) 数据丢失(Loss) 重新排序(Reordering) 数据重复(Duplication) 延时(Delay) – 主机到主机的数据传送
Block until connection established
Socket() Connect()
Connection establishment
send()
Communication message (request)
recv()
Process request
send()
Communication message (reply)
传输协议(Transport Protocols)
用户数据报协议( User Datagram Protocol (UDP))
– 对数据进行校验 – 仍然是尽力而为的服务
传输控制协议(Transmission Control Protocol (TCP))
– 对数据进行校验 – 可靠的字节流传送 – 流量和拥塞控制
3
IP地址
32-bit的识别符 (IPv4, IPv6=128 bits) 点分方式的四个十进制数来表示: 192.118.56.25 -> 167.208.101.28

嵌入式系统实验报告

嵌入式系统实验报告

嵌入式系统实验报告学号:姓名:班级: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。

嵌入式实验报告数码管显示实验

嵌入式实验报告数码管显示实验

实验报告课程名称嵌入式系统编程实践实验仪器清华同方辰源嵌入式系统实验箱实验名称实验四:数码管显示实验系别__计算机学院_专业 _班级/学号学生姓名实验日期 2013年10月11日成绩___________________指导教师实验四:数码管显示实验一、实验问题回答(1)如何设置功能3,4中的循环速度?答:利用系统SysTick Handler中断,控制循环速度void SysTick_Handler (void){Event = 1;}(2)若是想实现类似实验(三)通过键盘动态控制循环速度,考虑一下应该如何设计?答:SysTickPeriodSet(SysCtlClockGet() / X)//设置x的大小就可以控制循环的速度。

void Reset_Counter_Speed(int x){SysTickIntDisable();SysTickDisable();SysTickPeriodSet(SysCtlClockGet() / x);// 设置x,控制计数频率,值与频率成正比SysTickEnable();SysTickIntEnable();},达到预期的效果。

二、实验目的和效果(效果即是否达到实验目的,达到的程度如何)学习、了解和掌握数码管工作原理和使用方法实验结果及检查(1)默认在在OLED屏幕上分行显示自己的学号、姓名、项目序号、时间,如“2010011001”、“zhangsan”、“work4”、“2012-11-”(2)首先在屏幕上显示四个功能选单,通过键盘A-F键选择不同功能,选择后屏幕显示相关功能提示,接受键盘输入的数字键0-9并在数码管上显示。

如:开始显示:“please choose the function:”“A: …”“B: …”“C: …”“D: …”按下“A”键后,显示”now you choose function A”(3)按下键盘后,根据不同功能在数码管上显示按键字符。

嵌入式系统实验IO接口

嵌入式系统实验IO接口

可扩展性和可维护性相对较差,模块机制就是为了弥补这一缺陷。 模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。
它在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在
用户空间的进程是不同的。模块通常由一组函数和数据结构组成,用来实 现一种文件系统、一个驱动程序或其他内核上层的功能。
static int led_release(struct inode *inode,struct file *file) {
3
之类的函数来读写 IO 端口;后一种 MMIO 是先把 IO 端口映射到 IO 内存(“内 存空间”),再使用访问 IO 内存的函数来访问 IO 端口。
对于 RISC 处理器(如 ARM、PowerPC 等),通常只实现一个物理地址空间, 外设 I/O 端口成为内存的一部分。此时,CPU 可以像访问一个内存单元那样访问 外设 I/O 端口, 而不需要设立专门的外设 I/O 指令。这两者在硬件实现上的差 异对于软件来说是完全透明的, 驱动程序开发人员可以将存储器映射方式的 I/O 端口和外设内存统一看作是“I/O 内存” 资源。
0100 = CF_DMARQ
2
0101 = TS_DATA
0110~1110 = Reserved
1111 = GPJ0_INT[3] 本次实验中,主要用到了 Output 功能,而对其他功能没有涉及,所以在端 口功能设置的时候,主要考虑这一点。GPJ0DAT 寄存器用于 GPJ0 口的数据操 作,一共有 8 位,端口配置为输入时, 从寄存器读入值对应位反映引脚电平状 态; 端口配置为输出时, 写出位产生对应引脚电平;端口配置为功能引脚时, 寄 存 器值不确 定,实 验中, 主要使用 其输出 功能。 GPJ0PUD、 GPJ0DRV 、 GPJ0CONPDN、GPJ0PUDPDN 功能不涉及,这里不做过多的介绍。 3) IO 端口地址映射 在介绍 IO 端口地址映射时,有必要介绍一下地址空间的概念。 物理地址:CPU 地址总线传来的地址,由硬件电路控制其具体含义。物理 地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上 (如显存、BIOS 等)。在程序指令中的虚拟地址经过段映射和页面映射后,就 生成了物理地址,这个物理地址被放到 CPU 的地址线上。 物理地址空间,一部分给物理 RAM(内存)用,一部分给总线用,这是 由硬件设计来决定的,因此在 32 bits 地址线的 x86 处理器中,物理地址空间是 2 的 32 次方,即 4GB,但物理 RAM 一般不能上到 4GB,因为还有一部分要给 总线用(总线上还挂着别的许多设备)。在 PC 机中,一般是把低端物理地址给 RAM 用,高端物理地址给总线用。 总线地址:总线的地址线或在地址周期上产生的信号。外设使用的是总线 地址,CPU 使用的是物理地址。物理地址与总线地址之间的关系由系统的设计 决定的。在 x86 平台上,物理地址就是总线地址,这是因为它们共享相同的地 址空间。因为物理地址和总线地址相同,所以凭眼睛看是不能确定这个地址是 用在哪儿的,它或者在内存中,或者是某个卡上的存储单元, 甚至可能这个 地址上没有对应的存储器。 虚 拟 地 址 : 现 代 操 作 系 统 普 遍 采 用 虚 拟 内 存 管 理 ( Virtual Memory Management)机制,这需要 MMU(Memory Management Unit)的支持。MMU 通常是 CPU 的一部分,如果处理器没有 MMU,或者有 MMU 但没有启用,CPU 执行单元发出的内存地址将直接传到芯片引脚上,被 内存芯片(物理内存) 接收,这称为物理地址(Physical Address),如果处理器启用了 MMU,CPU 执 行单元发出的内存地址将被 MMU 截获,从 CPU 到 MMU 的地址称为虚拟地 址(Virtual Address),而 MMU 将这个地址翻译成另一个地址发到 CPU 芯片的 外部地址引脚上,也就是将虚拟地址映射成物理地址。 Linux 中,进程的 4GB(虚拟)内存分为用户空间、内核空间。用户空间 分布为 0~3GB(即 PAGE_OFFSET,在 0X86 中它等于 0xC0000000),剩下的 1G 为内核空间。程序员只能使用虚拟地址。系统中每个进程有各自的私有用 户空间(0~3G),这个空间对系统中的其他进程是不可见的。 CPU 发出取指令请求时的地址是当前上下文的虚拟地址,MMU 再从页表 中找到这个虚拟地址的物理地址,完成取指。同样读取数据的也是虚拟地址, 比如 mov ax, var. 编译时 var 就是一个虚拟地址,也是通过 MMU 从也表中来 找到物理地址,再产生总线时序,完成取数据的。 访问 IO 端口有 2 种途径:I/O 映射方式(I/O-mapped)、内存映射方式 (Memory-mapped)。前一种途径不映射到内存空间,直接使用 intb()/outb()

嵌入式系统实验报告书

嵌入式系统实验报告书

嵌入式系统实验报告书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系统环境共享资源的基本方法。

嵌入式系统原理与应用实验指导书(合稿+习题)

嵌入式系统原理与应用实验指导书(合稿+习题)

嵌入式系统原理与应用实验指导书南航金城学院2013.2目录目录 (1)第一部分试验箱硬件结构 (2)第二部分实验 (11)实验一ADS1.2集成开发环境练习 (11)实验二汇编指令实验1 (17)实验三汇编指令实验2 (20)实验四汇编指令实验3 (23)实验五ARM微控制器工作模式实验 (28)实验六 C语言程序实验 (33)实验七 C语言调用汇编程序实验 (36)实验八GPIO输出控制实验 (39)实验九GPIO输入实验 (46)实验十外部中断实验 (50)实验十一UART通讯实验 (56)实验十二I2C接口实验 (64)实验十三定时器实验 (75)实验十四PWM DAC实验 (81)实验十五ADC实验 (87)实验十六RTC实验 (94)实验十七步进电机控制实验 (101)实验十八直流电机控制实验 (105)附录1 DeviceARM2410 专用工程模板 ..................................................... 错误!未定义书签。

第一部分试验箱硬件结构MagicARM2410教学实验开发平台是一款可使用μC/OS-II、Linux和WinCE操作系统、支持QT、MiniGUI图形系统、集众多功能于一身的ARM9教学实验开发平台。

采用Samsung公司的ARM920T内核的S3C2410A微处理器,扩展有充足的存储资源和众多典型的嵌入式系统接口。

MagicARM2410实验箱参考如图1.1所示。

图1.1 MagicARM2410实验箱外观图MagicARM2410实验箱功能框图如图1.2所示。

图1.2 MagicARM2410实验箱功能框图1.1 S3C2410A芯片简介S3C2410A是Samsung公司推出的16/32位RISC处理器(ARM920T内核),适用于手持设备、POS机、数字多媒体播放设备等等,具有低价格、低功耗、高性能等特点。

北邮嵌入式系统设计实验-实验报告

北邮嵌入式系统设计实验-实验报告

北邮嵌入式系统设计实验-实验报告嵌入式试验报告学院: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),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。

在进入一个关键代码段之前,线程必需猎取一个信号量;一旦该关键代码段完成了,那么该线程必需释放信号量。

其它想进入该关键代码段的线程必需等待直到第一个线程释放信号量。

信号量是一个在进程和线程中都可以使用的同步机制。

信号量类似于一个通知,某个线程发出一个通知,等待此通知的线程收到通知后,会执行预先设置的工作。

嵌入式linux实验报告

嵌入式linux实验报告

嵌入式操作系统Linux实验报告专业:计算机科学与技术班级:13419011学号:1341901124姓名:武易组员:朱清宇实验一Linux下进程的创建一实验目的1.掌握Linux下进程的创建及退出操作2.了解fork、execl、wait、waitpid及之间的关系二实验内容创建进程,利用fork函数创建子进程,使其调用execl函数,退出进程后调用wait或waitpid清理进程。

三实验过程1.进程的创建许多进程可以并发的运行同一程序,这些进程共享内存中程序正文的单一副本,但每个进程有自己的单独的数据和堆栈区。

一个进程可以在任何时刻可以执行新的程序,并且在它的生命周期中可以运行几个程序;又如,只要用户输入一条命令,shell进程就创建一个新进程。

fork函数用于在进程中创建一个新进程,新进程是子进程。

原型如下:#include<sys/types.h> /* 提供类型pid_t的定义 */#include<unistd.h> /* 提供函数的定义 */pid_t fork(void);使用fork函数得到的子进程是父进程的一个复制品,它从父进程处继承了整个进程的地址空间fork系统调用为父子进程返回不同的值,fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:在父进程中,fork返回新创建子进程的进程ID;✓在子进程中,fork返回0;✓如果出现错误,fork返回一个负值;用fork创建子进程后执行的是和父进程相同的程序,子进程可以通过调用exec函数以执行另一个程序。

当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程(例如其m a i n函数)开始执行。

调用e x e c并不创建新进程,进程I D并未改变,只是用另一个新程序替换了当前进程的正文、数据、堆和栈段。

e x e c函数原型execl,execlp,execle,execv,execve和execvp2.进程的退出一个进程正常终止有三种方式:由main()函数返回;调用exit()函数;调用_exit()或_Exit()函数。

嵌入式系统原理实验四蜂鸣器

嵌入式系统原理实验四蜂鸣器

实验四蜂鸣器实验实验目的:控制ALIENTEK战舰STM32开发板上的蜂鸣器发出:“嘀”…“嘀”…的间隔声,进一步熟悉 STM32 IO 口的使用内容要点:1.硬件介绍蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。

蜂鸣器主要分为压电式蜂鸣器和电■磁式蜂鸣器两种类型。

战舰STM32开发板板载的蜂鸣器是电磁式的有源蜂鸣器这里的有源不是指电源的“源”,而是指有没有自带震荡电路,有源蜂鸣器自带了震荡电路,一通电就会发声STM32的单个IO最大可以提供25mA电流(来自数据手册),而蜂鸣器的驱动电流是30mA 左右,两者十分相近,但是全盘考虑,STM32整个芯片的电流,最大也就150mA,如果用IO 口直接驱动蜂鸣器,其他地方用电就得省着点了…所以,我们不用 STM32的IO直接驱动蜂鸣器,而是通过三极管扩流后再驱动蜂鸣器,这样STM32的10只需要提供不到1mA的电流就足够了。

IO 口使用虽然简单,但是和外部电路的匹配设计,还是要十分讲究的,考虑越多,设计就越可靠,可能出现的问题也就越少。

蜂鸣器在硬件上也是直接连接好了的,不需要经过任何设置,直接编写代码就可PBS 139图1 蜂鸣器与STM32连接原理图当PB.8输出高电平的时候,蜂鸣器将发声,当PB.8输出低电平的时候,蜂鸣器停止发声2.软件设计可以直接打开本实验工程,也可以按下面的步骤在实验 1的基础上新建蜂鸣器实验工程。

复制上一章的 LED 实验工程,然后打开USER 目录,把目录下面工程 LED.uvprojx 重命 名为BEEPuvprojx 。

,然后在 HARDWARE 文件夹下新建一个 BEEP 文件夹,用来存放与蜂鸣器相关的代码将beep.h 头文件的路径加入到工程里面一般的头文件有固定的格式, 多个地方调用头文件会重复引用, 为了避免头文件内容重复引用,一般通过预编译的方式来写头文件。

嵌入式系统实验

嵌入式系统实验

嵌入式系统实验指导书计算机科学与技术学院实验教学中心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指令系统,汇编语言编程知识。

嵌入式系统GPIO 输入输出实验报告

嵌入式系统GPIO 输入输出实验报告

实验四GPIO 输入实验之五兆芳芳创作一、实验目的1、能够使用GPIO的输入模式读取开关信号.2、掌握GPIO相关存放器的用法和设置.3、掌握用C语言编写程序控制GPIO.二、实验情况PC机一台ADS 1.2集成开发情况一套EasyARM2131教学实验平台一套三、实验内容1.实验通过跳线JP8 连接,程序检测按键KEY1 的状态,控制蜂鸣器BEEP 的鸣叫.按下KEY1,蜂鸣器鸣叫,松开后停止蜂鸣.(调通实验后,改成KEY3键进行输入).2.当检测到KEY1有按键输入时点亮发光二极管LED4并控制蜂鸣器响,软件延时后关掉发光管并停止蜂鸣,然后循环这一进程直到检测按键没有输入.(键输入改成键KEY4,发光管改成LED6).3.结合实验三,当按下按键Key1时,启动跑马灯程序并控制蜂鸣器响,软件延时后关掉发光管并停止蜂鸣,然后循环这一进程直到检测按键再次按下.四、实验原理当P0 口用于GPIO输入时(如按键输入),内部无上拉电阻,需要加上拉电阻,电路图拜见图 4.2.进行 GPIO 输入实验时,先要设置IODIR 使接口线成为输入方法,然后读取IOPIN 的值便可.图 4.2按键电路原理图实验通过跳线 JP8 连接,程序检测按键KEY1 的状态,控制蜂鸣器BEEP 的鸣叫.按下KEY1,蜂鸣器鸣叫,松开后停止蜂鸣.在这个实验中,需要将按键KEY1 输入口P0.16 设为输入口而蜂鸣器控制口P0.7 设置为输出口.蜂鸣器电路如图 4.3所示,当跳线JP6 连接蜂鸣器时,P0.7 控制蜂鸣器,低电平时蜂鸣器鸣叫.LED灯电路如图4.4所示,低电平时灯亮.图 4.3蜂鸣器控制电路图 4.4 LED 控制电路程序首先设置管脚连接存放器PINSEL0 和PINSEL1,设置P0.16 为输入,设置为输出.然后检测端口P0.16 的电平,对进行相应的控制,流程图如图 4.5所示,实现程序见程序清单4.1.图 4.5按键输入实验流程图五、实验步调、源代码及调试结果内容1实验步调①启动ADS1.2IDE集成开发情况,选择ARM ExecutableImage for lpc2131工程模板成立一个工程BEEP_key.②在user组里编写主程序代码main.c.③选用DebugInFLASH生成目标,然后编译链接工程.④将EasyARM教学实验开发平台上的相应管脚跳线短接.⑤选择Project->Debug,启动AXD进行JLINK仿真调试.⑥全速运行程序,程序将会在main.c的主函数中停止.如下图所示:⑦单击Context Variable图标按钮(或选择ProcessorViews->Variables)打开变量不雅察窗口,通过此窗口可以不雅察局部变量和全局变量.选择System Views->Debugger Internals 便可打开LPC2000系列ARM7微控制器的片内外存放器窗口.通过变量窗口可以不雅察变量BEEP、KEY1等的值和ARM7微控制器的片内外存放器窗口.如下图所示:⑧可以单步运行程序,先按下Key1,不雅察IO0PIN存放器的值,然后断开Key1,不雅察IO0PIN存放器的值.可以设置/取消断点;或全速运行程序,停止程序运行,不雅察变量的值,判断蜂鸣器控制是否正确.如下图所示:图4.6 未按下Key1时IO0PIN的值图4.7 按下Key1时IO0PIN的值由上两图可知,当按下Key1时,IO0PIN存放器的第16位由1变成0(F变成E),key1与P,按下Key1时,1变成0,存放器值变更,蜂鸣器响,说明控制是正确的.现象描述:按下KEY1,蜂鸣器鸣叫,松开后停止蜂鸣.源代码:#include "config.h"const uint32 BEEP = 1 << 7; // P0.7 控制蜂鸣器const uint32 KEY1 = 1 << 16; // P0.16 连接KEY1(改成KEY3时,只需“const uint32 KEY1 = 1 << 16”改成“const uint32 KEY3 = 1 << 18”,其余不变.)/***************************************************** **************************************** 函数名称:main()** 函数功效:GPIO 输入实验测试.** 检测按键KEY1.KEY1 按下,蜂鸣器蜂鸣,松开后停止蜂鸣.** 跳线说明:把 JP8 的KEY1 跳线短接,JP11 连接蜂鸣器.****************************************************** *************************************/int main (void){ PINSEL0 = 0x00000000; // 所有管脚连接GPIOPINSEL1 = 0x00000000;IO0DIR = BEEP; // 蜂鸣器控制口输出,其余输入while (1){ if ((IO0PIN & KEY1) == 0) IO0CLR = BEEP; // 如果KEY1 按下,蜂鸣器鸣叫else IO0SET = BEEP; // 松开则停止蜂鸣}return 0;}内容二实验步调①启动ADS1.2IDE集成开发情况,选择ARM ExecutableImage for lpc2131工程模板成立一个工程BEEP_key.②在user组里编写主程序代码main.c.③选用DebugInFLASH生成目标,然后编译链接工程.④将EasyARM教学实验开发平台上的相应管脚跳线短接.⑤选择Project->Debug,启动AXD进行JLINK仿真调试.⑥全速运行程序,程序将会在main.c的主函数中停止.如下图所示:⑦单击Context Variable图标按钮(或选择Processor Views->Variables)打开变量不雅察窗口,通过此窗口可以不雅察局部变量和全局变量.选择System Views->Debugger Internals 便可打开LPC2000系列ARM7微控制器的片内外存放器窗口.通过变量窗口可以不雅察变量BEEP、KEY1等全局变量、i等当地变量和ARM7微控制器的片内外存放器窗口.如下图所示:左图所示为ARM7微控制器的片内存放器窗口.图4.9 当地变量图4.8 全局变量⑧可以单步运行程序,先按下Key1,不雅察IO0PIN存放器的值,然后断开Key1,不雅察IO0PIN存放器的值.可以设置/取消断点;或全速运行程序,停止程序运行,不雅察变量的值,判断蜂鸣器控制是否正确.如下图所示:.图未按下KEY1时IO0PIN的值图 4.11 按下KEY1后IO0PIN的值对比图 4.10和 4.11,发明按下KEY1后,IO0PIN存放器的第16位由1变成0;而KEY,当按下时输入低电平,这说明KEY1的控制是正确的.上图所示为运行“IO0CLR = BEEP”后IO0PIN存放器的值,与图4.10对比,发明第8位由1变成0,BEEP对应P,这说明BEEP的控制是对的.现象描述:当按下KEY1时,蜂鸣器鸣响,LED4亮;当松开KEY1后,蜂鸣器静音,LED4灭.源代码如下:#include "config.h"const uint32 BEEP = 1 << 7; // P0.7 控制蜂鸣器const uint32 KEY1 = 1 << 16; // P0.16 连接KEY1(改成KEY4按键时,只需把上句代码改成“const uint32 KEY4=1<<19”,其余不变)const uint32 LEDS4= 1 << 21; // P1[21]控制LED4,低电平点亮(改成LED6时,只需把上句代码改成“const uint32 LED6=1<<23”,其余不变.)/***************************************************** ************************ 函数名称:main()** 函数功效:GPIO 输入实验测试.** 检测按键KEY1.KEY1 按下,蜂鸣器蜂鸣,松开后停止蜂鸣.** 跳线说明:把 JP8 的KEY1 跳线短接,JP11 连接蜂鸣器.****************************************************** *************************************/int main (void){Uint32 i;PINSEL0 = 0x00000000; // 所有管脚连接GPIOPINSEL1 = 0x00000000;IO0DIR = BEEP; // 蜂鸣器控制口输出0IO1DIR = LEDS4; // 设置LED4灯亮while (1){ if ((IO0PIN & KEY1) == 0)for(i=0; i<1000; i++); // 软件延时{IO0CLR = BEEP; // 如果KEY1 按下,蜂鸣器鸣叫IO1DCLR = LEDS4; // 设置LED4灯亮}else{IO0SET = BEEP; // 松开则停止蜂鸣IO1SET= LEDS4; // 设置LED4灯灭}for(i=0; i<1000; i++); // 软件延时}return 0;}内容三实验步调①启动ADS1.2IDE集成开发情况,选择ARM ExecutableImage for lpc2131工程模板成立一个工程BEEP_key.②在user组里编写主程序代码main.c.③选用DebugInFLASH生成目标,然后编译链接工程.④将EasyARM教学实验开发平台上的相应管脚跳线短接.⑤选择Project->Debug,启动AXD进行JLINK仿真调试.⑥全速运行程序,程序将会在main.c的主函数中停止.如下图所示:⑦单击Context Variable图标按钮(或选择ProcessorViews->Variables)打开变量不雅察窗口,通过此窗口可以不雅察局部变量和全局变量.选择System Views->Debugger Internals 便可打开LPC2000系列ARM7微控制器的片内外存放器窗口.通过变量窗口可以不雅察变量BEEP、KEY1等的值和ARM7微控制器的片内外存放器窗口.如下图所示:⑧可以单步运行程序,先按下Key1,不雅察IO0PIN存放器的值,然后断开Key1,不雅察IO0PIN存放器的值.可以设置/取消断点;或全速运行程序,停止程序运行,不雅察变量的值,判断蜂鸣器控制是否正确.如下图所示:1时IO0PIN的值1时IO0PIN 的值由上两图可知,当按下Key1时,IO0PIN存放器的第16位由1变成0(F变成E),key1与P,按下Key1时,1变成0,存放器值变更,蜂鸣器响,流水灯亮,说明控制是正确的.现象描述:当按下按键KEY1时,蜂鸣器鸣响,流水灯亮;松开后,蜂鸣器静音,流水灯灭.源代码如下:#include "config.h"const uint32 BEEP = 1 << 7; // P0.7 控制蜂鸣器const uint32 KEY = 1 << 16; // P0.16 连接KEY1const uint32 LEDS8 = 0xFF << 18; // P1[25:18]控制LED8~LED1,低电平点亮void DelayNS(uint32 dly){ uint32 i;for(; dly>0; dly--){for(i=0; i<50000; i++);}}/***************************************************** **************************************** 函数名称:liushuideng()** 函数功效:流水灯显示实验.** 调试说明:连接跳线 JP12 至LED8~LED1.****************************************************** *************************************//* 流水灯把戏,低电平点亮,注意调用时候用了取反操纵 */ const uint32 LED_TBL[] ={0x00, 0xFF, // 全部熄灭后,再全部点亮0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, // 依次逐个点亮0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, // 依次逐个叠加0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, // 依次逐个递减0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, // 两个靠拢后分隔0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81 // 从两边叠加后递减};int liushuideng(void){ uint8 i;PINSEL1 = 0x00000000; // 设置管脚连接GPIOIO1DIR = LEDS8; // 设置LED 控制口为输出while (1){for (i=0; i<42; i++){ /* 流水灯把戏显示 */IO1SET = ~((LED_TBL[i]) << 18);DelayNS(20);IO1CLR = ((LED_TBL[i]) << 18);DelayNS(20);}}return 0;}//主函数int main(void){uint32 i;PINSEL0 = 0x00000000; // 所有管脚连接GPIOPINSEL1 = 0x00000000;IO0DIR = BEEP; // 蜂鸣器控制口输出0while (1){ if ((IO0PIN & KEY) == 0){for(i=0; i<1000; i++); // 软件延时{IO0CLR = BEEP; // 如果KEY 按下,蜂鸣器鸣叫liushuideng();}}else{IO0SET = BEEP; // 松开则停止蜂鸣IO1SET= LEDS8;}for(i=0; i<100; i++); // 软件延时}return 0;}六、思考题1、如果将P0.30设置为GPIO输入模式,且管脚悬空,那么读取P0.30得到的值是0仍是1?或是不确定?当管脚悬空时,该管脚有可能是高电平也有可能是低电平.读取IO0PIN的值其实不克不及确定管束的值.有时管脚是高电平,读取到的不一定是高电平.2、如果需要读取当前P0.7的输出值(不是管脚上的电平),如何实现?将该管脚与一个LED连接,若LED亮,则输出值为0,不然为1.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学号: 姓名: 班级: 实验时间:
实验编号
ES004 实验名称 UART 串口通信(二)-数码管 实验目的和要求
1) 掌握八段数码管显示原理。

2) 学习编程实现 S3C2440 的 UART 通信。

主要实验仪器设

硬件:计算机1台、ARM9试验箱1台、ARM 仿真器一套、串口线 软件:ADS 、超级终端
一、实验内容 1) 实现查寻方式串口的收发功能,接收来自串口的字符;
2) 将接收到的字符发送到超级终端。

二、实验原理
(1)原理图
图1
实验箱上有8只8段数码管:U503~U510,使用74F164芯片(串入并出芯片)对数码管进行控制,
嵌入式系统 实验报告
8只数码管的控制使用串行方式,实现8只流水数码管。

其中3只电路图如图1所示,另外5只接线相同。

实物图如图2所示:
图2
(2)数码管显示原理
本实验仪提供了8段共阴极数码管显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。

显示共有6位,采用动态方式显示。

8段数码管是由DSP2407异步串口经74LS164“串转并”后输出得到。

三、实验步骤
(1)连接好实验环境,将仿真器的一端通过USB口连接到PC机,将仿真器的另一端通过ARM 仿真器线连接到ARM实验箱的JTAG接口。

(2)将串口线一端接到PC机,另一端接到ARM实验箱的UART0接口(即J402口);打开串口超级终端,设置串口Baud Rate为115200,选择COM1。

(3)打开ADS CodeWarrior,在DS CodeWarrior 中打开实验工程文件HK_LED_ASM.mcp,先按下快捷键“CTRL+—”,会弹出如下窗口:选择“All Targets”删除所有目标文件,再按下F7对工程进行编译。

(4)按F5键启动AXD Debugger,AXD会自动载入可执行映象文件HK_LED_ASM.axf。

(5)打开控控制开关S517。

(6)执行映象文件,查看实验现象。

可以看到数码9~0数字循环显示。

三、实验结果:
程序运行时,可以看到数码9~0数字循环显示,并把数字显示在超级终端上。

四、程序代码:(要求有详细的注释)
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
const unsigned char ledbuf[10]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
#define LED7_SPICLK (1<<4) //GPJ4
#define LED7_SPICLK_INIT() rGPJCON = (rGPJCON & (~(3<<8))) | (1<<8)
#define LED7_SPICLK_LOW() rGPJDAT &= ~LED7_SPICLK
#define LED7_SPICLK_HIGH() rGPJDAT |= LED7_SPICLK
#define LED7_SPIMO (1<<1) //GPJ1
#define LED7_SPIMO_INIT() rGPJCON = (rGPJCON & (~(3<<2))) | (1<<2)
#define LED7_SPIMO_LOW() rGPJDAT &= ~LED7_SPIMO
#define LED7_SPIMO_HIGH() rGPJDAT |= LED7_SPIMO
void ShowNum(signed char num)
{
unsigned int i,temp;
LED7_SPICLK_INIT();
LED7_SPIMO_INIT();
if((num<0)||(num>99))
return;
for( i=0;i<8;i++ )
{
LED7_SPICLK_LOW();
temp = (ledbuf[num]) & (0x80>>i); // 从低位开始发0x01<<i,从高位开始发是0x80>>i
if( 0 == temp )
LED7_SPIMO_LOW();//
else
LED7_SPIMO_HIGH();//
LED7_SPICLK_HIGH();
}
}
void LED7_Test()
{
signed char number=99;
while(1)
{
if(number<0)
number=99;
Uart_Printf("number:%d\n",number);
ShowNum(number);
number--;
Delay(800);
}
number=0;
while(1)
{
if(number>100)
number=0;
Uart_Printf("number:%d\n",number);
ShowNum(number);
number++;
Delay(800);
}
}
五、实验现象:(截图):。

相关文档
最新文档