问题描述
我有两个相同类型的FSL IP实例通过FSL连接到MicroBlaze,它们使用相同的软件接口驱动程序,但我只在“xparameters.h”文件中获得一组“定义”。
例如,有一个名为test的IP和两个名为test_0和test_1的实例连接到FSL接口0和1,但我只在“xparameters.h”文件中看到以下内容:
/ ******************* ***************** /
#define XPAR_FSL_TEST_0_OUTPUT_SLOT_ID 0
#define XPAR_FSL_TEST_0_INPUT_SLOT_ID 0
/ ******************* ***************** /
解决/修复方法
使用以下代码替换<edk_project> / drivers / <ip_name> / data / <ip_name> .tcl的内容:
proc生成{drv_handle} {
将“生成宏用于FSL外设访问…”
set iplist [xget_sw_iplist_for_driver $ drv_handle]
设置drv_name_handle [xget_sw_parameter_handle $ drv_handle“DRIVER_NAME”]
foreach ip_handle $ iplist {
set core_name [xget_value $ ip_handle“name”]
set file_name“xparameters.h”
set core_def_name [string toupper $ core_name]
把“核心名称:$ core_name”
if {[string compare -nocase“none”$ core_name]!= 0} {
设置conffile [xopen_include_file $ file_name]
设置mhs_handle [xget_handle $ ip_handle“parent”]
设置mfsl_name [xget_value $ ip_handle“BUS_INTERFACE”“MFSL”]
把“MFSL B:$ mfsl_name”
if {$ mfsl_name!=“”} {
把“MFSL $ mfsl_name”
set mfsl_slave [xget_hw_connected_busifs_handle $ mhs_handle $ mfsl_name“slave”]
设置mfsl_index [xget_value $ mfsl_slave“NAME”]
设置mfsl_index [string toupper $ mfsl_index]
set mfsl_index [string map {SFSL“”} $ mfsl_index]
put $ conffile“#define XPAR_FSL _ $ {core_def_name} _OUTPUT_SLOT_ID $ {mfsl_index}”
}
set sfsl_name [xget_value $ ip_handle“BUS_INTERFACE”“SFSL”]
if {$ sfsl_name!=“”} {
set sfsl_master [xget_hw_connected_busifs_handle $ mhs_handle $ sfsl_name“master”]
set sfsl_index [xget_value $ sfsl_master“NAME”]
set sfsl_index [string toupper $ sfsl_index]
set sfsl_index [string map {MFSL“”} $ sfsl_index]
put $ conffile“#define XPAR_FSL _ $ {core_def_name} _INPUT_SLOT_ID $ {sfsl_index}”
}
把$ conffile放入“”
投入$ conffile“/ ********************************************* ********************* /”
把$ conffile放入“”
关闭$ conffile
}
}
}
没有回复内容