tiny4412sdk-1506原生uboot卡死

  于16年2月多购买了tiny4412sdk-1506,用友善之臂(以下简称友善)的superboot是可以进入linux,而用三星原始的uboot_tiny4412-20130729则不可以。出现现象是卡在“OK”,

偶尔能继续跑下去。根据以往开发的经验,可以知道这绝对是ddr3配置的问题,查看“Tiny4412-1306-Schematic”是4颗[email protected],用到一个控制器两个片选(chip0,chip1),而“Tiny

4412-1412-Schematic”(对应我购买的PCB)是2颗[email protected],只需要一个控制器一个片选(chip0)。

(1306版本最好是两个控制器一个片选,能把ddr3带宽提升到64bit,可能技术/成本原因没实现)

以下是我做的补丁包,代码如下:

diff -uNrp uboot_tiny4412/board/samsung/tiny4412/mem_init_tiny4412.S uboot_tiny4412_kevin/board/samsung/tiny4412/mem_init_tiny4412.S
--- uboot_tiny4412/board/samsung/tiny4412/mem_init_tiny4412.S   2016-04-11 12:32:03.511480729 +0800
+++ uboot_tiny4412_kevin/board/samsung/tiny4412/mem_init_tiny4412.S     2016-04-01 01:39:09.950628589 +0800
@@ -67,12 +67,12 @@ mem_ctrl_asm_init:

        ldr     r1, =0x0FFF301A
        str     r1, [r0, #DMC_CONCONTROL]
-       ldr     r1, =0x00312640
+       ldr     r1, =0x00302640          @这里只有一个chip0
        str     r1, [r0, #DMC_MEMCONTROL]

-       ldr     r1, =0x40e01323
+       ldr     r1, =0x40C01333          @Row是15bit,偏移地址是0x3FFFFFFF(1GB)
        str     r1, [r0, #DMC_MEMCONFIG0]
-       ldr     r1, =0x60e01323
+       ldr     r1, =0x80C01333          @可以不修改,这里只为了说明控制器0地址到达0x7FFFFFFF
        str     r1, [r0, #DMC_MEMCONFIG1]

 #ifdef CONFIG_IV_SIZE
@@ -97,11 +97,11 @@ mem_ctrl_asm_init:
        str     r1, [r0, #DMC_TIMINGPOWER]
 #endif
 #ifdef MCLK_400
-       ldr     r1, =0x4046654f
+       ldr     r1, =0x6946654f          @根据ddr3颗粒规格书微调参数
        str     r1, [r0, #DMC_TIMINGROW] @TimingRow
-       ldr     r1, =0x46400506
+       ldr     r1, =0x46460506          @根据ddr3颗粒规格书微调参数
        str     r1, [r0, #DMC_TIMINGDATA] @TimingData
-       ldr     r1, =0x52000a3c
+       ldr     r1, =0x5200183c          @根据ddr3颗粒规格书微调参数
        str     r1, [r0, #DMC_TIMINGPOWER] @TimingPower
 #endif

@@ -133,7 +133,7 @@ mem_ctrl_asm_init:
 4:     subs    r2, r2, #1
        bne     4b

-#if 1
+#if 0                                   @去掉chip1代码
        /* chip 1 */
        ldr     r1, =0x07100000
        str     r1, [r0, #DMC_DIRECTCMD]
@@ -209,12 +209,12 @@ mem_ctrl_asm_init:

        ldr     r1, =0x0FFF301A
        str     r1, [r0, #DMC_CONCONTROL]
-       ldr     r1, =0x00312640
+       ldr     r1, =0x00302640
        str     r1, [r0, #DMC_MEMCONTROL]

-       ldr     r1, =0x40e01323                 @Interleaved?
+       ldr     r1, =0x40c01333                 @Interleaved?
        str     r1, [r0, #DMC_MEMCONFIG0]
-       ldr     r1, =0x60e01323
+       ldr     r1, =0x80C01323
        str     r1, [r0, #DMC_MEMCONFIG1]

 #ifdef CONFIG_IV_SIZE
@@ -239,11 +239,11 @@ mem_ctrl_asm_init:
        str     r1, [r0, #DMC_TIMINGPOWER]
 #endif
 #ifdef MCLK_400
-       ldr     r1, =0x4046654f
+       ldr     r1, =0x6946654f          @根据ddr3颗粒规格书微调参数
        str     r1, [r0, #DMC_TIMINGROW] @TimingRow
-       ldr     r1, =0x46400506
+       ldr     r1, =0x46460506          @根据ddr3颗粒规格书微调参数
        str     r1, [r0, #DMC_TIMINGDATA] @TimingData
-       ldr     r1, =0x52000a3c
+       ldr     r1, =0x5200183c          @根据ddr3颗粒规格书微调参数
        str     r1, [r0, #DMC_TIMINGPOWER] @TimingPower
 #endif

@@ -275,7 +275,7 @@ mem_ctrl_asm_init:
 4:     subs    r2, r2, #1
        bne     4b

-#if 1
+#if 0                                   @去掉chip1代码
        /* chip 1 */
        ldr     r1, =0x07100000
        str     r1, [r0, #DMC_DIRECTCMD]
diff -uNrp uboot_tiny4412/board/samsung/tiny4412/tiny4412.c uboot_tiny4412_kevin/board/samsung/tiny4412/tiny4412.c
--- uboot_tiny4412/board/samsung/tiny4412/tiny4412.c    2016-04-11 12:32:03.511480729 +0800
+++ uboot_tiny4412_kevin/board/samsung/tiny4412/tiny4412.c      2016-03-29 21:37:21.071493254 +0800
@@ -195,6 +195,14 @@ void dram_init_banksize(void)
        gd->bd->bi_dram[2].size = PHYS_SDRAM_3_SIZE;
        gd->bd->bi_dram[3].start = PHYS_SDRAM_4;
        gd->bd->bi_dram[3].size = PHYS_SDRAM_4_SIZE;
+       gd->bd->bi_dram[4].start = PHYS_SDRAM_5;          //BANK数量改变
+       gd->bd->bi_dram[4].size = PHYS_SDRAM_5_SIZE;
+       gd->bd->bi_dram[5].start = PHYS_SDRAM_6;
+       gd->bd->bi_dram[5].size = PHYS_SDRAM_6_SIZE;
+       gd->bd->bi_dram[6].start = PHYS_SDRAM_7;
+       gd->bd->bi_dram[6].size = PHYS_SDRAM_7_SIZE;
+       gd->bd->bi_dram[7].start = PHYS_SDRAM_8;
+       gd->bd->bi_dram[7].size = PHYS_SDRAM_8_SIZE;

 #ifdef CONFIG_TRUSTZONE
        gd->bd->bi_dram[nr_dram_banks - 1].size -= CONFIG_TRUSTZONE_RESERVED_DRAM;
diff -uNrp uboot_tiny4412/drivers/mmc/mmc.c uboot_tiny4412_kevin/drivers/mmc/mmc.c
--- uboot_tiny4412/drivers/mmc/mmc.c    2016-04-11 12:32:04.479480708 +0800
+++ uboot_tiny4412_kevin/drivers/mmc/mmc.c      2016-03-30 01:03:42.119732762 +0800
@@ -955,7 +955,7 @@ static int mmc_read_ext_csd(struct mmc *
        ext_csd_struct = ext_csd[EXT_CSD_REV];
        host->ext_csd.boot_size_multi = ext_csd[BOOT_SIZE_MULTI];

-       if (ext_csd_struct > 5) {
+       if (ext_csd_struct > 7) {  //若不修改,进入uboot会提示无法识别版本,原因是友善用的emmc颗粒版本较高
                printf("unrecognised EXT_CSD structure "
                        "version %d\n", ext_csd_struct);
                err = -1;
diff -uNrp uboot_tiny4412/include/configs/tiny4412.h uboot_tiny4412_kevin/include/configs/tiny4412.h
--- uboot_tiny4412/include/configs/tiny4412.h   2016-04-11 20:37:03.834845777 +0800
+++ uboot_tiny4412_kevin/include/configs/tiny4412.h     2016-04-11 16:13:01.719191442 +0800
@@ -278,9 +278,9 @@
 #ifdef CONFIG_EVT0_STABLE
 #define CONFIG_NR_DRAM_BANKS   2
 #else
-#define CONFIG_NR_DRAM_BANKS   4
+#define CONFIG_NR_DRAM_BANKS   8               //BANK提高到8
 #endif
-#define SDRAM_BANK_SIZE         0x10000000    /* 256 MB */
+#define SDRAM_BANK_SIZE         0x08000000    /* 128 MB */          //每个BANK容量减小
 #define PHYS_SDRAM_1            CONFIG_SYS_SDRAM_BASE /* SDRAM Bank #1 */
 #define PHYS_SDRAM_1_SIZE       SDRAM_BANK_SIZE
 #define PHYS_SDRAM_2            (CONFIG_SYS_SDRAM_BASE + SDRAM_BANK_SIZE) /* SDRAM Bank #2 */
@@ -326,7 +326,7 @@
 */
 /* Fastboot variables */
 #define CFG_FASTBOOT_TRANSFER_BUFFER            (0x48000000)
-#define CFG_FASTBOOT_TRANSFER_BUFFER_SIZE       (0x18000000)   /* 384MB */
+#define CFG_FASTBOOT_TRANSFER_BUFFER_SIZE       (0x30000000)   /* 768MB */ //当初为了调原生uboot启动android5.0修改,这里跟uboot启动无关
 #define CFG_FASTBOOT_ADDR_KERNEL                (0x40008000)
 #define CFG_FASTBOOT_ADDR_RAMDISK               (0x41000000)
 #define CFG_FASTBOOT_PAGESIZE                   (2048)  // Page size of booting device

以上的注释都是patch之后后续加上,只为了方便阅读。修改后的uboot启动android 4.2是可以正常启动,但无法运行android 5.0(启动一段时间后自动跑飞),问了其他人均表示此现象。

询问友善说是uboot问题。应该是superboot做了其他处理,这里没有能力继续研究下去。

1:友善的售后做的很差,把客户当傻X;

2:开源力度相当低;

3:硬件&PCB设计很差。

以上三点理由让我不会再选择友善的产品!

时间: 2025-01-25 07:55:18

tiny4412sdk-1506原生uboot卡死的相关文章

X-007 FriendlyARM tiny4412 u-boot移植之内存初始化

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  开发环境:

tiny210——uboot移植之Makefile剖析篇

这篇东东早就写好了,一直没时间发出来,现在终于有时间发一下了记录总结uboot的学习历程,好像够详细了,以后忘了也可以再温习回来嘛有些特殊字符显示得乱掉了 Makefile追踪技巧: 技巧1:可以先从编译目标开始顺藤摸瓜地分析,先不要关注具体细节,着重关注主要的代码结构和编译过程 技巧2:追踪分析时要通过文本或者其他途径暂时记录重要的线索 技巧3:将主要的Makefile文件中export出来的变量以及include的文件提取出来,看看include的文件大致是些什么文件,当看到一些来历不明的变

Js原生Ajax和Jquery的Ajax

一.Ajax概述 1.什么是同步,什么是异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随意做其他事情,不会被卡死 2.Ajax的运行原理 页面发起请求,会将请求发送给浏览器内核中的Ajax引擎,Ajax引擎会提交请求到服务器端,在这段时间里,客户端可以任意进行任意操作,直到服务器端将数据返回给Ajax引擎后,会触发你设置的事件,从而执行自定义的js逻辑代码完成某种页面1 功能. 二

uboot各文件及文件夹分析

1.配置编译 uboot的配置编译需要在linux原生文件夹下,因为在编译过程中会生成符号链接.在windows中不支持.配置方法是:首先cd进入uboot源码的根目录,然后在根目录下执行:make x210_sd_config.执行配置命令后,如果出现:Configuring for x210_sd board...说明配置好了,如果不是这个是别的说明配置出错了. 2.各文件介绍 (1).gitignore.git工具的文件,git是一个版本管理工具(类似的还有个svn),这个文件和git有关

X-006 FriendlyARM tiny4412 u-boot移植之Debug串口用起来

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  开发环境:

X-004 FriendlyARM tiny4412 uboot移植之点亮指路灯

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

2.uboot和系统移植-第5部分-2.5.uboot源码分析1-启动第一阶段

第一部分.章节目录 2.5.1.start.S引入 2.5.2.start.S解析1 2.5.3.start.S解析2 2.5.4.start.S解析3 2.5.5.start.S解析4 2.5.6.start.S解析5 2.5.7.start.S解析6 2.5.8.start.S解析7 2.5.9.uboot重定位详解 2.5.10.start.S解析8 2.5.11.start.S解析9 2.5.12.start.S解析10 2.5.13.start.S解析11 第二部分.章节介绍 2.5.

X-001 FriendlyARM Tiny4412 uboot移植前奏

版权声明:本文为博主原创文章,转载请注明出处 开发环境:win7 64位 + VMware12 + Ubuntu14.04 64位 工具链:linaro提供的gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi 要移植的u-boot版本:u-boot-2016-09 参考u-boot版本:友善之臂提供的 u-boot-2010-12 Tiny4412开发板硬件版本为:     底板:  Tiny4412/Super4412SDK 1506