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

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

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

代码说明:

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

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

发表评论

0 个回复

  • TMS320C6713 DSP 中断设置完整教
    关于DSP的C6000系列,特别是C6713型号,中断设置的过程,和程序实例,具有很高的参考价值。
    2020-12-02下载
    积分:1
  • C语言课件_ppt-黄维通-C语言课件_ppt-黄维通
    C语言课件_ppt-黄维通C语言课件_ppt-黄维通C语言课件_ppt-黄维通C语言课件_ppt-黄维通C语言课件_ppt-黄维通C语言课件_ppt-黄维通C语言课件_ppt-黄维通C语言课件_ppt-黄维通C语言课件_ppt-黄维通C语言课件_ppt-黄维通C语言课件_ppt-黄维通C语言课件_ppt-黄维通
    2021-05-07下载
    积分:1
  • 格雷码生成
    有普通十进制数或二进制数生成格雷码或格雷码表的c++程序
    2020-12-10下载
    积分:1
  • LabVIEW 的交通灯 
    LabVIEW做的交通灯程序,使用队的状态机和队列。
    2020-12-11下载
    积分:1
  • 同时计算关联维和Kolmogorov熵
    同时计算时间序列的关联维数及Kolmogorov熵
    2020-11-28下载
    积分:1
  • C#解线性方组源代码
    用C#实现的解线性方程组,程序用到Gauss消元法,动态添加文本框控件,并生成文本框矩阵(在此感谢CSDN网友帮我解决动态添加文本框控件这个问题)。一起上传的还有一张Gauss消元算法的PPT
    2020-12-04下载
    积分:1
  • pidnn代码,神经网网络pid控制代码
    可运行的神经元网络PID控制的matlab仿真代码
    2021-05-06下载
    积分:1
  • 通信原理MATLAB仿真实验指导书
    通信原理MATLAB仿真实验指导书V3.0最终版内容很全的实验指导书通信原理仿真实验指导书林志谋目录实验:基础实验的建模仿真实验:信道与噪声仿真实验:调制与解调仿真实验:调制与解调仿真实验调制与解调仿真实验编码与解码仿真实验:单极性码与双极性码眼图仿真实验调制与解调仿真实验调制与解调仿真实验调制与解调仿真实验:循环码的差错控制系统仿真综合实验:通信系统的仿真附录程序设计通信原理仿真实验指导书林志谋实验:基础、实验目的:.熟悉开发环境掌握矩阵、变量、表达式的各种基本运算熟悉和了解图形绘制程序编辑的基本指令;熟悉掌握利用图形编辑窗口编辑和修改图形界面,并添加图形的各种标注掌握等指令格式和语法二、实验原理:基础知识程序设计语言简介的缩写,是由公司升发的一套用科学工程计算的可视化髙性能语言,具有强大的矩阵运算能力。与大家常用的和等高级语言相比,的语法规则更简单,更贴近人的思维方方式,被称为“草稿纸式的语言”软件主要由主包、仿真系统()和工具箱()主大部分组成。界面及帮助基本界面如图所示,命令窗口包含标题栏、菜单栏、工具栏、命令行区、状态栏、垂盲和水平波动条等区域。标题栏菜单栏工具栏命令行区状态栏垂直和水平瘕动条)ATLA日? Ntt Dr ivory C MATLA86A5B=iwuEy1山具C2 dPubLe wrE田用田田3TZ doublE Wra面自172自的272 double ra9 dpublE rsa double wremn■double r电田ydoubl mri1.00000mm-0.1.0>I Workspace cuuneniDIncnpiF国]47【7.193,E,日:151117笔k【7,19B,z,B1,45图基本界面()菜单栏在主窗凵的菜单栏,共包含和个菜单项菜单项:菜单项实现有关文件的操作。通信原理仿真实验指导书林志谋菜单项:菜单项用于命令窗∏的编辑操作。菜单项:菜单项用于设置集成环境的显示方式。菜单项:菜单项用于设置的操作。菜单项:主窗口菜单栏上的菜单,只包含一个子菜单用」关闭所有打开的编辑器窗凵,包括和窗凵。菜单项菜单项用于提供帮助信息()工只栏主窗∏的工具栏共提供了个命令按钮。这些命令按钮均有对应的菜单命令,但比菜单命令使用起来更快捷、方便,()命令行区按以下顺序对输入命令进行解释:检查它是否是工作空间中的变量,实则显示变量内容检查它是否是嵌入函数,是则运行之。检查它是否是子函数。检查它是否是私有函数检查它是否是位于搜索路径范围內的函数文件或脚本文件甲有以下几种方法可获得帮助()帮助命令()是查询函数相关信息的最直接方式,信息会直接显示在命令窗中键入,会显示相关信息命令可以从键入的关键字列出所有相关的题材,和/相比覆盖范围更广,可查找到某个主题所有词组或短语。()帮助窗凵()提供与帮助命令相同的信息,但帮助窗凵界面更为方便直接。()帮助桌面()通过在命令窗口中选择帮助菜单的“选项或键入命令即可进入帮助桌面。()在线帮助页是帮助桌面的在线帮助均有相应的格式文件。网站,对于连接入的用户通过公司的网站询问有关问题。熟悉环境桌面和命令窗口、命令历史窗、帮助信息浏览器、工作空间浏览器文件和搜索路径浏览器。掌握常用命令除命令窗口中内容清除工作空间中变量对所选函数的功能、调用格式及相关函数给出说明查找具有某种功能的函数但却不知道该函数的准确名称査询工作空间中的变量信息变量与运算符变量命名规则如下()变量名可以由英语字母、数字和下划线组成()变量名应以英文字母开头()长度不大于个()区分大小写中设置了一些特殊的变量与常量,列于下表。表的特殊变量与常量变量名1功能说明变量名功能说明默认变量名,以应答最小的正实数最近一次操作运算结果通信原理仿真实验指导书林志谋或虚数单位无穷大圆周率不定值(浮点数的相对误差网数实际输入参数个数最大的正实数函数实际输出参数个数运算符,通过下面几个表来说明的各种常用运算符表算术运算符操作符功能说明操作符功能说明矩阵左除数组左除矩阵乘矩阵右除数组乘数组右除矩阵乘方矩阵转置数组乘方数组转置表关系运算符操作符功能说明等于不等于大于小于人于等于小于等于逻辑运算符逻辑运算符逻辑运算说明逻辑与逻辑或逻辑非逻辑异或表特殊运算符号功能说明示例符号功能说明例分隔行分隔列注释构成向量、矩阵调用操作系统命令构成单元数组用于赋值1的一维、二维数组的寻访通信原理仿真实验指导书林志谋表了数组访问与赋值常用的相关指令格式指令格式指令功能数组中指定行、指定列之元素组成的子数组数组中指定行对应的所有列之元素组成的了数组数组中指定列对应的所有行之元素组成的了数组数组中各列元素首尾相连组成的“维长列”了数组维长列了数组中的第个元素数组中指定行、指定列之元素组成的子数组的赋值数组仝元素赋值,保持的行宽、列长不变,、两组几素总合应相同的基本运算表两种运算指令形式和实质内涵的异同表数组运算矩阵运算指令含义含义非共轭转置共轭转置把标量赋给的每个元素标量分别与元素之和标量分别与元素之差标量分别与元素之积标量分别与每个元素之积标量分别被的元素除阵的逆乘的每个元素自乘次阵为方阵,自乘次对各元素分别求非整数幂方阵的非整数乘方对应元素相加矩阵相加对应元素相减矩阵相减对应元素相乘内维相同矩阵相乘的元素别的对应元泰除右除与上相同左除以自然数为底,分别以的元素为的矩阵指数函数指数,求幂对的各元素求对数「的矩阵对数函数对的各元素求平方根的矩阵平方根函数的常用函数表标准数组生成函数指令含义含义对角形数组(对高维不适用)生均匀分布随机数组单位数组(对高维不适用)E正态分布随机数组产生魔数组(对高维不适用)生全数组产生全数组返回指定矩阵的行数和列表数组操作函数通信原理仿真实验指导书林志谋指令含义提取对角线元素,或生成对角阵以数组“水平中线”为对称轴,交换上下对称位置上的数组儿素以数组“垂直中线”为对称轴,交换左右对称位置上的数组元素在总元素数不变的前提下,改变数组的“行数、列数”矩阵逆时针旋转度方阵的行列式值矩阵的秩三、实验内容和步骤学习使用命令例如在命令窗口输入,然后根据帮助说明,学习使用指令(其它不会用的指令依照此方法类推学习使用观察和等窗口的变化结果,执行前后有什么不同?初步程序的编写练习新建,保存(自己设定文件名,例如……),学习使用的基木运算符、数组寻访指令、标准数组生成函数和数组操作函数。注意:每一次的修改后,都要存盘。二维曲线绘图基本指令演示。指令基本操作演示问题:本例运作后,再试验观察产生图形的有什么不同,为什么?问题:本例运作后,再试验观察产生图形的有什么不同,为什么?问题:本例运作后,再试验观察产生图形的有什么不同,为什么?用图形表示连续调制波形及其包络线。通信原理仿真实验指导书林志谋0∈问题请查找的的帮助,想想怎么用行语句来代替卜面这行一句绘制标准三维曲面。函数的调用格式为:凶数的调用格式为还有一个函数,称为多峰函数,常用于三维曲面的演示。图像如下:四、实验报告要求:回答实验内容和步骤上面所有的问题。并总结本次实验遇到了哪些问题?你是怎么解决的?如何避免下次实验再遇到同样的问题?如何在帮助窗口,帮助命令,帮助演示中查找的相关命令和演示程序?软件由几部分组成?各有什么作用?通信原理仿真实验指导书林志谋实验的建模仿真、实验目的熟悉工作环境及特点.掌握线性系统仿真常用基本模块的用法掌握的建模与仿真方法二、实验原理:简介提供的用于对动态系统进行建模、仿真和分析的工具包。提供了专门用」显示输岀信号的模块,可以在仿真过程中随时观察仿真结果。同时,通过的存储模块,仿真数据可以方便地以各种形式保存到工作区或文件中,供用户在仿真结束之后对数据进行分析和处理。另外,把具有特定功能的代码组织成模块的方式,并且这些模块可以组织成具有等级结构的子系统,因此具有内在的模块化设计要求。基于上述优点,成为一种通用的仿真建模工具,)泛应用于通信仿真、数字信号处理、模糊逻辑、神经网终.机控制和虚拟现实等领域。它使用户把精力从编程转向模型的构造。随着实验的不断深入,你们会发现它为用户省去了许多重复的代码编写工作,用户就不必、步步地从最底层廾始编写。如果把动态系统建模仿真过程比作建造房子,那么用高级语言或语言编写的仿真程序的方式就如同是从一堆沙子开始造房子。这不但麻烦,而且有许多重复操作,建造者的精力会大量地浪费在一些相同地例如把沙子变成砖块的事情上,以及如何把它们组在一起变成房子这些技术性的事情.而不能把更多的精力集中用到房子的设计上,这在计算机仿真里,就等于是把精力厦多地投入到某一个具体的算法的设计上,而不是用到模型的设计构造本身,的目的就是让用户能化更多的精力投入到模型设计本身。它首先提供了些基本模块,这些模块就放在上面的库浏览器里.用户可以调用这些模块,而不必再从最基△的做起的每个模块对用户而言都是透明的,用户只需知道模块的输入输出以及模块旳功能,而不必管模块内部是怎么实现。于是,留给用户的事情就是如何连接这些模块来完成自的仿真任务。连接的方式在里是很简单的,例如要连接两个摸块只需要将一个模块的输入和另一个模块的输岀用一根直线连起米就行了。模型构造好之后,用户可以进行仿真、等待结果、或者改变参数,再运行。至于像各个模块在运行时如何执行,时间是如何采样离散系统,事件足如何驱动等等细节性问题,用户可以根木不用去关心,都替你做好了。总之,把那些最没有意思、最烦人的细节都屏蔽掉了,而留绐用户的是一个友好的环境,让用户以最轻松、最有效的万式完成他们感兴趣的东西。启动的方法有很多种,按照的传统方式,只要在的命令窗口中键入:个称为的窗口就会弹出,如下图所示:
    2020-12-09下载
    积分:1
  • 51单片机的OV7670摄像头驱动
    利用STC12C5A驱动OV7670摄像头,在9325彩屏液晶上显示。
    2020-12-05下载
    积分:1
  • MATLAB模拟MZM实现OOK和BPSK
    MATLAB模拟MZM实现OOK和BPSK,可修改为自己需要的高阶调制方式,内有产生的信号的图形(包含幅度和相位信息)和眼图
    2020-12-04下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载