基于ARM9的μCOSⅡ嵌入式系统移植

上传人:1888****888 文档编号:37550635 上传时间:2021-11-03 格式:DOC 页数:20 大小:408.50KB
收藏 版权申诉 举报 下载
基于ARM9的μCOSⅡ嵌入式系统移植_第1页
第1页 / 共20页
基于ARM9的μCOSⅡ嵌入式系统移植_第2页
第2页 / 共20页
基于ARM9的μCOSⅡ嵌入式系统移植_第3页
第3页 / 共20页
资源描述:

《基于ARM9的μCOSⅡ嵌入式系统移植》由会员分享,可在线阅读,更多相关《基于ARM9的μCOSⅡ嵌入式系统移植(20页珍藏版)》请在装配图网上搜索。

1、大庆师范学院本科毕业论文(设计)大庆师范学院 本科生毕业论文基于ARM9上的C/OS-嵌入式系统移植-院 (系) 物理与电气信息工程 专 业 电子信息工程 研 究 方 向 嵌入式 学 生 姓 名 钮佳楠 学生名采用四号楷体,加粗、居中。其余各项均为四号宋体,数字用四号“Times New Roman”。各项下划线末端对齐。学 号 200901071677 指导教师姓名 成宝芝 指导教师职称 讲师 2013年 5 月 15 日摘 要“摘要”采用小五号黑体。行间距18磅,上下各空一标准行。随着计算机和电子技术的发展,越来越多的嵌入式产品出现在人们的日常生活和工业生产之中。由于嵌入式设备的智能型,使

2、得生活和生产变得极为方便,由此也带来了嵌入式操作系统的迅速发展。C/OS-内核作为一种代码公开的嵌入式实时操作系统,ARM9以内核耗电少,成本低,二者相互搭配,构成了较为完美的搭配组合。 本文主要讲述的是C/OS-在ARM9上的系统移植问题。 中文摘要内容采用小五号楷体,首行缩进2字符,行间距18磅。字数一般为150-300字。关键词:C/OS-;Arm9;移植每篇论文(设计)选取3-6个词作为关键词。“关键词”采用小五号黑体,并缩进2字符。关键词内容采用小五号楷体,关键词之间用“;”分隔,行间距18磅。Abstract“Abstract”采用小五号“Times New Roman”,加粗,行

3、间距为固定值18磅,上下各空一标准行。With the development of computer and electronic technology, embedded has become an indispensable part of modern society. Big to industrial production, such as aerospace, small to daily life, such as smart card applications, many devices are built into the embedded, makes the equip

4、ment or device has a high automation performance and some degree of intelligence, great convenience to peoples production and living needs, and thus also brought the rapid development of the embedded operating system. Mu C/OS - kernel code, as a kind of open embedded real-time operating system, the

5、ARM kernel, less consumption, lower cost, the two match each other, form the relatively perfect collocation. This article mainly tells the mu C/OS - portability issues on the ARM of the system.Keywords: u C/OS - ; Arm; transplant目录第一章 嵌入式系统基础51.1 嵌入式系统概述51.2 嵌入式体系硬件基础51.3 嵌入式体系软件基础6第二章 C/OS-II介绍6第三章

6、ARM9介绍7第四章 C/OS-在S3C2440上的移植84.1 移植环境简介84.2 移植条件84.3 移植步骤84.3.1 INCLUDES.H94.3.2 OS_CFG.H94.3.3 OS_CPU.H 文件94.3.4 OS_CPU_C.C 文件104.3.4.1 OSTaskStkInt()104.3.4.2 OSTaskCreateHook()104.3.4.3OSTaskDelHook()104.3.4.4 OSTaskSwHook()114.3.4.5 OSTaskStatHook()114.3.4.6 OSTimeTickHook()114.3.5 OS_CPU_A.ASM

7、文件114.3.5.1 OSStartHighRdy()114.3.5.2 OSCtxSw()124.3.5.3 OSIntCtxSw()124.3.5.4 OSTickISR()124.4 移植测试12第五章 实例移植135.1 工程创建135.2 工程设置145.3 实例调试18第六章 结束语18参考文献19谢 辞20第一章 嵌入式系统基础1.1 嵌入式系统概述基于计算机技术,以应用为中心,且软硬件可裁剪,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统,叫做嵌入式系统。一般由以下几部分组成:1. 嵌入式的微处理器2. 硬件设备(外围)3. 嵌入式的操作系统4. 特定应用程序嵌入

