μCOSII在DSPFlash存储器中运行关键问题_第1页
μCOSII在DSPFlash存储器中运行关键问题_第2页
μCOSII在DSPFlash存储器中运行关键问题_第3页
μCOSII在DSPFlash存储器中运行关键问题_第4页
μCOSII在DSPFlash存储器中运行关键问题_第5页
全文预览已结束

下载本文档

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

文档简介

μC/OS-II在DSPFlash储存器中运转的要点问题朱爱军,戴群亮(1.桂林电子科技大学电子工程学院,广西壮族自治区桂林市541004;2.广西柳工机械股份有限企业,广西壮族自治区柳州市545007)0引言在作为国家863计划子项目发掘机智能化控制系统的开发中,出现了智能化发掘机轨迹控制系统不依据早先设定好的轨迹运转和嵌入式及时多任务操作系统μC/OS-Ⅱ调动杂乱等失控问题。该智能化系统中采纳了μC/OS-Ⅱ,经过位移传感器及时收集发掘机的铲斗、斗杆和动臂等3路角度信号,经过朱爱军,戴群亮(1.桂林电子科技大学电子工程学院,广西壮族自治区桂林市541004;2.广西柳工机械股份有限企业,广西壮族自治区柳州市545007)前言在作为国家863计划子项目发掘机智能化控制系统的开发中,出现了智能化发掘机轨迹控制系统不依据早先设定好的轨迹运转和嵌入式及时多任务操作系统C/OS-Ⅱ调动杂乱等失控问题。该智能化系统中采纳了μC/OS-Ⅱ,经过位移传感器及时收集发掘机的铲斗、斗杆和动臂等3路角度信号,经过算法例划路径驱动液压比率阀实现平行推动、铲斗发掘等典型作业。本文主要针对课题碰到的问题,要点论述μC/OS-Ⅱ在芯片内Flash储存器运转时要点问题的剖析与解决方法。1μC/OS-Ⅱ在Flash储存器中的运转1.1μC/OS-Ⅱ的特色与功能C/OS-Ⅱ是一个及时多任务的嵌入式操作系统,它采纳可剥夺型内核。全部的任务都有优先级,多任务之间优先级高的能够中止履行中的低优先级任务而优先履行。它的特色主要有:公然源代码、可移植性、可固化、可裁汰、支持多任务、拥有可确立性等。μC/OS-Ⅱ是鉴于优先级抢占式的及时多任务操作系统,包括了及时内核、任务管理、时间管理、任务间通讯同步(信号量、邮箱、信息行列)和内存管理等功能。1.2要点问题在达成了智能控制软件后,就是将之嵌入到μC/OS-Ⅱ系统中。碰到的主要问题是移植好的μC/OS-Ⅱ源代码在闻亭的目标板上在线仿真时,把.out文件下载到RAM中能正常履行,可是用CCS烧写到Flash储存器中就不可以正常履行,出现智能化发掘机轨迹控制系统不依据早先设定好的轨迹运转和μC/OS-Ⅱ及时多任务调动杂乱等失控问题,特别是在课题的后期查收阶段问题尤其棘手。1.3原由剖析程序固化的要点问题是怎样在程序储存器中分派储存空间给常量和用const要点字定义的静态、全局变量。经过认真研究,发现与TI的C编译器功能有关。CCS的编译器依据标准C,没有对FlashROM中常数数据进行直接接见的功能。所以一定让const段的常量数据在RAM中。实现这一条件的方法有3种:方法1:解决μC/OS-Ⅱ在Flash中运转的方法,采纳去除const要点字,在程序中赋初值使用,并且需要在.cmd文件中将.cinit段分派到程序区Flash储存空间,而后在编译器的编译选项中选中“-C”,即ROM初始化(C编译器默认就是这样的)。方法2:不对定义作改正,.const段保存在Flash储存器中,数据不向数据储存器挪动,程序运转时直接在程序储存空间中接见这些量。因为c语言缺少接见程序区数据的有效手段,所以这些语句只好使用汇编语言编写。因为在每一处接见这些常量时都一定使用这些语句,所以这样编写程序变动量较大。方法3:不需要改正常量定义,也不用编写特意的程序,主要的工作是改正.cmd文件并对工程中使用的库文件作简单的改正,改正工作量小并且集中,极大地方便了程序的编写。较以前两种方法,这类方法运用起来要方便得多。要点问题的解决与实现以下分别介绍方法1和方法3的详细实现。2.1方法1解决μC/OS-Ⅱ在Flash储存器中运转的方法,即去除const要点字,在程序中赋初值使用,以μC/OS-Ⅱ的改正为例:问题的发现C/OS-Ⅱ的程序烧写到Flash中的问题,刚开始思疑是分派储存器的cmd文件有问题,而后有关的又想到程序的大小问题,特别是在咨询闻亭的技术人员见告大于1kB的程序要分开烧后,甚至思疑闻亭的仿真器和开发板。此后实验使用合众达的板子是相同的成效,并且发现不带μC/OS的大小程序都能正常履行,基本清除了程序大小的问题以及硬件问题。此后经过对μC/OS系统任务调动前加LED函数,发现:直到多任务调动前都能正常履行,开始多任务调度后就出了问题。到这里确立问题出在μC/OS-Ⅱ上,可是μC/OS-Ⅱ的移植是其余人员做的,其余自己没有做过严格测试,也没有烧到Flash储存器中运行过,对整个课题产生致命的影响。最后课题组剖析了程序在Flash储存器中运转与在RAM中运转的实质差别,提出一个重要的建议:可能有系统需要的常量定义在扩展RAM区了,当掉电后,RAM区的内容没有了,常量也就没有了,影响了系统的运转。经过查察工程的cmd文件和编译输出的map文件,发现的确有系统内核的常量放在8000h此后的扩展RAM区。见下边map文件引用:而后在OS_CORE.C中找到了常量的地点,分别是掩码表:INT8UconstOSMapTbl[]和任务优先级判断表:INT8UconstOSUnMapTbl[]经过实验发现,烧写程序到Flash储存器中以后,假如不关电源,而直接拔掉USB,从Flash储存器指引,复位后程序能正常履行,可是关电后就不可以了。经查察,Flash储存器烧写过程是先将程序装载到RAM,再搬移到Flash储存器中,所以不掉电全部程序都在RAM中有保存,可是程序确能从Flash储存器指引。这样,就确立了的确是这些常量放在RAM中惹起的。可是其实不像开始想象的那样,把常量直接定义在Flash储存器区就能解决,但能够经过程序赋值来初始化这些常量,而不经过编译来初始化,这是一个不必定最好但很有效的办法。改正方法依据上边的思路,对μC/OS作了以下3处改正:a)OS_CORE.C文件中上边两个数组的上边的初始化定义改为下边两个初始化函数:对μC/OS-Ⅱ.H函数进行改正:将外面变量弓用的定义在主程序的main( )函数中的多任务调动函数履行前调用前面的两个初始化函数,以下:此方法用一句话总结,就是将常量定义成变量,以赋值语句的方式初始化到RAM中。2.2方法3:改正数据段的定位方式和库函数这类方式除了要改正.const段的装载地点和运转地点外,还要对CCS自带的初始化函数进行改正。可是这类方法是一劳久逸的。对.const段的改正以下:即采纳了装载地点与运转地点分别的方式,将.const载入ROM段,而运转时在RAM区。为了使程序正常运转,在初始化时,需要将.const段的内容从装载地点拷贝到运转地点内。这段程序能够在编译时由编译器自动生成。这还需要对软件所使用的库文件作简单的改正。该库名称即是rts.lib(表示不一样种类的DSP,有2xx、25、50等)。改正该库的方法是将源文件从库中提拿出来进行改正,编译后再代替原有的文件。详细操作以下:将库函数rts2xx.lib、源文件rts.src、两个工具函数dspar.exe和dspa.exe找到,放在赞同个目录下,翻开ms_dos命令窗。履行DOS命令:这句的功能是从rts.src文件中提拿出boot.asm文件。这个rts.src即是rts.lib的源文件。在boot.asm文件中能找到CONST_COPY这个标记量,为了实现所需要的功能,它应被赋值为1。对boot.asm文件的编写达成以后,就能够将其编译生成目标文件,履行语句:此中关于不一样的DSP需要使用不一样的参数,关于240xA来说,应当使用2xx来取代“”。语句履行完后会生成boot.obj文件。再履行语句:这时它就代替了库里的同名文件。在编译时编译器就会自动增添拷贝.const段到数据空间的语句。这类方法不用改正程序,代价是牺牲了必定的数据储存空间,时间开支主要出此刻初始化中。这应当是最经济适用的方法。结束语对常量办理的3种方法中,第方法1和方法3相对较简单实现。此中方法1对于自己编写的少许代码改正起来比较方便,可是假如碰到库函数顶用到.const的状况,就需要像第方法3相同提取库函数中的代码,来改正这个库函数,在发掘机轨迹控制程序顶用到atan函数就是这类状况。这类做法对每个这样的函数都要履行相同的操作,明显不是最正确解决方法。方法3固然一定改正cmd文件和库文件,可是它

温馨提示

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

评论

0/150

提交评论