集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1330|回复: 1

EDK的文件管理架构

[复制链接]
小舍YZ 发表于 2017-7-8 11:50:29 | 显示全部楼层 |阅读模式
EDK的文件管理架构

对于嵌入式应用来讲,软、硬件协同开发是非常重要的,虽然EDK提供了XPS工具和SDK工具这两个图形化平台,但仍以文件结构管理为基础,图形化平台只是方便用户操作的,所有的设置内容都会写入相应的文件中。了解相应格式的文件是掌握EDK工具操作的必备知识。本节将介绍EDK构建嵌入式系统软、硬件系统的文件,以及管理、存储数据文件的模式和流程。

1.板级支持包Board Support Package(BSP)

BSP为每个处理器定义了系统的硬件元素。它包括了不同的嵌入式软件元素,如软件驱动文件、所选的库、标准I/O设备、中断处理程序以及其它相关的特征。因此,在将处理器、外围设备组装到硬件系统上,且定义了地址映射后,可以利用XPS来产生BSP。

与硬件组件类似,XPS允许用户规定软件平台部分并管理软件应用。XPS的应用标签包含了用户所需要的工具和命令。

2.XMP工程文件

EDK设计的工程文件就是.xmp格式,定义了EDK工具的版本、相关的硬件配置文件(MHS)和软件配置文件(MSS)、目标器件的类型、软件的源码和库位置等信息。用UltraEditor等文本编辑工具可打开查看,ProgStart为程序的起始位置,对应着内存的起始地址;StackSize标志着堆栈信息。与MSS中的信息是一致的。总的来讲,XMP文件是由XPS软件自动生成的,用户一般不要自行修改。下面通过在实际的XMP文件中添加注释来解读XMP文件。

#Please do not modify this file by hand
XmpVersion: 9.1                           #EDK版本
VerMgmt: 9.1
IntStyle: default
MHS File: system.mhs
MSS File: system.mss
NPL File: projnav/system.ise
Architecture: virtex2p                   #目标器件家族
Device: xc2vp30                           #目标器件型号
Package: ff896                             #目标器件封装
SpeedGrade: -7                           #目标器件速度等级
UseProjNav: 0
PNImportBitFile: projnav/system.bit
PNImportBmmFile: implementation/system_bd.bmm
UserCmd1:
UserCmd1Type: 0
UserCmd2:
UserCmd2Type: 0
TopInst: system_i
GenSimTB: 0
InsertNoPads: 0
WarnForEAArch: 1
HdlLang: VHDL                             #所使用的HDL语言类型
Simulator: mti                                #仿真工具为ModelSim
SimModel: BEHAVIORAL            #仿真模型为功能仿真模型
MixLangSim: 1
UcfFile: data/system.ucf
FpgaImpMode: 0
ShowLicenseDialog: 1
Processor: ppc405_0                   #处理器类型为硬核PowerPC
BootLoop: 0
XmdStub: 0
Processor: ppc405_1
BootLoop: 0
XmdStub: 0
SwProj: config_decoder_revb
Processor: ppc405_0                    #下面是各类文件的说明
Executable: config_decoder_revb/executable.elf
Source: config_decoder_revb/src/xi2c_l.c
Source: config_decoder_revb/src p_config_decoder.c
Source: config_decoder_revb/src/uart.c
Header: config_decoder_revb/src/xi2c_l.h
Header: config_decoder_revb/src/uart.h
DefaultInit: executable
InitBram: 1
Active: 1
CompilerOptLevel: 2
GlobPtrOpt: 0
DebugSym: 1
ProfileFlag: 0
ProgStart: 0X45000000                #程序起始地址
StackSize:                                       #堆的大小
HeapSize:                                       #栈的大小
LinkerScript:
ProgCCFlags:
CompileInXps: 1
NonXpsApp: 0
3.MHS文件和其他相关的硬件平台元素

MHS文件是硬件结构描述文件,定义了系统结构、外围设备和嵌入式处理器,也定义系统的连通性、系统中每个外围设备的地址分配和对每个外围设备的可配选项。该文件可随意更改,在图形界面中对硬件结构的任何改动,都要写入该文件中。同样,对于高级用户,可通过直接修改MHS文件来代替XPS中的图形操作。MHS文件严格按照分层设计的思想,每个硬件模块都是一个独立的组件,再通过上层模块连接起来,形成整个系统。下面通过在实际的MHS文件中添加注释来解读MHS文件。
PARAMETER VERSION = 2.1.0 #定义了参数集版本
PORT sys_clk_pin = dcm_clk_s, CLK_FREQ = 50000000, DIR = I, SIGIS = CLK
#定义了系统时钟,大小为50MHz,方向为输入,标记为时钟信号
PORT sys_rst_pin = sys_rst_s, DIR = I, RST_POLARITY = 1, SIGIS = RST
PORT sg2fsl_r = xlsg_ifacesg2fsl_r, DIR = I
PORT fsl2sg_ctrl = xlsg_ifacefsl2sg_ctrl, DIR = O
PORT fsl2sg_data = xlsg_ifacefsl2sg_data, DIR = O, VEC = [0:31]
PORT fsl2sg_exists = xlsg_ifacefsl2sg_exists, DIR = O
PORT sg2fsl_ctrl = xlsg_ifacesg2fsl_ctrl, DIR = I
PORT sg2fsl_data = xlsg_ifacesg2fsl_data, DIR = I, VEC = [0:31]
PORT sg2fsl_w = xlsg_ifacesg2fsl_w, DIR = I
PORT fsl2sg_full = xlsg_ifacefsl2sg_full, DIR = O
#子模块定义,以BEGIN和END定义段
BEGIN microblaze #定义名称
PARAMETER INSTANCE = microblaze_0 #定义例化名称
PARAMETER HW_VER = 6.00.a #定义软件版本
PARAMETER C_USE_FPU = 0
PARAMETER C_DEBUG_ENABLED = 1
PARAMETER C_NUMBER_OF_PC_BRK = 2
PARAMETER C_AREA_OPTIMIZED = 1
PARAMETER C_FSL_LINKS = 1
#下面开始全是端口信号
BUS_INTERFACE DLMB = dlmb
BUS_INTERFACE ILMB = ilmb
BUS_INTERFACE DOPB = mb_opb
BUS_INTERFACE IOPB = mb_opb
BUS_INTERFACE SFSL0 = xlsysgenfsl_v20_1
BUS_INTERFACE MFSL0 = xlsysgenfsl_v20_0
PORT DBG_CAPTURE = DBG_CAPTURE_s
PORT DBG_CLK = DBG_CLK_s
PORT DBG_REG_EN = DBG_REG_EN_s
PORT DBG_TDI = DBG_TDI_s
PORT DBG_TDO = DBG_TDO_s
PORT DBG_UPDATE = DBG_UPDATE_s
END
……
4.MSS文件和其它的软件平台元素

