CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 29317|回复: 15

Cubieboard开发环境与Uboot的SD启动卡制作

[复制链接]
发表于 2013-1-26 23:54:51 | 显示全部楼层 |阅读模式
本帖最后由 andy 于 2013-1-26 23:54 编辑

原文在我博客:http://blog.csdn.net/andy_wsj/article/details/8515197

拿到Cubieboard已经蛮久了,平时上班比较忙,只能晚上玩一会,年关将近,周末都要加班呀....
所谓U-boot 移植,其实别人都做好了,我只不过是做了一个启动卡

系统环境:电脑二台,台式机XP;笔记本RHEL5,平时就用这个,懒得整ubuntu
代码工具:XP上:          Source Insight 3.5
                 RHEL5上:    Vim,编译工具链arm-2009q3,这个应该有更高版本;串口工具minicom,我的版本是2.1

资源:      支持Cubieboard的U-boot下载网址:https://github.com/linux-sunxi/u-boot-sunxi
                 我直接从网页按zip格式下载到XP下
                 制作方法参考网站:https://github.com/linux-sunxi/u-boot-sunxi/wiki

硬件:      串口线,淘宝Cubieboard自带USB串口线,RHEL5下不用装驱动就能使用,XP下可以用驱动精灵自动安装
                 microSD卡一枚,2G,读卡器一只,华强北出品,居然比淘宝贵...
开工:

         首先观察Cubiebord预装的U-Boot,设置好minicom(具体方法请自己百度),连接串口(使用淘宝配的线),连线顺序:
         黑色 ---- GND
         绿色 ---- RX
         白色 ---- TX
         红色不接

        将串口USB端插入笔记本,打开终端输入命令“minicom”,启动minicom之后,再将电源线插入笔记本USB,启动过程中按键盘任意键,进入U-boot,可以看到:

HELLO! BOOT0 is starting!                                                  
boot0 version : 1.5.1                                                      
dram size =1024                                                            
Succeed in opening nand flash.                                             
Succeed in reading Boot1 file head.
The size of Boot1 is 0x0003c000.
The file stored in 0X00000000 of block 2 is perfect.
Check is correct.
Ready to disable icache.
Succeed in loading Boot1.                                          //第1阶段bootloader
Jump to Boot1.
[       0.133] boot1 version : 1.4.0
[       0.133] pmu type = 3
[       0.135] bat vol = 0
[       0.161] axi:ahb:apb=3:2:2
[       0.161] set dcdc2=1400, clock=1008 successed
[       0.163] key
[       0.175] no key found
[       0.175] flash init start
[       0.227] flash init finish
[       0.228] fs init ok
[       0.229] fattype FAT16
[       0.229] fs mount ok
[       0.236] script finish
[       0.238] power finish
[       0.245] BootMain start
[       0.245] 0
[       0.264] key value = 0
[       0.264] recovery key high 6, low 4
[       0.265] unable to find fastboot_key key_max value
[       0.274] test for multi os boot with display
[       0.275] show pic finish
[       0.278] load kernel start
[       0.302] load kernel successed
[       0.302] start address = 0x4a00000

U-Boot 2011.09-rc1 (Nov 26 2012 - 14:01:52) Allwinner Technology     //第2阶段bootloader

CPU:   SUNXI Family
Board: A10-EVB
DRAM:  512 MiB
NAND:  3776 MiB
In:    serial
Out:   serial
Err:   serial
--------fastboot partitions--------
-total partitions:11-
-name-        -start-       -size-      
bootloader  : 1000000       1000000     
env         : 2000000       1000000     
boot        : 3000000       2000000     
system      : 5000000       14000000   
data        : 19000000      20000000   
misc        : 39000000      1000000     
recovery    : 3a000000      2000000     
cache       : 3c000000      8000000     
private     : 44000000      1000000     
sysrecovery : 45000000      14000000   
UDISK       : 59000000      93000000   
-----------------------------------
Hit any key to stop autoboot:  0
sunxi#



输入命令 version,可以看到:

sunxi#version

