硬件平台:tiny4412
系统:linux-3.5-20151029
文件系统:busybox-1.22.1.tar.bz2
编译器: arm-linux-gcc-4.5.1
目的:
使用uboot引导Linux系统,并挂接根文件系统,搭建起linux开发环境。
由于友善支臂提供的minitools不是开源,使用起来很不舒服。本文将记录从零使用uboot在tiny4412上搭建linux系统的。由于之前只是学了2440,完成这个流程也遇到各种,现在总结如下。其中参考了多篇博客才得以实现,具体涉及的时候会给出链接。
http://www.arm9home.net/read.php?tid-80810.html。也可以使用这篇博客体提供的uboot:http://blog.csdn.Net/lizuobin2/article/details/52825033
下载后配置,编译即可产生uboot。
本人使用的uboot下载链接:http://download.csdn.net/detail/fengyuwuzu0519/9886366
tar xzf uboot_tiny4412-20130729.tgz
cd uboot_tiny4412
make tiny4412_config
make
编译 用于生成bl2 的工具
cd sd_fuse;
make
假设SD卡已被PC Linux识别为/dev/sdc, 以root用户运行以下命令即可:
cd sd_fuse/tiny4412
./sd_fusing.sh /dev/sdc
到此我们准备好了
(1) 内核
(2) 文件系统
(3) Uboot
接下来就是如何下载,并启动内核,挂接文件系统了。
http://blog.sina.com.cn/s/blog_69dd1a09010196bf.html
http://blog.csdn.net/u011452544/article/details/39393857
http://blog.csdn.net/morixinguan/article/details/70478650
1.首先解压缩文件:
# tar xvf dnw_for_linux.tar.gz
另:在Ubuntu下右键解压也很方便
目录如下:
dnw_linux/
dnw_linux/secbulk/
dnw_linux/secbulk/Makefile
dnw_linux/secbulk/secbulk.c
dnw_linux/dnw/
dnw_linux/dnw/dnw.c
其中secbulk.c是PC端USB驱动, dnw.c是写入工具
2 编译并加载secbulk.c内核模块
$cd secbulk
$make -C /lib/modules/`uname -r`/build M=`pwd` modules
编译成功后在当前目录下可以看到secbulk.ko
3.编译完成后,会生成secbulk.ko文件:
# ls
Makefile Module.symvers secbulk.ko secbulk.mod.o
modules.order secbulk.c secbulk.mod.c secbulk.o
4.加载模块到Linux内核:
# sudo insmod ./secbulk.ko (注意要在root权限下)
# dmesg (查看是否加载成功)
secbulk:secbulk loaded
usbcore:registered new interface driversecbulk (看到这样两行就说明成功了)
开机的时候不会自动加载.ko文件,这样每次都要先加载才可以使用,此时将其加入开机脚本,
使其得到自动加载,编辑/etc/init.d/rc.local 在最后加上 insmod /所在路径/secbulk.ko。
5.下面开始编译dnw工具
# cd ../dnw
# gcc -o dnw dnw.c
(编译完成,会看到dnw可执行文件)
6.将文件copy到/usr/local/bin目录
# sudo cp dnw /usr/local/bin
这样就可以在shell下面直接使用dnw命令了
但是问题出现了,当我使用这个dnw下载bl2.bin的时候,会出现校验错误。但是下载其他文件均没有问题,于是网上各种寻找DNW工具,看安装,最后通过和另一个版本的DNW结合,解决了这个问题,uboot也完整的下载到了emmc中。下载链接:http://download.csdn.net/detail/fengyuwuzu0519/9886362。
(6)DNW下载好了,我们可以把uboot下载到emmc了。
#uboot:emmc open 1
提示:eMMC OPEN Success.!!
上面提示emmc开启成功,注意说明,emmc一旦打开,需要连续烧录,烧录完成后可以关闭emmc
#uboot:dnw
提示:OTG cable Connected!
Now, Waiting forDNW to transmit data(等待DNW下载)
打开虚拟机,进入uboot所在目录
cd /work/uboot_tiny4412
dnw sd_fuse/tiny4412/E4412_N.bl1.bin
此时u-boot中断会提示传送校验完成,此时已经把bl1.bin通过USB传送到了memeory的0xc0000000起始地址,大小8KB.
接下来我们烧录bl1.bin到eMMC中,u-boot下继续输入:
#uboot:mmc write 1 0xc0000000 0 0x10
会提示写入信息,说明已经写入成功。这个是把刚才从PC端通过dnw下载下来的bl1.bin固件下载到emmc中,起始0, 16个block, 一个block是512B, 16*512=8*1024=8KB. 这个是bl1.bin的存放位置。
以此类推,烧录bl2.bin. u-boot.bin, tzsw.bin
#uboot:dnw
#虚拟机:dnw sd_fuse/tiny4412/bl2.bin
#uboot:mmc write 1 0xc0000000 0x10 0x1C
#uboot:dnw
#虚拟机:dnw u-boot.bin
#uboot:mmc write 1 0xc0000000 0x30 0x21D
#uboot:dnw
#虚拟机:dnw sd_fuse/tiny4412/E4412_tzsw.bin
#uboot:mmc write 1 0xc0000000 0x2c0 0xB8
启动分区到此全部写入完成,注意一定要关闭emmc
u-boot下继续输入:
#uboot:emmc close 1
提示:eMMC CLOSE Success.!!
现在uboot已经完整的烧入到emmc,我们可以将开关波动到NAND一侧,从emmc启动,发现uboot输出已经变成了:
http://blog.csdn.net/lizuobin2/article/details/52825033
内核下载我们采用fastboot下载,uboot已经支持了fastboot。
安装windows下fastboot工具
如果你已经安装了Android Studio,那么你已经有fastboot工具,在目录
F:AndroidSDKplatform-tools下有fastboot.exe AdbWinApi.dll
我也提供一下fastboot下载链接:http://download.csdn.net/detail/fengyuwuzu0519/9886552
下载我们进入uboot,执行fastboot,并将单板的usb接到PC。提示如下:
windows下cmd进入fastboot.exe所在目录
fastboot flashkernel zImage(正常下载)
fastboot flashramdisk ramdisk-u.img(正常下载)
fastboot flash fatrootfs_qtopia_qt4.img (下载始终出错,于是放弃光盘的文件系统,使用自制的文件系统)
fastboot reboot
此时,我们已经将uboot、内核下载到单板中。
参考:http://blog.csdn.net/lizuobin2/article/details/52825033
2.3、设置uboot启动参数,启动内核,并挂接网络文件系统
uboot启动参数:
set gatewayip 192.168.1.1
set ipaddr 192.168.1.125 //板子的IP
set serverip 192.168.1.123 //PC机IP
set bootargs "root=/dev/nfsnfsroot=192.168.1.123:/work/nfs/filesystem ip=192.168.1.125console=ttySAC0,115200 lcd=S70 ctp=2"
save
set bootcmd moviread kernel 0 40008000;movi read rootfs 0 41000000 100000;bootm 4000800041000000
reset
内核启动信息:
上一篇:tiny4412 裸机程序 九、串口排查驱动原因及字符图片显示
下一篇:分享tiny4412,emmc烧录u-boot, 支持fastboot模式烧写emmc
推荐阅读最新更新时间:2024-11-11 10:29