8、式系统具有以下几个特点:1. 特定且广泛的应用2. 密集的技术、知识、资金3. 高效性4. 较长生命周期5. 高可靠性6. 软硬件集于一体,以软件为主嵌入式系统的应用领域十分广泛,主要包括交通管理、机器人、军事电子、通信设备、网络设备、医疗仪器、环境监测、汽车电子、工控设备等。嵌入式系统从上世纪60年代中期开始,从无操作系统、简单操作系统、实时操作系统直至今日面向Intenet的阶段,历经50多年。嵌入式因为广泛应用性,巨大的创业型和广阔市场性,走进了千家万户。1.2 嵌入式体系硬件基础嵌入式系统的硬件核心是嵌入式微处理器,另外包括总线、存储器、输入/输出接口和设备。1. 微处理器:至少包含一

9、个微处理器,采用的体系结构是冯诺依曼或哈佛结构。2. 总线:集成在嵌入式微处理器中,选择总线和微处理器密切相关,总线的种类随不同的微处理器的结构而不同。3. 存储器:包括主存和外存。主存用于存数代码和数据;外存存放各种信息4. 输入/输出接口和设备:集成在微处理器中,主要包括中断控制器、DMA、串行和并行接口等1.3 嵌入式体系软件基础RTOS(实时多任务操作系统)、文件系统、GUI(图形接口)、网络系统和通用的组件模块构成了嵌入式系统的软件层。EOS,即嵌入式操作系统是一种用途广泛的系统软件,主要负责系统软硬件分配、任务控制,调度以及协调并发的活动。目前,世界上一些应用比较成功的EOS产品系

10、列已经被推出了。随着Internet技术发展、信息家电普及应用,EOS已经开始从单一弱功能向高专业化强功能的方向发展。EOS除了具备了一般操作系统最基本的功能(如任务调度、机制同步、中断处理、文件功能等)外,还具有以下的特点:1. 可装载卸载性。开放性、可伸缩性体系结构。2. 极强的实时性。EOS实时性较强,可用于各种设备的控制当中。3. 统一的接口。提供了各种设备驱动接口。4. 方便操作、简单、提供图形GUI,图形的界面,追求的是易学易用性。5. 支持TCP/IP协议和其它的网络协议,提供多种网络协议和MAC访问的接口,为各种手持移动设备预留了接口。6. 强稳定性和弱交互性。7. 固化的代码

11、,系统和应用软件固化在ROM中。8. 更好的适应硬件,具有良好的移植性。第二章 C/OS-II介绍实时操作系统,英文称Real Time Operating System,简称RTOS,是一种能够接受并快速处理外界时间或中断,且处理接口在规定时间内来控制过程作出响应,并控制所有实时任务一致运行的系统。1992年美国人Jean J.Labrosse在Embedded SystemProgramming杂志上最先发表了RTOS,名为C/OS,从而开创了它的新时代。C/OS是一个源码开放,抢占式微内核的实时操作系统,C/OS-II是它的升级版本,全部代码约有5000行,由ANSI C,以及少量的汇编

12、语言编写而成,结构简洁,实时性和内核的稳定性强。至今,从8位到64位,C/OS-II已经在超过40种的不同微处理器上运行,在世界范围内得到广泛使用,包括诸多领域,如手机、路由器、集线器、不间断电源、飞行器、医疗设备及工业控制等。实际上,C/OS-II已经通过了非常严格的测试,并且得到了美国航空管理局(Federal Aviation Administration)的认证,可以用在飞行器上。这说明C/OS-II是稳定可靠的,可用于与人性命攸关的安全紧要(safety critical)系统;当然,也可用于非安全紧要系统。C/OS-II体系结构如图2.1所示图2.1 C/OS-II体系结构第三章A

13、RM9介绍ARM9是32位通用微处理器ARM(Advanced RISC Machine)家族中的一员,具有比较低的电源消耗和良好的性价比,由此广泛应用于工业生产和日常生活中。基于RISC(精简指令)的结构,较微程序的控制复杂指令系统的计算机相对简单,使得它用有较高的中断响应和指令处理的能力。ARM9的指令集共包含了11种基本类型:用于偏上的算术逻辑单元,桶式的移位器及乘法器(两种);指令控制数据传送:用在弹性地址,高速内容切换,和交换数据(三种); 用于流程控制和特权级执行的指令(三种);专门用在能够扩展到片外的协处理器中(三种)。指令集比较适用不同的高级语言编译器,但需要临界代码段,汇编语