U-Boot 2011.09-rc1 (Nov 26 2012 - 14:01:52) Allwinner Technology
arm-none-linux-gnueabi-gcc (Sourcery G++ Lite 2010.09-50) 4.5.1
GNU ld (Sourcery G++ Lite 2010.09-50) 2.20.51.20100809
sunxi#

      使用的编译器是arm-none-linux-gnueabi-gcc,版本4.5.1,但是俺的是4.3.2版本,为此我费了了老大劲,换成4.4.1时才编译成功
      有了上面的基本情况,开始编译制作,在XP下解压下载的u-boot-sunxi-sunxi.zip,删除board文件夹下除了allwinner文件的其他文件,board/allwinner文件夹内只需要保留common和Cubieboard两个文件夹,其他不需要;删除arch文件夹内除了arm文件的其他文件,arch/arm/cpu文件夹下只保留armv7和u-boot.lds,arch/arm/cpu/armv7内文件和sunxi文件夹保留,其他文件夹删除。这样做可以在Source Insight关联时减少关联项目,便于查阅,若还想更进一步,将include目录下与A10无关的头文件一并删除,关联时更加清晰。使用Source Insight 3.5建立一个工程,添加文件时选择u-boot解压文件夹,选择“add tree”,将全部文件加入工程,再选Project->Rebuilt Project...,如此一来,XP下的代码查阅工程就建立啦。

      linux下解压U-boot到自己工作目录,不需要删除操作。

      安装arm-2009q3.tar.bz2,在arm-2009q3.tar.bz2目录下输入命令:tar   -jxvf    arm-2009q3.tar.bz2   -C   /usr/local/arm/

     将编译器设置为默认arm编译器: vim   /etc/profile

                                在末尾增加一行: export=$PATH:/usr/local/arm/arm-2009q3/bin

                               保存退出之后执行:source    /etc/profile

      或者重启,或者logoout一下,使设置生效。以上设置适合RHEL5,其他linux系统请百度解决。

      

      编译U-boot:   make cubieboard CROSS_COMPILE=arm-none-linux-gnueabi-

      等待.........

      生成三个.bin文件,分别是u-boot.bin和spl目录下的sunxi-spl.bin、u-boot-spl.bin

     第1阶段bootloader:sunxi-spl.bin

     第2阶段bootloader:u-boot.bin

     u-boot-spl.bin我没试过,应该也是第一阶段的bootloader



     SD卡准备(我机器上是/dev/sdb),linux下操作:

     前面1M给bootloader使用(为什么?要仔细查查资料,目前我还不明白,望高人指点),先清零:

     dd   if=/dev/zero  of=/dev/sdb   bs=1M   count=1

     后面剩余的可以不管,也可分区,具体做法请百度



     将u-boot写入,只写入第1阶段bootloader,在u-boot目录操作:

                 dd  if=spl/sunxi-spl.bin  of=/dev/sdb   bs=1024    seek=8

     取下SD卡,插到板子上,上电,minicom有输出如下:

     

U-Boot SPL 2012.10 (Jan 23 2013 - 21:18:42)                                
DRAM: 1024MB                                                               
SUNXI SD/MMC : 0                                                

U-Boot SPL 2012.10 (Jan 23 2013 - 21:18:42)

      然后就死掉了,那是因为没有写入第2阶段,即u-boot.bin。

     将u-boot写入,写入第2阶段bootloader,在u-boot目录操作:
                 dd  if=u-boot.bin  of=/dev/sdb   bs=1024    seek=32
     取下SD卡插到板子上,上电,minicom有输出如下:

U-Boot SPL 2012.10 (Jan 24 2013 - 21:42:50)                                
DRAM: 1024MB                                                               
SUNXI SD/MMC: 0                                                


U-Boot 2012.10 (Jan 24 2013 - 21:42:50) Allwinner Technology

CPU:   SUNXI Family
Board: Cubieboard
I2C:   ready
DRAM:  1 GiB
MMC:   SUNXI SD/MMC : 0
*** Warning - bad CRC, using default environment  //没做参数文件,使用默认参数

In:    serial
Out:   serial
Err:   serial
start main_loop...Hit any key to stop autoboot:  0
sun4i#

输入ersion命令:
sun4i#version

U-Boot 2012.10 (Jan 24 2013 - 21:42:50) Allwinner Technology
arm-none-linux-gnueabi-gcc (Sourcery G++ Lite 2009q3-67) 4.4.1
GNU ld (Sourcery G++ Lite 2009q3-67) 2.19.51.20090709
sun4i#


可以看到我使用的编译器是4.4.1版本的,低于原来板子自带u-boot编译器的版本
至此,U-boot的启动SD卡基本制作完成


                    
回复

使用道具 举报

发表于 2013-1-27 12:16:36 | 显示全部楼层
前面1M给bootloader使用(为什么?要仔细查查资料,目前我还不明白,望高人指点),先清零:

     dd   if=/dev/zero  of=/dev/sdb   bs=1M   count=1


1M主要是为了方便,写0把MBR 表都清掉。实际上写几十k就可以了。
回复 支持 反对

使用道具 举报

发表于 2013-1-28 18:20:21 | 显示全部楼层
sshibaile
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-28 20:49:11 | 显示全部楼层
ghw 发表于 2013-1-28 18:20
sshibaile

看下那个网站的做法,不会错的
回复 支持 反对

使用道具 举报

发表于 2013-1-29 10:32:36 | 显示全部楼层
andy 发表于 2013-1-28 20:49
看下那个网站的做法,不会错的

昨天发现我编译出来的文件大一点点的。哎。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-29 21:06:36 | 显示全部楼层
ghw 发表于 2013-1-29 10:32
昨天发现我编译出来的文件大一点点的。哎。。。

编译器一定要正确,我写了个工具,你可以用一下,请看我另外一个帖子
回复 支持 反对

使用道具 举报

发表于 2013-2-7 20:33:21 | 显示全部楼层
好铁,入门了
回复 支持 反对

使用道具 举报

发表于 2013-3-28 10:30:13 | 显示全部楼层
能给一个入门级的资料吗?能帮我发邮箱吗?qre.com.cn@163.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-3-28 15:53:38 | 显示全部楼层
王耿 发表于 2013-3-28 10:30
能给一个入门级的资料吗?能帮我发邮箱吗?

什么入门级?
太笼统了
回复 支持 反对

使用道具 举报

发表于 2013-3-28 17:34:12 | 显示全部楼层
东西刚昨天购买的,只给我几个链接的地址和论坛,现在我想了解整套的怎么烧写怎么安装,重简单的一步步的教程。望楼主谅解我这个出来学习的新手。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-11-22 20:08 , Processed in 0.027013 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部