今天我们来介绍一下TINY4412开发环境的搭建。
在Linux环境下:
在终端输入以下命
创建一个ARM目录
mkdir /disk/A9 -p
接下来你需要准备以下的东西
1、arm-linux-gcc-4.5.1 交叉编译器
2、linux-3.5-tiny4412 内核
3、rootfs_qtopia_qt4-20140124.tar.gz QT文件系统 (做好的)
4、busybox-1.22.1.tar.bz2 文件系统原码 busybox
5、uboot_tiny4412-20130729.tgz uboot
6、arm-qte-4.8.5-20131207.tar.gz QT原码 ARM
7、uboot_tiny4412-20130729.tgz 对应的4412uboot源码
8、minicon 串口
9、安装dnw ,需要上网搜索dnw下载并安装到系统
10、一张SD卡、一条串口线、一根dnw线、一根网线
好了,该准备的我们都准备好了,接下来看如何把开发环境搭建好。
1.安装交叉编译器
cd /disk/A9 tar -xvf arm-linux-gcc-4.5.1 ls opt FriendlyARM cp opt/FriendlyARM /opt -r ls /opt/FriendlyARM/toolschain/4.5.1/bin/ 拷 /opt/FriendlyARM/toolschain/4.5.1/bin/ vim ~/.bash_profile 在PATH=$PATH:$HOME/bin下面加上 PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin/ 保存退出 ctrl +Alt + backspace 注销 测试是否安装成功 arm- tab tab 可以列出所有的交叉编译器就成功
2.编译uboot
cd /disk/A9 tar -xvf uboot_tiny4412-20130729.tgz cd uboot_tiny4412 make tiny4412_config make 生成u-boot.bin u-boot 文件
3.将编好的u-boot.bin烧写到SD卡
1>插入SD卡
2>D卡
dd if=/dev/zero of=/dev/sdb bs=1024 count=102400
3>烧写
cd /disk/A9/uboot_tiny4412/sd_fuse make cd tiny4412 ./sd_fusing.sh /dev/sdb
烧写完毕
配置minicom
在命令行中输入:
minicom -s ┌─────[configuration]──────┐ │ Filenames and paths │ File transferprotocols │ Serial port setup <== 选择这一项 │ Modem and dialing │ Screen and keyboard │ Save setup as dfl │ Save setup as.. │ Exit │ Exit from Minicom └──────────────────────────┘
按如图所示配置
┌───────────────────────────────────────────────────────────────────────┐ │ A - Serial Device : /dev/ttyUSB0 │ B - Lockfile Location : /var/lock │ C - Callin Program : │ D - Callout Program : │ E - Bps/Par/Bits : 115200 8N1 │ F - Hardware Flow Control : No │ G - Software Flow Control : No │ │ Change which setting? └───────────────────────────────────────────────────────────────────────┘
改成这样
enter Save setup as dfl 保存成默认 Exit 退出 退出minicom ctrl + a + q 退出
然后开机界面可以看到以下打印信息:
U-Boot 2010.12 (Oct 13 2015 - 11:03:50) for TINY4412 CPU: S5PC220 [Samsung SOC on SMPPlatform Base on ARM CortexA9] APLL = 1400MHz, MPLL = 800MHz Board: TINY4412 DRAM: 1023 MiB vdd_arm: 1.2 vdd_int: 1.0 vdd_mif: 1.1 BL1 version: N/A (TrustZone EnabledBSP) Checking Boot Mode ... SDMMC REVISION: 1.1 MMC Device 0: 3724 MB MMC Device 1: 7456 MB MMC Device 2: N/A *** Warning - using default environment Net: No ethernet found. Hit any key to stop autoboot: 0 TINY4412 #
内核移殖
编好内核 zImage 给uboot引导
cd /disk/A9 ls linux-3.5-tiny4412 tar -xvf linux-3.5-tiny4412 cd linux-3.5 cp tiny4412_linux_defconfig .config make
最后出现
OBJCOPY arch/arm/boot/zImage Kernel: arch/arm/boot/zImage is ready
编译成功
arch/arm/boot/zImage
安装DNW
cd /disk/A9/dnw-linux make make install
一 . 利用dnw方式下载内核
1> minicom中
dnw 0x40008000
2> PC中
cd /disk/A9/linux-3.5 dnw arch/arm/boot/zImage
成功下载内核到板子
3>引导内核 ==> 启动内核
bootm 0x40008000
二 . SD卡下载内核
1> 关电取出SD卡,并将PC机上的内核zImage拷到SD卡上的第一个分区 fat32
2> 将SD卡插入开发板并且开机
3> 查看SD卡上的内核
fatls mmc 0:1 / //查看第0个MMC设备 第一个分区 的分区目录
4> 读取SD卡上的内核
fatload mmc 0:1 0x40008000 zImage
5> 引导内核
bootm 0x40008000
三 . 自动读取SD卡上的内核并且启动
在minicom中
set bootcmd "fatload mmc 0:10x40008000 zImage;bootm 0x40008000" save
reset 查看是否会自动启动内核
四. movi 内核启动
1> DNW下载内核到板子uboot 地址0x40008000
2>写内核
movi write kernel 0 0x40008000
3> 设置自动启动
set bootcmd "movi read kernel 0 0x40008000;bootm 0x40008000"
4> reset 自动启动内核
烧写文件系统
1> 网络文件系统
cd /disk/A9 tar -xvf busybox-1.22.1.tar.bz2 cd busybox-1.22.1 make defconfig //默认配置 make menuconfig Busybox Settings ---> [*] Build BusyBox as a static binary (no shared libs) │ [*] Build BusyBox as a positionindependent executable (NEW) │ [ ] Force NOMMU build │ [ ] Build shared libbusybox (NEW) │ [*] Build with Large File Support (for accessing files > 2 GB) │ (arm-linux-) Cross Compiler prefix
保存退出
make -j4 make install 会生成一个目录 _install
制作文件系统
cd /disk/A9 mkdir filesystem cd /disk/A9/filesystem cp /disk/A9/busybox-1.22.1/_install/* .-r mkdir etc dev opt sys tmp mnt lib proc mkdir etc/init.d vim etc/init.d/rcS
添加
mount -t ramfs none /dev mount -t sysfs none /sys mount -t proc none /proc mount -t tmpfs none /tmp /sbin/mdev -s
保存退出
vim etc/inittab
添加
::sysinit:/etc/init.d/rcS ttySAC0::askfirst:-/bin/sh
保存退出
vim etc/profile
添加
export PS1="[root @ cjy \W ] #"
保存退出
mknod dev/console c 5 1 cp /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/* ./lib -r cd ..
给权限
chmod 777 filesystem -R
发布文件系统
vim /etc/exports
添加
/disk/A9/filesystem *(rw,sync,no_root_squash)
保存退出
检查文件系统是否已经发布
showmount -e 192.168.88.xxx //板子上配置IP还有bootargs set gatewayip 192.168.88.1 set ipaddr 192.168.88.x //板子的IP set serverip 192.168.88.xxx //PC机IP save set bootargs "root=/dev/nfsnfsroot=192.168.88.xxx:/disk/A9/filesystem ip=192.168.88.x console=ttySAC0,115200 lcd=S70 ctp=2" save
reset 查看是否进入文件系统
//************************************************************
SD卡文件系统
一>
将/disk/A9/filesystem 拷到 SD卡上的 第四个分区
板子
1> 保存nfsbootargs
set nfsbootargs $bootargs save
2>
set bootargs "root=/dev/mmcblk0p4console=ttySAC0,115200 lcd=S70 ctp=2" save
3>
reset 查看是否进入SD卡文件系统
二>
先进入网络文件系统
挂载出SD卡的第四个分区
mount /dev/mmcblk0p4 /mnt
打包现有的文件系统
cd /disk/A9/filesystem tar -cf nfs.tar * tar -xvf nfs.tar -C /mnt umount /mnt
板子
2>
set bootargs "root=/dev/mmcblk0p4console=ttySAC0,115200 lcd=S70 ctp=2" save
3>
reset 查看是否进入SD卡文件系统
最后一个
将文件系统直接烧录到板子上的mmc
1.
将uboot烧写进去
dnw E4412_N.bl1.bin
先进入SD卡的uboot
2.
emmc open 1 // 1板子上的MMC 0x40008000从哪里读 0起始块地址 0x10大小
3.
mmc write 1 0x40008000 0 0x10 dnw bl2.bin
4.
mmc write 1 0x40008000 0x10 0x1C dnw u-boot.bin
5.
mmc write 1 0x40008000 0x300x1F6
6.
emmc close 1
7.
段电,拔SD卡,选择NAND启动,上电看是否进入板子MMCuboot
烧写MMC 内核
dnw arch/arm/boot/zImage movi write kernel 0 0x40008000 set bootcmd "movi read kernel 00x40008000;bootm 0x40008000" save //分区板子上的MMC fdisk -p 0 查看分区信息 创建分区 fdisk -c 1000 500 500
直接进入网络文件系统
set bootargs"root=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" save
进入系统之后
mount /dev/mmcblk0p2 /mnt tar -xvf nfs.tar -C /mnt chmod 777 /mnt/ -R umount /mnt u-boot内 set bootargs"root=/dev/mmcblk0p2 console=ttySAC0,115200 lcd=S70 ctp=2" save
reset 启动MMC内的文件系统