14、言编程也比较简单,不像其它的需要复杂的编译器来管理指令。ARM9的流水线技术,能够使指令处理和系统存储的各个部分都可以连续的运行。比如一条指令正在执行,下一条指令正在被破译,同时第三条指令可以从存储器取出。 在存储的系统中,ARM9存储接口的设计能够最大限度的发挥性能潜力且代价降低,被做成流水线方式,速度敏感控制信号推动着由工业DRAM提供的快速局部访问模式。 ARM9有32位地址总线,也可以配制成26位的地址线,向下兼容其它的早期处理器。 全静态的CMOS的ARM9,允许时钟在周期内的停止,并保存当前的状态。基于上述的优势,ARM9适用于一些需要紧凑且功能强大的RISC处理器系统,包括电子通

15、讯、数据通信、信息存储、图像处理、JOEG控制器等,为人们的日常生活和工业生产带来了极大的便利。第四章 C/OS-在S3C2440上的移植4.1 移植环境简介移植就是使实时内核能够在多个微处理器或微控制器上成功运行的过程。本文采用的是S3C2440芯片,开发环境采用Keil uVision3,基本满足了移植的需求。三星公司的16/32位精简指令集的微处理器S3C2440,基于ARM920T的核心,实现了内存管理,ARBA总线和哈佛结构高速缓冲的具有独立的16KB指令高速缓存和16KB数据高速缓存体系结构。4.2 移植条件由于CPU版本的不同,C/OS-II 可能会出现不兼容的问题,这时需要对操

16、作系统进行移植,使它能够在使用的CPU 上运行。C/OS-II 的移植需满足以下的要求:1. 处理器的 C 编译器可产生可重入代码; 2. 进入和退出临界区代码可以使用 C 进行调用; 3. 处理器必须支持具有定时中断源的硬件中断; 4. 处理器必须能够容纳一定的数据硬件堆栈; 5. 处理器需要有交换数据的指令,使其能够在 CPU 的寄存器和内核及堆栈间进行数据的交换。 4.3 移植步骤C/OS-作为实时操作系统操作系统,在设计初期就已经充分考虑了可移植性,针对不同的CPU版本,C/OS-的移植核心环节就是改写一些与处理器硬件相关的函数。移植工作包括以下内容:1. 用#define设置一些常量

17、的值(OS_CPU.H)2. 声明10个指定的数据类型(OS_CPU.H) 3. 用#define声明2个宏(OS_CPU.H) 4. 用 C 语言编写6个简单函数(OS_CPU_C.C) 5. 根据硬件编写了4个函数(OS_CPU_ A.ASM)4.3.1 INCLUDES.H INCLUDES.H是一个被包含在所有.C文件中的头文件。简而言之,在这个INCLUDES.H使得项目中的每个.C文件不需要分头文件中包含了可能用到的头文件以及一些可能与实际应用不相关的头文件。虽然这增加了文件编译的时间,但是增强了可移植性。我们可以通过INCLUDES.H来增加自己需要的头文件,为了避免重新编译已编

18、译的内容,增加的头文件必须添加在头文件列表的最后。4.3.2 OS_CFG.H内核是一个系统的核心,而OS_CFG.H就是用来配置内核的头文件,根据不同的需要和应用,我们可以对内核进行定制和裁剪,从而提高了实时性。4.3.3 OS_CPU.H 文件 OS_CPU.H主要包含了一些用#define定义的常量,宏和类型定义(与处理器相关)。众所周知,不同的处理器字长是不相同的,尤其是,C/OS-代码不使用与编译器相关的C的short(短整),int(整型)和long(长整)等数据类型。所以为了移植的成功,需要对C/OS-中的数据类型进行重新的定义。与所有的实时内核一样,C/OS-需要先将中断禁止再

19、进行访问代码临界段,且在访问完毕重新允许中断。C/OS-定义了两个宏来禁止和允许中断:OS_ENTER_CRITICAL() 和OS_EXIT_CRITICAL()。结构常量OS_STK_GROWTH是用来改变堆栈生长方式。因为不同的微处理器和微控制器堆栈生长方式不同,C/OS-中可以通过改变OS_STK_GROWTH的值来改变堆栈生长方式当把OS_STK_GROWTH值置0,堆栈的生长方式是从下往上长。当把OS_STK_GROWTH值置1,堆栈的生长方式是从上往下长。OS_TASK_SW()是一个在C/OS-进行任务切换(低任务优先级级到最高优先级任务)时被调用的宏。任务切换只是简单的把处于

