I referred to below site for running the linux from a different phy address.
Linux code patch
--- ref/keystone-0430a//linux-keystone/arch/arm/mach-keystone/Makefile.boot 2013-04-30 11:19:07.000000000 -0700 +++ linux-keystone/arch/arm/mach-keystone/Makefile.boot 2013-05-09 13:47:29.829257106 -0700 @@ -1 +1 @@ -zreladdr-y := 0x80008000 +zreladdr-y := 0xA0008000 --- ref/keystone-0430a//linux-keystone/arch/arm/mach-keystone/include/mach/memory.h 2013-04-30 11:19:07.000000000 -0700 +++ linux-keystone/arch/arm/mach-keystone/include/mach/memory.h 2013-05-09 12:05:10.561756528 -0700 @@ -16,6 +16,7 @@ #ifndef __ASM_MACH_MEMORY_H #define __ASM_MACH_MEMORY_H + #define MAX_PHYSMEM_BITS 36 #define SECTION_SIZE_BITS 34 @@ -32,10 +33,17 @@ #ifndef __ASSEMBLY__ +static inline phys_addr_t __virt_to_phys(unsigned long x); + static inline phys_addr_t __virt_to_idmap(unsigned long x) { +#ifdef ORIGINAL_PRE_TBESEMER return (phys_addr_t)(x) - CONFIG_PAGE_OFFSET + KEYSTONE_LOW_PHYS_START; +#else + return __virt_to_phys(x) - KEYSTONE_HIGH_PHYS_START + + KEYSTONE_LOW_PHYS_START; +#endif } #define virt_to_idmap(x) __virt_to_idmap((unsigned long)(x))
Device tree source patch
--- ref/keystone-0430a//linux-keystone/arch/arm/boot/dts/k2hk-evm.dts 2013-04-30 11:19:07.000000000 -0700 +++ linux-keystone/arch/arm/boot/dts/k2hk-evm.dts 2013-05-10 09:56:40.418347675 -0700 @@ -17,7 +17,7 @@ }; memory { - reg = <0x00000000 0x80000000 0x00000000 0x20000000>; + reg = <0x00000000 0xA0000000 0x00000000 0x20000000>; }; droppolicies: default-drop-policies {
u-boot code patch
--- ref/keystone-0430a//u-boot-keystone/include/configs/tci6638_evm.h 2013-04-30 10:29:03.000000000 -0700 +++ u-boot-keystone/include/configs/tci6638_evm.h 2013-05-09 13:46:25.277274692 -0700 @@ -47,8 +47,8 @@ /* Memory Configuration */ #define CONFIG_NR_DRAM_BANKS 1 -#define CONFIG_SYS_SDRAM_BASE 0x80000000 -#define CONFIG_MAX_RAM_BANK_SIZE (2 << 30) /* 2GB */ +#define CONFIG_SYS_SDRAM_BASE 0xA0000000 +#define CONFIG_MAX_RAM_BANK_SIZE ((1024 * 1024) * 1024) #define CONFIG_STACKSIZE (512 << 10) /* 512 KiB */ #define CONFIG_SYS_MALLOC_LEN (512 << 10) /* 512 KiB */ #define CONFIG_SYS_MEMTEST_START CONFIG_SYS_SDRAM_BASE @@ -194,7 +194,7 @@ #define CONFIG_CMD_SF /* U-Boot general configuration */ -#define CONFIG_SYS_PROMPT "TCI6638 EVM # " +#define CONFIG_SYS_PROMPT "TCI6638 EVM (teb) # " #define CONFIG_SYS_CBSIZE 1024 #define CONFIG_SYS_PBSIZE 2048 #define CONFIG_SYS_MAXARGS 16 @@ -265,6 +265,6 @@ #define CONFIG_SETUP_MEMORY_TAGS #define CONFIG_SYS_BARGSIZE 1024 #define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + 0x08000000) -#define LINUX_BOOT_PARAM_ADDR (CONFIG_SYS_SDRAM_BASE + 0x100) +#define LINUX_BOOT_PARAM_ADDR (CONFIG_SYS_SDRAM_BASE + 0x00000100) #endif /* __CONFIG_H */
Also when using the patch, make sure to update the following env variables in u-boot
setenv addr_fdt 0xA7000000 setenv addr_kern 0xA8000000
I did success to modify u-boot, but kernel is halted on when kernel is booting with printing as 'Starting kernel ...' message.
I think it's incorrect with current git repo version because above site's content is so old..
could share an information if there is any update this issue?
Gilbert.