当前位置:文档之家› 嵌入式系统报告

嵌入式系统报告

嵌入式系统报告
嵌入式系统报告

东北大学信息学院2011级电子信息工程专业嵌入式系统课程设计报告

姓名:

学号:

班级:

电话:

Email:

年月日

摘要

嵌入式系统应用广泛,涉及通信、网络消费电子产品、医疗仪器、汽车电子、工业控制、仪器仪表、航天军事等各个行业和领域。通信领域大量使用嵌入式系统,主要包括程控交换机,路由器,IP交换机,传输设备等。在消费电子产品领域,随着技术的发展,消费电子产品正向数字化和网络化方向发展。在医疗仪器,汽车电子,工业控制,仪器仪表等领域,随着医疗卫生,汽车,工业等各部门对智能控制需求的不断增长,需要对设备进行智能化,数字化改造,位嵌入式系统提供了很大的市场。目前全球嵌入式芯片的年出货量达到了60亿。嵌入式系统在应用数量上已经远远超过了各种通用计算机。可以说嵌入式产品“无处不在”。本次课程设计,使用基于华邦W90P710处理器的实验教学系统设计了一个电子密码锁。

关键字:华邦W90P710微处理器、电子密码锁、嵌入式系统

目录

1.引言 (1)

1.1课程设计目的及要求 ................................................ 错误!未定义书签。

1.2课程设计任务及意义 ................................................ 错误!未定义书签。

2.嵌入式应用系统设计 (1)

2.1题目的意义 ................................................................ 错误!未定义书签。

2.1.1 系统的主要功能 (2)

2.2 系统功能设计 (2)

2.2.2 硬件设计 (2)

2.2.2 软件设计 (5)

2.3 源程序代码 (7)

4.总结 (16)

5. 参考文献 (16)

1. 引言

1.1课程设计目的及要求

(1)通过设计加深对书本知识的理解和运用;

(2)增强实践动手能力,熟悉嵌入式系统开发流程;

(3)培养独立解决问题的能力;

(4)严格按照开发流程,首先设计系统的功能,然后画出流程图,最后进行C语言编程,调试。

1.2课程设计任务及意义

设计任务:

1、设置密码:从键盘输入任意6位数字作为密码,将这七位数字经过USI 总线存储到Flash芯片中,设置密码完成。

2、通过密码登陆系统:

(1)、LCD首先显示“请输入密码”从键盘输入密码,比较键盘输入的密码与Flash中存储的密码是否相同。

(2)、如果密码正确,则LED灯点亮,LCD显示“密码正确”,并且开始切换图片,播放音频文件;如果密码不正确,则LED灯闪烁,LCD显示“密码错误”,而且如果连续三次输入密码错误则系统锁定,不允许再次输入密码,LED等闪烁,LCD显示“系统锁定”并播放警报音乐。

设计意义:

通过对已有程序的理解,之后进行修改拼凑,在由华邦W90P710为核心器件的硬件系统上实现了具有一定功能的系统。通过设计,熟悉了ARM 开发系统模块,及开发流程,并深入了解了嵌入式系统的实际应用,能更深地理解课堂上所学的内容,使得单调的理论知识与实际联系起来,增强动手能力。

2. 嵌入式应用系统设计

2.1题目的意义

在生活中,安全一直是不可忽视的问题。每个人都有安全设备的需求。在过去,人们都习惯用机械锁,十分落后,可靠性低。电子密码锁有使用方便、可靠、安全等诸多优点,相信会逐步取代机械锁,成为人们必不可少的安全产品。基于以上原因,我选择了电子密码锁作为本次课程设计题目。

2.1.1 系统主要功能

本系统的基本功能就是密码锁,如果用户是第一次使用则提示其先设定密码。成功设定密码后将密码通过USI 写到FLASH 中保存,并写入密码已设定的标志。如果用户不是是第一次使用则提示其输入密码,系统将比对设定好的密码及用户输入的密码,如果密码正确,则屏幕显示“密码正确”和图片,并播放音频;若不正确则屏幕显示“密码错误,同时LED 闪烁;若连续三次错误,系统就自动锁定并发出警报

2.2 系统功能设计

2.2.1 硬件设计

系统各个功能模块的概述: (1)嵌入式处理器模块:

此模块为本系统的重心,是程序运行的载体,同时这个模块也是我们这次课程设计的运行平台,我们所做的便是通过编写程序应用其自身的外设和资源。在这次课程设计中,我用到了KPI 模块,LED 、LCD 显示模块,FLASH ,AC-97音频模块等系统资源。图2是处理器的资源模块框图

(2)LCD显示模块:

W90P710试验板,使用的是AUO 3.0" TFT A030DL01(960x240, 8 位数据总线)数字式TFT 液晶屏,可以将video/OSD的原始图像数据显示到外部显示设备。TFT液晶屏的显示是对屏上每个像素点进行操作,通过向这些像素点配置不同的值,以显示不同的颜色,由于其内部没有缓存,所要显示的数据要随着时钟脉冲一点一点的传送过来。因此,它需要在中开辟出一片缓冲区,将要显示的数据先存放到的缓冲区中,即存在SDRAM 中,一般按照一维数组的形式进行存储,然后把存储数据的SDRAM的地址送给FIFO,然后送给颜色生成器,进而实现在屏幕上的显示;如果在屏上的定位显示,算出所要显示的内容在屏幕上的位置,

然后在相应的SDRAM的地址内存入要显示的数据即可。硬件图如图11-1所示:

该模块由40个引脚与外界电路相连,由于本身没有寄存器,需要由W90P710提供的LCD 控制寄存器来控制选择对应的液晶类型及显示形式,FIFO 的使用、颜色的显示模式和时序的设置,并通过配置相应的的寄存器即可实现。

(3)键盘输入模块:

(4)LED

2.2.2软件设计

(1)程序流程框图

主函数中,函数调用了KPI、USI、LCD、AC-97、LED初始化程序。然后调用键盘中断设定原始密码,通过USI写入FLASH内。当输入密码时,函数取出FLASH内的原始密码与输入的密码逐一比较。若密码错误则返回输入密码的界面,同时使LED灯闪烁。当输入超过三次是,函数就将系统锁定,不再响应键盘中断,并调用AC97中断函数播放警报音乐。当密码输入正确,调用LCD 显示函数切换显示图片,并调用音频中断服务程序播放优美的音乐,LED灯依次点亮,如此循环。函数中总共调用了键盘中断、AC音频中断、LCD显示中断3个中断服务程序。

程序流程框图如图6所示:

2.3源程序代码

int main(void)

