《嵌入式与多核技术》课程设计报告题目:LED驱动的移植班级:通信本二学号:13405039姓名:周文敏同组人员:爽、义龙、叶盛、郭恒指导教师:年月日摘要目前,LED(Light Emitting Diode)的应用技术已经非常成熟,与LED相关的产品也走进了人们的日常生活中。
在LED的使用早期,其主要用于指示,如交通信号灯和仪表的指示灯,但是在当前,基于嵌入式的LED驱动移植显示屏和LED装饰灯已经非常的普遍,故LED的应用已经进入到了一个新的领域。
因此,针对不同应用的LED驱动也应运而生,一款功能丰富且操作简单实用LED驱动对LED控制器的推广尤为重要。
在本课题中采用了ARM+Linux的嵌入式开发模式,控制器中使用的处理器是基于ARM920T核的S3C2440芯片,并以Linux 2.6.30的操作系统作为软件平台。
详细的分析了DMX512舞台灯光控制协议,最终,设计和完成了本文的嵌入式LED控制系统。
本文首先从应用层、操作系统层和硬件层三个层面对嵌入式Linux系统的结构进行的简要的分析。
其次,对本课题中使用的DMX512控制协议进行了详细的分析,然后设计了基于DMX512协议的LED控制器的系统框架,并给出了控制器各功能模块的功能定义。
其中将控制器系统划分成了六个模块单元:LED灯串部分、手动控制部分、LCD状态显示部分、SD卡数据读写部分、PC端在线调试部分和控制器软件部分。
最后,分别对各功能模块涉及到的硬件电路和设备驱动进行了详细分析和实现,并结合各功能模块的实现完成LED控制器软件系统的整体设计。
在控制器的各个功能模块设计过程中,采用了模块化的设计方式,根据模块的功能定义,设计了模块的输入和输出接口,并结合控制器选用的硬件平台,具体的实现了模块的部结构。
控制器的软件部分在系统的应用层实现,根据控制器的处理过程进行了详细的划分,并采用了多线程的编程模式,完成了控制器的软件处理流程。
同时,在应用层的程序开发屏蔽了底层硬件的实现细节,使系统具有较好的兼容性与扩展性1、绪论1.1课题研究背景和意义1.2.ARM和嵌入式的系统概述ARM是Advanced RISC Machines的缩写,它既可以认为是一个公司的名字,也可以认为是对一类微处理器的统称,还可以认为是一种技术的名字。
ARM公司自己并不介入芯片的生产销售,而是以IP核(知识产权核)的形式向各大半导体制造商出售技术授权,由于其设计的芯片核具有性能强、功耗低、成本低等显著优点,因此获得众多的半导体厂商的大力支持,在32位嵌入式领域获得了巨大的成功。
目前,ARM微处理器已经深入到工业控制、无线通信、网络应用、消费电子、成像和安全产品等各个领域采用RISC 构架的ARM 微处理器具有如下特性:(1)采用RISC构架的ARM微处理器具有如下特性(2)支持Thumb(16位)/ARM(32位)双指令集,可以很好的兼容8/16位器件(3)带有指令cache和数据cache,大量使用寄存器,指令执行速度更快(4)大多数的数据操作都在寄存器中完成(5)寻址方式灵活简单,执行效率高(6)指令长度固定。
随着ARM公司发布了最新的Cortex-M/A构架的ARM核,ARM处理器的性能被提高到一个新的高度,同时功耗仍然保持较低的水平。
后PC时代的到来,ARM处理器的应用围将会更加的广泛电子工程师协会对嵌入式系统的定义为:嵌入式系统为控制、监视、辅助设备、机器或工厂运作的装置。
但是在多数和书籍中关于嵌入式系统的定义是:嵌入式系统是以应用为中心,以计算机技术为基础,采用可裁剪软硬件,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。
嵌入式系统一般由4部分组成:嵌入式微处理器、外围硬件设备、嵌入式操作系统和用户应用程序,其体系结构如图1.2所示。
其中硬件平台外围硬件设备、嵌入式操作系统和用户应用程序,其体系结构如图1.2所示。
其中硬件平台统与通用操作系统的功能类似,为用户应用程序屏蔽硬件底层的具体细节,提供一个透明的操作空间;用户应用程序位于操作系统之上。
图1.2 嵌入式系统体系结构图嵌入式系统是计算机技术、半导体技术、电子技术和各个行业具体应用相结合的产物, 因此决定了它必将是一个技术密集,资金密集,广泛应用,不断创新的知识集成系统。
与通 用型的计算机系统相比,嵌入式系统具有以下软硬件特性:(1)硬件特性嵌入式系统通常是面向特定应用的,与通用型PC 的硬件系统相比,它的硬件系统具有嵌入以下特性:a. 体积小、集成度高嵌入式系统采用“量体裁衣”的方式去除冗余,力争采用最小的系统完成目标的功能,特别是在一些低功耗设备中更是如此b.面向特定的应用的设计通用PC 机的硬件结构基本是一样的,而具体的嵌入式系统硬件一般只适用某一个特定的应用,针对另一个应用一般需要重新设计硬件c. 低功耗、可靠性高。
嵌入式系统的电磁兼容性比较好,抗干扰能力比较强,能在恶劣的环境下使用,即使 死机也必须能在很短的时间重新启动。
总之,嵌入式系统的硬件必须高效率的设计,力争在价格、功能、体积、功耗和性能上更具有竞争力(2)软件特性嵌入式系统的软件是实现嵌入式系统功能的关键,它具有以下特性:a.软件开发与硬件设计紧密相关。
由于嵌入式软件的开发是特定于具体的硬件平台的,它往往牵扯到一些软硬结合的部分,这就要求开发人员必须具备一定的硬件知识。
b.嵌入式软件要高质量、高可靠性,对软件的大小有严格的要求。
由于嵌入式系统的硬件资源有限,存空间非常宝贵,在嵌入式软件开发的过程中必须时刻考虑软件实际的运行效率,同时选用高质量的编译工具。
在实时的系统中,嵌入式软件必须严格的处理各种异步发生的任务,这对程序的算法设计提出了很高的要求。
此外,嵌入式软件应具有足够的异常处理能力和自恢复能力1.3操作系统选择随着系统越来越大、程序功能越来越复杂,使用操作系统很有必要。
当前,嵌入式领域可以选择的操作系统有很多,且各具特点,应用场合也不同,因此选择一个满足需要、易于移植和扩展的操作系统是嵌入式系统开发需要考虑和解决的问题(1)VxWorksVxWorks是美国WindRiver公司开发的嵌入式实时操作系统,具有可裁剪的微核结构、高效率的任务管理、灵活的进程通信机制、微秒级的中断处理,广泛的应用于对实时性要求较高的领域中,如航天、通信、军事等。
但是VxWorks支持的硬件平台较少,源代码不公开,开发和维护比较困难,授权费用较高。
(2)WindowsCEWindowsCE是微软专门为嵌入式设备开发的32位,多任务、多线程的操作系统。
它支持多种架构的CPU,硬件支持良好,系统可灵活裁剪;应用程序开发、调试流程与PC机上Windows程序流程类似;但WindowsCE源代码不开放,开发人员无法进行深度的定制;硬件资源需求大,授权费用较高。
(3)uC/OS-IIuC/OS-II是Micrium开发的实时操作系统核,可用于8位、16位和32位处理器。
它的结构可裁剪,对硬件资源需求较少,源代码公开,实时性高,可扩展性强。
但uC/OS-II仅是一个核,它仅仅实现了任务调度、任务管理、存管理和任务间的通信和同步等基本功能,其他额外的功能如网络、文件系统等都要自己开发,或者购买软件包来完成,对一个大的系统需要开发人员完成的工作太多、开发难度大(4)嵌入式LinuxLinux是一个源代码开放的类UNIX操作系统,使用时无需交纳授权费用。
核可随意裁剪、几乎支持所有的32位、64位CPU;核对硬件的支持十分完备,几乎可以找到所有的硬件设备驱动;丰富的网络支持;极高的稳定性;大量的开发工具、众多的技术资料。
嵌入式Linux几乎继承了Linux的全部优点被广泛的应用于嵌入式产品开发。
随着Linux对硬件的支持不断增加、体系结构日趋完善,嵌入式Linux系统的开发难度也在不断降低。
对以上几种嵌入式操作系统的特点进行分析,综合考虑后本设计选用嵌入式Linux系统。
根据本设计的具体需要对Linux进行裁剪、移植,并针对硬件外设开发驱动程序。
1.4图形用户界面开发平台选择图形用户界面(GUI)用于提高人机交互友好性和易操作性,极大的方便了非专业人士的使用,可以通过窗口、菜单等方便的操作计算机(包括嵌入式产品)。
不同于PC系统,嵌入式系统对GUI系统有特殊的要求,如资源消耗少、性能强、可靠性高、可移植性强等。
在嵌入式Linux操作平台上,有各种各样的GUI系统,目前最常用的有:MicroWindows、Qt/Embedded、MiniGUI、OpenGUI等。
它们在接口函数、体系结构、功能特性等方面都各有特点。
(1)MicroWindows底层图形接口直接使用Linux提供的帧缓冲机制来进行图形显示,不需要其它图形系统的支持,使用C语言实现,采用了C/S体系结构,可移植性强。
MicroWindows支持两种API:类Win32API和Nano-APIs,这些API兼容Win32和XWindow系统,方便从其它系统移植程序。
但如今MicroWindows项目处于停滞状态,图形引擎的部分算法效率低下且无硬件加速能力,代码质量参差不齐。
(2)MiniGUI使用现有成熟的图形引擎,采用兼容WinCE的API,程序兼容性好,提供完备的多窗口和消息传递机制,占用资源少,稳定可靠,支持多种软硬件平台,可伸缩性强,拥有丰富的控件资源。
但MiniGUI控件功能不够丰富,使用C语言编写,用户扩展不方便,对于复杂的应用程序开发难度大(3)OpenGUI基于一个使用汇编语言实现的X86图形核,运行速度很快。
高层提供了C/C++编程接口,消息驱动API,功能强大,使用方便。
在Linux上基于帧缓冲机制实现绘图,稳定可靠。
但OpenGUI图形核使用汇编语言实现,可移植性较差。
(4)Qt/Embedded基于帧缓冲机制、面向嵌入式体统的Qt版本。
界面美观、色彩配比好,使用与Qt/Windows和Qt/X11一致的API,许多基于Qt的应用程序可以非常方便的移植到嵌入式系统;程序界面可以自由定制,结构分层,具有良好的可移植性,大量可用类库,方便开发,程序本地化也很容易。
使用Qt Creator集成开发环境开发基于Qt/Embedded的应用程序十分简便,但是应用程序占用的资源比较大。
对比以上GUI系统,Qt/Embedded具有可视化界面开发工具,程序界面开发比较简单,使得开发人员专注于应用程序功能的实现;同时Qt/Embedded有大量的官方和第三方提供的类库,在这些类库基础上开发大大降低了开发难度和缩短了开发周期,因此本设计中选取Qt/Embedded 为本系统的图形用户界面开发平台。
二、构建嵌入式Linux 系统2.1 构建嵌入式Linux 系统概述从软件角度可以将整个嵌入式Linux 系统分为引导加载程序(BootLoader)、Linux 核、文件系统和用户应用程序四个部分,其组成框图如图3.1所示图3.1 嵌入式Linux 系统组成框图(1)引导加载程序引导加载程序就是系统上电后运行的第一段软件代码。