除了硬件部分利用MHS文件来描述硬件元素, XPS还利用了微处理器软件规范(MSS)文件进行一个类似的软件系统描述。此MSS文件和用户的软件应用一起,组成了描述嵌入式系统软件部分的主要源文件。利用这些文件以及EDK的库和驱动器,XPS就可以编译用户的应用程序。而编译后的软件程序生成为可执行可链接格式(ELF)的文件。

和MHS文件一样,高级用户也可通过直接修改MSS文件达到更改软件配置的目的。下面通过在实际的MSS文件中添加注释来解读MSS文件。

PARAMETER VERSION = 2.2.0                           #定义参数版本

BEGIN OS                                 #定义了操作系统,以BEGIN和END定义段
PARAMETER OS_NAME = standalone
PARAMETER OS_VER = 1.00.a
PARAMETER PROC_INSTANCE = microblaze_0
PARAMETER STDIN = RS232_DCE
PARAMETER STDOUT = RS232_DCE
END

BEGIN PROCESSOR            #定义处理器类型,以BEGIN和END定义段
PARAMETER DRIVER_NAME = cpu
PARAMETER DRIVER_VER = 1.01.a
PARAMETER HW_INSTANCE = microblaze_0
PARAMETER COMPILER = mb-gcc
PARAMETER ARCHIVER = mb-ar
PARAMETER XMDSTUB_PERIPHERAL = debug_module
END

BEGIN DRIVER                      #定义驱动,以BEGIN和END定义段
PARAMETER DRIVER_NAME = uartlite
PARAMETER DRIVER_VER = 1.01.a
PARAMETER HW_INSTANCE = debug_module
END
……
5.UCF文件

EDK工具和ISE一样,都通过UCF文件来添加信号的管脚约束与时序约束。在EDK设计中,UCF文件用来指定管脚的功能是最常用的,可通过文本编辑器修改,相关的语法和ISE中是一致的,如4.4.2节所示。

6.CMD文件

EDK在配置FPGA时仍通过调用iMPACT软件来完成的,但没有相应的图形化界面,而是通过命令行的方式实现的,将所需要的命令写在同一个文本中,然后采用批处理的方式实现,该文件就是.CMD 文件。CMD文件可通过文本编辑器修改,其基本内容如下所示。

setMode -bscan
setCable -p auto
identify
assignfile -p 1 -file implementation/download.bit
program -p 1
quit

其中,setMode用于设定边界扫描模式;setCable用于设置编程电缆类型;assignfile用于指定编程使用的比特流文件;program为器件编程的指令;quit为退出命令。

一般来讲,CMD文件中修改最多的是assignfile指令和program指令,其后面的数字为器件在JTAG链上的位置。在实际中,设计人员要首先通过iMPACT软件获取到详细的JTAG链信息,然后再将相应的数字填入CMD文件。其中在iMPACT显示的JTAG链中,最左端的器件标号为
1,以后的器件编号从左向右依次递增。

7.平台工作室软件开发套件(SDK)

平台工作室SDK方便了嵌入式软件应用工程的开发。SDK有自己的GUI,基于Eclipse开放资源工具组件。此SDK是XPS的补充部分;即利用SDK可以开发外围设备和处理器元件所使用的软件,而这些设备和元件都连接在XPS中。

对于每个复杂软件应用,用户都应该建立一个SDK工程。工程包括了用户的C/C++源文件、可执行输出文件以及相应的功能文件,如用来建立工程的“make”文件。通常每个SDK工程目录都位于嵌入式系统的XPS工程目录树下,每个SDK工程只产生一个可执行文件,<project_name>.elf。因此对于一个XPS嵌入式系统而言,可能有多个相应的SDK工程。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
zxopenljx 发表于 2023-2-4 09:56:55 | 显示全部楼层
EDK的文件管理架构
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-11-28 11:00 , Processed in 0.056842 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表