{ //USI寄存器初始化

int cnt,i;

U8 wchar1[]= "请输密码";

U8 wchar2[]= "密码正确";

U8 wchar3[]= "密码错误";

U8 wchar4[]= "系统锁定";

U8 wchar5[]= "请欣赏音乐";

LCD_IMAGE_T LCD_Size;

LCD_LOCATION_T LCD_Location;

LCDShowParameter LSP0,LSP1,LSP2,LSP3,LSP4,LSP5;

LCD_Size.width = 480;

LCD_Size.height = 240;

LCD_Location.StartX = 0;

LCD_Location.StartY = 0;

LCD_Location.EndX = 960;

LCD_Location.EndY = 240;

printf("***************USI测试程序**********************\n");

printf("*************Flash型号W25P10********************\n");

USIInit();

//读器件ID

printf("读器件ID:");

USIRead_ID();

//擦除扇区0

printf("写使能:\n");

USIWriteEnable();

while(USICheckBusy());

USISectorErease(0x0);

for(cnt=0;cnt<6;cnt++)

a[cnt] =cnt;//发送数据初始化

LCDInit();

LCDShow(LCD_Size, LCD_Location); LCDFIFOBufferSet(BlackBoard); LCDDisplayOn();

LSP0.StartX = 10;

LSP0.StartY = 14;

LSP0.LibPlace = 0x400000;

LSP0.Color = 0x07ff;

LSP0.LetterChar = wchar1; /*请输密码*/ LSP0.LCDBuffer = BlackBoard;

LSP2.StartX = 10;

LSP2.StartY = 14;

LSP2.LibPlace = 0x400000;

LSP2.Color = 0x07ff;

LSP2.LetterChar = wchar3; /*密码错误**/ LSP2.LCDBuffer = BlackBoard2;

LSP3.StartX = 10;

LSP3.StartY = 14;

LSP3.LibPlace = 0x400000;

LSP3.Color = 0x07ff;

LSP3.LetterChar = wchar4; /* 系统锁定*/ LSP3.LCDBuffer = BlackBoard3;

LSP4.StartX = 10;

LSP4.StartY = 14;

LSP4.LibPlace = 0x400000;

LSP4.Color = 0x07ff;

LSP4.LetterChar = wchar2;

LSP4.LCDBuffer = BlackBoard4;/*密码正确*/

LSP5.StartX = 10;

LSP5.StartY = 14;

LSP5.LibPlace = 0x400000;

LSP5.Color = 0x07ff;

LSP5.LetterChar = wchar5;/* 请欣赏音乐*/ LSP5.LCDBuffer = BlackBoard5;

LCDOutputShow(LSP0,4);

KPIInit();

printf("Please press keys.\n");

while(1)

{

if(p==1)

{

for(i=0;i<2;i++)

{

EBILedInit(0x80);

Delay(0x100000);

EBILedInit(0x40);

Delay(0x100000);

EBILedInit(0x20);

Delay(0x100000);

EBILedInit(0x10);

Delay(0x100000);

EBILedInit(0x08);

Delay(0x10000);

EBILedInit(0x04);

Delay(0x100000);

EBILedInit(0x02);

Delay(0x10000);

EBILedInit(0x01);

Delay(0x100000);

}

LCDInit();

LCDShow(LCD_Size, LCD_Location);

LCDFIFOBufferSet(BlackBoard4);

LCDDisplayOn();

LCDOutputShow(LSP4,4);

Delay(10000000);

LCDInit();

LCDShow(LCD_Size, LCD_Location);

LCDFIFOBufferSet(BlackBoard5);

LCDDisplayOn();

LCDOutputShow(LSP5,5);

/* 播放音乐*/

{

PCM_QUEUE_LEN = sizeof (PlayData);

_uPcmQHead = 0;

/* 设置I/O连接到音频*/

REG_GPIO_CFG0 = 0x155;

/*// GPIO4,1:输入GPIO0,2,3:输出*/ REG_GPIO_DIR0 = 0xd;

/*使能音频时钟*/

REG_CLKSEL = REG_CLKSEL|0x10000;

Initac97();

/* 使能AC97播放中断*/

REG_AIC_SCR6 = 0x41;

REG_AIC_MECR = 0x40;

SetPlayV olume(30,30);

StartPlay(8000);

/* 检查是否播放完成*/

while(1)

{

if (_uPcmQHead >= (PCM_QUEUE_LEN-4096)) break;

}

StopPlay();

}

}

if(p==2)

{

LCDOutputShow(LSP2,4);

for(i=0;i<5;i++)

{

EBILedInit(0x0F);

Delay(0x100000);

EBILedInit(0xF0);

Delay(0x100000);

}

}

if(p==3)

{

LCDOutputShow(LSP3,4);

for(i=0;i<10;i++)

{

EBILedInit(0x80);

Delay(1000000);

EBILedInit(0x01);

Delay(1000000);

}

/* 播放警报音乐*/

{

PCM_QUEUE_LEN = sizeof (PlayData1);

_uPcmQHead = 0;

/* 设置I/O连接到音频*/

REG_GPIO_CFG0 = 0x155;

/*// GPIO4,1:输入GPIO0,2,3:输出*/ REG_GPIO_DIR0 = 0xd;

/*使能音频时钟*/

REG_CLKSEL = REG_CLKSEL|0x10000;

Initac97();

/* 使能AC97播放中断*/

REG_AIC_SCR6 = 0x41;

REG_AIC_MECR = 0x40;

SetPlayV olume(30,30);

StartPlay(8000);

/* 检查是否播放完成*/

while(1)

{

if (_uPcmQHead >= (PCM_QUEUE_LEN-4096))

break;

}

StopPlay();

}

}

}

return 0;

}

(3)键盘中断服务程序代码:

void KPI_Handler(void)

