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

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

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

代码说明:

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

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

发表评论

0 个回复

  • 电力电子系统的PSIM+MATLAB联合仿真方法
    【实例简介】电力电子系统的PSIM+MATLAB联合仿真方法 电力电子系统的PSIM+MATLAB联合仿真方法
    2021-11-15 00:31:20下载
    积分:1
  • IOI2014解报告
    信息学奥赛的重要资料。对于爱好信息学奥赛的青少年而言,此报告十分难得。Chapter 1Day 11.1 Day 1 rail11.1题目大意有两条平行的单向铁路(上方的从右到左,下方的从左到右),分为m段有η个车站,每个车站为C类型(只能从上往下)或D类型(只能从下往上),分布在某些段中,每个段最多一个车站。已知0号车站是C类型,并给出0号车站的位置,最多可以询问两车站之间的距离3(n-1)次(距离指经过段与段连接处的次数,例如上图0号车站到2号车站的距离为5),要求确定每个车站的位置和类型。保证车站两两可达11.2算法讨论先询问得到0号车站到其他车站的距离,而最近的一个,就是0号车站右侧第一个D类型的(称之为j号车站)然后询问得到号车站到其他车站的距离,其中最近的一个,可能是0号车站,也可能是其他车站(都称之为k号车站),显然和k之间不会冉有其他车IOI2014解题报告Day 1 Wall站,而0和k之间也不会有其他的D类型的车站,所有k号车站到其他车站的距离可直接算出有了和k到其他车站的距离,那就可以轻松分出左右了(离j号近,就在k的左侧,否则在j的右侧)。但分出左右后还是不能确定具体位置,而这时对于每个车站我们还留下次询问的机会。接下来称当前车站为号车站而这次询问一定是留给特殊位置的车站,假设当前车站在左侧,则考虑当前确定的最左侧的车站(称之为L号)。按离(或k)号车站的距离从近到远的顺序处理剩下的车站,那么只有这两和情况:L k j以及(注意下面这种L和之间还会有C类型的车站)L i k两者都会有以下关系式:dst(j,L)+|0s;-pos|=dist(j.)+x(x≥0)第一种情况多出来的是L到它右侧第一个D类型车站的距离×2,而第二种情况多出来的是L到它右侧第一个C类型车站的距离×2。所以,算出x之后,只要到L右侧的c/2的距离处看下车站的类型就可以确定位置了。这样问题就解决了如果当前车站在右侧,那么询问与已确定的最右侧车站的距离,类似讨论即可。1.2 Day 1 Wall21题目大意维护一个长度为的整数序列,一开始每个元素均为0,支持以下两种操作将连续一段中小于k的元素修改为k将连续段中大于k的元素修改为k问所有m个操作进行完之后序列各元素的值。3IOI2014解题报告Day 1 Game1.22算法讨论不难发现对某一个元素的操作是可加的,即说对于某一个元素来说,应用在其上的每一个操作可以都表示为“如果它的初值小于L,那么最终它等于l;如果它的初值大于γ,那么最终它等于η;否则它最终等于初值”这样的形式,并且多个这样的形式是可以合并的。于是我们可以把每个操作都看成一个值,这样原问题就转化成“维护一个序列,每次对一段区间加上一个值,问最后每个元素的值”。这是可以用带标记的线段树直接维护的。该算法的时间复杂度为O(m+ m log n)对于“维护一个序列,每次对一段区间加上一个值,问最后每个元素的值”这个问题,我们也可以使用扫描线进行维护。但本题中的值是不可减也不满足交换律的,因此在扫描过程中我们需要使用一个线段树来维护覆盖到当前点的值并将它们按时间顺序依次求和。该算法的时间复杂度为O(m+ m log m)1.3 Day 1 game131题目大意有一张n个点的无向图,小B每次会询问某两个点之间是否有边相连,小A每次回答yes或no。如果在小B把所有(条边间完之前,小B就能确定这整张图是否联選,小A就输了。现在让你当小A,依次对每个询问回答yes或no求一种获胜方案。1
    2020-12-09下载
    积分:1
  • 电力负荷预测数据
    电力负荷数据,https://blog.csdn.net/ACBattle/article/details/85307422
    2020-12-11下载
    积分:1
  • CH341/CH340 Win10串口驱动工具
    CH341驱动Win7,Win8,Win10.rar USB转串口CH341/CH340的WINDOWS驱动程序安装包 支持WINDOWS 98/ME/2000/XP/Server 2003/VISTA/ Server 2008/Win7/Win8/Win10 32位/64位,通过微软数字签名认证, 在计算机端将USB设备仿真为标准Serial串口设备COM? 包含识别CH34X串口号及监视CH34X设备插拔的库
    2019-10-12下载
    积分:1
  • 基于最小二乘法的椭圆拟合
    基于最小二乘法的椭圆拟合程序,参考文献:基于椭圆拟合的人工标志中心定位方法
    2020-12-04下载
    积分:1
  • 色调,饱和度,亮度图,matlab
    自己编写的代码。matlab,简单实用。并做了注释
    2020-12-05下载
    积分:1
  • ISAR成像(含外场数据)
    逆合成孔径是指雷达天线不动,被观测目标移动,对移动中的目标回波进行相干处理获得大的合成孔径,从而得到高方位尺寸分辨率。逆合成孔径的基础是转台成象。
    2020-12-10下载
    积分:1
  • DIGSILENT双馈风机PDF
    本教程用于基于DIGSILENT的双馈风机接入仿真,对风机模型进行了详细介绍
    2020-12-08下载
    积分:1
  • glibc-2.3.4-2.41
    此包用于安装oracle使用,解决字节码编译问题,适用于Oracle11G
    2020-12-07下载
    积分:1
  • NTRIP 协议
    Ntrip协议 NTRIP是在互联网上进行RTK数据传输的协议。所有的 RTK数据格式(NCT,RTCM,CMR,CMR+等等)都能被传输。
    2020-12-05下载
    积分:1
  • 696518资源总数
  • 104226会员总数
  • 29今日下载