• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : Tiny4412ADK自己编译的Uboot起不来。。。。。 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 105026
精华: 0
发帖: 18
金钱: 90 两
威望: 18 点
贡献值: 0 点
综合积分: 36 分
注册时间: 2014-06-11
最后登录: 2014-11-18
楼主  发表于: 2014-06-16 08:54

 Tiny4412ADK自己编译的Uboot起不来。。。。。

开发板:Tiny4412 ADK 1312
按照友善之臂提供的方法,编译厂家提供的Uboot。使用SD卡少写生成的Uboot.bin之后,启动开发板,只能在串口终端输出OK字样。
哪位大侠发生过雷同问题,帮忙提供一下解决方法。
级别: 侠客
UID: 16892
精华: 0
发帖: 58
金钱: 290 两
威望: 58 点
贡献值: 0 点
综合积分: 116 分
注册时间: 2010-03-23
最后登录: 2017-02-11
1楼  发表于: 2014-06-16 23:04
顶,遇到同样的问题。
级别: 新手上路
UID: 105026
精华: 0
发帖: 18
金钱: 90 两
威望: 18 点
贡献值: 0 点
综合积分: 36 分
注册时间: 2014-06-11
最后登录: 2014-11-18
2楼  发表于: 2014-06-20 10:14
自己先顶一下。
调查了几天,把发现的一些结果贴出来一下,大家看看能不能发现什么问题,我有点技穷了。
-----------------------------------------------------------------------------------------------------------------------------------------------------
开发板型号:Super4412(ADK1312)
Uboot:光盘中提供的压缩包uboot_tiny4412-20130729.tgz
启动方法:SD卡启动
现象:启动后有时输出‘O’,有时输出‘OK’,有时能输出Uboot启动的第一句话然后就死掉了。
#跟友善之臂的开发人员确认过后,他们提供的是tiny4412的Uboot,我的是Super4412,两者的差别
Tiny4412 标配 1G DDR3 单通道内存和 4GB 高速 eMMC 闪存。
Super4412 标配 2G DDR3 双通道内存和 4GB 高速 eMMC 闪存。

有没有成功将Tiny4412修改到Super4412成功的?

调查的一些结果整理:
这种启动的流程分为BL0,BL1(8KB),BL2(14KB)
BL0是固化在iROM(0x0)地址空间的一段程序,目的是进行一些基本初始化后把BL1引入iRAM(256KB)中运行。
BL1是上面说道的Uboot压缩包中自带的一个bin文件,通过比较二进制,发现它跟FriendlyArm提供的SuperBoot.bin的前8KB一样。BL1的作用毫无疑问就是为了能运行BL2,但是是将BL2搬到iRAM中运行还是DDR3中运行暂时还不清楚。
BL2是通过FriendArm提供的一个mkbl2的工具制作出来的一个二进制文件bl2.bin。比较这个二进制文件发现它和自己编译出来的u-boot.bin的前14KB基本一样,注意是基本一样,比较发现还是有很多地方不同,具体原因不明。哪位大侠明白望讲解。然后BL2将全部的Uboot.bin搬到DDR中,最后跳转到DDR中运行。

SD卡内的烧写情况:
Block(1-16)<8KB>:BL1(8K)
Block(17-48)<16KB>:BL2(14K)
Block(49-704):u-boot.bin(250KB-300KB左右)
Block(705-...):TrustZone

调用流程
start.s->lowlevel_init->board_init_f
其中在lowlevel_init中:
配置完串口控制器(uart_asm_init)后输出“O”
之后通过SD卡的操作将uboot代码搬运到DDR中
然后使能MMU
输出“K”
最后PC指针指向board_init_f

启动后Uboot总是会在几个固定的点死掉。
第一个:MMU的使能,在用mcr只能对cp15协处理寄存器C2(MMU使能)操作时死掉
第二个:输出K后无法跳到board_init_f,然后死掉
第三个:进入board_init_f进行memset操作或者printf操作的时候会死掉,死掉的位置不定

现在的方向还是在内存的配置上能发现解决点。各位大侠有什么发现或者解决方法请赐教,感激不尽
级别: 新手上路
UID: 105026
精华: 0
发帖: 18
金钱: 90 两
威望: 18 点
贡献值: 0 点
综合积分: 36 分
注册时间: 2014-06-11
最后登录: 2014-11-18
3楼  发表于: 2014-06-21 10:53
哎,没有人鸟我啊。继续调查中,知道好用为止。

