On T1042D4-64B demo board, what is the way of changing PCIe related Registers I mentioned in the header(PEX registers)?
I want to make a new configuration for EP device because there is unlogged deadlocks on U-boot console (It hangs) when I plug EP device with its driver.
As I read in the documentation of T1040RM,
2.5.3.1 Illegal Interaction Between Inbound ATMUs and LAWs
Since both local access windows and inbound ATMUs map transactions to a target
interface, it is essential that they not contradict one another.
For example, it is considered a programming error to have an inbound ATMU map a
transaction target to the local memory space if the resulting translated local address is
mapped to an external peripheral interface by a local access window. Such programming
errors may result in unpredictable system deadlocks.
I think this causes my problem.
Hello Ahmet Demir,
In u-boot header file, please modify the memory map in include/configs/T104xRDB.h to enlarge memory size in the following part to enlarge LAW and TLB configuration to support your PCIe EP device.
#ifdef CONFIG_PCIE1
#define CONFIG_SYS_PCIE1_MEM_VIRT 0x80000000
#define CONFIG_SYS_PCIE1_MEM_BUS 0xe0000000
#define CONFIG_SYS_PCIE1_MEM_PHYS 0xc00000000ull
#define CONFIG_SYS_PCIE1_MEM_SIZE 0x10000000 /* 256M */ ------>0x20000000
#define CONFIG_SYS_PCIE1_IO_VIRT 0xf8000000
#define CONFIG_SYS_PCIE1_IO_BUS 0x00000000
#define CONFIG_SYS_PCIE1_IO_PHYS 0xff8000000ull
#define CONFIG_SYS_PCIE1_IO_SIZE 0x00010000 /* 64k */ --------->0x00020000
#endif
Thanks,
Yiping
Yes, you also need to modify Linux device tree.
Thanks,
Yiping
Hello Mr. Wang,
Which variable is responsible to change physical memory adress on endpoint device? (Not size, I mean start adress) and is there any way to change whole system memory map?
#ifdef CONFIG_PCIE1
#define CONFIG_SYS_PCIE1_MEM_VIRT 0x80000000
#define CONFIG_SYS_PCIE1_MEM_BUS 0xe0000000
#define CONFIG_SYS_PCIE1_MEM_PHYS 0xc00000000ull
#define CONFIG_SYS_PCIE1_MEM_SIZE 0x10000000 /* 256M */ ------>0x20000000
#define CONFIG_SYS_PCIE1_IO_VIRT 0xf8000000
#define CONFIG_SYS_PCIE1_IO_BUS 0x00000000
#define CONFIG_SYS_PCIE1_IO_PHYS 0xff8000000ull
#define CONFIG_SYS_PCIE1_IO_SIZE 0x00010000 /* 64k */ --------->0x00020000
#endif
Is it possible with CodeWarrior? I need to know that.