20、当前优先级任务处理器的寄存器保存到将被挂起的任务堆栈中,同时将更高优先级的任务从堆栈中恢复出来。4.3.4 OS_CPU_C.C 文件 C/OS-的移植中需要编写六个简单的C函数:OSTaskStkInit()OSTaskCreateHook()OSTaskDelHook()OSTaskSwHook()OSTaskStatHook()OSTimeTickHook()唯一必要的函数是OSTaskStkInit(),其它五个函数需要声明但没必要包含代码。4.3.4.1 OSTaskStkInt()OSTaskCreate()和 OSTaskCreateExt()通过调用OSTaskStkInt()

21、进行任务的堆栈结构的初始化。OSTaskCreate()和 OSTaskCreateExt()会得到传递任务地址,pdata指针,任务堆栈栈顶和任务优先级等参数,为了堆栈结构初始化的正确性,OSTaskStkInt()只需要上述的三个和一个附加在OSTaskCreateExt()中得到的选项。一旦堆栈初始化, OSTaskCreate()和 OSTaskCreateExt()会获得OSTaskStkInit()返回堆栈指向的地址,并将其保存至任务控制块(OS_TCB)中。处理器文档会指明堆栈指针会是指向下个堆栈的空闲位置,还是指向了最后存入数据的堆栈单元位置。4.3.4.2 OSTaskCre

22、ateHook()OSTaskCreateHook()是一个允许扩展C/OS-的功能的函数,在用OSTaskCreate()或OSTaskCreateExt()建立任务的时候会被调用。当OSTaskCreateHook()被调用时,能够收到指向已建立的任务的OS_TCB 的指针,可用于访问任务的附加数据(MMU 寄存器,浮点寄存器,以及调试的信息等)和其它所有结构成员。在此移植过程中不需要具体的OSTaskCreateHook()函数代码,所以在OS_CFG.H中将OS_CPU_HOOKS_EN 置0时。4.3.4.3OSTaskDelHook()OSTaskDelHook()在删除任务时被调

23、用。当OSTaskDelHook()被调用时,能够收到指向正被删除任务的OS_TCB的指针,可用来检测TCB扩展建立与否并进行某些清楚操作。OSTaskDelHook()无返回值。在此移植过程中不需要具体的OSTaskDelHook()函数代码,所以在OS_CFG.H中将OS_CPU_HOOKS_EN 置0时。4.3.4.4 OSTaskSwHook()OSTaskSwHook()是一个与任务切换相关的函数。不论任务切换是通过OSCtxSw()还是OSIntCtxSw() 进行的切换操作,都需要调用该函数。注意:在调用OSTaskSwHook()期间中断是一直处于禁止状态。任务切换的时间越短,

24、任务执行效率越高,所以在任务切换的时候尽量将代码简化,OSTaskSwHook()无参数,也没有返回值。在此移植过程中不需要具体的OSTaskSwHook ()函数代码,所以在OS_CFG.H中将OS_CPU_HOOKS_EN 置0时。4.3.4.5 OSTaskStatHook()OSTaskStat()以1秒/次的频率调用OSTaskStatHook()函数。因此可以用OSTaskStatHook()来进行扩展统计的功能。OSTaskStatHook()无参数,无返回值。在此移植过程中不需要具体的OSTaskStat ()函数代码,所以在OS_CFG.H中将OS_CPU_HOOKS_EN

25、置0时。4.3.4.6 OSTimeTickHook()在每一个时钟节拍OSTaskTick()都会调用OSTaskTimeHook()。事实上,OSTaskTimeHook()是在节拍被C/OS-真正处理,并通知实例或应用程序之前被调用。OSTaskTimeHook()无参数,无返回值。在此移植过程中不需要具体的OSTaskTimeHook ()函数代码,所以在OS_CFG.H中将OS_CPU_HOOKS_EN 置0时。4.3.5 OS_CPU_A.ASM 文件 C/OS-的移植的实例要求编写四个汇编函数:OSStartHighRdy()OSCtxSw()OSIntCtxSw()OSTick

