EDK工具以及IP更新太快,IP的API经常会不兼容。
EDK的当前工程中system.mss文件如下:
#-------------------------------begin of
system.mss-------------------------
PARAMETER VERSION = 2.2.0
BEGIN OS
PARAMETER OS_NAME = standalone
PARAMETER OS_VER = 2.00.a
PARAMETER PROC_INSTANCE = ppc440_0
PARAMETER stdin = xps_uart_1
PARAMETER stdout = xps_uart_1
END
BEGIN PROCESSOR
PARAMETER DRIVER_NAME = cpu_ppc440
PARAMETER DRIVER_VER = 1.01.a
PARAMETER HW_INSTANCE = ppc440_0
PARAMETER COMPILER = powerpc-eabi-gcc
PARAMETER ARCHIVER = powerpc-eabi-ar
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = memcon
PARAMETER DRIVER_VER = 1.00.a
PARAMETER HW_INSTANCE = DDR2_SDRAM
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = generic
PARAMETER DRIVER_VER = 1.00.a
PARAMETER HW_INSTANCE = PCIe_Bridge
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = bram
PARAMETER DRIVER_VER = 1.00.a
PARAMETER HW_INSTANCE = xps_bram_if_cntlr_1
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = dmacentral
PARAMETER DRIVER_VER = 1.12.a
PARAMETER HW_INSTANCE = xps_central_dma_0
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = intc
PARAMETER DRIVER_VER = 1.11.a
PARAMETER HW_INSTANCE = xps_intc_0
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = uartlite
PARAMETER DRIVER_VER = 1.14.a
PARAMETER HW_INSTANCE = xps_uart_1
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = pcie
PARAMETER DRIVER_VER = 1.00.a
PARAMETER HW_INSTANCE = PCIe_Bridge
END
#-----------------------------the end of
system.mss-------------------------------------
然而在software platform目录下的*.mss文件却和上述system.mss文件不一样。我的software platform下的*.mss文件时soft.mss。内容如下:
#-----------------------------the beginof soft.mss-------------------------------------
PARAMETER VERSION = 2.2.0
BEGIN OS
PARAMETER OS_NAME = standalone
PARAMETER OS_VER = 2.00.a
PARAMETER PROC_INSTANCE = ppc440_0
PARAMETER stdin = xps_uart_1
PARAMETER stdout = xps_uart_1
END
BEGIN PROCESSOR
PARAMETER DRIVER_NAME = cpu_ppc440
PARAMETER DRIVER_VER = 1.01.a
PARAMETER HW_INSTANCE = ppc440_0
PARAMETER COMPILER = powerpc-eabi-gcc
PARAMETER ARCHIVER = powerpc-eabi-ar
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = memcon
PARAMETER DRIVER_VER = 1.00.a
PARAMETER HW_INSTANCE = DDR2_SDRAM
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = generic
PARAMETER DRIVER_VER = 1.00.a
PARAMETER HW_INSTANCE = PCIe_Bridge
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = bram
PARAMETER DRIVER_VER = 1.00.a
PARAMETER HW_INSTANCE = xps_bram_if_cntlr_1
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = dmacentral
PARAMETER DRIVER_VER = 1.12.a
PARAMETER HW_INSTANCE = xps_central_dma_0
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = intc
PARAMETER DRIVER_VER = 1.11.a
PARAMETER HW_INSTANCE = xps_intc_0
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = uartlite
PARAMETER DRIVER_VER = 1.14.a
PARAMETER HW_INSTANCE = xps_uart_1
END
#-----------------------------the end of
soft.mss-------------------------------------
大家会发现soft.mss,要比system.mss的内容少很多。主要原因是在分析XPS中的IP时,发现用的不是最新的IP,所以没有将老的IP的模块描述加入到soft.mss中,所以会遇到老版本的程序编译会报错的问题。要解决这个问题,有两个办法。
1、一个是将工程目录下的PPC440(与cpu类型同名的文件)下的code、include、lib、libsrc拷贝到software platform的ppc440下。然后再次编译软件工程。(主意,是再第一次编译错误之后,再进行上述的覆盖操作,否则无效)。
2、另一个是,经过仔细看了software platform的makefile后发现的,每次都要检查soft.mss文件,所以我们可以直接编写*.mss文件,或者直接将system.mss拷贝到software platform目录下,并重命名为soft.mss。
上述两个方法都能够很容易解决IP不兼容的问题。