{

U8 KeyValue, tmp;

int cnt,sum=0;

tmp = REG_KPISTATUS; //取按键值

tmp &= 0x0000000f; //因为硬件连接关系,需要对按键进行处理if((tmp > 0x7) && (tmp < 0xC))

{

KeyValue = tmp - 4;

}

else if((tmp > 0x3) && (tmp < 0x8))

{

KeyValue = tmp + 4;

}

else

{

KeyValue = tmp;

}

shuru=KeyValue;

if(c<7)

{

a[c]=shuru;

}

if(c==7){

//写数据

USIWriteEnable();

USIWrite(0x00, a);

Delay(100);

}

if((c>7)&&(c<15))

{

b[c-8]=shuru;

}

if(c==15)

{//读数据并比较

USIRead(0x0,a);

for(cnt=0;cnt<7;cnt++)

{

if(a[cnt] == b[cnt])

{

sum++;

}

}

if(sum==7)

{

printf("测试成功.....%d\n",sum);//EBILedInit(0x01);

p=1;

}

else

{

printf("测试失败.....%d\n",sum);p=2;

//for(i=0;i<50;i++)

//{EBILedInit(0x01);Delay(0x80000);EBILedInit(0x00);Delay(0x80000);

//}

}

}

sum=0;

if((c>15)&&(c<23))

{

b[c-16]=shuru;

}

if(c==23)

{//读数据并比较

USIRead(0x0,a);

for(cnt=0;cnt<7;cnt++)

{

if(a[cnt] == b[cnt])

{

sum++;

}

}

if(sum==7)

{

printf("测试成功.....\n");p=1;//EBILedInit(0x01);

}

else

{

printf("测试失败.....\n");p=2;

//for(i=0;i<50;i++)

//{EBILedInit(0x01);Delay(0x80000);EBILedInit(0x00);Delay(0x80000);

//}

}

}

sum=0;

if((c>23)&&(c<31))

{

b[c-24]=shuru;

}

if(c==31)

{//读数据并比较

USIRead(0x0,a);

for(cnt=0;cnt<7;cnt++)

{

if(a[cnt] == b[cnt])

{

sum++;

}

}

if(sum==7)

{

printf("测试成功.....\n");p=1;//EBILedInit(0x01);

}

else

{

printf("测试失败不能再输入.....\n");p=3;

//for(i=0;i<50;i++)

//{EBILedInit(0x01);Delay(0x80000);EBILedInit(0x00);Delay(0x80000);

//}

}

}

sum=0;

printf("KPI interrupts. %x\n", KeyValue); //将按键值发送到控制台c=c+1;

}

3. 总结

经过这次课程设计,从方案的确定到模块的划分、功能函数的编程测试、模块测试等结果正确,所有功能正常工作。总体上来说较好的完成课程设计任务要求。当然其中也有些许不足,像输入密码的时候LCD显示图片不正常,自己做的警报音乐无法停止播放等。不过通过这次课程设计学习,让我获益匪浅,增强了我对嵌入式系统开发流程了解。

4. 参考文献

[1]张石,佘黎煌等.嵌入式系统技术教程.北京:人民邮电出版社,2009.3

[2]谭浩强.C程序设计(第三版).北京:清华大学出版社,2006.2

[3]李庆城,刘嘉欣.嵌入式系统原理.北京:北京航空航天大学,2007.7

[4]熊茂华,杨震伦.ARM9嵌入式系统设计与开发应用.北京:清华大学出版社,2008

嵌入式Linux应用程序设计试题

嵌入式Linux应用程序设计(试题) 1、嵌入式linux操作系统的特点(多选) ABCDE A、低廉性 B、广泛性 C、可移植性好 D、良好的网络支持 E、实时性好 2、Linux的基本思想有两点:A、一切都是文件;B、每个软件都有确定的用途。 3、嵌入式Linux系统构成:嵌入式微处理器,外围硬件设备,嵌入式操作系统,用户应用程序。 4、硬盘分区一般分为:主分区,扩展分区,逻辑分区,交换分区 5、主分区和扩展分区的最大的区别:C A、大小不一样 B、挂载点不一样 C、主分区的作用就是用来进行启动操作系统的,因此引导程序都应该存放在主分区上。 D、主分区在硬盘物理位置的最前面 6、Linux分区类型默认的是:C A. vfat B. ext2/ext3 C. swap D. dos 7、如何从当前系统中卸载一个已装载的文件系统 A A. umount [挂载点目录] B. dismount C. mount –u [挂载点目录] D. 从 /etc/fstab 中删除这个文件系统项 8、用户切换指令是: A A、su B、sudo C、useradd D、userdel 9、查看当前系统中的进程指令 A A、ps B、kill C、cat D、man 10、下面杀死一个ID号为9号的进程的操作正确的是 C A、ps -ef B、kill 9 C、kill -9 9 D、rm 9 11、使用重定向来把ls输出保存到文件test.txt中:A A、ls > test.txt B、ls < test.txt C、ls | test.txt D、ls | grep test.txt 12、使用重定向来把test.txt文件中内容输出:B A、more > test.txt B、more < test.txt C、more | test.txt D、more | grep test.txt 13、解压文件tar.tar.gz:C A、tar -zxvf tar.tar.gz B、tar -jxvf tar.tar.gz C、tar -cxvf tar.tar.gz D、tar -jvf tar.tar.gz 14、把目录/aaa内文件及目录的压缩到文件tar.tar.gz:D A、tar -zxvf tar.tar.gz /aaa B、tar -jxvf tar.tar.gz /aaa C、tar -cxvf tar.tar.gz /aaa D、tar -cvf tar.tar.gz /aaa 15、vi 有几种模式:三种模式 16、vi中的操作指令: :w 保存 :q 退出 :q! 强行退出 :wq 保存退出 :w [filename] 保存到filename文件中 :set nu 显示行号,设定之后,会在每一行的前面显示对应行号

嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告 姓名:安磊 班级:计科0901 学号: 0909090310

指导老师:宋虹

目录 课程设计内容 ----------------------------------- 3 uC/OS操作系统简介 ------------------------------------ 3 uC/OS操作系统的组成 ------------------------------ 3 uC/OS操作系统功能作用 ---------------------------- 4 uC/OS文件系统的建立 ---------------------------- 6 文件系统设计的原则 ------------------------------6 文件系统的层次结构和功能模块 ---------------------6 文件系统的详细设计 -------------------------------- 8 文件系统核心代码 --------------------------------- 9 课程设计感想 ------------------------------------- 11 附录-------------------------------------------------- 12

课程设计内容 在uC/OS操作系统中增加一个简单的文件系统。 要求如下: (1)熟悉并分析uc/os操作系统 (2)设计并实现一个简单的文件系统 (3)可以是存放在内存的虚拟文件系统,也可以是存放在磁盘的实际文件系统 (4)编写测试代码,测试对文件的相关操作:建立,读写等 课程设计目的 操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。 本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。 I.uC/OS操作系统简介 μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。它被广泛应用于微处理器、微控制器和数字信号处理器。 μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。 严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全 可以由用户自己根据需要分别实现。 uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。 uC/OS操作系统的组成 μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。如下图:

嵌入式系统设计报告

嵌入式系统设计实验报告 班级: 20090612 学号: 2009112107 姓名:侯金钟 成绩: 指导教师:武俊鹏、刘书勇

