创建一个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内的文件系统

手把手教你从头开始搭建友善之臂ARM-tiny4412开发环境(史上最详细!!)的更多相关文章

  1. 手把手教你使用 VuePress 搭建个人博客

    手把手教你使用 VuePress 搭建个人博客 有阅读障碍的同学,可以跳过第一至四节,下载我写好的工具包: git clone https://github.com/zhangyunchencc/vu ...

  2. 手把手教你认识并搭建Nginx

    手把手教你认识并搭建Nginx Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor ...

  3. 手把手教你用vue-cli搭建vue项目

    手把手教你用vue-cli搭建vue项目 本篇主要是利用vue-cli来搭建vue项目,其中前提是node和npm已经安装好,文章结尾将会简单提到一个简单的例子.使用vue-cli搭建项目最开始我也是 ...

  4. 沉淀,再出发——手把手教你使用VirtualBox搭建含有三个虚拟节点的Hadoop集群

    手把手教你使用VirtualBox搭建含有三个虚拟节点的Hadoop集群 一.准备,再出发 在项目启动之前,让我们看一下前面所做的工作.首先我们掌握了一些Linux的基本命令和重要的文件,其次我们学会 ...

  5. 手把手教你用webpack3搭建react项目(开发环境和生产环境)(一)

    开发环境和生产环境整个配置源码在github上,源码地址:github-webpack-react 如果觉得有帮助,点个Star谢谢!! (一)是开发环境,(二)是生产环境. 一.首先创建packag ...

  6. 手把手教你用Python搭建自己的量化回测框架【均值回归策略】

    手把手教你用Python搭建自己的量化回测框架[均值回归策略] 引言 大部分量化策略都可以归类为均值回归与动量策略.事实上,只有当股票价格是均值回归或趋势的,交易策略才能盈利.否则,价格是随机游走的, ...

  7. SpringCloud学习之手把手教你用IDEA搭建入门项目(三)

    本篇博客是承接上一篇<手把手教你用IDEA搭建SpringCloud入门项目(二)>,不清楚的请到我的博客空间查看后再看本篇博客,上面两篇博客成功创建了一个简单的SpringCloud项目 ...

  8. SpringCloud学习之手把手教你用IDEA搭建入门项目(二)

    本篇博客是承接上一篇<手把手教你用IDEA搭建SpringCloud入门项目(一)>,不清楚的请到我的博客空间查看后再看本篇博客 1)先创建一个Eureka服务注册中心模块,用来作为服务的 ...

  9. SpringCloud学习之手把手教你用IDEA搭建入门项目(一)

    SpringCloud简单搭建 jdk:1.8开发工具:IDEA注:需要了解springcloud 1.创建最简单的Maven项目 1)开始创建一个新的项目 ​ 2)创建一个空模板的maven项目,用 ...

随机推荐

  1. PGM:无向图模型:马尔可夫网

    http://blog.csdn.net/pipisorry/article/details/52489321 马尔可夫网 马尔可夫网在计算机视觉领域通常称为马尔可夫随机场(Markov random ...

  2. CSDN 支持Markdown写文章了!

    开源中国等其他技术博客很早就支持markdown格式写文章了,今天发现csdn竟然也可以了,不仅支持而且可以在线预览,本地导入导出,远程导入. 这些对于程序员写东西都非常好用,不用总是花时间来排版了. ...

  3. Android简易实战教程--第二十九话《创建图片副本》

    承接第二十八话加载大图片,本篇介绍如何创建一个图片的副本. 安卓中加载的原图是无法对其修改的,因为默认权限是只读的.但是通过创建副本,就可以对其做一些修改,绘制等了. 首先创建一个简单的布局.一个放原 ...

  4. ROS_Kinetic_x 基於ROS和Gazebo的RoboCup中型組仿真系統(多機器人協作)

    國防科學技術大學發布了RoboCup中型組仿真平臺,基於ROS和Gazebo設計. 該平臺可以用於多機器人協作研究.參考資料如下: ROS新聞:1    http://www.ros.org/news ...

  5. GDAL使用插件方式编译HDF4、HDF5以及NetCDF的bug修改

    GDAL库中提供了很方便的插件机制来扩展支持的数据格式,比如HDF4.HDF5.NetCDF.FileGDB.Postgre.Oralce等等.都可以通过插件的方式来使得GDAL支持相应的格式.最近将 ...

  6. 线程在Linux中的实现

          早在以前,我们就知道,CPU调度的基本单位是线程,而进程是拥有资源的基本单位,进程是用进程描述符表示的,那么线程是怎么实现和表示的呢?       线程机制是现代编程技术中常用的一种抽象概 ...

  7. JQuery纵向下拉菜单实现心得

    jquery库给我们带来了许多便利,不愧是轻量级的DOM框架,在前面的博文中小编分别对jquery的基础知识以及jquery的一些小demo有一系列的简单介绍,期待各位小伙伴的指导.使用jquery实 ...

  8. J2EE进阶(九)org.hibernate.LazyInitializationException: could not initialize proxy - no Session

    org.hibernate.LazyInitializationException: could not initialize proxy - no Session 前言 在<many-to-o ...

  9. Git管理工具对比(GitBash、EGit、SourceTree)

    Git管理工具对比(GitBash.EGit.SourceTree) GitBash是采用命令行的方式对版本进行管理,功能最为灵活强大,但是由于需要手动输入希望修改的文件名,所以相对繁琐. EGit是 ...

  10. Mybatis源码之Statement处理器BaseStatementHandler(二)

    BaseStatementHandler是一个抽象类,并没有实现和CURD相关的类,只是更多的设置了一些参数相关. 源码如下: /** * @author Clinton Begin */ publi ...