1、嵌入式系统实习报告引言课题设计1、 嵌入式系统1、1 嵌入式系统概述1、2 嵌入式操作系统2、 STC15F2K60S2 硬件平台3、 UCOSII 操作系统4、基于 STC15F2K60S2 单片机的 UCOSII 的移植 对移植进行介 绍5、 UCOSII 应用软件设计(1)流程图(2)代码附录6、调试过程(1)测试数据(2)数据分析三、结论、引言进入 20世纪 90 年代,嵌入式技术全面展开,目前已成为通信和消费类产 品的共同发展方向。 在通信领域, 数字技术正在全面取代模拟技术。 在广播电视 领域,欧洲的 DVB (数字电视广播)技术已在全球大多数国家推广。而软件、 集成电路和新型元器
2、件在产业发展中的作用日益重要。 所有上述产品中, 都离不 开嵌入式系统技术。 在个人领域中, 嵌入式产品将主要是个人商用, 作为个人移 动的数据处理和通讯软件。 由于嵌入式设备具有自然的人机交互界面, GUI 屏幕 为中心的多媒体界面给人很大的亲和力。 手写文字输入、 语音拨号上网、 收发电 子邮件以及彩色图形、图像已取得初步成效。目前一些先进的 PDA 在显示屏幕上已实现汉字写入、 短消息语音发布, 日 用范围也将日益广阔。对于企业专用解决方案,如物流管理、条码扫描、移动信 息采集等,这种小型手持嵌入式系统将发挥巨大的作用。 自动控制领域, 不仅可 以用于 ATM 机,自动售货机,工业控制等
3、专用设备, 和移动通讯设备结合、 GPS、 娱乐相结合,嵌入式系统同样可以发挥巨大的作用。 硬件方面,不仅有各大公 司的微处理器芯片, 还有用于学习和研发的各种配套开发包。 目前低层系统和硬 件平台经过若干年的研究,已经相对比较成熟,实现各种功能的芯片应有尽有。 而且巨大的市场需求给我们提供了学习研发的资金和技术力量。从软件方面讲,也有相当部分的成熟软件系统。国外商品化的嵌入式实时 操作系统, 已进入我国市场的有 WindRiver、Microsoft 、QNX 和 Nuclear等产品。 我国自主开发的嵌入式系统软件产品如科银 (CoreTek)公司的嵌入式软件开发平 台 DeltaSyst
4、em,中科院推出的 Hopen 嵌入式操作系统。课题设计1 嵌入式系统1、1 嵌入式系统概述 通常,计算机连同一些常规的外设是作为独立的系统而存在的,而并非为 某一方面的专门应用而存在。所以,人们把这样的计算机系统称为“通用”计算 机系统。但是有些系统却不是这样。例如,医用的 CT 扫描仪也是一个系统,里 面有计算机,但是这种计算机 (或处理器)是作为某个专用系统中的一个部件而 存在的,其本身的存在并非目的而只是手段。像这样“嵌入”到更大的、专用的 系统中的计算机系统,就称之为“嵌入式计算机” 、“嵌入式计算机系统”或“嵌 入式系统”。从字面上讲,后者似乎比前者更为广义,因为系统中常常还包括一
5、 些机电、光电、热电或者电化的执行部件,但是实际上却往往不作严格的区分。 在不致引起混淆的情况下, 一般把这三者用作同义词, 并且一般总是指系统中的 核心部分,即嵌入在系统中的计算机。所谓将计算机“嵌入”到系统中,一般并不是指直接把一台通用计算机原 封不动地安装到目标系统中,也不只是简单地把原有的机壳拆掉并安装到机壳 中,而是指为目标系统构筑起合适的计算机系统, 再把它有机地植入、 甚至融入 目标系统。虽然嵌入式系统在工业、服务业、消费电子等领域的应用范围不断扩大, 且已渗透到人们日常生活的方方面面, 但是依然很难给它下一个明确的定义。 嵌 入式系统本身是一个外延很广的名词, 凡是与产品结合在
6、一起的、 具有嵌入式特 点的控制系统都可以叫做嵌入式系统。国际电工与电子工程师协会(即 IEEE)曾经把嵌入式系统定义为 “控制、监视或者辅助设备、 机器和车间运行的装置” 。 显然该定义具有突出的应用色彩, 不过现在看来, 似乎并未充分体现嵌入式系统 现今的学术内涵。 目前国内普遍认同的嵌入式系统的定义是 “嵌入式系统是将计 算机嵌入到某个应用系统内的一种计算机体系结构形式” 。换言之,嵌入式系统 是以应用为中心, 以计算机技术为基础, 软硬件能灵活变化以适应所嵌入的应用 系统,对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。简 言之,嵌入式系统就是嵌入式计算机系统的简称。在嵌
7、入式操作系统迅速发展的同时,系统芯片的制造与设计技术也在不断 进步。系统芯片就是把一个完整的最终产品的主要功能单元集成到一块或一组大 规模集成电路芯片上, 这是现代集成电路工艺技术深亚微米技术迅速发展的 必然结果。 系统芯片制造技术发展主要体现在硅圆片的尺寸逐渐增大, 硅晶片的 特征线宽逐步减小, 同时芯片的集成度不断提高。 系统芯片技术的发展, 使得嵌 入式系统硬件进一步向微型化、 高集成化发展, 从而为嵌入式系统的应用开辟更 为广阔的天地。1、2 嵌入式操作系统从硬件上,将基于 CPU的处围器件,整合到 CPU 芯片内部,比如早期基 于 X86 体系结构下的计算机, CPU 只是有运算器和
8、累加器的功能,一切芯片要 造外部桥路来扩展实现,象串口之类的都是靠外部的 16C550/2 的串口控制器芯 片实现,而目前的这种串口控制器芯片早已集成到 CPU 内部,还有 PC 机有显 卡,而多数嵌入式处理器都带有 LCD 控制器,但其种意义上就相当于显卡。比 较高端的 ARM 类 Intel Xscale架构下的 IXP 网络处理器 CPU内部集成 PCI控制 器(可配成支持 4个PCI从设备或配成自身为 CPI从设备);还集成 3个NPE网 络处理器引擎, 其中两个对应于两个 MAC 地址, 可用于网关交换用, 而另外一 个 NPE 网络处理器引擎支持 DSL ,只要外面再加个 PHY
9、芯片即可以实现 DSL 上网功能。 IXP 系列最高主频可以达到 1.8G,支持 2G内存, 1G10或 10G1 的以太网口或 Febre channel的光通道。 IXP 系列应该是目标基于 ARM 体系统结 构下由 intel 进行整合后成 Xscale 内核的最高的处理器了。从软件上看, 就是在定制操作系统内核里将应用一并选入, 编译后将内核 下载到 ROM 中。而在定制操作系统内核时所选择的应用程序组 件就是完成了软 件的“ 嵌入 ”,比 如 WinCE 在内 核定制时,会有相 应选择, 其中就是 wordpad,PDF,MediaPlay 等等选择,如果我们选择 了,在 CE 启动
10、后,就可以在 界面中找到这些东西,如果是以前 PC 上将的 windows 操作系统,多半的东西都 需要我们得新再装。把软件内核或应用文件系统等东西烧到嵌入式系统硬件平台中的 ROM 中就实现了一个真正的“嵌入” 。,2、 STC15F2K60S2 硬件平台STC15为 1T 单片机 即晶振速度既是主频速度 工作电压 STC15F2K60S2 5V 单片机 5.5v-3.8v 60K flash 存储空间 2048字节 即 2K SRAM 1K EEPROM 存储空间8 通道 10 位高速 ADC 速度可达 30 万次 / 秒 3 路 PWM 还可当 3 路 D/A 使用共 3 通道捕获 /比
11、较单元( CCP/PWM/PCA )内部高可靠复位 8 级可选择复位门槛电压 可省去外部复位电路支持内部高精度 R/C 时钟 ,可选择(5.5296MHz、11.0592MHz、22.1184MHz、 33.1776MHz)两组高速异步串行通信端口(可同时使用)即双串口 可在 5 组管脚之间进行 切换 分时复用可当 5组串口使用 !一组高速异步串行 SPI 总线 在读 SD 卡 NRF24L01 flash 芯片 即扩展 IO 等 均可使用低功耗设计: 低速模式,空闲模式,掉电模式 /停机模式共 6个定时器 /计数器 3个16位可重装载定时器 /计数器(T0/T1/T2 其中 T0/T1 兼容
12、普通 8051 的定时器 /计数器),并均可独立实现对外可编程时钟输出( 3 通 道),3路 CPP/PWM/PCA还可再实现 3个定时器。可编程时钟输出功能 (对内部系统时钟或对外部管脚的时钟输入进行时钟分频 输出)硬件看门狗( WDT )先进的指令集结构 兼容普通 8051指令集 有硬件乘法 /除非指令42个通用 I/O 口 复位后为:准双向口 /弱上拉(普通 8051传统 I/O 口)可设 置四种模式。STC15F2K60S2的最小系统板,具体资源及系统板电路如下图,具体可参考相 关资料资料。3、 UCOSII 操作系统uC/OSii 是一个完成的,可移植、可固化、可裁减的抢占式实时多任
13、务操作系 统内核。主要用于 ANSI 的 C 语言编写,少部分代码是汇编语言。 uC/OS 主要 有以下特点 :(1)可移植性 可以移植到多个 CPU 上,包括三菱单片机。(2)可固化 可以固化到嵌入式系统中(3)可裁减 可以定制 uC/OS,使用少量的系统服务(4)可剥夺行 uC/OS 是完全可剥夺的实时内核, uC/OS 总是运行优先级最高 的就绪任务。(5)多任务运行 uC/OS 可管理最多 64 个任务。不支持时间片轮转调度法, 所以要求每个任务的优先级不一样。(6)可确定性 uC/OS 的函数调用和系统服务的执行时间可以确定。(7)任务栈,而且每个任务栈空间的大小可以不一样(8)系统
14、服务 uC/OS 有很多系统服务,如信号量、时间标志、消息邮箱、消 息队列、时间管理等等。4、基于 STC15F2K60S2 单片机的 UCOSII 的移植 对移植进行 介绍移植就是使 UCOSII 能在 VRS51 上运行。为了方便移植,大部分的 UCOSII 的代码是用 C 语言编写的;但是仍需要用 C 语言和汇编语言编写一些处理器硬 件相关的代码,这是因为 UCOSII 在读 /写处理器寄存器时,只能通过汇编语言 来实现。在了解了微处理器和 Keil C51 编译器的技术细节的基础上,就可以开 始 UCOSII 源文件移植的工作了。真正编写移植代码的工作就相对比较简单了 要使 C/O-S
15、正常运行,处理器必须满足以下要求:处理器的 C编译器能产生可重入代码。用 C 语言就可以打开和关闭中断。处理器支持中断,并且能产生定时中断 (通常在 10至 100Hz之间) 。 处理器支持能够容纳一定量数据 ( 可能是几千字节 )的硬件堆栈。 处理器有将堆栈指针和其它 CPU 寄存器读出和存储到堆栈或内存中的指令5、 UCOSII 应用软件设计(1)流程图(2)代码附录#include includes.h/运行灯 sbit LED1 = P32;sbit LED2 = P55; /定义任务堆栈OS_STK Task1StkMaxStkSize+1;OS_STK Task2StkMaxStk
16、Size+1;OS_STK Task3StkMaxStkSize+1; /变量/OS_EVENT* FirstSem;INT8U err;void InitTime0(void) reentrant TMOD &= 0xF0;TMOD |= 0x01; /定时器 0:模式 1(16位定时器),仅受 TR0控制;定 时器 1:波特率发生器/ TH0 = 0xDC; /定义 Tick=100 次/秒(即 0.01 秒/次),TH,TL 值与 CPU的频率有关 (11.0592M)/ TL0 = 0x00; /OS_CPU_C.C中定时器中断响应也要设置, OS_CFG.H中 OS_TICKS_PE
17、R_SEC 也有关系TR0 = 1; /必须启动 / 硬件看门狗void Feed_WDT(void) reentrant WDT_CONTR = 0x3f; /EN_WDT=1,CLR_WDT=1,IDLE_WDT=0,PS2=0,PS1=0,PS0=0H_DOG = H_DOG;void Task1(void *ppdata) reentrant ppdata = ppdata;ET0 = 1; / 根 任 务 开 时 钟 节 拍 中 断 重 要!for(;) LED1 = LED1;OSTimeDly(OS_TICKS_PER_SEC); / 延时 1s /OSSemPost(First
18、Sem); void Task2(void *ppdata) reentrant ppdata=ppdata;while(1) Process_Uart(); LED2=LED2; OSTimeDly(OS_TICKS_PER_SEC/20); Feed_WDT(); void Task3(void *ppdata) reentrant ppdata=ppdata;for(;) / OSTimeDlyHMSM(0,0,10,0); LCD1602_write_string(LCD1602_LINE1,0,Welcome to you);LCD1602_write_string(LCD1602_
19、LINE2,0,Come in UC_OSII);OSTimeDly(OS_TICKS_PER_SEC); void main(void) initial_lcd1602();OSInit();InitTime0();InitSerial();Feed_WDT();/ FirstSem=OSSemCreate(0);/定/ 义一个信号量OSTaskCreate(Task1,(void*)0,&Task1Stk0,0); /优先级OSTaskCreate(Task2,(void*)0,&Task2Stk0,1);OSTaskCreate(Task3,(void*)0,&Task3Stk0,4);
20、OSStart();6、调试过程(1)测试数据#include includes.h sbit LED1 = P32; sbit LED2 = P55;OS_STK Task1StkMaxStkSize+1;OS_STK Task2StkMaxStkSize+1;OS_STK Task3StkMaxStkSize+1;OS_STK Task4StkMaxStkSize+1;INT8U err;void InitTime0(void) reentrantTMOD &= 0xF0;TMOD |= 0x01; TR0 = 1; void Feed_WDT(void) reentrantWDT_CON
21、TR = 0x3f;H_DOG = H_DOG;void Task1(void *ppdata) reentrant ppdata = ppdata;ET0 = 1; /for(;)LED1 = LED1;OSTimeDly(OS_TICKS_PER_SEC); void Task2(void *ppdata) reentrant ppdata=ppdata;while(1)Process_Uart();LED2=LED2;OSTimeDly(OS_TICKS_PER_SEC/2);Feed_WDT();void Task3(void *ppdata) reentrantppdata=ppda
22、ta;for(;)LCD1602_write_string(LCD1602_LINE1,0,Welcome);LCD1602_write_string(LCD1602_LINE2,0,Come in UC_OSII);OSTimeDly(OS_TICKS_PER_SEC);void Task4(void *ppdata) reentrantppdata=ppdata;for(;)OSTimeDly(OS_TICKS_PER_SEC);void main(void)initial_lcd1602();OSInit();InitTime0();InitSerial();Feed_WDT();OST
23、askCreate(Task1,(void*)0,&Task1Stk0,0);OSTaskCreate(Task2,(void*)0,&Task2Stk0,1);OSTaskCreate(Task3,(void*)0,&Task3Stk0,4);OSTaskCreate(Task4,(void*)0,&Task4Stk0,5);OSStart();三、结论通过本次为期三周的嵌入式系统实习, 在本次实习中, 我收获甚多, 我从一开始 拿着硬件的不知从何入手到后面慢慢通过实习指导书, 通过一个个实例懂得了一 些基本的原理。通过实习明白如何对 UCOSII 系统进行移植。如何把已开发好的 应用程序移植后的系统中运行,除此之外,经过本次实习,还对以前所学的嵌 入式系统、C 语言程序设计、单片机应用系统设计 、微机原理等课程的 知识起到了巩固的作用, 但是由于以前的实习都是偏软件居多, 这次实习是第一 接触硬件,所以有很多方面还是需要继续提高!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1