1. 实验一 1.1 实验名称 嵌入式系统硬件开发环境 1.2 实验目的 1.熟悉UP-net3000实验平台。 2. 超级终端设置及BIOS 功能使用。 1.3 实验环境 硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以上、串口线。 软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发 环境、仿真器驱动程序、超级终端通讯程序。 1.4 实验内容及要求 熟悉UP-net3000实验平台的硬件电路和外设,ARM JTAG的安装和使用,利用超级终端检验外设的工作状态。 1.5 实验设计与实验步骤 1.建立工程 (1)运行ARM SDT 2.5 集成开发环境(ARM Project Manager). (2)在新建的工程中,如图1A-2 所示,选中工程树的“根部”。 (3)因为开发板上的嵌入式处理器ARM7TDMI 没有浮点处理器,所以,如图1A-3 所 示,在弹出的对话框中设置Floating Point Processor 为none,并保持其他的设置不变。(4)选中工程树的“根部”,通过菜单Project | Tool Configuration for work1.apj | asmlink | Set,对整个工程的连接方式进行设置。 (5)在弹出的对话框中,选中Entry and Base 标签,如图1A-4 所示,设置连接的Read-Only (只读)和Read-Write(读写)地址。 (6)选择Linker Configuration 的ImageLayout 标签, (7)选择Project | Edit Project Tamplete 菜单,弹出Project Template Editor 对话框。 (8)选择Project | Edit Variables for work1.apj,弹出Edit Variables for work1.apj 对话框。 2.进行程序的在线仿真、调试 1.6 实验过程与分析 熟悉UP-net3000实验平台的硬件电路和外设,安装了ARM JTAG,利用超级终端检验了外设的工作状态。

嵌入式实验报告

嵌入式技术 实验报告 系别:计算机与科学技术系 班级:计12-1班 姓名:刘杰 学号:12101020128 总成绩: 评语: 日期:

2.在弹出的对话框中依次选择“cedevice emulator emulator kdstub”。 3.选择“Build OS”菜单的“sysgen”开始构建平台。 1.1.4连接,下载和运行平台 1.选择“Target”菜单下的“Connection option”菜单项。 2.在新的对话框中,配置连接关系 3.选择“Target”菜单下的“attach”菜单项,开始下载。 ?实验结果 操作系统定制成功,能正常运行。 ?结果截图 ?问题总结 由于对实验平台了解不够,致使操作过程中添加和删除组件时不知道该如何下手,影响整个实验进度。 实验1.2: 1.打开Platform Builder,并且打开实验1的工程,在实验1的工程基础上做本实验。

进程显示 IE信息查看

报文监测 实验1.3使用Platform Builder开发应用程序 简单实验步骤 1.打开Platform Builder。 2.选择“File”菜单下的“Open Workspace…”,然后打开实验1中创建的平台,本实验要基于 上面的实验的基础上做。 3.选择“File”菜单下的“New Project or File…”,打开“New Project or File”对话框。 4.在“Projects”选项页中选择“WCE Application”;在“Project Name”中输入项目的名字,例 如“MyApp”。 5.在“New Project Wizard – step 1 of 1”中选择“A typical Hello World Application”,点击“Finish” 按钮。 6.选择“Build”菜单中的“Build MyApp.exe”来编译应用程序。

嵌入式系统实验报告

实验报告 课程名称:嵌入式系统 学院:信息工程 专业:电子信息工程 班级: 学生姓名: 学号: 指导教师: 开课时间:学年第一学期

实验名称:IO接口(跑马灯) 实验时间:11.16 实验成绩: 一、实验目的 1.掌握 STM32F4 基本IO口的使用。 2.使用STM32F4 IO口的推挽输出功能,利用GPIO_Set函数来设置完成对 IO 口的配置。 3.控制STM32F4的IO口输出,实现控制ALIENTEK 探索者STM32F4开发板上的两个LED实现一个类似跑马灯的效果。 二、实验原理 本次实验的关键在于如何控制STM32F4的IO口输出。IO主要由:MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR、AFRH和AFRL等8个寄存器的控制,并且本次实验主要用到IO口的推挽输出功能,利用GPIO_Set函数来设置,即可完成对IO口的配置。所以可以通过了开发板上的两个LED灯来实现一个类似跑马灯的效果。 三、实验资源 实验器材: 探索者STM32F4开发板 硬件资源: 1.DS0(连接在PF9) 2.DS1(连接在PF10) 四、实验内容及步骤 1.硬件设计 2.软件设计 (1)新建TEST工程,在该工程文件夹下面新建一个 HARDWARE文件夹,用来存储以后与硬件相关的代码。然后在 HARDWARE 文件夹下新建一个LED文件夹,用来存放与LED相关的代码。 (2)打开USER文件夹下的test.uvproj工程,新建一个文件,然后保存在 LED 文件夹下面,保存为 led.c,在led.c中输入相应的代码。

(3)采用 GPIO_Set 函数实现IO配置。LED_Init 调用 GPIO_Set 函数完成对 PF9 和 PF10 ALIENTEK 探索者 STM32F407 开发板教程 119 STM32F4 开发指南(寄存器版) 的模式配置,控制 LED0 和 LED1 输出 1(LED 灭),使两个 LED 的初始化。 (4)新建一个led.h文件,保存在 LED 文件夹下,在led.h中输入相应的代码。 3.下载验证 使用 flymcu 下载(也可以通过JLINK等仿真器下载),如图 1.2所示: 图1.2 运行结果如图1.3所示:

嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告 :安磊 班级:计科0901 学号: 0909090310 指导老师:宋虹

目录 课程设计容 ----------------------------------- 3 uC/OS操作系统简介 ------------------------------------ 3 uC/OS操作系统的组成 ------------------------------ 3 uC/OS操作系统功能作用 ---------------------------- 4 uC/OS文件系统的建立 ---------------------------- 6 文件系统设计的原则 ------------------------------ 6 文件系统的层次结构和功能模块 --------------------- 6 文件系统的详细设计 -------------------------------- 8 文件系统核心代码 --------------------------------- 9 课程设计感想 ------------------------------------- 11 附录 -------------------------------------------------- 12

课程设计容 在uC/OS操作系统中增加一个简单的文件系统。 要求如下: (1)熟悉并分析uc/os操作系统 (2)设计并实现一个简单的文件系统 (3)可以是存放在存的虚拟文件系统,也可以是存放在磁盘的实际文件系统 (4)编写测试代码,测试对文件的相关操作:建立,读写等 课程设计目的 操作系统课程主要讲述的容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。 本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。 I.uC/OS操作系统简介 μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统核。它被广泛应用于微处理器、微控制器和数字信号处理器。 μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小核可编译至 2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。 严格地说uC/OS-II只是一个实时操作系统核,它仅仅包含了任务调度,任务管理,时间管理,存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现。 uC/OS-II目标是实现一个基于优先级调度的抢占式的实时核,并在这个核之上提供最基本的系统服务,如信号量,,消息队列,存管理,中断管理等。 uC/OS操作系统的组成 μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。如下图:

