当前位置:文档之家› 第八章 Xilinx操作系统及库

第八章 Xilinx操作系统及库

• • • void microblaze_enable_interrupts(void) void microblaze_disable_interrupts(void) void microblaze_register_handle(XInterruptHandler Handler, void *DataPtr)
异常处理
这个功能在MicroBlaze3.0以前不可用。使用异常处理 函数,必须在源文件中包含头文件mb_interface.h。当在 MHS中正确的配置了硬件异常处理,这些函数才能正常运 行。MicroBlaze的异常处理函数有: • void microblaze_disable_exceptions(void)
第八章 Xilinx操作系统及库
何宾 2012.02
内容概述
本章主要介绍操作系统及板级支持包。该章内容主要 包括:
(1)Xilinx微核接口; (2)LibXil标准C库; (3)板级支持包; (4)Xilkernel核; (5)LibXil库。 其中重点介绍了Xilkernel核,内容包括:Xilkernel核概述、 Xilkernel构成、建立Xilkernel应用程序、Xilkernel处理模型、 Xilkernel调度模型、POSIX接口、Xilkernel API接口、存储器保护、 系统初始化、Xilkernel定制等内容。
Xilinx的微核
Xilinx的微核(Xilinx Microkernel,XMK)包含三个 不同的软件实体,通过它用户应用程序可以与标准C和 Math库,LibXil库,Xilkernel或独立运行的操作系统相 接。 标准C库由newlib和libc组成,该库包含了标准C的函 数,例如,stdio,stdlib,string例程。数学库是newlib数学 库的扩展,提供了标准的数学函数。
Xilinx的C库为MicroBlaze处理器包含下面的目标文件:
1)_exception_handler.o,_interrupt_handler.o, _program_clean.o,_program_init.o
2)默认情况下提供异常和中断句柄。 libxil.a被自动包含。
输入/输出函数
比如: setvbuf(stdout,NULL,_IONBF,0); 这些输入/输出例程要求在新一行用CR和LF结束。 除了标准的C函数,EDK处理器库提供了下面的小的I/O 函数:
1)void print(char *);(打印字符串到MSS文件中指定的标准输 出的外设) 2)void putnum(int);(转换整数到16进制的字符串,并打印字 符串到外设) 3)void xil_printf(const *char ctl1,…)(与printf函数类似,但代码 更小,不支持浮点数)
中断处理; 异常处理; 指令缓存处理; 数据缓存处理; FSL接口宏; FSL宏标志; pseudo-asm宏; PVR访问例程和宏; 文件处理; 错误码。
中断处理
使用中断处理函数,必须在源文件中包含头文件 mb_interface.h。MicroBlaze的中断管理函数有:
Xilinx的微核 -LibXil lsf
LibXil lsf是一个系统内Flash库。 支持Xilinx系统内Flash和外部的串行Flash(Atmel 的AT45XXXD,Intel的S33和ST的M25PXX)。 该库使得高层软件能和串行Flash通信。
标准C库
EDK库和设备驱动提供标准C库函数和访问外设的函 数。 EDK库由Libgen根据MSS文件为每个工程自动配置。 这些库和include文件保存在当前工程lib和include目录下。 mb-gcc的选项-l和-L用来将这些目录添加到库搜索路 径中。
使用指令缓存函数,必须在源文件中包含头文件 mb_interface.h。MicroBlaze的指令缓存处理函数有:
• • • void microblaze_enable_icache(void) void microblaze_disable_icache(void) void microblaze_init_icache_range(int cache_addr,int cache_size)
图8.1 XMK结构
Xilinx的微核
用户的应用程序通过不同的方法和XMK的不同组成部 分进行接口。 除了一些交互外,库之间是独立的。比如,Xilkernel 使用BSP。BSP和Xilinx驱动构成了对底层硬件的抽象。 XMK的库和OS依赖于标准的C库组成部分。数学库 libm.a可以用来和用户的应用程序连接。
Xilinx的微核
LibXil库由下面构成:
1)LibXil Driver-Xilinx的设备驱动程序; 2)LibXil MFS-Xilinx的存储文件系统(Memory File System, MFS); 3)LibXil Flash-并行Flash编程库; 4)LibXil lsf-串行Flash编程库;
Xilinx的微核 -板级支持包BSP
BSP是单线程库。BSP提供对硬件的小的接口。向应 用程序提供所要求的最少的功能。 BSP提供的一些典型的函数包括:
(1)设置中断 (2)系统异常 (3)配置缓存 (4)其它硬件指定的功能。
Xilinx的微核 -LibXil驱动程序
LibXil是指设备驱动程序,在软件平台中被包含用来 向系统中的外设提供接口。 这些驱动伴随EDK提供,并且被Libgen配置。 后面详细介绍设备驱动的概念和在软件平台中适配的 方法。
标准的C库(lib.a)
Lib.c目录和函数有: _ansi,fastmath.h,machine/,reent.h,stdlib.h, utime.h,_syslist.h,fcnt1.h,malloc.h,regdef.h, string.h,utmp.h,ar.h,float.h,math.h,setjmp.h,sys/, assert.h,grp.h,paths.h,signal.h,termios.h,ctype.h, ieeefp.h,process.h,stdarg.h,time.h,dirent.h,limits.h, pthread.h,stddef.h,unctrl.h,errno.h,locale.h,pwd.h, stdio.h,unistd.h
标准的C库(lib.a)
程序访问标准的C库函数,必须使用如下方式编译: 1)mb-gcc <C file>(对MicroBlaze处理器); 2)powerpc-eabi-gcc<C file>(对PowerPC处理器),访 问libm数学函数,指定lm选项;
Xilinx C库(libxil.a)
数据缓存处理
使用数据缓存函数,必须在源文件中包含头文件 mb_interface.h。MicroBlaze的数据缓存处理函数有:
(1)vቤተ መጻሕፍቲ ባይዱid microblaze_enable_dcache(void) 使能Microblaze处理器的数据缓存 (2)void microblaze_disable_dcache(void) 禁止Microblaze处理器的数据缓存 (3)void microblaze_flush_dcache() 刷新整个数据缓存,当使用回写缓存时,使用这个函数 (4)void microblaze_flush_dcache_range(unsigned int cache_addr, unsigned int cache_len) 刷新指定的数据缓存的范围
EDK库包含标准C函数用于I/O,比如printf和scanf。 这些函数代码太大,不适应嵌入式处理器的应用。这些函 数的原型在stdio.h。 注意:C标准I/O例程比如printf,scanf,vfprintf在默 认情况下是行缓冲的。将其变成无缓冲格式的,必须调用 setvbuf。
输入/输出函数
Xilinx提供独立板级支持包(Board Support Package, BSP,后来Xilinx称为Standard平台)和Xilkernel。
Xilinx的微核结构
用户应用程序
Xilkernel Xil MFS XilFlash 独立BSP C,Math和GCC库 Xilinx驱动 Xil lsf
Xilinx的微核 -LibXil MFS
LibXil MFS提供简单的存储文件系统,使得很容易通 过使用输入-输出文件来访问数据。 这个系统通过改变安装区域的源文件,很容易配置满 足工程要求。
Xilinx的微核 -LibXil Flash
LibXil Flash :提供对并行Flash的访问,这些Flash与 普通的Flash接口一致。 支持Intel和AMD的CFI (Common Flash Interface)芯片。
标准的C库(lib.a)
该库为MicroBlaze和PowerPC处理器提供了标准的C函 数。可以根据下面路径下的这些标准C函数找到头文件。 <XILINX_EDK>/gnu/<processor>/<platform>/<processorlib>/include 其中: <XILINX_EDK>为EDK的安装路径; <processor>为powerpc-eabi或microblaze; <platform>为sol,nt,lin; <processor-lib>为powerpc-eabi或microblaze-xilinx-elf;
Xilinx的微核 -Xilkernel
Xilkernel是一个简单的嵌入式处理器的核,能根据系 统进行定制。 Xilkernel有嵌入式核的那些关键的特征:
(1)多任务; (2)优先级驱动的抢先调度; (3)进程间通信; (4)同步和中断处理。
相关主题