《朱老师物联网大讲堂》学习笔记
学习地址:www.zhulaoshi.org
将0x20000000更改到0x30000000,
好处就是和DRAM1以0x40000000开头的地址,连到一起了,
DDR初始化代码在lowlevel_init.S中,
是不动的,即对相应寄存器操作是不变的,
变得是对寄存器中写的值得更改,
而这个值是以宏定义的形式存在的,
所以我们更改这个值就可以了,
#define DMC0_MEMCONFIG_0 0x20E01323
改为如下
#define DMC0_MEMCONFIG_0 0x30E01323
此时相当于硬件更改到30开头的,
但是与之对应的软件部分还没更改,
#define MEMORY_BASE_ADDRESS 0x20000000
改为如下
#define MEMORY_BASE_ADDRESS 0x30000000
而上面这句话的使用地方,我们前面才提到,
在这里,
#define CONFIG_NR_DRAM_BANKS 2 /* we have 2 bank of DRAM */
//#define SDRAM_BANK_SIZE 0x20000000 /* 512 MB */
#define SDRAM_BANK_SIZE 0x10000000 /* 256 MB */
#define PHYS_SDRAM_1 MEMORY_BASE_ADDRESS /* SDRAM Bank #1 */
#define PHYS_SDRAM_1_SIZE SDRAM_BANK_SIZE
//#define PHYS_SDRAM_2 (MEMORY_BASE_ADDRESS + SDRAM_BANK_SIZE) /* SDRAM Bank #2 */
#define PHYS_SDRAM_2 0x40000000
#define PHYS_SDRAM_2_SIZE SDRAM_BANK_SIZE
虚拟地址映射表中的更改,
从start.s中去找,
找到_mmu_table_base,
接着找到lowlevel.init.s中的mmu_table,
// .set __base,0x200
修改为
.set __base,0x300
这是整体的,顺便看下虚拟地址设置,
/* .rept 0xc00 - 0xb00
.word 0x00000000
.endr */
.set __base,0xB00
.rept 0xc00 - 0xb00
FL_SECTION_ENTRY __base,3,0,0,0
.set __base,__base+1
.endr
//.set __base,0x200
.set __base,0x300
// 256MB for SDRAM with cacheable
.rept 0xD00 - 0xC00
FL_SECTION_ENTRY __base,3,0,1,1
.set __base,__base+1
.endr
最好改,如果我们没有使能MMU就,完蛋了,
/* base address for uboot */
#ifdef CONFIG_ENABLE_MMU
#define CFG_UBOOT_BASE 0xc3e00000
#else
//#define CFG_UBOOT_BASE 0x23e00000
#define CFG_UBOOT_BASE 0x33e00000
#endif
结果只出现了一个OK,
上面说到效果进了一步,但是还是有问题,
改这里,是上面修改过的地方,
#define DMC0_MEMCONFIG_0 0x30E01323
修改后
#define DMC0_MEMCONFIG_0 0x30F01323,
这是另一个地方,
#ifdef CONFIG_MCP_SINGLE
ulong virt_to_phy_smdkc110(ulong addr)
{
if ((0xc0000000 <= addr) && (addr < 0xd0000000))
//return (addr - 0xc0000000 + 0x20000000);
return (addr - 0xc0000000 + 0x30000000);
else
printf("The input address don't need "\"a virtual-to-physical translation : %08lx\n", addr);
return addr;
}
然后这一部分就算ok了,
//return (addr - 0xc0000000 + 0x20000000);
return (addr - 0xc0000000 + 0x30000000);
这个20开头改30应该能联想到前面吧,
DDR初始化没问题,但是DDR的这些参数,对其它方面间接产生了影响,