嵌入式系统软件测试技术期末报告

期末总结报告 课程名称:嵌入式系统软件测试技术 学院:信息工程与自动化 专业:计算机科学与技术 年级: 2010级 学生姓名: 学生学号: 201010803116 指导教师:江虹 日期: 2013年1月2日

一、嵌入式软件测试的特点及步骤 嵌入式软件测试作为一种特殊的软件测试,它的目的和原则同普通的软件测试氏相同的,同样是为了验证或达到可靠性要求而对软件进行的测试。 但是和一般的应用软件测试的可靠性测试相比,嵌入式软件测试有自身的特点:(特别是对于没有操作系统的嵌入式应用软件而言) 1)嵌入式软件测试是在特定的硬件环境下才能运行的软件。因此,嵌入式软件测试最重要的目的就是保证嵌入式软件能在此特定的环境下更可靠地运行。 2)嵌入式软件测试除了要保证嵌入式软件在特定环境中运行的高可靠性,还要保证嵌入式软件的实时性。比如在工业控制中,如果某些特定环境下的嵌入式软件不具备实时响应的能力,就可能造成巨大的损失。 3)嵌入式软件产品为了满足高可靠性的要求,不允许内存在运行时有泄漏等情况发生,因此嵌入式软件测试除了对软件进行性能测试、GUI测试、覆盖分析测试是同普通软件测试一样都不可或缺之外,还需要对内存进行测试。 4)嵌入式产品不同于一般的软件产品,在嵌入式软件和硬件集成测试完成之后,并不代表测试全部完成,在第一件嵌入式产品生产出来之后,还需要对其进行产品测试。嵌入式软件测试的最终目的是使嵌入式产品能够在满足所有功能的同时安全可靠地运行。 因此,嵌入式软件测试除了要遵循普通软件测试的原则之外,还应该遵循以下几个原则; 1)嵌入式软件测试对软件在硬件平台的测试氏必不可少的。 2)嵌入式软件测试需要在特定环境下对嵌入式软件进行测试,比如,对某些软件在工业强磁场的干扰下测试,这也是为保证嵌入式软件可靠性所必须进行的测试。 3)必要的可靠性负载测试,比如,测试某些嵌入式系统能否连续1000个小时不断电工作。 4)除了要对嵌入式软件的功能进行测试之外,还需要对实时性进行测试。 在判断系统是否失效方面,除了看它的输出结构是否正确,还应考虑其是

(完整版)《嵌入式系统毕业课程设计与实践》

课程设计 课程名称嵌入式系统课程设计与实践题目名称嵌入式最小系统设计 学生学院自动化学院 专业班级电子(2) 学号 学生姓名何延 指导教师尹明

2013 年5月30日

广东工业大学课程设计任务书 题目名称嵌入式最小系统设计 学生学院自动化学院 专业班级电子(2) 姓名何延 学号 一、课程设计的内容 学习LPC2000系列ARM处理器的启动流程,学习嵌入式系统硬件设计(最小系统),学习嵌入式系统应用程序框架,学习在ARM7处理器上移植uCOS-II操作系统的流程及设计流水灯应用程序。 设计实现一个基于LPC2000系列ARM处理器的最小系统,完成操作系统移植,设计流水灯程序。鼓励在完成基本功能的基础上,自由发挥完成其它功能。 二、课程设计的要求与数据 熟悉LPC2000系列ARM处理器的启动流程,掌握嵌入式系统硬件设计(最小系统),掌握嵌入式系统应用程序设计,掌握在ARM7处理器上移植uCOS-II操作系统的流程及设计流水

灯应用程序。 1完成嵌入式系统最小系统硬件设计,并制作硬件平台。 2 在无操作系统情况下,设计流水灯应用程序,并在前述硬件平台上调试、运行。 3 移植UCOS-II操作系统,并设计流水灯应用程序,在前述硬件平台上调试、运行。 三、课程设计应完成的工作 1 嵌入式系统最小系统硬件设计,并调试验证。 2 设计流水灯应用程序,调试、运行。 3 移植uCOS-II操作系统,设计流水灯应用程序,调试、运行。 四、课程设计进程安排

五、应收集的资料及主要参考文献 《LPC2210使用指南》(LPC2210-user_cn.pdf) LPC2131板原理图(Z2418PSCH.pdf) 《ADS开发者指南》(ADS_DeveloperGuide_D.pdf) 发出任务书日期:年月日指导教师签名:

ARM的嵌入式Linux应用程序开发设计

ARM的嵌入式Linux应用程序开发设计 嵌入式系统已经渗透到人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%。而嵌入式Linux系统也蓬勃发展,不仅继承了Linux 源码开放、内核稳定高效、软件丰富等优势,还具备支持广泛处理器结构和硬件平台、占有空间小、成本低廉、结构紧凑等特点。1ARM处理器及开发板在嵌入式领域,ARM已取得了极大的成功,造就了IP核商业化、市场化的神话。据统计,全球有103家巨型IT公司在采用ARM技术,20家最大的半导体,一 嵌入式系统已经渗透到人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%。而嵌入式Linux系统也蓬勃发展,不仅继承了Linux源码开放、内核稳定高效、软件丰富等优势,还具备支持广泛处理器结构和硬件平台、占有空间小、成本低廉、结构紧凑等特点。 1 ARM处理器及开发板 在嵌入式领域,ARM已取得了极大的成功,造就了IP核商业化、市场化的神话。据统计,全球有103家巨型IT公司在采用ARM技术,20家最大的半导体,一商中有19家是ARM的用户。ARM系列芯片已经被广泛的应用于移动电活、手持式计算机以及各种各样的嵌入式应用领域,成为世界上销量最大的32位微处理器。ARM已成为业界实际的RISC芯片标准。 ARM系列处理器根据各自特点应用于不同领域。从应用的角度上ARM芯片选择的一般原则:MMU;处理器速度;内置存储器容量;USB接口;GPIO数量;中断控制器;IIS(integrate interface ofsound)音频接口;nWAIT信号; RTC(real timeclock);LCD控制器;PWM输出等各项指标。 本文使用的是ARM9,其性能远远高过ARM7。开发板使用的是广州斯道信息技术有限公司的开发板,中央处理器是三星公司的S3C2410。ARM9具有以下特点:5级流水线;采用哈佛结构;高速缓存和写缓存的引入;支持MMU。 2 嵌入式Linux系统 嵌入式操作系统是嵌入式应用软件的基础和开发平台,它的出现解决了嵌入式软件开发标准化的难题。嵌入式系统具有操作系统的最基本的功能。目前主流的嵌入式系统有以下儿种:Linux、VxWorks、QNX、Windows CE、Palm OS。 嵌入式Linux操作系统具有一些独特的优势:层次结构及内核完全开放;强大的网络支持功能;具备一整套工具链;广泛的硬件支持特性。 嵌入式Linux系统有很多种。本文使用的是Red Hat9操作系统。 在安装有Windows和Linux双系统的PC上,系统会以Linux的GRUB作为引导装入器来选择启动二者。此时若直接删除Linux分区,会导致系统无法启动

