实操性最强uCOSII移植到STM32上的详细步骤_第1页
实操性最强uCOSII移植到STM32上的详细步骤_第2页
实操性最强uCOSII移植到STM32上的详细步骤_第3页
实操性最强uCOSII移植到STM32上的详细步骤_第4页
实操性最强uCOSII移植到STM32上的详细步骤_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

序言:说点空话,网上有好多对于uCOS-ii移植的文章,好多都是千篇一律,理论性很强,剖析了一大堆虚头巴脑的东西,真想问他们,你确立你剖析的这些东西是需要你做的工作吗?实操性严重短缺。。。这方面我也走了好多弯路,下边就将自己的移植过程一步步的记录下来,也给大家做做参照。第一,简单总结一下移植的大体过程:(1)去uC/OS-ii官网下载你要移植芯片CPU的有关事例,不必定完整对应,那就找相应系列吧。(2)编程环境一般有两种,分别是IAR和MDK,这个依据你自己的编程环境进行下载。(3)本事例需要将uC/OS-II移植到STM32F103ZET6上,而我使用的编程环境是MDK,很遗憾,官网上供给的事例是鉴于IAR的,因此要鉴于IAR的事例进行改正。(4)使用MDK创立一个无操作系统的最简单程序,保证这个程序能够使用,这样做的目的是为了一步步的排查错误,假如无操作系统时,都有错误,移植过程中也必定会有编译错误,那么在排查错误的时候也就增添了难度,不会写物操作系统的简单程序怎么办。。。那就不要往下看了。(5)移植的最大的变动主要有两部分,一个是一些头文件的增减,此外一个就是向量表中PendSV_Handler和SysTick_Handler的改正。这里我要吐槽一下,网上说了一大堆对于什么的改正还有各样函数的的剖析,这都是扯淡。。。这些根本就不用移植者去改正,官网供给的事例都已经供给了,除非你选择移植的CPU是比较偏的,那么这些东西需要移植者自己去编写。好了,下边就开始详尽的记录怎么去移植。一、创立一个无操作系统的简单裸板系统1.创立源文件工程文件夹,以下列图所示:此中文件夹“CMSIS”为内核的接口,包含的文件以下图文件夹STM32_StdPeriph为固件驱动文件夹,这个把STM32的固件全都增添进去即可。文件夹User为其余文件,以下列图所示:文件夹Output和List主假如放那些编译产生的乱七八糟的文件,为了使工程代码更为简短。使用MDK创立无操作系统工程项目,这一点就不一一说了,将创立后的工程项目文件树截图以下:这个时候还没有main文件,那么创立一个文档即可,这里需要注意,创立后,要将其增添到项目中才行,而不是简单的保留。以下列图所示:、注意:中要有一个mian函数,不然编译器会报错提示你的。而后就是项目的配置,这个仍是很重要的,下边分别说需要配置的地方:1)Output选项以下:这里面勾选了CreateHEXFile选项,同时将项目输出放到了以前创立的Output文件夹。2)List选项,将List产生的文件放入到以前创立的List文件夹中。3)C/C++配置选项以下:此中Define选项中,填入:USE_STDPERIPH_DRIVER,STM32F10X,_HD这是告诉编译器,使用标准外设,还有选择的CPU种类,此中CPU类型需要依据你选择移植的CPU进行适合的改正。IncludePaths是要包含的头文件路径,这个为了保险,将项目中的全部有.h的文件的文件夹都包含进去就能够了。选项以下:我使用的是Jlink进行烧写调试,因此选择了以下图,还要进行settings,以下:这里要勾选“ResetandRun”,这样做的目的是,每当烧写下载后,CPU进行复位并运转。选项设置以下所示:至此,配置完成,编译一下,没有错误,创立一个简单的点亮LED程序,考证一下即可。备注说明:假如依据这个步骤操作,编译,假如出现一些简单的错误,比方没有main函数,没有发现某个头文件,那么依据提示解决即可,可是假如发现了好多怪怪的编译错误,比方说不决义u32,u8这些符号时,那就要注意一下了,有可能是MDK版本的问题,我在使用MDK低版本的时候,发现有问题,而使用高版本的时候就没问题了,因此需要注意一下。二、移植uC/OS-ii到STM32F10X上第一在官网上下载鉴于STM32的移植工程事例,里面的移植文档AN-1018中是作者写的移植文档,说的很详尽,想要移植的话,多看看这个文档。此中有张图,特别重要,其实就是告诉了移植者要做的工作,以下列图所示:这个图表达了什么信息呢,其实就是告诉移植者需要将那些文件移植到你的工程中间,第一是uC/OS-ii的源文件,就是、.....这些文件,实际上是uC/OS-ii的Port文件,包含4个,分别是,,,,还有是用户应用程序里的包含文件,这个里面不可以照搬,选择使用两个文件,分别为和,其余三个,能够自己编写,为何不套用此外那三个呢,主假如由于那三个文件是针对官方开发板创立的任务,里面包含的信息量太大,编译的时候,必定会有大批的错误(由于我们是向来到我们自己的板子),因此最好自己写最简单的,至于怎么写,后边再详细说,能够先建2个空文件,分别是和,这两个文件的含义很简单,APP是自己的应用程序C文件,是对我们自己的应用程序做的配置文件,看到这里可能会有个疑问,文件怎么办理呢,答案是舍弃,由于官方供给的事例是自己写启动文件,文件是向量表,我们使用的是STM32固件库里的启动代码,因此就不用使用了。BSP部分有两个文件和,这个也建议直接舍弃,这个是官方文档中针对他们的的开发板写的一些基层的设施驱动,我们自己的开发板跟他们的不一样,因此根本就没必需要,至此,将刚才剖析的这些一定的文件加入到上边创立的无操作系统裸板程序中,进行编译。必定会有好多错误,下边我们就一一的改正这些错误。增添到项目后的文件树,以下列图所示:需要注意的是,这此中的和是自己创立的空的文件,而不是使用官网事例里供给的,假如非要使用官网里面的,那么只好不断的改正此中的错误啦。下边就是要改正错误的过程了。改正这个是配置uCOS-ii系统功能的头文件,依据自己的需要进行裁剪任务吧,我只做了一个改正,就是,禁用钩子函数,这是为了防备出现那些所谓的文档中剖析的要写的那几个钩子函数出现错误,禁用钩子函数了,也就不用写钩子函数了,其余的依据自己需要裁汰吧。文件的改正第一是改正为这样改正的目的,是由于MDK编程环境不认识PUBLIC,要用EXPORT.其次是改正:为:这个也是由于编程环境的问题。改正改正:为:,原由也是编程环境的问题。改正启动代码这个步骤是移植的核心:上边说的其余的改正,都是一些隶属的格式方面的改正,而启动代码的改正才是移植的核心,这里简单的剖析2个问题,一是,什么叫移植,二是移植的操作系统怎样能够被我们的工程所应用。所谓移植,打一个适合的比喻——器官移植,就是将A的器官移植到B身上,使A的器官能够为B所用。因此移植绝对不是简单的“复制”,不单要放到你的工程项目中,更重要的是要能够和你的项目成立联系。那么uCOS-ii怎么跟STM32成立联系呢?uCOS-ii的核心作用就是任务调动,要使用STM32的一个特别中止——PendSV,就是可挂起系统任务中止,经过该中止进行系统的调动。还有就是uCOS-ii需要一个基准时间,那么STM32中有一个专用的准时器,嘀嗒准时器SysTick,这个准时器,就是专为操作系统而设计的,经过这个滴答准时器给uCOS-ii供给一个时间基准,每隔固定的时间出发一个PendSV中止,进行任务的调动。因此呢,在官方事例的移植文档AN-1018中也特别提到这一点,要将启动代码中全部“PendSV_Handler”和“SysTick_Handler”,替代成“OS_CPU_PendSVHandler”和“OS_CPU_SysTickHandler”,这样就相当于将uCOS-ii的“神经”跟你的项目的“神经”搭在了一同。此时编译,发现还有一个错误:在uCOS-ii源码中查找OS_TASK_TMR_PRIO定义,本来这个定义在源码文件中,以下所示:比葫芦画瓢,复制到自己创立的那个空白中。而后编译,发现已经还有的错误就是在中,说没有包含一些的头文件,这个把中对应错误的那些包含头文件代码删掉即可,这是由于我们没有完整的使用官方事例中的全部文件。至此移植的改正工作告一段落,已经达成。创立任务,考证移植成效。这个能够参照源代码中进行创立任务,在中编写各个任务的配置文件,这里需要注意的是,我们以前创立的裸板中已经有文件,其中已经有函数,因此我们在中就不用再创立main函数了,直接在main函数中初始化uCOS-ii,而后创立一个任务,或许调用一个函数,在这个任务或许函数中再创立需要的几个任务即可。案比以下列图所示:此中需要注意的是,在创立的第一个任务里,必定要先初始化嘀嗒定时器,这个是模仿官方事例中的代码格式写的,直接使用OS_CPU_SysTickInit(),可能在编译的时候,会发现这个嘀嗒准时器初始化启动函数有报错,这个一般

温馨提示

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

评论

0/150

提交评论