嵌入式开发系统概况.ppt_第1页
嵌入式开发系统概况.ppt_第2页
嵌入式开发系统概况.ppt_第3页
嵌入式开发系统概况.ppt_第4页
嵌入式开发系统概况.ppt_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式开发系统概况,嵌入式开发系统概况和设备驱动,开发平台硬件资源 开发平台软件资源 嵌入式开发平台的硬件布局 嵌入式系统开发流程 集成开发环境 可以练习的实验项目,开发平台硬件资源,1)CPU:ARM7TDMI结构芯片S3C44B0X,工作频率60MHz; 2)BIOS:2M,NOR FLASH; 3)内存:8M,SDRAM; 4)海量存储器:16M,NAND Flash; 5)键盘:17键数字小键盘; 6)显示:320240 、256色LCD,带四线电阻式触摸屏; 7)USB接口:D12芯片,USB 1.1标准; 8)串口:2路,最高波特率115200 b/s; 9)网络接口:RTL8019,10M以太网; 10)CAN接口:波特率125Kb、250Kb、500Kb、1Mb;,11)调试接口:JTAG,14针、20针; 12)电机:直流电机,步进电机(带1/64减速器); 13)A / D:ARM自带8路10位A /D,满量程2.5V,4路电位器,4路扩展; 14)D / A:10位,满量程4.096V; 15)LED: 8个,共阴,与键盘同由ZLG7289芯片驱动; 16)音频输出:IIS总线,UDA1341芯片,44.1KHz音频; 17)扩展插槽:2个,提供系统总线以及空余资源接口;,嵌入式微处理器,嵌入式微处理器(EMPU)、嵌入式微控制器(MCU)、嵌入式DSP处理器(EDSP)、嵌入式片上系统(SOC) ARM、MIPS、68K、DSP、 ARM7、ARM9、ARM11、XSCALE、 本开发系统的选择:ARM7TDMI结构芯片S3C44B0X,ARMAdvanced RISC Machines,ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。 ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。,ARM微处理器的特点,采用RISC架构的ARM微处理器一般具有如下特点: 1、体积小、低功耗、低成本、高性能; 2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件; 3、大量使用寄存器,指令执行速度更快; 4、大多数数据操作都在寄存器中完成; 5、寻址方式灵活简单,执行效率高; 6、指令长度固定;,ARM微处理器系列,ARM微处理器目前包括下面几个系列,以及其它厂商基于ARM体系结构的处理器,除了具有ARM体系结构的共同特点以外,每一个系列的ARM微处理器都有各自的特点和应用领域。 ARM7系列 ARM9系列 ARM9E系列 ARM10E系列 SecurCore系列 Inter的Xscale Inter的StrongARM,ARM7微处理器系列,ARM7系列微处理器为低功耗的32位RISC处理器,最适合用于对价位和功耗要求较高的消费类应用。ARM7微处理器系列具有如下特点: 具有嵌入式ICERT逻辑,调试开发方便。 极低的功耗,适合对功耗要求较高的应用,如便携式产品。 能够提供0.9MIPS/MHz的三级流水线结构。 代码密度高并兼容16位的Thumb指令集。 对操作系统的支持广泛,包括Windows CE、Linux、Palm OS等。 指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便于用户的产品升级换代。 主频最高可达130MIPS,高速的运算处理能力能胜任绝大多数的复杂应用。 ARM7系列微处理器包括如下几种类型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。其中,ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器核。,ARM7TDMI结构,T取至THUMB,表示支持16bit的高代码密度的THUMB指令集。THUMB指令集是ARM指令集的子集,并且压缩到16bit字长。在系统中合理地交叉使用ARM和THUMB指令集,可以使系统在达到设计要求的同时,尽可能地减小代码量。 D取至Debug,表示支持Debuging功能。 M取至Multiplier,表示具备32bit硬件乘法器。 I取至ICE,表示支持Embedded-ICE接口,可进行在线仿真。,ARM微处理器的寄存器结构,ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄存器包括: 31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。 6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位,目前只使用了其中的一部分。,ARM微处理器的工作状态,从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换: 第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令; 第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。 当ARM微处理器执行32位的ARM指令集时,工作在ARM状态;当ARM微处理器执行16位的Thumb指令集时,工作在Thumb状态。在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。,ARM处理器模式,ARM微处理器支持7种运行模式,分别为: 用户模式(usr):ARM处理器正常的程序执行状态 快速中断模式(fiq):用于高速数据传输或通道处理 外部中断模式(irq):用于通用的中断处理 管理模式(svc):操作系统使用的保护模式 数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。 系统模式(sys):运行具有特权的操作系统任务。 未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。,Samsung S3C44B0X,Samsung S3C44B0X微处理器是三星公司专为手持设备和一般应用提供的高性价比和高性能的微控制器解决方案,它使用ARM7TDMI核,工作在66MHZ。为了降低系统总成本和减少外围器件,这款芯片中还集成了下列部件: 8KB Cache、外部存储器控制器、LCD控制器、4个DMA通道、2通道UART、1个多主I2C总线控制器、1个IIS总线控制器,5通道PWM定时器及一个内部定时器、71个通用I/O口、8个外部中断源、实时时钟、8通道10位ADC等。,基于ARM的嵌入式硬件平台体系结构,开发平台软件资源,1)UarmJtag并口仿真器驱动程序; 2)23个实验案例源代码 3)UCOS-II操作系统、文件系统、驱动程序、API函数的库文件;,嵌入式操作系统,近200种操作系统,WinCE、Linux、Vxworks、QNX、Nucleus、 适于学习的源代码开放的操作系统:Linux、C/OS Linux:层次结构且内核完全开放、网络功能强大、完整开发工具、广泛的硬件支持、遵循通用国际标准,便于程序的移植 C/OS:源代码公开、实时内核、易懂、易学、易用,嵌入式开发平台的硬件布局,嵌入式操作系统,嵌入式系统编程,嵌入式软硬件协同设计,嵌入式系统开发实践,基础平台:ARM/DSP/FPGA/SOPC,嵌入式系统设计,集成开发环境,ARM SDT 2.5开发环境 ADS1.2 开发环境 集成开发环境的使用,参看实验指导讲义,可以练习的实验项目,实验一A:ARM SDT 2.5开发环境 实验一B:ADS1.2 开发环境 实验一C:超级终端设置及BIOS功能使用 实验二 ARM的串行口实验 实验三 键盘及LED驱动实验 实验四 D/A接口试验 实验五 ARM的A/D接口实验 实验六 电机转动控制实验 实验七 LCD的驱动控制实验 实验八 触摸屏程序设计 实验九 CAN总线通讯实验 实验十 定时器中断和驱动程序实验,实验十一 BOOTLOADER实验 实验十二A C/OS-II在ARM微处理器上的移植及编译 实验十二B 完善的C/OS-开发框架 实验十三 音频实验 实验十四 绘图的API函数 实验十五 系统的消息循环 实验十六 文件的使用 实验十七 列表框控件的使用 实验十八 文本框控件 实验十九 多任务和系统时钟 实验二十 UDP通讯实验 实验二十一 综合实验 实验二十二 模拟电子画板实验触摸屏应用 实验二十三 基于ARM的多通道仪表信号采集实验多任务与A/D转换,嵌入式系统课题设计,可选课题,GPS通讯与路况信息系统 车辆照明模拟实验 车内空调系统实验 车内音频播放系统 车速控制和刹车系统 系统综合实验(看人数情况),实验方式及要求,46人一组,每组选定一个课题项目 课题内部进行任务规划与分配 对课题进行功能、性能方面的分析 完成硬件及操作系统裁减的规划设计 在开发平台上实现操作系统的移植与裁减 完成课题各个任务模块的分析 、模拟与仿真 系统调试 实验过程及经验总结,嵌入式系统开发流程,系统功能、性能分析 系统方案总体设计 硬件平台的选择与裁减 操作系统的选择与裁减 最小系统的设计与验证 应用程序的设计 性能指标优化 开发经验总结,GPS通讯与路况信息系统,1.背景 全球定位系统(Global Positioning System),通常简称GPS,是一个中距离圆型轨道卫星定位系统。它可以为地球表面绝大部分地区提供准确的定位和高精度的时间基准。 车辆自动导航系统,它根据GPS接收机提供的车辆当前位置和用户输入的车辆目的地,参照电子地图计算合适的行驶路线并在行驶中以适当的方式给驾驶员提供必要的信息。,2.车辆GPS导航系统的功能:,及时显示汽车在预先制定的电子地图中的位置、行驶速度以及与目的地距离; 输入目的地后主动生成一条去目的地的最佳行驶路线,并在转弯时用语言提醒用户,使其去任何地方不用问路就可直接到达; 随时可查询沿途的酒店、商店、加油站、修理厂、车站、码头等处的最新路况信息,为用户提供方便; 可在汽车遭遇抢劫后,在指定范围内停止发动机的运行,并把汽车所出的位置报告警察;,使用处理流程,用户输入目的地。输入方法主要有下面几种。 在系统显示的电子图上直接点击选取地点; 借助外接键盘,以类似PC机的中文输入法将地名输入导航系统; 确定位置。 行驶路线。在用户输入了目的地之后,导航系统根据电子地图上存储的地图信息,就可以自动算出一条最合适的路线,指示给用户; 行驶中的导航。在必要时刻向驾驶员提示信息。比如,车辆行驶到系统推荐路线中应转弯的路口前,系统应提示驾驶员:“200m后请向左转” 。,3系统总体设计,由于实验平台没有配备GPS模块,本实验通过模拟实现。在LCD上显示模拟电子地图,实验者在触屏上直接点击选取目的地,然后实验者从PC机键盘输入汽车当前位置,通过串口传到ARM,用以模拟GPS模块接收到的从地面控制中心传来的汽车位置数据。导航系统将传回的数据与电子地图对比,得到汽车的当前位置,然后计算出一条最佳行车路线,并显示在LCD上。,4硬件平台选择与剪裁,剪裁后的硬件: CPU: ARM7TDMI结构芯片S3C44B0X; BIOS:2M , NOR FLASH; 内存:8M , SDRAM; 海量存储器:16M , NAND FLASH; USB接口:D12芯片,USB 1.1标准; 显示:320*240像素、256色LCD,带4线电阻式触摸屏;,5操作系统的移植与裁剪,5.1 操作系统的选择 5.2 操作系统的移植 5.3 操作系统的裁剪 文件系统的建立; 必要的外设的驱动程序; 实现基于Unicode的汉字字库; 绘图等实用API;,6.最小系统的设计与验证,6.1 最小系统的设计 6.2 最小系统的验证,7应用程序设计,7.1 程序功能 7.2 界面设计 7.3 程序流程,8指标优化,时间指标 资源占用指标 系统稳定性,9总结,在实验课题设计中,实现了哪些部分,使用到了哪些知识,掌握了哪些。 在方案设计与系统调试过程中遇到的问题与解决方案 系统方案中还存在的缺陷 对该课题提出的创新性的见解 在实验中,希望能加强掌握的知识与实验有哪些?,车辆照明模拟实验,背景 智能化的汽车照明系统又称适应性的照明系统(Adaptive Lighting Systems),它包括自适应前照灯系统AFS(Adaptive Frontlighting Systems)、改进的的信号照明和车内照明控制三部分。,适应性的前方照明系统AFS,适应性的前方照明系统AFS是EUREKA的1403号项目,欧洲的汽车公司、车灯公司和光源公司共同承担了这个项目,美国和日本的一些公司也参与了此一项目。AFS具有弯道照明BL(Bending Light)、高速公路照明ML(Motorway Light)/乡间照明CL(Country Light)/城镇照明TL(Town Light)和恶劣天气照明AL(Adverse Weather Light)等功能。在城区驾驶时路面情况复杂,因而光形较宽,又由于车速不快,因而照射的距离不要很远。在高速公路,车速快,因而ML光束照射得远。在弯道处,BL应该给弯道以良好的照明。,实验要求:,本次实验主要设计模拟AFS系统的部分功能。通过处理器对车速信息和方向信息的采集来控制车灯的照明方向和强度。同时接收控制信息,对车灯进行控制。,实验模拟条件:,由于实验板上资源有限,对于AFS系统只能作简单的模拟,用8个共阴极LED模拟两个前大灯,点亮不同的LED表示不同的照明焦点。从正中间起对8个LED作对称编号,1号LED用于模拟正常前大灯,2号LED用于模拟高速行驶时的远光灯,3号LED用于模拟转向时的侧光灯,4号LED用于模拟转向时的信号灯。因为没有复杂的传感器,所以对道路情况和天气情况的传感转变为对油门和车速的传感。用AD1模拟方向盘,采样其值用作对3号和4号LED的控制,用AD2模拟油门,当油门超过一定值时认为进入高速行驶路段,点亮远光灯。 利用键盘作为用户输入,模拟车内控制信息。,车内空调系统,背景: 汽车空调系统作为影响汽车舒适性的主要总成之一,为汽车提供制冷、取暖、除霜、空气过滤和温度控制功能 。,实验要求:,车内智能空调系统将可以采样车内温度,读取用户输入温度,根据两个温度的差别,确定供暖风和还是冷风,并根据所需温差的大小控制风力的大小。同时,可以根据用户的需要,改变供风的风向和状态。,实验模拟条件:,鉴于实验开发板上的资源有限,在模拟空调系统时,用直流电机的转动模拟空调压缩机运转,用步进电机的转动模拟空调风向的变化。用两个AD转换器分别表示车内温度和用户输入温度,用键盘的上下调整风向变化。空调运行状态的信息显示在LCD上。,车内音频播放,背景: MP3等多种音乐格式的广泛流行。设计一套适宜人们放松精神,缓解疲劳的音频播放系统是十分必要的。播放系统需要可以显示音乐列表、按照驾驶员的控制播放音乐、方便的调节音量和切换歌曲、并且播放系统带有传感器,当出现复杂道路情况,车速变化频繁时自动停止播放以免干扰司机驾驶。,实验要求:,1.能够对.wav文件实现单声道,多声道选择播放 2.能够自动存储播放列表. 3.自由调整播放声音大小 4.当车开动后能自动关闭播放,以免妨碍司机开车 5.自由控制播放与停止.,实验模拟条件:,实验箱已经能够满足音频播放的硬件要求,车速控制和刹车系统,背景及规划: 速度控制系统,英文为Speed Control System;又称为巡航控制系统(Crusle Control System),缩写为CCS. 速度控制系统是一种减轻驾车者疲劳的装置。当汽车在长距离的高速公路行驶时,启动速度控制系统就可以自动将汽车固定在特定的速度上,免除驾车者长时间脚踏油门踏板之苦。另外,还有节省燃料和减少排放的好处,因为汽车都有对应的经济速度,当驾驶者将速度控制系统调置在经济速度上就可以起到省油的作用.,实验模拟条件:,指令开关部分可以通过按键模拟。(车速调置开关、制动踏板、恢复开关) 车速传感器可以用一个模拟信号,经ad转换模拟。 油门执行模块用直流电机和步进电机模拟。系统设计主要完成ECU控制部分的设计,可以在ucos操作系统下实现。,系统综合实验,1.背景 完整的汽车电子系统,是一个有机整体,把上述部分进行系统整合,形成汽车车载系统的完整解决方案,将很有实际意义,实验要求:,利用CAN总线,把各个模块连接起来 实现CAN总线的通信 对于数据通信协议的规划,实验条件:,实验箱已具备CAN总线,资料下载:,网上搜集 以往的总结资料 联系方式: gaoyi_01126.com TEL:89538345,uC/OS-II移植实验,实验目的,了解uC/OS-II内核的基本原理和主要结构 掌握将uC/OS-II内核移植到ARM处理器上的基本方法 掌握uC/OS-II下基本多任务应用程序的编写,实验内容,学习uC/OS-II再ARM处理器上的移植过程 编写简单的多任务应用程序,同时实现跑马灯和数码管显示的功能,预备知识,了解嵌入式操作系统的构架以及具体的uC/OSII的组成 了解操作系统的移植方法,uC/OS-II概述,uC/OS-II在特定处理器上的移植工作绝大部分集中在多任务切换的实现上,因为这部分代码主要是用来保存和恢复处理器现场,许多操作如读写寄存器操作不能用C语言,只能使用特定的处理器的汇编语言来完成。 将uC/OS-II移植到ARM处理器上,需要完成的工作非常简单,大部分的修改工作集中在三个和体系结构相关的文件中,代码量大约是500行。这三个文件是OS_CPU_C.c、OS_CPU_C.H以及OS_CPU_A.S。,移植的主要工作,用#define设置一个常量的值(OS_CPU.H) 声明10个数据类型(OS_CPU.H) 用#define声明三个宏(OS_CPU.H) 用C语言编写六个简单的函数(OS_CPU_C.C) 编写四个汇编语言函数(OS_CPU_A.ASM) 根据处理器的不同,一个移植实例可能需要编写或改写50至300行的代码,需要的时间从几个小时到一星期不等。,OS_CPU.H,1. 数据类型 (与编译器相关) 2.与处理器相关的代码 OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL() OS_ENTER_CRITICAL(); /* C/OS-II 临界代码段 */ OS_EXIT_CRITICAL(); OS_STK_GROWTH 3. OS_TASK_SW() 它是在C/OS-从低优先级任务切换到最高优先级任务时被调用的。,OS_CPU.H的移植,数据类型定义 typedef unsigned char BOOLEAN; typedef unsigned char INT8U; /* Unsigned 8 bit quantity */ typedef signed char INT8S; /* Signed 8 bit quantity */ typedef unsigned int INT16U; /* Unsigned 16 bit quantity */ typedef signed int INT16S; /* Signed 16 bit quantity */ typedef unsigned long INT32U; /* Unsigned 32 bit quantity */ typedef signed long INT32S; /* Signed 32 bit quantity */ typedef float FP32; /* Single precision floating point */ typedef double FP64; /* Double precision floating point */ /* Define data types for backward compatibility . */ #define BYTE INT8S /* . to uC/OS V1.xx. Not actually needed for . */ #define UBYTE INT8U /* . uC/OS-II. */ #define WORD INT16S #define UWORD INT16U #define LONG INT32S #define ULONG INT32U 堆栈单位定义 typedef unsigned int OS_STK; /* Each stack entry is 16-bit wide */,OS_CPU.H的移植,ARM处理器相关宏定义 #define OS_ENTER_CRITICAL() ARMDisableInt() #define OS_EXIT_CRITICAL() ARMEnableInt() 堆栈增长方向 堆栈由高地址向低地址增长,这个也是和编译器有关的,当进行函数调用时,入口参数和返回地址一般都会保存在当前任务的堆栈中,编译器的编译选项和由此生成的堆栈指令就会决定堆栈的增长方向。 #define OS_STK_GROWTH,OS_CPU_C.C,OSTaskStkInit() OSTaskCreateHook() OSTaskDelHook() OSTaskSwHook() OSTaskStatHook() OSTimeTickHook() 唯一必要的函数是OSTaskStkInit(),其它五个函数必须得声明但没必要包含代码。,OS_CPU.c的移植,任务堆栈初始化 该函数由OSTaskCreate()或OSTaskCreateExt()调用,用来初始化任务的堆栈并返回新的堆栈指针stk。 初始状态的堆栈模拟发生一次中断后的堆栈结构。在ARM体系结构下,任务堆栈空间由高至低依次将保存着pc、lr、r12、r11、r10、 r1、r0、CPSR、SPSR,下图说明了OSTaskStkInit()初始化后的也是新创建任务的堆栈内容。 堆栈初始化工作结束后,OSTaskStkInit()返回新的堆栈栈顶指针,OSTaskCreate()或 OSTaskCreateExt()将指针保存在任务的OS_TCB中。,OS_CPU.c的移植,系统HOOK函数:在这个文件里面还需要实现几个操作系统规定的hook函数,这些函数为用户定义函数,它将在相应的操作系统调用后执行由用户定义的这些hook函数,执行特定的用户操作,如果没有特殊需求,则只需要简单地将它们都实现为空函数就可以。这些函数包括: OSSTaskCreateHook( ) OSTaskDelHook( ) OSTaskSwHook( ) OSTaskStatHook( ) OSTimeTickHook( ),OS_CPU.c的移植,中断级任务切换函数 该函数由OSIntExit()和OSExIntExit()调用。它是在时钟中断服务例程中发现有高优先级任务等待的时钟信号到来,则需要在中断退出后并不返回被中断任务,而是直接调度就绪的高优先级任务执行。这样做的目的主要是能够尽快地让高优先级的任务得到响应,保证系统的实时性能。 该函数通过设置一个全局变量need_to_swap_context标志以表示在中断服务程序中进行任务切换,并在OSTickISR()中判断该变量以进行正确的动作。 其函数如下: void OSIntCtxSw(void) need_to_swap_context = 1; ,OS_CPU_A.ASM,C/OS-的移植实例要求用户编写四个简单的汇编语言函数: OSStartHighRdy() OSCtxSw() OSIntCtxSw() OSTickISR(),OSStart( )调用本函数; OSStart( )负责使就绪状态的任务开始运行; OSStartHighRdy( )负责获取新任务的堆栈指针并从堆栈指针中恢复新任务的所有处理器寄存器。,OSStart( )调用本函数; OSStart( )负责使就绪状态的任务开始运行; OSStartHighRdy( )负责获取新任务的堆栈指针并从堆栈指针中恢复新任务的所有处理器寄存器。,OSIntExit( )调用本函数; OSIntExit由OSTickISR调用,负责在定时中断中任务之间的切换; OSIntCtxSw( )主要保存当前任务堆栈指针,并将新任务对应的处理器寄存器从堆栈中恢复出来。,定时中断函数; OSTickISR( )主要负责在进入时保存处理器寄存器,完成任务的切换,退出时恢复寄存器并返回。,OSStartHighRdy(),运行优先级最高的就绪任务 void OSStartHighRdy (void) Call user definable OSTaskSwHook(); Get the stack pointer of the task to resume: Stack pointer = OSTCBHighRdy-OSTCBStkPtr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论