26、ISR()如果编译器能够支持插入汇编代码,则可以将所有与处理器相关的代码放到OS_CPU_C.C 文件中,而不必将汇编文件分散。4.3.5.1 OSStartHighRdy()使就绪状态的任务开始运行的函数叫做OSStart()。OSStartHighRdy()由 OSStart()调用,进行执行最高优先级任务的操作。在最高优先级任务恢复之前及在调用OSTaskSwHook()之后设置OSStartHighRdy()中的OSRunning 为 TRUE。4.3.5.2 OSCtxSw()OSCtxSw()主要是进行任务级的切换。在当前任务调用C/OS-提供的系统服务,且更高优先级任务处于就绪状

27、态的同时,C/OS-就会借助向量地址找到OSCtxSw()。在调用的最后,调用 的OSSched()可推断当前任务不是优先级最高的任务。如果是的话,OSSched()会先将最高优先级任务地址装载到OSTCBHighRdy 中,再通过调用 OS_TASK_SW()执行软中断或陷阱指令。注意:变量OSTCBCur包含了指向当前任务的OS_TCB 的指针。因为不能直接从C中访问CPU寄存器,所以代码必须写在汇编语言中,。需要注意的是在OSCtxSw()和定义的函数OSTaskSwHook() 的执行的过程中,中断需要处于禁止的状态。4.3.5.3 OSIntCtxSw()当C/OS-判断有比中断更为

28、重要的事件发生时,OSIntExit()会调用OSIntCtxSw()从中断中切换出去。OSIntCtxSw()是C/OS-中唯一的与编译器相关的函数, 它的代码须必须写在汇编中。如果编译器能够插入汇编代码,就可以将 OSIntCtxSw()代码放到 OS_CPU_C.C 文件中,而不放到 OS_CPU_A.ASM 文件中,这是因为不能直接从 C 语言中访问 CPU 寄存器。因为OSIntCtxSw()的代码与 OSCtxSw()基本上是相同的,所以可以通过“BL”指令减少 OSIntCtxSw()代码量,这在移植实例中是常见的。4.3.5.4 OSTickISR()C/OS-要求提供一个时钟

29、资源实现时间延时和期满的功能,时钟节拍应该每秒发生 10至100次。为了完成任务,调用OSTickISR()可以解决这个问题。4.4 移植测试当移植工作完成之后就是对它的测试。测试工作能够在没有应用程序的情况下进行。即是使内核进行自测。在ADS1.2下进行编译、链接成可执行文件后,通过以下的测试用例,验证系统移植的成功。测试代码程序如下:void OSTaskIdleHook (void)static x = 0 ;if (x %10000= = 0) /*每10000次点亮一个LED 灯*/sysUtilsLightLed (LED_ ALL,FALSE) ; /*关闭所有LED灯*/sys

30、UtilsLightLed (i %3+1,TRUE) ; /*循环点亮LED灯*/x + + ;ret urn ;第五章 实例移植本章的主要内容是在对移植有了较为全面的了解和认识之后,将C/OS-操作系统移植到ARM9的处理器上,然后编写一个简单地应用程序,实现LED灯的控制。5.1 工程创建1. 连接EasyJTAG-H仿真器和ARM9的开发板,然后安装EasyJTAG-H仿真器,短接蜂鸣器跳线JP9。 2. 启动ADS 1.2,新建一个ARM Executable Image for DeviceARM2410(uCOSII)工程模板建立一个工程uCOS_II。3. 创建uCOS_II文

31、件夹,创建两个子文件夹,分别为ARM、SOURCEa ARM存放和平台相关的文件(OS_CPU.H Os_cpu_a.s Os_cpu_c.c )b SOURCE下存入和平台无关的文件(ucos_ii.h os_cfg.h os_core.c os_flag.c os_mbox.c os_mem.c os_mutex.c os_q.c os_sem.c os_task.c os_time.c os_tmr.c ),即将C/OS 2.52源代码添加到SOURCE文件夹4. 创建一个S3C2440文件夹,创建两个子文件夹,分别为INC、SRCa. INC存放S3C2440相关头文件(2440add

32、r.h 2440lib.h 2440slib.h config.h Def1.h lcd.h mmu.h Option.h Target.h Timer.h )b. SRC存放S3C2440相关源文件(Timer.c 2440init.s 2440lib.c 2440slib.s Font_Libs.c iphone.c lcd.c mmu.c nand.c Target.c )5. 创建一个APP文件夹(app_cfg.h、main.c、Printf.c、Printf.h)在APP文件夹的main.c中编写主程序代码。5.2 工程设置在工程建立之后,还需要对于工程进行相应的设置在【Edit】

