折腾了三天,终于算是把Tiny4412这块坑爹的板子搞起来了,好在板子还是好的。可是原厂的资料,怎一个坑字了得!在此,一首凉凉送给我们的FriendlyARM.
话不多说,以下干货:
为了启动这块开发板,先后查阅了多方资料,包括但不限于:
https://blog.csdn.net/morixinguan/article/details/50677105
http://www.cnblogs.com/kevinhwang/p/5617629.html
特此感谢!
准备阶段:
开发环境:
硬件开发板:Tiny4412/Super4412SDK 1506 ,友善先后出了几款Tiny4412的板子,其硬件配置会有差异,因此在软件上也会有差异,本次启动使用的型号是1506 (开发板底板上有写)。
软件环境:win7+VM ware虚拟机里ubuntu 14.04
使用到的资源附链接:
交叉编译器:arm-linux-gcc-4.5.1 链接:https://pan.baidu.com/s/1MHY_SdvDuAobRNcRqjHRig 密码:tx71
uboot: https://download.csdn.net/download/behold1942/10437542
kernel: https://download.csdn.net/download/behold1942/10437576
dnw:链接:https://pan.baidu.com/s/1O3karvVDL09Uud35PbxkuQ 密码:rbb4
minicom:自己随便网上下就行,这个最好找
剩下的物料需要一张空白的SD卡,一根网线,一根dnw下载线,一根串口线,配套的开发板应该都有的,未上电之前,预先请全部插在开发板上
资源说明:
uboot Tiny4412 1306的开发板上据说有4个DDR3,而我们所使用的1506只有两片,因此uboot不同,使用不适配的Uboot,上电只会打印OK;
kernel: 官方光盘提供的linux-3.5源码也可,但要注意关闭 TrustZone,因为Uboot不支持TrustZone;
dnw:因为驱动文件的ID不同,DNW文件并不通用,所以必须用这个。
因为本文也主要参照了网上各位大佬的资料,因此,只在本人遇到问题的流程作详细说明:
0、首先创建一个目录,将需要使用的资源都放在这个目录下,方便后续使用:
例如 mkdir /Tiny4412
然后将所用到的uboot源码,kernel源码 dnw minicom都放在这个目录下
1、安装交叉编译环境:
//自行查资料安装,如果这步搞不定,则以下的教程不太适合你
2、编译uboot生成uboot.bin:
本文提供的资源已经完成了uboot的编译,里面可以直接找到uboot.bin文件,当然,你还是可以再次编译的
# tar -xvf uboot_tiny4412_1506.tar
#cd ./uboot_tiny4412_changed_version //进入解压出的文件夹,解压出的文件夹名称可能不同,替换即可
#make clean //删除之前可能编译过的东西
#make tiny4412_config
#make //编译,等待数分钟就可在该目录下生成uboot.bin。
3、将uboot.bin烧写进SD卡
首先,先查看一下电脑上已有的块设备
#ls /dev/
查看所有已sd开头的设备,
将你的SD卡插入电脑,然后挂载到虚拟机后,
#ls /dev
查看所有以sd开头的设备
看下新增的是哪个,那个就是SD卡的盘符,我这里是sdb
接下来格式化磁盘
#dd if=/dev/zero of=/dev/sdb bs=1024 count=102400
此命令 将覆盖102400k大小的范围
接下来烧写uboot进SD卡,此时应该还在uboot源码的根目录下,然后执行
#cd ./sd_fuse
#make
#cd ./tiny4412
#./sd_fusing.sh /dev/sdb
等待数秒后,uboot即烧写进入SD卡。
4、配置编译内核生成zImage文件
本文开头提供了zImage,如果对内核编译流程不熟悉,可暂且直接下载该zImage使用,可跳过以下编译内核流程。
当然最好是使用官方光盘提供的Linux3.5的源码linux-3.5-tiny4412,不过该源码可不能直接编译
#tar -xvf linux-3.5-tiny4412
#cd ./linux-3.5
#make menuconfig
然后
配置 System Type-> Support TrustZone-enabled Trusted Execution Environment 关闭该项即可 使用空格键关闭,[*]代表打开 [ ]代表关闭
配置完成后退出
#cp tiny4412_linux_defconfig .config
#make
等待编译完成...
编译完成后在./arch/arm/boot/文件夹下会出现zImage文件。
即./arch/arm/boot/zImage
5、安装DNW软件:
软件链接见本文开头,安装步骤:
解压 tar -xvf 文件名
cd ./dnw-linux
make
make install
cd ./src/dnw
cp ./dnw /usr/local/bin 将dnw软件拷贝到用户bin路径下,以后就可以直接使用了
6、安装配置minicom串口软件
配置过程参照:https://blog.csdn.net/morixinguan/article/details/50677105
配置完成后打开minicom
7、启动开发板,进入uboot
将SD卡插入开发板,开发板上的拨码开关拨到SDBOOT,然后上电,可看到minicom如下打印信息,这就说明Uboot启动正常了, 3s倒计时结束之前,按下空格键,就会进入uboot命令行:
8、下载内核,使用DNW,并使用movi命令写内核到SD卡
在minicom中输入
# dnw 0x40008000
此时minicom提示OTG connect ,waitting for transmit...
然后再打开一个终端 窗口 ,进入刚刚编译好zImage的目录,使用dnw下载zImage:
# dnw zImage
此时dnw就会开始传输zImage
传输完成 后,minicom中会提示 checksum OK,并自动跳回命令行 ,(若没有自动跳回或提示为其他,则传输不正常,此时需确认连接以及DNW软件的正确性),此时继续输入:
#movi write kernel 0 0x40008000 //将DNW下发的zImage写入SD卡 0x40008000地址
#set bootcmd "movi read kernel 0 0x40008000;bootm 0x40008000" //设置uboot启动读命令
#save //保存
#reset //重启
若一切正常,此时应当进入Uboot,等待3s后,会自动开始加载内核,此时就会打印出非常多的信息,但是因为么有挂载根文件系统,在启动十多秒后停下来,这就意味着启动正常了。如果只是打印了几行或者十几行,说明加载还是不正常的。