嵌入式课设解读Word文档格式.docx
- 文档编号:12979045
- 上传时间:2022-10-01
- 格式:DOCX
- 页数:33
- 大小:86.67KB
嵌入式课设解读Word文档格式.docx
《嵌入式课设解读Word文档格式.docx》由会员分享,可在线阅读,更多相关《嵌入式课设解读Word文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
Ⅱ、课程设计(论文)工作内容
一、课程设计目标
1、培养综合运用知识和独立开展实践创新的能力;
2、掌握基于uCOSII的LCD驱动编写开发过程;
3、掌握在UCOSII操作系统下添加LCD驱动程序的基本方法;
4、使用做好的驱动程序做一些简单的应用实例。
二、研究方法及手段应用
1、将任务分成若干模块,查阅相关论文资料;
2、分模块调试和完成任务。
三、课程设计预期效果
1、完成实验环境搭建;
2、在移植好的uCOSII工程中添加LCD的驱动程序;
3、学习在uCOSII下,LCD应用任务的简单编程实例,实现实验箱的CPU板上的D7、D8灯闪烁的同时,在LCD屏上也进行D7、D8灯的模拟闪烁。
4、在完成要求任务的情况下,添加其他模块。
学生姓名:
彭华亮专业年级:
自动化10级
目录
前言2
第一章课题目标及总体方案3
第二章系统设计3
2.1系统及工具简介3
2.1.1EL-ARM-830实验箱3
2.1.2ADSv1.2集成开发环境4
2.2系统功能实现4
2.2.1uCOSII内核移植4
2.2.2LCD驱动程序的编写6
2.2.3uCOSII操作系统下添加LCD驱动程序7
2.2.4测试程序的编写8
第三章实验(测试)结果及讨论9
3.1测试步骤9
3.2注意事项9
3.3测试结果10
心得体会10
参考文献11
附录12
前言
μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。
它被广泛应用于微处理器、微控制器和数字信号处理器。
同时,该系统具有源代码开放、可移植、可固化、可裁剪、可剥夺性、多任务、可确定性、任务栈、系统服务、中断管理、稳定性与可靠性等特点。
另外,μC/OS-II可管理多达63个应用任务。
LCD是嵌入式操作系统的重要组成部分,是系统和用户之间进行交互和信息交换的媒介,它实现信息的内部形式与人类可以接受形式之间的转换。
用户可以只通过LCD监测系统内部运行状态,然后作出相应的处理。
S3C44B0X中具有内置的LCD控制器,它能将显示缓存(在SDRAM存储器中)中的LCD图像数据传输到外部的LCD驱动电路上的逻辑功能。
对于不同尺寸的LCD显示器,它们会有不同的垂直和水平象素点、不同的数据宽度、不同的接口时间及刷新率,通过对LCD控制器中的相应寄存器写入不同的值,来配置不同的LCD显示板。
LCD能够正常工作得益于软硬件的协同工作,S3C44B0X集成了LCD的控制器,即不带驱动电路的LCD显示模块,驱动程序需要根据用户需要来自行添加。
因此,在uC/OSII下写的LCD驱动具有较好的实时性和稳定性,功能强大。
【关键字】uCOSII,内核移植,LCD驱动,任务调度
第一章课题目标及总体方案
近年来,嵌入式系统的应用已经越来越普及,对人类社会产生了巨大的影响,uCOSII作为一种高可靠性的实时嵌入式操作系统已经被广泛使用在实际中。
本课题的目标是通过uCOSII内核移植,并在移植好的uCOSII操作系统上添加LCD驱动程序,掌握基于uCOSII的LCD驱动编写开发过程和在UCOSII操作系统下添加LCD驱动程序的基本方法,并能使用做好的驱动程序做一些简单应用实例。
首先学习uCOSII内核移植的方法及LCD的驱动程序,然后在移植好的uCOSII项目中添加LCD的驱动程序,最后能够在uCOSII下,编写LCD应用任务的简单编程实例,来检验LCD驱动程序的完好度。
本实验实例为在LCD屏上显示跑马灯,同时模拟CPU板上D7、D8灯的交替闪烁,闪烁周期为跑马灯周期。
第二章系统设计
2.1系统及工具简介
2.1.1EL-ARM-830实验箱
EL-ARM-830型嵌入式实验开发系统可移植linux、uclinux、uCOSII、WinCE等嵌入式操作系统。
在实验板上有丰富的外围扩展资源(数字、模拟信号发生器,数字量IO输入输出,语音编解码、人机接口等单元),可以完成ARM的基础实验、算法实验和数据通信实验、以太网实验。
本次课题使用的主处理器为ARM7TDMI内核S3C44B0X,以及液晶显示单元,通用LCD驱动模块。
LCD的控制器使用S3C44B0X的内部集成的控制器,LCD屏选用的是5.7寸,320X240像素,256色的彩屏。
电源操作范围宽(2.7Vto5.5V);
低功耗设计可满足产品的省电要求。
其中,可调变位器VR2用于调节LCD屏色彩的对比度,逆时针旋转VR2使LCD屏变亮,顺时针旋转LCD屏变暗,“LCD_ON/OFF”按键,控制着LCD屏的电源,是电源的开关。
2.1.2ADSv1.2集成开发环境
CodeWarriorforARM是专为基于ARMRISC的处理器而设计的,它可加速并简化嵌入式开发过程中的每一个环节。
用户可以使用ADS的CodeWarriorIDE为ARM和Thumb处理器开发用C、C++或ARM汇编语言编写的程序代码。
ADS是全套的实时开发软件工具,包括编译器生成的代码密度和执行速度优异。
由命令开发工具、GUI开发环境(CodeWarrior和AXD)、实用程序和支持软件组成。
AXD是ARM扩展调试器,调试器本身是一个软件,用户通过这个软件使用调试代理可以对包含有调试信息的,正在运行的可执行代码进行比如变量的查看,断点的控制等调试操作。
2.2系统功能实现
2.2.1uCOSII内核移植
内核即将应用系统和底层硬件有机地结合起来,构成一个实时系统。
要使同一个内核能适用于不同的硬件体系,就需要在内核和硬件之间有一个中间层,这就是与处理器相关的代码,处理器不同,这部分代码也不同,我们在移植时需要根据处理器型号自己处理这部分代码,在uCOSII中这一部分代码分成3个文件:
OS_CPU.h,OS_CPU_A.s,OS_CPU_C.c。
a)OS_CPU.h文件
该文件主要包括:
系统数据类型重定义、关中断和开中断定义、堆栈的数据宽度、栈增长方向定义等。
1把编译器数据类型重定义为UCOS-II内核所用的数据类型;
定义不依赖于编译的数据类型eg:
typedefunsignedcharBOOLEAN;
定义和以前兼容的数据类型eg:
#defineBYTEINT8S。
unsignedchar
INT8U
signedchar
INT8S
unsignedshort
INT16U
signedshort
INT16S
unsignedint
INT32U
signedint
INT32S
float
FP32
double
FP64
UBYTE
BYTE
UWORD
WORD
LONG
ULONG
定义CPU状态寄存器的容量(PSR=32bits):
typedefunsignedintOS_CPU_SR
②编写相应ADS编译器的开关中断的函数;
使用预处理中断状态来开关中断。
用局部变量'
cpu_sr'
来保存进入临界段前的中断标志,之后关闭中断。
变量'
分布在所有要关闭中断的uCOSII的函数中。
退出临界段时需要把保存在变量'
的进入前的中断状态复制到CPU的状态寄存器中。
③定义单个堆栈的数据宽度;
typedefunsignedintOS_STK。
④定义微处理器的堆栈的增长方向等。
uCOSII使用结构常量OS_STK_GROWTH指定堆栈的生长方式,其代码为:
#defineOS_STK_GROWTH1/*堆栈增涨方向,从高到低*/。
b)OS_CPU_A.s文件
uCOSII移植的绝大部分工作都集中在OS_CPU_A.s文件的移植上,在这个文件里。
这部分需要对处理器的寄存器进行操作,所以必须用汇编语言编写,包括5个子函数:
OSIntCtxSw(中断中的任务切换),OSCtxSw(任务切换),OSCPUSaveSR(保存中断前的寄存器状态),OSCPURestoreSR(中断完成后,恢复中断前的状态),OSStartHighRdy(启动最高优先级任务)。
OSIntCtxSw()该函数是在ISR中执行任务切换功能,其原理基本上与任务级的切换相同,区别只是ISR已经保存了CPU的寄存器,因此不要再进行类似的操作,只需对堆栈指针作相应的调整即可。
OSCtxSw()该函数在任务级任务切换函数中调用,首先保存处理器寄存器,将当前SP存入任务TCB中,载入就绪最高优先级任务的SP,从新任务的任务堆栈中恢复处理器所有寄存器的值,然后执行中断返回指令。
OSCPUSaveSR()该函数是保存中断前的寄存器状态。
OSCPURestoreSR()该函数是中断完成后,恢复中断前的状态。
OSStartHighRdy()该函数首先调用钩子函数OSTaskSwHook(),然后将OSRunning标志位设置为真,表示任务开始执行,从而保证任务切换操作的正确执行,紧接着从具有最高优先级的任务控制块中取得任务的堆栈指针,初始化堆栈指针寄存器SP,然后恢复其他的寄存器,开始执行最高优先级的任务。
c)OS_CPU_C.c文件
包含了与移植有关的C函数,包括堆栈的初始化和一些子函数的实现,但是最重要的是OSTaskStkInit()函数,该函数是在用户建立任务时系统内部自己调用的,用来对用户任务的堆栈初始化。
在ARM7体系结构下,任务堆栈空间由高至低递减,依次保存着PC,LR,R12,…,R1,R0,CPSR的初始化堆栈结构,当用户初始化了堆栈,OSTaskStkInit()就返回新的堆栈指针STK所指的定地址。
OSTaskCreate()和OSTaskCreateExt()会获得该地址并将他保存到任务控制块TCB中,其他的几个钩子函数必须声明,但可以不包含任务代码,这些钩子函数在本移植中全为空函数。
2.2.2LCD驱动程序的编写
LCD驱动程序的文件夹Gui(如图1所示),其中,包括四个文件夹:
图1LCD驱动程序的文件夹示意图
Font中存放的是字体文件,存放四个文件,Font_Cn12.c为调用汉字库12X12汉字的引用文件;
Font_Cn16.c为调用汉字库16X16汉字的引用文件;
Font8X16为调用ASCII码的源文件,它的大小为8X16;
Gchar.c为显示字符的源程序库。
Glib中存放绘图的中层和上层的函数,上层函数是直接供用户调用的API。
Glib文件夹内存放两个文件,Glib.c是图形显示库的源代码,它主要实现LCD的中层和上层供用户调用的API函数,Glib.h则是供其他文件或自身调用的头文件。
Init中存放GUI初始化的函数,Init文件夹内存放两个文件,data.h是数据类型重定义的文件,GUI_Init.c是GUI系统的初始化文件。
Lcddriver中存放的是LCD的底层驱动函数,以及对LCD控制器的初始化函数。
Lcddriver文件内存放两个文件,Lcddriver.c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 解读