偷梁换柱——Tiny210开发板下照样玩uboot和tftp

首先向大牛liukun321致敬,这篇文章是基于他的uboot for tiny210 ver3.1http://blog.csdn.net/liukun321/article/details/7438880

其次声明,此文章针对的是初学者,大牛请绕道~~~


想必初玩友善之臂tiny210的童鞋一定对自带的superboot感到无语吧,我刚拿到板子的时候就有这感觉,玩惯了Uboot的普罗大众,估计没有几个对他这个superboot感冒吧,也不清楚友善设计这个的初衷到底是什么,不过闲来逛友善论坛时,倒是发现有个版主解释说,是为了方便初学者使用,因为有的初学者连个USB驱动都不会安装,惊恐汗一个先,难道友善这个板子是专门为开发android上层应用者开发的?对于做驱动开发和内核研究的童鞋来说,用SDCARD烧录这种笨拙的做法来测试内核,简直是不可接受的吧!好了,有点跑题了,为了让初学者少走弯路,简单介绍下使用uboot for tiny210 ver3.1来替换superboot的最快捷的方法:


  • 用友善光盘中介绍的方法将superboot,zImage和android.img都烧好,让板子先跑起来。
  • 然后编译uboot for tiny210 ver 3.1生成tiny210-uboot.bin,制作好启动sdcard。
  • 设置板上的启动选项从sdcard启动,进入友善之腿FriendlyLEG,设置uboot网络参数,注意:该版本的uboot在设置ethaddr时,第一个字节的bit0必须设置成1,否则会报错,不知道算不算是小小的bug之一:

#setenv ethaddr01:23:45:67:89:ab

#setenv ipaddr 192.168.2.100

#setenv serverip 192.168.2.10

#setenv gatewayip 192.168.2.1

#saveenv

  • 将uboot烧写到nand flash:首先在服务器上设置好tftp服务器,并设置好ip,测试通过后,将tiny210-uboot.bin放置于tftpboot:

#tftp 21000000 tiny210-uboot.bin

下载成功后,uboot会显示总共下载了多少字节,假设xxxx(hex)bytes,假设你不是很了解s5pv210的地址分区,根据uboot本身的大小来作为擦写和写入长度算是比较保险的方法

#nand erase 0 xxxx

#nand write 21000000 0 xxxx

设置板上的启动选择开关为nand启动,就可以看到从nand也可以进入FriendlyLEG了,至此,uboot已经成功的偷梁换柱了~~后面的设置应该就比较熟悉了~

  • 按以下方法修改内核以适应uboot,详参见liukun321的文章http://blog.csdn.net/liukun321/article/details/7383669,忽略此步骤将会出现加载kernel时卡死在Uncompressing Linux... done, booting the kernel....

修改内核源码的

arch/arm/mach-s5pv210/include/mach/memory.h 文件 26,27 行内容,将 Maximum of 256MiB in one bank 的限制改为 Maximum of 512MiB in one bank   作如下修改:

#defineSECTION_SIZE_BITS   29

#defineNODE_MEM_SIZE_BITS   29

  • zImage转uImage:由于uboot只支持uImage格式的镜像文件,需要使用uboot for tiny210 ver3.1源码下面的tools里面的mkimage工具将内核编译生成的zImage转换成相应的uImage~
  • 设置uboot从tftp加载kernel:

#setenv bootcmd "tftp 21000000 uImage;bootm 21000000"

#saveenv

  • 设置挂载android的命令行,参照光盘里面的ini文件即可:

#setenv bootargs root=/dev/mtdblock4 console=ttySAC0,115200 init=/linuxrc androidboot.console=s3c2410_serial0

至此,整个环境搭建完毕,尽情享受uboot和tftp在调试kernel的时候带来的便捷吧~~~~


setenv bootargs 'root=/dev/nfs rw nfsroot=192.168.1.56:/210 ip=192.168.1.210:::::eth0:off init=/linuxrc console=ttySAC0,115200'


cd /dev
mknod -m 660 console c 5 1
mknod -m 660 null c 1 3

PS:解决u-boot for tiny210 在启动友善提供的mini210 linux内核/android出现卡死在Uncompressing Linux... done, booting the kernel.  

1.由于友善提供的内核时mini210的,第一步先修改u-boot for tiny210的机器码,使之与内核机器码匹配。

修改include/configs/tiny210.h

#define MACH_TYPE_TINY210 3466 

2.友善提供的是mini210的内核,根据内核和mini210 uboot里的配置(我手里没有mini210开发板),可以知道mini210的DDR2ram

和tiny210DDR2ram在bank的挂载方式是不同的,详见我的http://blog.csdn.net/liukun321/article/details/7270426 ,故需要修改内核

源码的arch/arm/mach-s5pv210/include/mach/memory.h文件26,27行内容,将Maximum of 256MiB in one bank的限制改为Maximum

 of 512MiB in one bank  作如下修改:

#define SECTION_SIZE_BITS    29
#define NODE_MEM_SIZE_BITS    29 

通过上述两步修改u-boot for tiny210即可成功引导linux/android.



$make ARCH=arm CROSS_COMPILE=/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi- tiny210_config

$sudo dd iflag=dsync oflag=dsync if=tiny210-uboot.bin of=/dev/sdb seek=1
cp mini210_linux_defconfig .config

注意mac 地址

你可能感兴趣的:(偷梁换柱——Tiny210开发板下照样玩uboot和tftp)