嵌入式系统实习报告1.docx
《嵌入式系统实习报告1.docx》由会员分享,可在线阅读,更多相关《嵌入式系统实习报告1.docx(14页珍藏版)》请在冰豆网上搜索。
![嵌入式系统实习报告1.docx](https://file1.bdocx.com/fileroot1/2022-11/28/054e8c11-14a5-4381-8f66-3762bf7c8224/054e8c11-14a5-4381-8f66-3762bf7c82241.gif)
嵌入式系统实习报告1
嵌入式系统实习报告
课程名称:
嵌入式系统设计
学院:
电气信息工程学院
班级:
通信工程07-2班
姓名:
陈俊如
学号:
2号
指导教师:
山传文
1.嵌入式系统开发与应用概述…………………3
2.实习设备………………………………………3
3.实习目的………………………………………4
4.实习要求………………………………………4
5.实习步骤………………………………………5
6.实习体会………………………………………12
7.参考文献………………………………………12
一、嵌入式系统开发与应用概述
在今日,嵌入式ARM技术已经成为了一门比较热门的学科,无论是在电子类的什么领域,你都可以看到嵌入式ARM的影子。
如果你还停留在单片机级别的学习,那么实际上你已经落下时代脚步了,ARM嵌入式技术正以几何的倍数高速发展,它几乎渗透到了几乎你所想到的领域。
本章节就是将你领入ARM的学习大门,开始嵌入式开发之旅。
以嵌入式计算机为技术核心的嵌入式系统是继网络技术之后,又一个IT领域新的技术发展方向。
由于嵌入式系统具有体积小、性能强、功耗低、可靠性高以及面向行业具体应用等突出特征,目前已经广泛地应用于军事国防、消费电子、信息家电、网络通信、工业控制等各个领域。
嵌入式的广泛应用可以说是无所不在。
嵌入式微处理器技术的基础是通用计算机技术。
现在许多嵌入式处理器也是从早期的PC机的应用发展演化过来的,如早期PC诸如TRS-80、AppleII和所用的Z80和6502处理器,至今仍为低端的嵌入式应用。
在应用中,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点。
嵌入式处理器目前主要有Am186/88、386EX、SC-400、PowerPC、68000、MIPS、ARM等系列。
在早期实际的嵌入式应用中,芯片选择时往往以某一种微处理器内核为核心,在芯片内部集成必要的ROM/EPROM/Flash/EEPROM、SRAM、接口总线及总线控制逻辑、定时/计数器、WatchDog、I/O、串行口、脉宽调制输出、A/D、D/A等各种必要的功能和外设。
二、实习设备
硬件:
EmbestEduKit-IV实验平台、ULINK2仿真器套件、PC机
软件:
μVisionIDEforARM集成开发环境、Windows98/2000/NT/XP
三、实习目的
1.初步掌握液晶屏的使用及其电路设计方法;掌握S3C2410X处理器的LCD控制器的使用;掌握通过任务调用的方法把液晶显示函数添加到uC/OS-II中;通过实验掌握液晶显示文本及图形的方法与程序设计。
2.了解S3C2410X处理器UART相关控制寄存器的使用;熟悉ARM处理器系统硬件电路中UART接口的设计方法:
掌握ARM处理器串行通信的软件编程方法。
3.掌握有关音频处理的基础知识;通过实验了解IIS音频接口的工作原理;通过实验掌握对处理器S3C2410X中IIS模块电路的控制方法;通过实验掌握对常用IIS接口音频芯片的控制方法。
4.了解μC/OS-II移植条件和内核基本结构;掌握将μC/OS-II内核移植到ARM9处理器上的方法和步骤。
四、实习要求
通过对μC/OS-II移植实验、μC/OS-IILCD显示实验、串口通信实验、IIS音频实验、液晶显示实验的学习,并将各部分内容合并,最终得出实习结果,实习要求在键盘上输入学号,在液晶显示屏上显示相应的学生信息。
学生信息包括显示每个人的照片和姓名系别等,并用键控设置学生输出的顺序,输入学号就显示那个学生的信息,然后过一段时间就顺序循环播放。
移植μC/OS-II内核到ARM处理器S3C2410,在IDE中观察其运行状况编写S3C2410X处理器的串口通信程序;监视串行口UART1动作;将从UART1接收到的字符串回送显示。
将从UART1接收到的字符串回送显示。
通过使用EmbestEduKit-IV实验板的彩色液晶屏(800*480)进行电路设计,掌握液晶屏作为人机接口界面的设计方法,并编写任务函数在uC/OS-II系统中实现位图显示。
在uC/OS-II中建立五个任务Tast1和Tast2,其中Tast1顺序熄灭四个LED,延迟一会在顺序点亮四个LED。
Tast2在LCD屏幕上循环显示三幅图片,并打印一些文字信息和背景音乐。
过使用EmbestEduKit-III实验板的256色彩色液晶屏(320x240)进行电路设计,掌握液晶屏作为人机接口界面的设计方法,并编写程序实现:
画出多个矩形框;显示ASCII字符;显示汉字字符;显示彩色位图。
五、实习步骤
1.准备实验环境
使用ULINK2仿真器连接EmbestEduKit-IV实验平台的主板JTAG接口;使用EmbestEduKit-IV实验平台附带的交叉串口线,连接实验平台主板上的COM2和PC机的串口(一般PC只有一个串口,如果有多个请自行选择,笔记本没有串口设备的可购买USB转串口适配器扩充);使用EmbestEduKit-IV实验平台附带的电源适配器,连接实验平台主板上的电源接口。
2.串口接收设置
在PC机上运行windows自带的超级终端串口通信程序,或者使用实验平台附带光盘内设置好了的超级终端,设置超级终端:
波特率115200、1位停止位、无校验位、无硬件流控制,或者使用其它串口通信程序。
(注:
超级终端串口的选择根据用户的PC串口硬件不同,请自行选择,如果PC机只有一个串口,一般是COM1)
3.打开实验例程
1)打开实验程序
2)运行μVisionIDEforARM软件
3)默认打开的工程在源码编辑窗口会显示实验例程的说明文件readme.txt,详细阅读并理解实验内容。
4)工程提供了两种运行方式:
一是下载到SDRAM中调试运行,二是固化到NorFlash中运行。
用户可以在工具栏SelectTarget下拉框中选择在RAM中调试运行还是固化Flash中运行。
下面实验将介绍下载到SDRAM中调试运行,所以我们在SelectTarget下拉框中选择UART_TestINRAM。
5)接下来开始编译链接工程,在菜单栏“Projiet”选择“Buildtarget”或者“Rebuildalltargetfiles”编译整个工程。
6编译完成后,在输出窗口可以看到编译提示信息,比如“".\SDRAM\UART_Test.axf"-0Error(s),1Warning(s).”,如果显示“0Error(s)”即表示编译成功。
7)拨动实验平台电源开关,给实验平台上电,单击菜单栏Debug->Start/StopDebugSession项将编译出来的映像文件下载到SDRAM中,或者单击工具栏“”按钮来下载。
8)下载完成后,单击菜单栏Debug->Run项运行程序,或者单击工具栏“”按钮来全速运行程序。
用户也可以使用进行单步调试程序。
9)全速运行后,用户可以在超级终端看到程序运行的信息。
10)用户可以Stop程序运行,使用μVisionIDEforARM的一些调试窗口跟踪查看程序运行的信息。
注:
如果在第4)步用户选择在Flash中运行,则编译链接成功后,单击菜单栏Flash->Download项将程序固化到NorFlash中,从实验平台的主板拔出JTAG线,给实验平台重新上电,程序将自动运行。
程序如下:
/********************************************************************************************************
*文件:
Main.C
*描述:
applicationroute
*编写:
*********************************************************************************************************/
#include"Includes.h"
#include"2410lib.h"
#include
OS_EVENT*UART_sem;
OS_EVENT*InterruptSem;
unsignedcharerr;
/*allocatememoryfortasks'stacks*/
#defineSTACKSIZE4*1024
/*GlobalVariable*/
OS_STKStack1[STACKSIZE];
OS_STKStack2[STACKSIZE];
constcharId1='1';
constcharId2='2';
OS_EVENT*sem1;
unsignedcharerr;
/************************************************************************************************
*函数:
voidTask1(void*Id).
*描述:
任务1函数.
************************************************************************************************/
voidTask1(void*Id)
{
while
(1)
{
led_off();
OSTimeDly(100);
led_on();
OSTimeDly(100);
}
}
/**********************************************************************************************
*函数:
voidTask2(void*Id).
*描述:
任务2函数.
***********************************************************************************************/
voidTask2(void*Id)
{
Lcd_DspHz24(460,440,0,"电气信息工程学院");
Lcd_DspHz24(460,400,0x10,"北华大学");
while
(1)
{//uart_printf("PleaseinputIDnumber...");
inting;
int*p=&ing;
//InitialInterrupt,PortandUART
uart_printf("inputnumber...\n");
ing=uart_getintnum();
if(ing==2)
{
BitmapViewTft16Bit_128160((unsignedchar*)gImage_picture1);
Lcd_DspHz24(300,190,0xf800,"通信二班");
Lcd_DspHz24(300,150,0xf800,"陈俊如");
Lcd_DspAscII8x16(300,250,0,"2");Lcd_DspHz24(310,250,0xf800,"号");
iis_Num(p);
//play_Name(XueHao);
OSTimeDly(100);
lcd_clr_rect(300,150,580,380,0xffff);break;}
elseif(ing==8)
{
BitmapViewTft16Bit_128160((unsignedchar*)gImage_picture2);
Lcd_DspHz24(300,190,0xf800,"通信二班");
Lcd_DspHz24(300,150,0xf800,"高岩");
Lcd_DspAscII8x16(300,250,0,"7");Lcd_DspHz24(310,250,0xf800,"号");
iis_Num(p);
//play_Name(XueHao);
OSTimeDly(100);
lcd_clr_rect(300,150,580,380,0xffff);break;}
elseif(ing==12)
{
BitmapViewTft16Bit_128160((unsignedchar*)gImage_picture3);
Lcd_DspHz24(300,190,0xf800,"通信二班");
Lcd_DspHz24(300,150,0xf800,"李璇");
Lcd_DspAscII8x16(300,250,0,"12");Lcd_DspHz24(310,290,0xf800,"号");
iis_Num(p);
//play_Name(XueHao);
OSTimeDly(100);
lcd_clr_rect(300,150,580,380,0xffff);break;}
else
{
BitmapViewTft16Bit_128160((unsignedchar*)gImage_picture1);
Lcd_DspHz24(300,190,0xf800,"通信二班");
Lcd_DspHz24(300,150,0xf800,"陈俊如");
Lcd_DspAscII8x16(300,250,0,"2");Lcd_DspHz24(310,250,0xf800,"号");
iis_Num(p);
//play_Name(XueHao);
OSTimeDly(100);
lcd_clr_rect(300,150,580,380,0xffff);
BitmapViewTft16Bit_128160((unsignedchar*)gImage_picture2);
Lcd_DspHz24(300,190,0xf800,"通信二班");
Lcd_DspHz24(300,150,0xf800,"高岩");
Lcd_DspAscII8x16(300,250,0,"7");Lcd_DspHz24(310,250,0xf800,"号");
iis_Num(p);
//play_Name(XueHao);
OSTimeDly(100);
lcd_clr_rect(300,150,580,380,0xffff);
BitmapViewTft16Bit_128160((unsignedchar*)gImage_picture3);
Lcd_DspHz24(300,190,0x10,"通信二班");
Lcd_DspHz24(300,150,0x10,"李璇");
Lcd_DspAscII8x16(300,250,0,"12");Lcd_DspHz24(310,250,0x10,"号");
iis_Num(p);
//play_Name(XueHao);
OSTimeDly(100);
lcd_clr_rect(300,150,580,380,0xffff);
}
}
}
/**********************************************************************************************
*函数:
intmain(void).
*描述:
主程序函数.
***********************************************************************************************/
voidMain(void)
{
OSInit();
OSTimeSet(0);
Init_Timer4();
port_init();
uart_init(PCLK,115200,UART1);
uart_select(UART1);
uart_printf("\r\nEmbestEduKit-IVbootsuccess!
\r\n");
uart_printf("uCOS-IIRunning...\r\n");
lcd_init_app();
iis_init();
sem1=OSSemCreate
(1);
/*createthestarttask*/
OSTaskCreate(Task2,(void*)&Id2,&Stack2[STACKSIZE-1],1);
OSTaskCreate(Task1,(void*)&Id1,&Stack1[STACKSIZE-1],2);
/*starttheoperatingsystem*/
OSStart();
}
/****************************************************************************************************
*End.
******************************************************************************************************/
/*********************************************************************************************
*File:
iis_test.c
*Author:
embest
*Desc:
IIS_Test
*History:
*
*********************************************************************************************/
/*------------------------------------------------------------------------------------------*/
/*includefiles*/
/*------------------------------------------------------------------------------------------*/
#include"2410lib.h"
#include"iis_test.h"
#include
/*------------------------------------------------------------------------------------------*/
/*constantdefine*/
/*------------------------------------------------------------------------------------------*/
#definePLAY0
#defineRECORD1
#defineREC_LEN0xf0000
#ifdefBOARDTEST_EXH
#undefBOARDTEST
#endif
/*------------------------------------------------------------------------------------------*/
/*externvariables*/
/*------------------------------------------------------------------------------------------*/
externconstUINT8Tru_ucWave[255760];
externconstUINT8Tyan_ucWave[255760];
externconstUINT8Txuan_ucWave[255760];
/*------------------------------------------------------------------------------------------*/
/*globalvariables*/
/*------------------------------------------------------------------------------------------*/
intf_nDMA2Done;
intf_nDMA1Done;
externvoid__irqdma1_done(void);
/*********************************************************************************************
*name:
iis_test
*func:
*para:
none
*ret:
none
*modify:
*comment:
*********************************************************************************************/
voidiis_test(void)
{
UINT8TucInput=0;
intnSoundLen=255760;
uart_printf("\nIIStestexample\n");
pISR_DMA1=(UINT32T)dma1_done;
while((ucInput!
='3'))
{
iis_init();//initializeIIS
rSRCPND=(BIT_DMA1|BIT_DMA2);
rINTPND=rINTPND;
rINTMSK=~(BIT_DMA1|BIT_DMA2);
rDMASKTRIG2=(1<<2)|(0<<1);//Dma2StopDma2channaloff
rDMASKTRIG1=(1<<2)|(0<<1);//Dma1StopDma1channaloff
uart_printf("Menu(pressdigitaltoselect):
\n");
uart