昨天改了关于内存的下面几点。
tiny4412的内存是两块K4B2G1646C-HCH9(2Gb  128Mb*16banks)
Super4412的内存是两块K4B4G1646B-HCK0(4Gb  256Mb*16banks)

察看Exynos 4412 datasheet,18章中MEMCONFIG0和MEMCONFIG1寄存器有以下几位设置有问题。
chip_col[11:8] Number of Column Address Bits
chip_row[7:4] Number of Row Address Bits
chip_bank[3:0] Number of Banks

在文件mem_init_4412.S的L73,L75,L215,L217分别对这些bit进行了如下设置
    ldr    r1, =0x40e01323            @Interleaved?
    str    r1, [r0, #DMC_MEMCONFIG0]
    ldr    r1, =0x60e01323
    str    r1, [r0, #DMC_MEMCONFIG1]
最后12bit的值为0x323,对应含义为column=10bits, row=14bits, bank=8
然而对于Super4412的内存column=10bits, row=15bits, bank=16
其中bank的设置很奇怪,控制器的这一位寄存器最大只能支持到8banks,但是采用的DDR都是16banks的,不明白应该怎么设置了。
所以只是把row从14改成15.也就是将最后的323改成333。

另外需要把1GB的内存设置改成2GB,
首先修改tiny4412.h,如下
#else
#define CONFIG_NR_DRAM_BANKS    4
#endif
改成:
#else
#define CONFIG_NR_DRAM_BANKS    8
#endif

然后修改board/samsung/tiny4412/tiny4412.c  L197加上下面代码
    gd->bd->bi_dram[4].start = PHYS_SDRAM_5;
    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;


编译启动后依然不行,继续调查中。。。。。。。哎
级别: 新手上路
UID: 100603
精华: 0
发帖: 24
金钱: 120 两
威望: 24 点
贡献值: 0 点
综合积分: 48 分
注册时间: 2014-02-17
最后登录: 2022-06-07
4楼  发表于: 2014-06-23 15:25
论坛下载的代码是可以直接编译运行起来的,你重新下载看看
级别: 新手上路
UID: 105026
精华: 0
发帖: 18
金钱: 90 两
威望: 18 点
贡献值: 0 点
综合积分: 36 分
注册时间: 2014-06-11
最后登录: 2014-11-18
5楼  发表于: 2014-06-23 17:08

 回 4楼(xlwjz) 的帖子

你用的是tiny4412还是super4412啊,提供的只能起来tiny4412,super4412内存换了,貌似需要重新设置。。。。。
级别: 新手上路
UID: 105026
精华: 0
发帖: 18
金钱: 90 两
威望: 18 点
贡献值: 0 点
综合积分: 36 分
注册时间: 2014-06-11
最后登录: 2014-11-18
6楼  发表于: 2014-06-24 13:42
调了一周,Uboot可以在Super4412上启动了。果然还是DDR3控制器的配置问题,导致原来的Uboot在内存读写上出错,我把patch传上来了,想用的可以在光盘中提供的uboot原代码上直接打上patch编译即可。
(把附件的.txt删掉,我直接传.patch不允许)

下一个问题,没有网卡驱动啊,tftp用不了。
还偏偏用了一个USB转的网卡,这驱动写起来就更麻烦了。还要先把USB Host驱动调通才行。

有做过dm9621这款网卡芯片的朋友可以给点建议。。。。。。不然我就得慢慢写了
附件: uboot.patch.txt (4 K) 下载次数:148
级别: 新手上路
UID: 22994
精华: 0
发帖: 32
金钱: 160 两
威望: 32 点
贡献值: 0 点
综合积分: 64 分
注册时间: 2010-06-10
最后登录: 2015-10-06
7楼  发表于: 2015-01-14 09:40
我的nano PC也遇到同样的问题,先照你的方法,研究研究
级别: 新手上路
UID: 7870
精华: 0
发帖: 15
金钱: 75 两
威望: 15 点
贡献值: 0 点
综合积分: 30 分
注册时间: 2009-07-31
最后登录: 2016-05-08
8楼  发表于: 2015-08-26 12:00
哥们很感谢你的patch 很好,我的qq67470988
我目前在用nano 资料很少,就靠着老本在研究了,希望一起进步,
真诚 努力
级别: 新手上路
UID: 123985
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
贡献值: 0 点
综合积分: 2 分
注册时间: 2016-03-31
最后登录: 2016-04-06
9楼  发表于: 2016-03-31 19:26
非常非常非常感谢。。我也遇到类似的问题,在tiny4412的uboot上patch了你的patch成功烧写并启动到uboot了
再次感谢!
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go