嵌入式实习报告总结

嵌入式实习报告总结 随着信息化技术的发展和数字化产品的普及,以计算机技 术、芯片技术和软件技术为核心的嵌入式系统再度成为当前研究和应用的热点,通信、计算机、消费电子技术(3C)合一的趋势正在逐步形成,无所不在的网络和无所不在的计算( , )正在将人类带入一个崭新的信息社会。 二、实习目的 学习和了解了嵌入式在生活中的重要作用和发展过程,熟练掌握硬件体系结构,熟悉下的嵌入式编程流程,积累自己的软件编写经验,能够参与并实现一个真实和完整的嵌入式项目,为今后的学习和将从事的技术工作打下坚实的基础 三、实习任务 第一阶段操作和编程基础 主要介绍的基本命令和基础编程知识,包括 的文件操作和目录操作命令,编辑器,编译器,调试器和项目管理工具等知识。 第二阶段嵌入式C语言编程基础 主要介绍在嵌入式开发编程中C语言的重要概念和编程技巧中的重点难点,以复习串讲和实例分析的形式,重点介绍包括函数与程序结构,指针、数组和链表,库函数的使用等知识。

第三阶段上C强化编程训练 主要包括整数算法训练,递归和栈编程训练,位操作训练,指针训练,字符串训练和常用C库函数编程接口实践,强化学员对下基本编程开发的理解和编码调试的能力。 第四阶段环境高级编程及项目开发编程实践 主要包括系统编程(信号/系统调用/管道消息队列/共享内存等),文件编程(文件描述符/文件读写接口/原子操作/阻塞与非阻塞等,多任务和多线程编程(进程标识/ 用户标识与多线程概念/线程同步等),网络编程(网络基本概念/套接口编程/网络字节次序结构编程);掌握下编程的开发流程,熟悉网络编程的调用接口函数和相关数据结构,使学员初步具备在上进行系统编程开发的能力。同时综合之前所学内容和编程技术,以小组为单位进行一个团队合作项目的开发,考核内容包括文件编程,多线程编程,网络编程和项目文档编写。 第五阶段嵌入式处理器体系结构及编程实践 主要介绍体系结构及其基本编程知识,包括指令分类,寻址方式、指令集、存储系统、异常中断处理、汇编语言以及C\和汇编语言的混合编程等知识。同时结合嵌入式开发板硬件设计原理和基本硬件设计流程,分析各种外设的工作原理和驱动机制,并自己动手实践完成一个开发板上的编程大作业。

南邮嵌入式系统B实验报告2016年度-2017年度-2

_* 南京邮电大学通信学院 实验报告 实验名称:基于ADS开发环境的程序设计 嵌入式Linux交叉开发环境的建立 嵌入式Linux环境下的程序设计 多线程程序设计 课程名称嵌入式系统B 班级学号 姓名 开课学期2016/2017学年第2学期

实验一基于ADS开发环境的程序设计 一、实验目的 1、学习ADS开发环境的使用; 2、学习和掌握ADS环境下的汇编语言及C语言程序设计; 3、学习和掌握汇编语言及C语言的混合编程方法。 二、实验内容 1、编写和调试汇编语言程序; 2、编写和调试C语言程序; 3、编写和调试汇编语言及C语言的混合程序; 三、实验过程与结果 1、寄存器R0和R1中有两个正整数,求这两个数的最大公约数,结果保存在R3中。 代码1:使用C内嵌汇编 #include int find_gcd(int x,int y) { int gcdnum; __asm { MOV r0, x MOV r1, y LOOP: CMP r0, r1 SUBLT r1, r1, r0 SUBGT r0, r0, r1 BNE LOOP MOV r3, r0 MOV gcdnum,r3 //stop // B stop // END } return gcdnum; } int main() { int a; a = find_gcd(18,9);

printf("gcdnum:%d\n",a); return 0; } 代码2:使用纯汇编语言 AREA example1,CODE,readonly ENTRY MOV r0, #4 MOV r1, #9 start CMP r0, r1 SUBLT r1, r1, r0 SUBGT r0, r0, r1 BNE start MOV r3, r0 stop B stop END 2、寄存器R0 、R1和R2中有三个正整数,求出其中最大的数,并将其保存在R3中。 代码1:使用纯汇编语言 AREA examp,CODE,READONL Y ENTRY MOV R0,#10 MOV R1,#30 MOV R2,#20 Start CMP R0,R1 BLE lbl_a CMP R0,R2 MOVGT R3,R0 MOVLE R3,R2 B lbl_b lbl_a CMP R1,R2 MOVGT R3,R1 MOVLE R3,R2 lbl_b B . END 代码2:使用C内嵌汇编语言 #include int find_maxnum(int a,int b,int c)

嵌入式期末考试试卷A卷教学教材

嵌入式期末考试试卷 A卷

5、ARM微处理器复位后,PC的地址通常是 0x0 ,初始的工作模式是Supervisor 。 6、ARM微处理器支持虚拟内存,它是通过系统控制协处理器 CP15 和MMU(存 储管理部件)来进行虚拟内存的存储和管理。当系统发生数据异常和指令领取异常时,异常处理程序透过嵌入式操作系统的内存管理机制,通过MMU交换物理内存和虚拟内存的页面,以保证程序正常执行。 7、编译链接代码时,有两种存储代码和数据的字节顺序,一种是小端对齐,另一 种是打断对齐 8、构建嵌入式系统开发环境的工具链有多种,其中开放源码的工具链是 GNU工具 链,ARM公司提供的工具链是 ADS工具链 9、计算机有CISC和RISC两种类型,以ARM微处理器为核心的计算机属于 RISC、类型,其指令长度是定长的。 二、指令测试题(共12分) 1、写一条 ARM 指令,完成操作r1 = r2 * 3(4分) ADD R1,R2,R2, LSL #1 2、初始值R1=23H,R2=0FH执行指令BIC R0, R1,R2,LSL #1后,寄存器R0, R1的值分别是多少?(4分) R0=21H,R1=23H 3、说明指令STMIA r12!, {r0-r11}的操作功能。(4分) 将R0-R11十二个寄存器中的32位数据,存储到R12地址指针为起始地址的内存中,地址的操作方式是先操作、后增加,并更新地址。 4、写一段 ARM汇编程序:循环累加队列myarray中的所有元素,直到碰上零值元

