登录
首页 » Others » μC/OS-II操作系统在STM32上的移植

μC/OS-II操作系统在STM32上的移植

于 2020-12-07 发布
0 144
下载积分: 1 下载次数: 1

代码说明:

详细介绍μC/OS-II操作系统在STM32上的移植过程,引导初学者完成基本的操作系统架构的创建。建立工程使用(我使用版)在目录下建立工程,工程名为。选一个系列的芯片,哪一个都无所谓(我选的是因为我的板子就是用这个芯片),接下来要注意的是当弹出是否拷贝启动代码到工程文件夹时要选,因为标准外设厍里已经有启动代码了。将里的顶层日录名改为,并将第一个名改为把日录下所有和文件加载到工程里的在下建立一个目录用来放置系统初始化代码。把拷贝到文件夹拷贝到文件夹中。是中断服务程序文件。是标准外设库的配置文件,对于工程中不需要的外设,可以注释掉里面的包含的头文件。这里我建议先仅留下,用到什么再打开什么,这样编译起来快一点,当然也可都留着。使用标准外设库事实上标准外设库的使用在中的节中已有说明,下面我把其中的步骤罗列一下根据所选芯片,把中的启动代码加到工程中,这一步在上面凵经做过了。在的行,根据所选芯片类型,去掉相应注释,这里我去掉行的注释(大谷量型片)去掉行的注释,启用标准外设库。在的行,根据所选芯片主频,去掉相应注释,默认注释已去掉,如果你的芯片主频是,就不用做修改了,这里我的芯片是注释去掉注释跑马灯程序现在可以使用标准外设库了,下面以一个简单的跑马灯程序说明。在日录下建立作为系统入口在下建立一个日录用来放置板级支持代码,建立代码如下:在中建立组,并将各种代码加入。在工程的选项卡的中添加选项卡中选选项卡中选选项卡选打钩,这一步大家可以根据自己手上的仿真器做不同选择。编译运行。在上的移植详解虽然目前网上凵经有不少关于在上的移植版本,包括也有官方移植版本。但这些版本具体是怎么移植出来的,又该怎么基于移植好的开发应用软件,网上介绍的并不多。这里介绍一下我的移植经历,希望对大家有所帮助。我的移植基本上是从零开始的。首先想要做好移植,有两方面的內容是必须要了解。日标芯片内核原理虽然我们移植的目标芯片是,但操作系统的移植基木是针对内核(以下简称)而言的,所以我们只需了解内核就好了。片就是内核加上各种各样的外设。怎么才能了解呢?看一本书权威指南(宋岩译,网上多的很)就好了,很多同学可能想,看完这本书移植的新鲜劲都没了,因此我把该书和移植有关的章节都刎了出来,并对其中的重点内容进行介绍,我数了数相关章节还不到页,就这点内容,总要看了吧。相关章节如下概览主要了解的概貌。刚开始看时不用追求仝部理解,后面会有详细介绍,很多内容多看几遍就明白。其中指令集,只要了解,只使用就了基础寄存器组通用寄存器堆栈寄存器有两个,和同时只能看见一个引用时,引用的是正在使用的那个可用于异常服务和应用程序只能用于应用程序系统复位后,用的堆栈指针是连接寄存器,又名,存储返冋地址程序计数寄存器,又名特殊功能寄存器程序状态字寄存器组(中断屏蔽寄存器组(控制寄存器(程序状态字寄存器组()分为应用程序中断号执行每个都是位,由于这个寄存器有效位是错开的,因此可以组合访问。中断屏蔽寄存器组(),这三个寄存器用于控制异常的使能和除能。控制寄存器()它有两个作用:定义特权级别选择当前使用哪个堆栈指针操作模式和特权极别操作模式处理者模式和线程模式异常处理:处理者模式主程序:线程模式不区分特权级和用户级,程序始终工作在特权级这两个堆栈指针的切换是全自动的,就在出入异常服务例程时由硬件处理。没什么好讲的,需要看。复位序列初值初值复位向量异常异常类型分为系统异常编号和外部中断大于优先级支持个固定的高优先级和多达级的可编程优先级。在中,每个中断都有一个优先级配置寄存器(个,用来配置该中断的优先级。但该寄冇器并不是每个位都被使用,不同制造商生产的芯片不相同,譬如使用位,也就是说支持个可编程优先级(参考注意该寄存器是以对齐的,因此每个中断的优先级配置寄存器位有效,位无效。对于优先级,又分为抢占优先级和亚优先级,中的应用程序中断及复位掉制寄存器的优先级分组描述了如何划分抢占优先级和亚优先级什么意思?以为例,优先级配置寄存器不是位有效吗,如果中的优先级分组值为,则优先级配置寄冇器的位确定抢占优先级,位确定亚优先级。此时所有中断有个抢占优先级,每个抢占优先级有个亚优先级。抢占优先级高的中断可以抢占抢占优先级低的中断,即抢占优先级决定了中断是否可以嵌套相同抢占优先级的中断不能嵌套,但当抢占优宄级相同的异常有不止一个到来时,就优先响应亚优先级最高的异常。参考附求表表中断优先级寄存器阵列共系统异常优先级寄冇器共个优先级相同,看中断号,中断号小的优先。向量表初始在处,可以通过向量表偏移量寄存器(地址:)更改,般无需更收。中断输入及挂起行为需要看。异常可不看和主要用在分特权级和用户级的操作系统,不区分特权级和用户级可以不管这个东西。这里说点题外话,一开始我很奇怪为什么会提供这种中断,因为这种中断一般都是用在大型的操作系统上,如系统上,可又不提供,应该是无法移植系统。后来我才知道是针对没有的嵌入式系统而设计的不过还是很怀疑有人会在像这种芯片上用中断主要做上下文切换,也就是任务切换,是移植过程中最重要的中断。主要有两点中断是手工往的悬起寄存器中写产生的(由写)中断优先级必须设为最低在讲移植代码时会介绍具体是如何做的。对于的部分应认真研读一下。与中断控制负责芯片的中断管理,它和内核紧密相关。如果对于中断配置不是很了解,可以看看节讲述了定时器,需要看。中断的具体行为中断/异常的响应序列当开始响应一个中断时以及入栈取向量选择堆栈指针,更新堆栈指针,更新连接寄存器,更新程序计数器对移植米说,需要注意异常返同在中,进入中断时,寄存器的值会被自动更新。节对史新后的值进行说明。这里统称。返回时通过把往里写来识别返回动作的。因为是一个特殊值,所以对于,汇编语言就不需要类似这种指令,而用语言开发时,不需要特殊编译器命令指示个函数为中断服务程序。实际上,中断服务程序如果是代码编写,汇编成汇编代码,函数结尾一般是嵌套的中断只要注意:中断嵌套不能过深即可。和这两节说明对中断的响应能力大大提高了,主要是硬件机制的改进。但对移植来说,并不需要关注异常返回值对不同状态进入中断时,寄存器的值进行说明,需要看。这里有一点需要注意,该点在讲移植代码时再介绍利对移植来说,并不需要关注。的低层编程这·章仅需关注节,因为对移植来说汇编与的接口是必须面对的。汇编与的接口有两点需要知道当主调函数需要传递参数(实参)时,它们使用。其中传递第一个,传递第个在返冋时,把返冋值写到中在函数中,用汇编写代码时,可以随便使用,而使用则必须先以上内容和移植多少都有些关系,刚开始看,可能不太明白,多看几遍就好了。

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • Qt5--登录后进入主窗口
    这是我写的博客里面的资源文件,专门用来作为下载资源链接放到博客里去的。
    2020-12-07下载
    积分:1
  • 背景差分 matlab 代码
    用前N帧背景建模,然后逐帧背景更新,适合新手学习。
    2020-11-30下载
    积分:1
  • SSD深度学习目标识别算法文件
    SSD深度学习模型,可以识别人车等15类目标。具体实现过程步骤参照本人博文
    2021-05-06下载
    积分:1
  • 流形学习算法例子
    国外专家编写的流形学习的算法代码,几乎包括所有算法,可以运行
    2021-05-06下载
    积分:1
  • 极简风格响应式html5模板自适用手机端bootstrap模板
    基于boostrap开发的可自适应手机的极简风格的前端模板,交互效果做的还可以
    2021-05-07下载
    积分:1
  • 毕业设计的论文,序,代码,外文翻译,正文,开报告,任务书,评语
    毕业设计的论文,程序,代码,外文翻译,正文,开题报告,任务书,评语
    2020-11-30下载
    积分:1
  • labwindows CVI NI培训电子档资料
    NI公司培训LabWindows课程的资料电子档,入门学习LabWindows的首选资料!
    2020-11-29下载
    积分:1
  • 基于模拟退火的神经网络算法
    将模拟退火算法应用于神经网络中,可解决神经网络算法易陷入局部极小和收敛速度慢的问题
    2020-12-02下载
    积分:1
  • ssm整合neo4j
    Spring Mvc mybatis neo4j 整合,采用最新的Spring 5.0
    2021-05-06下载
    积分:1
  • C++反汇和逆向分析技术揭秘资料合集.rar
    【实例简介】第一部分 准备工作 1 第1章 熟悉工作环境和相关工具 2 1.1调试工具Microsoft Visual C++ 6和OllyDBG 2 1.2反汇编静态分析工具IDA 5 1.3反汇编引擎的工作原理 9 1.4小结 16 第二部分 C++反汇编揭秘 17 第2章 基本数据类型的表现形式 18 2.1 整数类型 18 2.1.1 无符号整数 18 2.1.2 有符号整数 18 2.2 浮点数类型 19 2.2.1 浮点数的编码方式 20 2.2.2 浮点基本指令介绍 22 2.3 字符和字符串 26 2.3.1 字符的编码 26 2.3.2 字符串的存储方式 27 2.4 布尔类型 28 2.5 地址、指针和引用 28 2.5.1 指针和地址的区别 29 2.5.2 各类型指针的工作方式 29 2.5.3 引用 34 2.6 常量 35 2.6.1 常量的定义 36 2.6.2 #define和const的区别 36 2.7 小结 38 第3章 认识启动函数,找到用户入口 39 3.1程序的真正入口 39 3.2了解VC++6.0的启动函数 39 3.3 main函数的识别 44 3.4 小结 46 第4章 观察各种表达式的求值过程 47 4.1算术运算和赋值 47 4.1.1各种算术运算的工作形式 47 4.1.2算术结果溢出 85 4.1.3再论自增和自减 86 4.2关系运算和逻辑运算 88 4.2.1关系运算和条件跳转的对应 88 4.2.2表达式短路 89 4.2.3条件表达式 92 4.3位运算 96 4.4编译器使用的优化技巧 99 4.4.1流水线优化规则 102 4.4.2分支优化规则 105 4.4.3 cache优化规则 106 4.5一次算法逆向之旅 106 4.6 本章小结 116 第5章 流程控制语句的识别 117 5.1 if语句 117 5.2 if…else…语句 119 5.3 用if构成的多分支流程 123 5.4 switch的真相 128 5.5 难以构成跳转表的switch 139 5.6 降低判定树的高度 144 5.7 do/while/for的比较 149 5.8 编译器对循环结构的优化 156 5.9 本章小结 161 第6章 函数的工作原理 162 6.1栈帧的形成和关闭 162 6.2各种调用方式的考察 165 6.3使用ebp或esp寻址 170 6.4函数的参数 174 6.5函数的返回值 177 6.6 回顾 181 6.7 本章小结 182 第7章 变量在内存中的位置和访问方式 183 ………… 篇幅有限,部分内容省略………… 12.3 虚基类 339 12.4 菱形继承 341 12.5本章小结 349 第13章 异常处理 351 13.1异常处理的相关知识 351 13.2异常类型为基本数据类型的处理流程 358 13.3异常类型为对象的处理流程 369 13.4识别异常处理 375 13.5本章小结 389 第三部分 逆向分析技术应用 391 第14章 PEiD的工作原理分析 391 14.1 开发环境的识别 391 14.2 开发环境的伪造 401 14.3 本章小结 405 第15章 “熊猫烧香”病毒逆向分析 406 15.1 调试环境配置 406 15.2 病毒程序初步分析 407 15.3 “熊猫烧香”的启动过程分析 410 15.4 “熊猫烧香”的自我保护分析 416 15.5 “熊猫烧香”的感染过程分析 419 15.6 小结 431 第16章 分析调试器OllyDBG的工作原理 432 16.1 INT3断点 432 16.2 内存断点 437 16.3 硬件断点 443 16.4 异常处理机制 450 16.5 加载调试程序 458 16.6 小结 462 第17章 反汇编代码的重建与编译 463 17.1 重建反汇编代码 463 17.2 编译重建后的反汇编代码 466 17.3 小结 468
    2021-11-24 00:36:47下载
    积分:1
  • 696518资源总数
  • 104349会员总数
  • 32今日下载