uCOS移植uCOSII在Microblaze上的移植.docx

上传人:b****3 文档编号:2897091 上传时间:2022-11-16 格式:DOCX 页数:13 大小:131.83KB
下载 相关 举报
uCOS移植uCOSII在Microblaze上的移植.docx_第1页
第1页 / 共13页
uCOS移植uCOSII在Microblaze上的移植.docx_第2页
第2页 / 共13页
uCOS移植uCOSII在Microblaze上的移植.docx_第3页
第3页 / 共13页
uCOS移植uCOSII在Microblaze上的移植.docx_第4页
第4页 / 共13页
uCOS移植uCOSII在Microblaze上的移植.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

uCOS移植uCOSII在Microblaze上的移植.docx

《uCOS移植uCOSII在Microblaze上的移植.docx》由会员分享,可在线阅读,更多相关《uCOS移植uCOSII在Microblaze上的移植.docx(13页珍藏版)》请在冰豆网上搜索。

uCOS移植uCOSII在Microblaze上的移植.docx

uCOS移植uCOSII在Microblaze上的移植

随着集成电路设计与制造技术的发展,FPGA芯片的容量越来越大、性能越来越高,用FPGA构建片上系统成为现实,基于FPGA的嵌入式系统与SOPC(SystemOnaProgrammableChip)设计技术将逐渐成为系统设计的主流技术,正获得越来越广泛地研究。

Microblaze是Xilinx公司一款针对FPGA器件进行了优化设计的软处理器核,有不错的性能且价格低廉,且支持Xilinx全系列的FPGA器件,应该有着广阔的发展前景。

μC/OS-II是JeanLabrosse先生于1998年推出的一个优秀的开放源码的实时操作系统,具有移植方便、执行效率高、占用空间小、实时性强和可靠性高等优点。

采用μC/OS-II+Microblaze的应用平台对中小嵌入式系统应用来说是十分适合的。

本文基于μC/OS-II在Microblaze上的移植与基于该系统的应用研究,记录移植和使用过程的心得、体会,内容可能会有些零散,希望对有类似应用的朋友有些帮助,也欢迎大家来交流与讨论。

一、主要参考资料

①μC/OS-II学习主要参考邵贝贝教授译的《嵌入式实时操作系统μC/OS-II(第2版)》

下面是CHINA-PUB的介绍http:

//www.china-

网上也有该书第一版的电子书可以找来学习。

②Micrium公司的Micrium-uCOS-II-V286.ZIP,包括代码与文档,可以从

获得。

③Micrium公司的μC/OS-IIandtheXilinxMicroBlazeProcessorApplicationNote

可以从获得。

④Xilinx公司EDK相关文档:

⑤ISE、EDK软件的帮助文档,包括MicroBlazeProcessorReferenceGuide(mb_ref_guide.pdf)。

⑥EDK的基本使用可以参考:

Xilinx官方的6个EDK实验(中文版).pdf

XX文库上有

二、操作系统的配置选项问题

在进行SoftwarePlatform配置时,一般安装了EDK软件后,操作系统与库设置时可选择的标准选项只有两个:

Standalone和Xilkernel。

Standalone适合不带操作系统的应用,只提供基本的设置中断,配置Cache等功能,Xilkernel是赛灵思提供的一个嵌入式内核。

为了能在设置操作系统时可以选择μC/OS-II,根据赛灵思文档描述,EDK软件的操作系统配置选项其实是通过扫描bsp目录得到,扫描顺序是:

1.当前工作目录,即工程目录。

2.调用Libgen时用–lp选项指定的目录。

3.EDK安装目录下的EDK\sw\lib\bsp目录。

所以我们如果要在所有新建工程时都有μC/OS-II选项,可以把Micrium公司提供的移植包AN-1013.zip里的BSP目录下内容COPY到EDK安装目录下的EDK\sw\lib\bsp目录下就可。

如果仅仅是当前工程用的话,把它COPY到工程目录就可以了。

bsp目录有特定的结构,如下图示:

bsp目录下my_os指定我们用的操作系统,这里为uCOS-II_v2_86_a。

my_os目录下面的src目录包括所有的源文件和头文件,data目录包括两个文件:

mld文件和tcl文件。

mld文件用来定制操作系统的软件库与板级支持包(BSP:

Board

SupportPackages),tcl文件为产生软件库和BSP包的脚本文件。

三、Microblaze的总线接口

Microblaze处理器提供了以下的总线接口和外部进行通信

①PLB总线:

32比特版本的PLBV4.6总线可以支持多个主设备和从设备连接,提供高效率的传输性能,适合于数据传输密集性应用。

②OPB总线:

外设总线,适用于低速设备的连接。

③LMB总线:

本地存储总线,用来高速连接片内的BLOCKRAM的同步总线,使用最少数量的控制信号和在一个时钟周期内存取BLOCKRAM的简单协议。

LMB总线的读写时序和BLOCKRAM的读写时序是一样的,且所有的LMB信号是高电平有效。

④FSL总线:

快速单工链接接口,提供一种效率高、占用资源少的单向的点对点数据流传输。

最新的Microblaze7.2处理器最多支持16个FSL接口,每个FSL接口有一个输入和一个输出接口组成。

FSL总线的读写操作通过Microblaze的PUT和GET指令完成的,分为两种模式:

阻塞模式和非阻塞模式。

阻塞模式是指写操作时如fifo满或读操作时如fifo空时处理器会等待,只到fifo不满而写操作成功或fifo非空而读操作成功。