素,结果放在r4中。程序框架如下,补充代码完成上述功能。(8分) AREA total, CODE READONLY ENTRY start MOV r4, #0 ADR r0, myarray ;在此补充代码 loop LDR r1, [r0], #4 ADD r4, r4, r1 CMP r1, #0 BNE loop 5、这是一个由源程序strtest.c和scopy.s组成的混合程序项目,通过调用strcopy 完成字符串复制,程序代码如下。要求阅读程序,在程序中的注释符“//”后,说明该句程序的作用,并说明extern和EXPORT伪指令的在程序中的作用。(8分) strtest.c #include extern void strcopy(char *d, const char *s); int main() { const char *srcstr = "First string - source"; char dststr[] = "Second string - destination"; printf("Before copying:\n"); printf(" '%s'\n '%s'\n",srcstr,dststr); // strcopy(dststr,srcstr); // printf("After copying:\n"); printf(" '%s'\n '%s'\n",srcstr,dststr);// return 0; } scopy.s AREA SCopy, CODE, READONLY EXPORT strcopy strcopy LDRB r2, [r1],#1 ; STRB r2, [r0],#1 ; CMP r2, #0 ; BNE strcopy ; MOV pc,lr ; END //输出源串和目标串(8分)//调用strcopy函数

嵌入式Linux应用软件开发流程

从软件工程的角度来说,嵌入式应用软件也有一定的生命周期,如要进行需求分析、系统设计、代码编写、调试和维护等工作,软件工程的许多理论对它也是适用的。 但和其他通用软件相比,它的开发有许多独特之处: ·在需求分析时,必须考虑硬件性能的影响,具体功能必须考虑由何种硬件实现。 ·在系统设计阶段,重点考虑的是任务的划分及其接口,而不是模块的划分。模块划分则放在了任务的设计阶段。 ·在调试时采用交叉调试方式。 ·软件调试完毕固化到嵌入式系统中后,它的后期维护工作较少。 下面主要介绍分析和设计阶段的步骤与原则: 1、需求分析 对需求加以分析产生需求说明,需求说明过程给出系统功能需求,它包括:·系统所有实现的功能 ·系统的输入、输出 ·系统的外部接口需求(如用户界面) ·它的性能以及诸如文件/数据库安全等其他要求 在实时系统中,常用状态变迁图来描述系统。在设计状态图时,应对系统运行过程进行详细考虑,尽量在状态图中列出所有系统状态,包括许多用户无需知道的内部状态,对许多异常也应有相应处理。 此外,应清楚地说明人机接口,即操作员与系统间地相互作用。对于比较复杂地系统,形成一本操作手册是必要的,为用户提供使用该系统的操作步骤。为使系统说明更清楚,可以将状态变迁图与操作手册脚本结合起来。

在对需求进行分析,了解系统所要实现的功能的基础上,系统开发选用何种硬件、软件平台就可以确定了。 对于硬件平台,要考虑的是微处理器的处理速度、内存空间的大小、外部扩展设备是否满足功能要求等。如微处理器对外部事件的响应速度是否满足系统的实时性要求,它的稳定性如何,内存空间是否满足操作系统及应用软件的运行要求,对于要求网络功能的系统,是否扩展有以太网接口等。 对于软件平台而言,操作系统是否支持实时性及支持的程度、对多任务的管理能力是否支持前面选中的微处理器、网络功能是否满足系统要求以及开发环境是否完善等都是必须考虑的。 当然,不管选用何种软硬件平台,成本因素都是要考虑的,嵌入式Linux 正是在这方面具有突出的优势。 2、任务和模块划分 在进行需求分析和明确系统功能后,就可以对系统进行任务划分。任务是代码运行的一个映象,是无限循环的一段代码。从系统的角度来看,任务是嵌入式系统中竞争系统资源的最小运行单元,任务可以使用或等待CPU、I/O设备和内存空间等系统资源。 在设计一个较为复杂的多任务应用系统时,进行合理的任务划分对系统的运行效率、实时性和吞吐量影响都极大。任务分解过细会不断地在各任务之间切换,而任务之间的通信量也会很大,这样将会大大地增加系统的开销,影响系统的效率。而任务分解过粗、不够彻底又会造成原本可以并行的操作只能按顺序串行执行,从而影响系统的吞吐量。为了达到系统效率和吞吐量之间的平衡折中,在划分任务时应在数据流图的基础上,遵循下列步骤和原则:

嵌入式系统实训

《嵌入式系统实训》课程教学大纲 课程名称(英文):Practice of Embedded System 课程性质:选修课 学分:???? 总学时:30 理论学时:6 实验(或上机)学时:24 适用对象:电子信息工程本科专业 一、课程的性质、目的和任务 Android的推出是在移动互联网迅猛发展的大背景下由Google主导的重大发展战略。随着信息化程度的不断深入,人们对信息的获取变得越来越迫切,需要随时随地的访问各种信息,同时移动通信设备的性能也不断的提高,通信带宽也越来越丰富。移动通信与互联网二者的不断发展和融合,使得市场逐渐催生出一个新兴产业-移动互联网。在整个移动互联网产业链中,终端应用是制高点。而对于终端应用来说,终端的操作系统又是终端应用的基础。 本大纲的拟定主要针对电子信息专业,同时兼顾电子科学与技术、通信、计算机等相关专业选修的同学,因为本课程涉及的知识面广,所以在学习中对本科生的专业基础知识有较高要求。通过本课程的学习可以帮助学生更好的理解本专业其他相关知识。 先修课程:C语言、Java编程原理及应用、Android程序设计基础等。 二、课程基本要求 1. 掌握Android的基本概念和运行原理; 2. 掌握Android的开发环境; 3. 熟悉Android的各个组件的功能; 4. 了解Android系统应用软件的开发过程; 三、课程内容及学时分配 1. Android系统概况(2学时) 2. Android系统基本知识(2学时) (1) Android系统的硬件基础 (2) Android系统的软件基础 3.ARM的体系结构(2学时) (1) ARM构架的嵌入式微处理器 (2) ARM微处理器的指令系统 (3) 常见的ARM微处理器 (4) 采用ARM构架的S3C2410简介 4.嵌入式Linux操作系统的开发(4学时) (1) Linux与嵌入式Linux (2) 嵌入式Linux的开发工具 (3) 嵌入式Linux的配置与编译 (4) 嵌入式Linux的移植 5.嵌入式下应用开发(14学时) (1) Linux基础与GCC (2) Linux下SHELL编程 (3) Linux下文件I/O操作 (4) Linux下网络编程 (5) Linux下GUI的实现

