从官方版本的uboot来移植
第一个问题:
start.s移植时
b low_level_init出错(用led灯来定位问题,链接的时候错误,要放到前8K)
在.lds链接脚本里加上low_level_init.o
但是重定义。在.s那边makefile生成.o链接了一次,.lds又链接了一次。参考start.s .那边用一个新的START :=start.o,来all里面加start 来保证编译,却不链接到最终的lib里。
2.ddr配置
移植:ddr配置 md mw 可以用说明ddr_init是正确的 bdinfo查看ddr大小是0x2000000
修改
(base address(0x20000000->0x30000000,连续的512M地址,memconfig(chip_base和掩码硬件),.h(软件 base address)) bank size(0x2000000->0x1000000))
MMU那边.set __base 0x200 -> 0x300
读取扩展csd寄存器,读取到的version错误(return 0 低版本的控制器( <4)读不了高版本的卡) 卡的版本号>5
1.移植必要的头文件(.c或者.s中需要的头文件直接copy过来,然后include该头文件)
2.对头文件进行修整 (把头文件中黑色的都删除掉)
3.重定位移植
1.重定位和清bss段代码移植
2.movi_bl2_copy函数的移植:.c文件移植过来,.c中include的头文件移植过来。在.c中除了movi_bl2_copy函数外,其他都删除掉。在movi_bl2_copy也可以将一些代码删除掉(安全相关的)
报错:某行某个宏没定义,实际是那行却没有那个宏,因为那行的宏中包含的其他宏没有定义。
sd卡移植(SD、TF、MMC总结_Write Freely的博客-CSDN博客)
bring_up:卡能识别,读写正常
3.sdhci_transfer_data函数出错,
把三星uboot中的sd/mm驱动整个移植过来。或者参考三星的驱动来修补。