非阻塞模式读写操作不成功时处理器不会等待,但会在MSR中设置进位信号。

⑤XCL总线:

Xilinx缓存链路接口,用在需要使用外部存储时,提供一种高效和延时最小的方案,XCL接口设计为直接通过内嵌的FSL接口连接到内存控制器。

⑥Debug和Trace:

用于基于JTAG的软件调试模块DMD(

XilinxMicroprocessorDebugModule)。

对于代码量不大的应用来说,代码和数据都可以放在BLOCKRAM内而使用LMB总线比较方便,如果需要外扩存储器时,就要使用XCL总线来提供访问外部存储器的效率。

外设连接一般用到PLB或OPB或FSL总线。

像LMB,FSL总线协议是比较简单的,但使用也是比较多的,具体读写时序可以参考MicroBlazeProcessorReferenceGuide的第2章信号接口描述,而PLB总线可以参考IBM128-BitProcessorLocalBusArchitecturalSpecification(v4.6)。

在EDK\hw安装目录下的EDKIP核内有相应的IP说明文档参考。

四、系统移植与测试步骤

μC/OS-II的大部分代码是用ANSIC编写的,设计之初已经充分考虑了可移植性。

它的的硬件/软件体系结构(V2.52)如下图示:

移植过程要在硬件上增加一个操作系统定时器和软件上修改下处理器相关的几个文件就可以了。

基于Micriμm公司的AN-1013ApplicationNote,软件版本为EDK10.1,硬件平台为赛灵思的Spartan-3EStarterKit进行了移植与测试,详细步骤如下:

1.把AN-1013\edk_user_repository\Micrium\bsp、uCOS-II_v2_86_a整个文件夹拷贝到EDK安装目录如C:

\Xilinx\10.1\EDK\sw\lib\bsp下,这样我们就可以在OS&LibrarySettings选择项里选择uCOS-II了。

(可以参考第二节内容)

2.把AN-1013\MICRIUM整个文件夹拷贝C盘根目录,这是Tcl脚本产生操作系统库时默认的路径,如果放在其它目录时,必须在配制OS时的FILELOCATION指定具体位置,否则会提示很多类似下面的错误:

UnabletofinduC/OS-IIsourcefile,os_flag.c""""libgen_error"

3.用XPS(XilinxPlatformStudio)的BSP构建一个处理器系统,具体选项步骤按顺序为:

SelectBoard选择XilinxSpartan-3EStarterBoard,BoardRevision为C。

SelectProcessor选择microblaze。

ConfiguremicroblazeProcessor里LocalMemory选择16kb,其它选择默认即可。

ConfigureIOinterfaces仅选择RS232_DCE(波特率改为115200,禁止中断),DIP_Switches_4Bit,LEDs_8Bit。

按NEXT在softwaresetup里去掉peripheralselftest前的钩,其它的默认即可。

最后Generate产生处理器系统。

4.在XPS界面左边的ProjectInformationArea点IPCatalog栏,找到XPSInterrupController和XPSTimer/CounterIP,双击IP名添加到系统。

5.在XPS界面右边的SystemAssemblyView里点BusInterfaces栏,点开第4步加入的两个IP,如果没有改名默认为xps_intc_0和xps_timer_0,使SPLB信号连接到mb_plb,这样这两个IP就通过PLB总线连接到了microblaze处理器。

6.在XPS界面右边的SystemAssemblyView里点Addresses栏,为xps_intc_0和xps_timer_0,分配1K的地址空间,点击右上角的GenerateAddresses按钮选择系统自动分配基址和外设的最高地址。

7.在XPS界面右边的SystemAssemblyView里点Port栏,再点击xps_timer_0图标前的加号,在Interrupt里选择Newconnection,把Interrupt端口连接到信号线xps_timer_0_Interrupt

双击xps_timer_0图标,在弹出的IP配置窗口里的Use栏里勾选“OnlyOneTimerisPresent”。

点OK退出配置窗口。

8.再点击Port栏里microblaze_0图标前的加号,在INTERRUPT里选择Newconnection,把microblaze的中断信号线连接到microblaze_0_INTERRUPT。

9.再点击Port栏里xps_intc_0图标前的加号,在Irq里选择microblaze_0_INTERRUPT;在Intr里把xps_timer_0_Interrupt加为中断源。

10.在XPS界面选择Hardware→GenerateNetlist,调用PlatGen功能,生成硬件网表。

11.在XPS界面选择Software→SoftwarePlatformSettings,在弹出的SoftwarePlatformSettings窗口的点击左边的SoftwarePlatform,在ProcessorParameters修改CORE_CLOCK_FREQ_Hz的当前值为50MHz,在OS&LibrarySettings里OS选择uCOS-II。

点击左边的OSandLibraries,在ConfigurationforOS:

uCOS-IIv2.86.a里对uCOS-II进行配置,对配置的修改由tcl脚本相应地写到OS_CFG.H文件。

具体配置项可以参考Micrium-uCOS-II-V286\Micrium\SOFTWARE\uCOS-II\Doc里的uCOS-II-CfgMan.pdf(μC/OS-II配置手册)。

这里除把MISCELLANEOUS→OS_APP_HOOKS_EN修改为0,uC_Probe选择为false外

其它取默认值不作修改。

注意移植过程中处理器相关的几个文件的修改在文件夹

MICRIUM\Software\uCOS-II\Ports\MicroBlaze\GNU里已经有了,我们不需要改动,具体的修改内容在AN-1013Appli

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1