嵌入式系统实验实验报告

嵌入式系统实验实验报告 一、实验目的 1.基本实验

. Word 资料搭建PXA270嵌入式LINUX开发软硬件环境;安装LINUX操 作系统;安装与配置建立宿主机端交叉编译调试开发环境;配置宿主机 PC 机端的minicom(或超级终端)、TFTP服务、NFS服务,使宿主PC机与PXA270开发板可以通过串口通讯,并开通TFTP 和NFS服务。 2.人机接口 键盘驱动;LCD控制;触摸屏数据采集与控制实验; 3.应用实验 完成VGA显示;Web服务器实验;网络文件传输实验;多线程应用实验。 4.扩展应用实验 完成USB摄像头驱动与视频采集;GPS实验;GSM/GPRS通讯;视频播放移植;USB蓝牙设备无线通讯;NFS文件服务器;蓝牙视频文件服务器。 5.QT实验 完成基本嵌入式图形开发环境搭建;“Hello world!”QT初探;创建一个窗口并添加按钮;对象通信:Signal和Slot;菜单和快捷键;工具条和状态栏;鼠标和键盘事件;对话框;QT的绘图;俄罗斯方块;基于QT的GSM手机在嵌入式LINUX下的设计与实现。 二、实验内容 1.人机接口实验 实验十九键盘驱动实验 ?实验目的:矩阵键盘驱动的编写

?实验内容:矩阵键盘驱动的编写 ?作业要求:完成键盘加减乘除运算 ?实验作业源码及注释: #INCLUDE #INCLUDE #INCLUDE #INCLUDE #INCLUDE #INCLUDE #DEFINE DEVICE_NAME “/DEV/KEYBOARD” INT MAIN(VOID){ INT FD; INT RET; UNSIGNED CHAR BUF[1]; INT I,F,J; DOUBLE X; INT A[2]={0}; CHAR PRE_SCANCODE=0XFF; FD=OPEN(DEVICE_NAME,O_RDWR); IF(FD==-1)PRINTF(“OPEN DEVICE %S ERROR\N”,DEVICE_NAME); ELSE{ BUF[0]=0XFF; I=0;F=0; WHILE(1){ READ(FD,BUF,1);

(完整版)2014完整ARM嵌入式系统实验报告

郑州航空工业管理学院 嵌入式系统实验报告 (修订版) 20 – 20第学期 赵成,张克新编著

院系: 姓名: 专业: 学号: 电子通信工程系 2014年3月制

实验一ARM体系结构与编程方法 一、实验目的 了解ARM9 S3C2410A嵌入式微处理器芯片的体系结构,熟悉ARM微处理器的工作模式、指令状态、寄存器组及异常中断的概念,掌握ARM指令系统,能在ADS1.2 IDE中进行ARM汇编语言程序设计。 二、实验内容 1.ADS1.2 IDE的安装、环境配置及工程项目的建立; 2.ARM汇编语言程序设计(参考附录A): (1)两个寄存器值相加; (2)LDR、STR指令操作; (3)使用多寄存器传送指令进行数据复制; (4)使用查表法实现程序跳转; (5)使用BX指令切换处理器状态; (6)微处理器工作模式切换; 三、预备知识 了解ARM嵌入式微处理器芯片的体系结构及指令体系;熟悉汇编语言及可编程微处理器的程序设计方法。 四、实验设备 1. 硬件环境配置 计算机:Intel(R) Pentium(R) 及以上; 内存:1GB及以上; 实验设备:UP-NETARM2410-S嵌入式开发平台,J-Link V8仿真器; 2. 软件环境配置

操作系统:Microsoft Windows XP Professional Service Pack 2; 集成开发环境:ARM Developer Suite (ADS) 1.2。 五、实验分析 1.安装的ADS1.2 IDE中包括和两个软件组件。在ADS1.2中建立类型的工程,工程目标配置为;接着,还需要对工程进行、及链接器设置;最后,配置仿真环境为仿真方式。 2.写出ARM汇编语言的最简程序结构,然后在代码段中实现两个寄存器值的加法运算,给出运算部分相应指令的注释。 ; 文件名:

AVR单片机嵌入式系统原理与应用实践——学习笔记

AVR单片机嵌入式系统原理与应用实践 学习笔记 1.AVR单片机的基本结构 1.1.单片机的基本组成 1.1.1.单片机的基本组成结构 单片机的基本组成单元 CPU 程序存储器数据存储器I/O接口 CPU与各基本单元通过芯片内的内部总线连接。 一般情况下,内部总线中的数据总线宽度(或指CPU字长)也是单片机等级的一个重要指标。 内部总线:数据总线、地址总线、控制总线。 1.1. 2.单片机的基本单元与作用 1)MCU单元 MCU单元部分包括CPU、时钟系统、复位、总线控制逻辑等电路。 CPU: 时钟和复位电路: 总线控制电路:

2)片内存储器 单片机的存储器一般分为程序存储器和数据存储器,它们往往构成互不相同的两个存储空间,分别寻址,互不干扰。 单片机的内部结构通常使用哈佛体系结构,在这种体系中采用分开的指令和数据总线以及分开的指令和数据空间,分别采用专用的总线与CPU交换,可以实现对程序和数据的同时访问,提高了CPU的执行速度和数据的吞吐量。 3)程序存储器 程序存储器用于存放嵌入式系统的应用程序。 4)数据存储器 单片机在片内集成的数据存储器一般有两类:随机存储器RAM、电可擦除存储器EEPROM。 随机存储器RAM: 电可擦除存储器EEPROM 5)输入输出端口 并行总线I/O端口: 通用数字I/O端口:

片内功能单元的I/O端口: 串行I/O 通信口: 其他专用接口: 6)操作管理寄存器 管理、协调、控制、操作单片机芯片中各功能单元的使用和运行。 1.2.ATmega16单片机的组成 1.2.1.AVR单片机的内核结构 “快速访问”意味着在一个周期内执行一个完整的ALU操作。 AVR的算术逻辑单元ALU支持寄存器之间、立即数与寄存器之间的算术与逻辑运算功能,以及单一寄存器操作。每一次运算操作的结果将影响和改变状态寄存器(SREG)的值。 ALU操作 从寄存器组中读取两个操作数 操作数被执行将执行结果写回目的寄存器 1.2.2.ATmega16的外部引脚与封装

相关主题
文本预览
相关文档 最新文档