33、【DebugRel Settings】下1. 【Target】【Target Settings】【,Post-linker】:ARM fromELF2. 【Target】【Access Paths】选中【Always Search User Paths】(ucos_ii部分文件采用#include 包涵,不修改这里找不到文件)3. 【Language Settings】下【ARM Assembler】、【ARM C Compliler】、【ARM C+ Complier】处理器设置成ARM920T4. 【Language Settings】下【ARM C Compliler】下【Errors】

34、下去掉【Implicit pointer c】,【ARM C Compliler】下【Warnings】下去掉【Unused declaration】(-O1 -g+ -cpu ARM920T -Wx -Ec)5. 【ARM Linker】下,【Output】下【RO Base】设置成0x30000000,【Options】下【Image entry point】设置成0x30000000,【Layout】下【Place at beginning of image】下的【Object/Symbol】设置成2440init.o,【Section】设置成Init,【Listings】下选勾Imag

35、e map、【List file】设置list.txt,勾上Sizes、Totals、Unused、Veneers。6. 【ARM fromELF】下【Output file name】下填写输出的二进制5.3 实例调试在工程设置之后,选用DebugRel生成目标,然后编译链接工程。将ARM9开发板上的蜂鸣器跳线JP9短接,将启动方式选择跳线JP8短接,然后按RST键复位系统。选择【Project】-【Debug】,启动AXD进行JTAG仿真调试。全速运行程序,程序将会在main.c的主函数中停止(因为main函数起始处默认设置有断点)。单击Context Variable图标按钮(或者选择【

36、Processor Views】-【Variables】)打开变量观察窗口,通过此窗口可以观察局部变量和全局变量。可以单步运行程序,可以设置/取消断点,或者全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器及LED1LED4的控制是否正确。第六章 结束语本文对嵌入式实时操作系统C/OS-移植到ARM9开发板上的过程进行了较为详尽的分析和操作,通过简单的任务例程,在ADS1.2、EasyJTAG-H仿真器及开发板的组合情况下进行了测试,从而验证了移植的准确性,成功的为C/OS-嵌入式实时系统的复杂应用,提供了基本条件。随着科技的发展,工业生产和日常生活的需要,作为一个具有明显优势的实时操作系统

37、,C/OS-具有广泛的应用前景和市场价值,必定会在嵌入式中占据一席之地。参考文献1 肖磊 张娜. C/OS-在stm32上的移植J. 可编程控制器与工厂自动化, 2011,6期.2 庞海涛 陈昕 程高峰. C/OS-在Cortex-M3系列单片机上的移植J. 单片机与嵌入式系统应用, 2008, 11.3 孙顺远 秦会斌 崔佳冬 丁红斌. C/OS-在Cortex-M3内核上的移植及优化J. 计算机系统应用, 2010,04.4 唐其伟. 基于ARM与C/OS-II的嵌入式系统研究D. 广东工业大学, 2005年5月. 5 罗西门. UCOS_II的移植,ADS1.2+ARM9(S3C2440

38、)EB/OL. 2013-5-15. 6 石亿 黄辉先 赵娟 徐建闽. C/OS-与C/GUI在Cortex-M3上的移植研究与实现J. 微计算机信息, 2012,09期.7 李玉刚. 嵌入式操作系统C/OS-在ARM上的移植研究J. 微计算机信息, 2010,23.8 王帅. 基于SOPC的多路温度检测系统设计D. 成都理工大学, 2012年4月.9 张雪峰. 基于实时内核C/OS-II的应用研究D. 西南交通大学, 2004年4月.10 陶保壮. 基于ARM7的嵌入式操作系统C/OS-II平台的剖析与实现J. 安徽工程科技学院学报, 2009年6月(2).谢 辞不要求一定写,采用标题1,小三号宋体,段前8磅,段后8磅,行间距为固定值22磅。谢辞内容为小四号宋体,行间距为固定值22磅。本文在成宝芝老师的指导下圆满完成。在本文完成的过程中,成老师提供的充足资源使课题研究顺利进行,同时,老师对我的论文选题,论文结构都给与了细致的指导和帮助。感谢朋友帮我找寻的资料以及研究方向的建议。 钮佳楠2013年5月

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!