u-boot for tiny210 ver1.0(by liukun321咕唧咕唧)

Posted 咕唧咕唧shuboLK

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了u-boot for tiny210 ver1.0(by liukun321咕唧咕唧)相关的知识,希望对你有一定的参考价值。

新版本下载:

下面的链接提供了较新版本的源码

ver4.0源码下载:u-boot for tiny210 ver4.0

ver3.1源码下载: u-boot for tiny210 ver3.1

ver3.0源码下载:u-boot for tiny 210 ver3.0

ver2.2源码下载:  u-boot for tiny210 ver2.2

ver2.1源码下载:u-boot for tiny210 ver2.2

ver2.1源码下载:u-boot for tiny210 ver2.1

ver2.0源码下载:u-boot for tiny210 ver2.0

各版本修改分析链接: ver2.0    ver2.1   ver2.2  ver2.2.1  ver2.2.2  ver 3.0  ver3.1   ver4.0   tiny210的uboot是基于   linaro-2011.10 for mini210 修改实现的,在此感谢Alex Ling。    linaro-2011.10 for mini210 源码地址 uboot for mini210  按下面的说明修改,即可在tiny210上启动。      源码下载: uboot for tiny210   version1.0 (版本 u-boot 2011.06)
目前功能还是比较少的,后面我还会继续添加。 基本功能: 1. SD boot,基于linaro u-boot的SPL功能实现
2. 从SD卡的FAT分区上加载文件到SDRAM
3. 将环境变量保存至SD卡(有Writing to MMC(0)... mmc_send_cmd: error during transfer: 0x00208001 mmc write failed), 但数据保存是成功的,后续会修改。


但是linaro-2011.10 for mini210是无法直接在tiny210上启动的,终端仅打印OK。而主要问题存在于内存的初始化,板子上电后RAM没有实现正确初始化,而到uboot的lowlevel阶段,无法实现代码的搬运。
进行内存初始化的核心部分位于 /board/samsug/mini210/memsteup.S。这段代码的操作是没错误的,那问题可能出在memorycontrol的配置上,对210 的内存配置在/include/configs/mini210.h 中实现。 tiny210的DDR2 仅挂载在DRAM0区域,而mini210.h 给出的信息显示mini210SDram是在DRAM0和DRAM1分别挂载256M,故作以下修改: 行: 142:  #define CONFIG_SYS_LOAD_ADDR  ( PHYS_SDRAM_1 + 0x1000000)  162:       #define CONFIG_NR_DRAM_BANKS   1// 2 #define SDRAM_BANK_SIZE(512UL << 20UL)//0x10000000 /* 256256 MB */ #define PHYS_SDRAM_1  MEMORY_BASE_ADDRESS #define PHYS_SDRAM_1_SIZE SDRAM_BANK_SIZE + #if 0 #define PHYS_SDRAM_2(MEMORY_BASE_ADDRESS + 0x20000000) /* SDRAM Bank #2 */ #define PHYS_SDRAM_2_SIZESDRAM_BANK_SIZE + #endif tiny210的ram是挂在DRAM0区域的,如下图:
从核心板原理图看出四片128MDDR2作为 1 chip故有如下配置(配置均在mini210.h中): 315 :#define DMC0_MEMCONTROL0x00202400//MemControl BL=4, 1Chip, DDR2 Type, dynamic self refresh, force precharge, dynamic power down off
DRAM0区域起始地址0x20000000,offset 0x1fffffff(512M),根据这个思路参考手册配置MEMCONFIG0 ( chip_base = 0x20  chip_mask = 0xE0 ), 这样我们就可以操作0x20000000 ~0x3fffffff(512M的内存空间)


tiny210的ram地址线14根(故chip_row 0x2 = 14 bit),见下图       故有如下配置
316 :#define DMC0_MEMCONFIG_0  0x20E00323// MemConfig0 512MB config, 8banks,Mapping Method[12:15]0:linear, 1:linterleaved, 2:Mixed 317 :#define DMC0_MEMCONFIG_1  0x00E00323// MemConfig1
另外启动在初始化RAM时会读取ram的大小,函数在/board/samsug/mini210/mini210.c 实现,需要作如下修改: +187 :#if defined(PHYS_SDRAM_2) 188 :gd->bd->bi_dram[1].start = PHYS_SDRAM_2; 189 : gd->bd->bi_dram[1].size = get_ram_size((long *)PHYS_SDRAM_2, \\ 190:                                                      PHYS_SDRAM_2_SIZE); +191 :#endif       PS: 添加tiny210目标板: 1、修改uboot源码根目录 boards.cfg 文件,183行添加:  tiny210                      arm         armv7       tiny210             samsung        s5pc1xx 2、cp board/samsung/mini210 board/samsung/tiny210 3、将board/samsung/tiny210 下的mini210替换为 tiny210,并将此目录下的Makefile的29行修改为 COBJS   := tiny210.o ;  再将此目录下 lowlevel_init.S 第35行修改为 #include "tiny210_val.h"。 4、cp include/configs/mini210  include/configs/tiny210.h 5、vim  include/configs/tiny210.h 修改: #define CONFIG_MINI210   ----> #define CONFIG_TINY210 #define MACH_TYPE_ MINI210  ----->#define MACH_TYPE_TINY210 #define CONFIG_MACH_TYPE                MACH_TYPE_MINI210  ---->#define CONFIG_MACH_TYPE                MACH_TYPE_TINY210  
 
编译u-boot
$make ARCH=arm CROSS_COMPILE=/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi- tiny210_config
$make ARCH=arm CROSS_COMPILE=/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi- all spl
由于我的系统下装有两套交叉工具链,所以没有把  /opt/FriendlyARM/toolschain/4.5.1/bin/ 添加到环境变量,在使用工具链时要指明路径。

将u-boot镜像写入SD卡
将SD卡通过读卡器接上电脑(或直接插入笔记本卡槽),通过"cat /proc/partitions"找出SD卡对应的设备,我的设备节点是/dev/sdb.

执行下面的命令
$sudo dd iflag=dsync oflag=dsync if=spl/tiny210-spl.bin of=/dev/sdb seek=1
$sudo dd iflag=dsync oflag=dsync if=u-boot.bin of=/dev/sdb  seek=49


附: 烧写完成将卡插入开发板,启动:




以上是关于u-boot for tiny210 ver1.0(by liukun321咕唧咕唧)的主要内容,如果未能解决你的问题,请参考以下文章

u-boot for tiny210 version2.0(by liukun321咕唧咕唧)

tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——移植u-boot.bin(打印串口控制台)

U-Boot番外篇 | fdt介绍

U-Boot番外篇 | relocation介绍

U-Boot番外篇 | global_data介绍

Tiny4412 u-boot分析u-boot配置流程分析