北京 2020-7-26 19:44 周日 昨天外面闷热 今日凉快。空调一开啥事没有!O(∩_∩)O
用了差不多两个周末蹲家里移植的。进度比较慢,算是把uboot相关的一些东西基本了解了。
uboot相关的暂时告一段落。之后对linux内核相关的进行整理。
------------------------------------------------------------------------
代码路径:https://github.com/1301876780/-SMDKV210-uboot-s5pv210 每遇到一个问题,解决后我都会上传到我的github
网上找了一张uboot启动流程图。在移植的时候,对照这张图来看看移植时问题出现在了哪个阶段
目标:从三星官方smdkv210的uboot移植到我的s5pv210开发板中能够正常引导内核启动。 这个是我s5pv210正常启动时的打印信息
一.环境配置及编译
- 检查Makefile中的交叉编译工具链
- 配置make smdkv210single_config,对应include/configs/smdkv210single.h头文件,相当于配置文件,包含各种配置
- 配置编译 make distclean/make smdkv210single_config/make
- 下载 uboot/sd_fusing目录下有sd_fusing.sh脚本,用来烧录。
二.uboot移植修改(我们用通道2启动,SD卡方式来烧录)
确认时钟部分的配置
(1)时钟部分的运行结果本来就是对的,时钟部分的代码在lowlevel_init.S中的bl system_clock_init调用的这个函数中。函数的代码部分是没任何问题的,根本不需要改动,要改动的是寄存器写入的值,这些值都在配置头文件(smdkv210single.h)中用宏定义定义出来了。如果时钟部分要更改,关键是去更改头文件中的宏定义。
(2)三星移植时已经把210常用的各种时钟配置全都计算好用宏开关来控制了。只要打开相应的宏开关就能将系统配置为各种不同的频率。
问题1: UBOOT无打印问题
1)uboot无串口打印。这个打印是在INand启动失败时打印的(默认优先从通道0,INand启动),不是uboot中打印的。说明启动方式选择正常。
2)power灯正常亮了,说明开发板的供电锁存正常。
分析:开发板第一次打印的是OK,说明问题出现在了供电锁存之后,打印“O”之前。这一段的代码处理包括:
开发板供电锁存>>>比较运行地址和链接地址决定是否需要beq 1f>>> PMIC_InitIp>> system_clock_init>> mem_ctrl_asm_init>>1:
我们开发板没有集成”PMIC 电源管理集成电路(Power Management IC)”模块。把这个去掉试试
验证后打印如下:
我们一步步解决打印的这几个问题
-------------------------------------------------------------
问题2:DRAM的大小不对,我们只用了两片都是256M的内存,总共只有512M。但是却显示了1G(三星原厂用的是