基于arm9的μcos--ⅱ嵌入式系统移植(编辑修改稿)内容摘要:
需将所用头文件放到 文件中即可。 需要增加的头文件必须需放在 头文件的最后 , 为了避免在编译过程中将已编译的内容 再 重新 进行 编译。 内核是一个系统的核心,而 就是用来配置内核的头文件,根据不同的需要和应用,我们可以对内核进行定制和裁剪,从而提高了实时性。 :由 define 重新定义 的 与处理器相关的宏 , 数据 类型和常量 存放在这个文件中。 众所周知,处理器有 8 位 , 16 位, 32 位, 64 位甚至 128 位 , 对应到不同处理器的操作系统中位数是不一样的 ,否则会发生无法兼容的问题, μC/OSⅡ 中 不使用 C中使用频繁的 short(短整), int(整型)和 long(长整)等数据类 型。 所以为了能够与处理器的字长相匹配,需要对 μC/OSⅡ 中的数据类型进行重新的定义。 在任何的操作系统中,中断都是必不可少的,否则在更高优先级的任务发生时,无法对其进行处理,可能导致系统的崩溃。 在类似这种情况下 , 需要对 μC/OSⅡ 进行中断的禁止操作 , 且在访问代码结束重新将中断置为允许状态。 所以在 μC/OSⅡ中有两个宏 : OS_ENTER_CRITICAL()(中断禁止) 和 OS_EXIT_CRITICAL()(中断允许)。 结构常量 OS_STK_GROWTH 是在移植过程中专门为改变堆栈生长方式而定义的一 个宏: 将其置 1 时生长方式是从上往下,置 0 则相反。 在执行中断,或者任务优先级变化的时候,需要任务的切换(低任务优先级级到最高优先级任务)。 任务切换简而言之就是将当前任务的寄存器和状态字保存到堆栈中并把更高优先级任务从堆栈中恢复出来。 任务切换的时候需要 OS_TASK_SW(),在 移植过程中需要对这个宏 重新 定义。 μC/OSⅡ 的移植中需要用 C 语言编写六个简单的函数: 1. OSTaskStkInit() 2. OSTaskCreateHook() 大庆师范学院本科毕业论文(设计) 7 3. OSTaskDelHook() 4. OSTaskSwHook() 5. OSTaskStatHook() 6. OSTimeTickHook() 在移植过程中, OSTaskStkInit()是唯一需要进行改 写的 函数 ,其余的五个 钩子 函数 (挂机函数) ,只需要对其声明, 不需要详细的代码 , 且由于只是 声明,所以在 内核配置文件 中 需要 将 OS_CPU_HOOKS_EN 的值 设置 为 0。 OSTaskStkInt() OSTaskStkInt() :初始化堆栈 欧诺个能 函数。 在 早期 任务创建 时 使用OSTaskCreate() 和 OSTaskCreateExt() 调用 OSTaskStkInt() , 在 这 个 过 程 中OSTaskStkInt()获得通过 的 pdata 指针,任务堆栈栈顶和任务优先级 和其它参数 参数 ,以 确保正确 的初始化 堆栈结构。 OSTaskCreateHook() OSTaskCreateHook(): μC/OSⅡ 的功能扩展的允许与否,在创建任务的时候通过这个函数进行功能设置。 建立任务之后会返回一个 OS_TCB 的指针,在选择扩展功能的时候,该指针会传给 OSTaskCreateHook(),通过这个指针访问任务的附加数据( MMU 寄存器 ,浮点寄存器,以及调试的信息等)和结构成员。 从而决定可允许扩展的成员。 OSTaskDelHook() OSTaskDelHook(): 用于任务的删除。 任务建立之后会返回一个 OS_TCB 指针,在删除任务的时候,该指针会传给OSTaskDelHook(),通过这个指针访问任务的附加数据和结构成员。 从而决定删除的对象。 OSTaskSwHook() OSTaskSwHook():优先级改变,或者中断发生,进行任务切换的时候调用的函数。 调用 OSTaskSwHook()期间 中断 应该 处于 禁止 的状况,这是为了防止程序的崩溃。 任务切换的时间越短,任务执行效率越高,所以在任务切换的时候尽量将代码简化,OSTaskSwHook()无参数,也没有返回值。 大庆师范学院本科毕业论文(设计) 8 OSTaskStatHook() OSTaskStatHook():进行扩展统计功能的函数。 OSTaskStatHook()无参数,无返回值。 OSTimeTickHook() OSTaskTimeHook(): 应用于每一个时钟节拍中。 事实上, OSTaskTimeHook()是在节拍被 μC/OSⅡ 真正处理,并通 知实例或应用程序之前被调用。 OSTaskTimeHook()无参数,无返回值。 四个汇编函数的编写是 μC/OSⅡ 移植的重点: 1. OSStartHighRdy() 2. OSCtxSw() 3. OSIntCtxSw() 4. OSTickISR() 为了节省空间和内存,将所有与处理器相关的函数、代码集中放到 文件中。 OSStartHighRdy() OSStartHighRdy(): 选择优先级最高的任务执行。 OSStart 是开始运行任务的函数,在运 行开始之后可以 调用 OSStartHighRdy()选择 优先级最高的任务 执行。 在任务切换之后和恢复先前任务之前需要将此函数的 OSRunning 设置为 0。 OSCtxSw() OSCtxSw():执行最高优先级的任务是 μC/OSⅡ 的特点之一,而 OSCtxSw()就是基于此而创建的函数。 调用 任务切换函数的时候 中断 也必须处于禁止状态。 OSIntCtxSw() OSIntCtxSw(): μC/OSⅡ 中唯一与 微 处理器相关的函数。 OSTickISR() OSTickISR(): 为了满足时间期满和延迟功能而编写的函数。 大庆师范学院本科毕业论文(设计) 9 第五章 实例移植 本章是在基于第四章内容的基础上,进行一个详细的代码实例移植。 通过源码介绍、软件设置和仿真调试,实现 ARM9 开发板上 LED 灯的控制。 函数配置 实例移植是验证移植成功的关键。 通过网络或其它途径获得 μC/OSⅡ 的源代码,对于一些在第四章描述的变量、宏和函数进行重新定义和配置。 源代码如图 51 所示: 图 51 源代码文件夹 在 S3C2440 文件夹 下有 两个子文件夹,分别是 includes 和 source,如图 52 所示: 图 52 S3C2440 文件夹下的文件 在 includes 文件中包括 、 、 、 、 、 、 、 , 这些文件都是一些与芯片相关的头文件。 如图 53 所示: 图 53 includes 文件夹 在 source 文件中包括 、 、 、 、 、大庆师范学院本科毕业论文(设计) 10 、 、 、 、 、 等, 这些都是一些与芯片相关的源文件, 这里的 函数可以写入测试程序,执行测试操作 ,如图 54: 图 54 source 文件夹 uCOS_II 文件夹中包含了四个文件夹,分别是 API、 include、 arm、 SOURCE。 图 55 uCOS_II 文件夹 在 API 文件夹中只有一个应用配置相关的头文件: ,如图 56 所示: 图 56 API 文件夹 include中有三个文件: 、 ,其中 进行配置,如图 57: 图 57 include 文件夹 arm文件夹中也是三个文件: 、 、 ,其中后两个大庆师范学院本科毕业论文(设计) 11 是需要进行配置的文件,如图 58 所示: 图 58 arm 文件夹 在 SOURCE文件夹中有一个 API文件夹(包含 )和 、 、 、 、 、 、 、 、 、 、 和 文件 , 这些是一些与系统服务相关的函数文件,比如消息机制,内存共享,信号量等 函数。 图 58 所示: 图。基于arm9的μcos--ⅱ嵌入式系统移植(编辑修改稿)
相关推荐
易学易用 性。 5. 支持 TCP/IP 协议和 其它 的 网络 协议,提供 多种网络协议和 MAC 访问的接口, 为各种手持 移动 设备预留 了 接口。 6. 强 稳定性和 弱 交互性。 7. 固化 的 代码,系统和应用软件固化在 ROM 中。 8. 更好的适应硬件,具有 良好的移植性。 第二章 μ C/OSII 介绍 实时操作系统, 英文称 Real Time Operating
处理器对各路传感器采集到的信号进行预处理,归一化为相应特征量,采用模式识别实现各传感器多元特征向量的关联与分类,实现火灾特征的识别。 着火有明火与阴燃两种情况,明火往往伴有大量火焰,火灾现场温度会比较高,同时有一定量的CO气体与烟雾产生;而阴燃着火,一般现场温度没有多少变化,但会产生烟雾和CO等气体,一定的外界程度会可能使阴燃转化为明火,所以阴燃火情也是人们需要引起注意的火灾
发,通常有两种编译环境 ADS 和 KEIL,本系统是在 Keil uVision4 的软件编译环境下进行的。 ARM 微处理器的传统开发工具是 ADS, ADS( ARM Developer Suite)是在 1993 年由 Metrowerks 公司开发 的, 是 ARM 处理器下最主要的开发工具。 ADS 是全套的实时开发软件工具,包编译器生成的代码密度和执行速度优异。 可快速低价地创建
对生化测试一般原理的分析 ,总结了生化分析仪的原理 ,同时比较几种 常见的生化分析方法 ,并通过对生化分析仪结构的分析 ,阐述了各部分的功能。 生化测试基础 生化分析原理 生化分析仪是属于光学式分析仪器,它是基于物质对光的选择性吸收原理,即分光光度分析法。 分光光度法是绝大多数生化分析仪所采用的一种检测方法,它是基于不同分子结构的物质对电磁辐射的选择性吸收而建立起来的方法,属于分子吸收光谱分析法
忌惮专有权等问题,这也极大促进了整个移动产业的创新。 Android 平台上面是 虚拟机,虚拟机上面就是运行着的众多应用程序,这些应用程序地位平等。 虚拟机是手机硬件与上层应用程序之间的信使,所有 Android 应用都必须运行在虚拟机之上。 许多手机系统上固件的应用是无法更改和删除的,而 Android 一大特点就是固件是可以刷新的,如果对原有的短信应用亦或是音乐播放器不满意
开发, 2020 年由 Google 收购注资,由 Google 在 2020 年 11 年 5 日公布,后由开放手持设备联盟( OpenHandsetAlliance)(联盟 成员包括 Motorola、 HTC、 SAMSUNG、 LG 以及中国移动在内的 34 家技术和无线应用企业)开放改良,逐渐由手机领域应用扩展到平板电脑及其他领域上。 根据 Android 系统的发展史,我们可以知道