Exynos4412从SD卡启动的简单网络文件系统制作

2020-02-15来源: eefocus关键字:Exynos4412  SD卡启动  网络文件系统

1. 简介

嵌入式系统能够在开发板上正常运行,需要先进行系统配置,一个完整的嵌入式系统应该包含的几个部分::uboot,kernel,rootfs,appfs。这几部分在ARM板Flash上的位置关系如下图所示:

嵌入式系统分区结构

嵌入式系统分区结构


注:图片来源于韦东山老师的《嵌入式Linux应用开发完全手册》


rootfs可以不用添加到开发板,而是部署到PC机上,开发板在运行完kernel,要挂载rootfs时,可以通过NFS网络挂载到设定好的PC机上的文件系统上。


操作系统: 内核 + 文件(应用, 配置, 设备, ...);


    bootloader: u-boot (交互界面) # lsX

                    help


    kernel    : linux  (没有交互)

    filesystem: rootfs android qt_rootfs ... 

                       ....    ....

                shell

2. 安装工具

需要用到的安装工具包及源码包如下:


2.1 安装交叉编译工具

交叉编译:在PC机(x86平台)上开发程序,在ARM板上运行,提高开发、编译速度。

在编译uboot、内核、busybox、程序文件之前需要安装兼容开发板的交叉编译工具


参考Exynos4412交叉编译环境搭建


检测系统是否已经安装有交叉编译环境:


# arm-linux-gcc -v  

bash: arm-linux-gcc: command not found  

安装步骤:


找到arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz 所在路径,并解压压缩文件

# tar xf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz   

# ls  

arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz  opt  

// 解压后得到一个opt文件夹

在usr/local/目录下创建文件夹,并将解压缩的文件夹./opt/FriendlyARM/toolschain/4.5.1/拷贝到/usr/local/arm/目录:

# mkdir /usr/local/arm  

# cp opt/FriendlyARM/toolschain/4.5.1/ /usr/local/arm/ -rf  

修改环境变量:

# vim /root/.bash_profile   

// 在文件末尾添加:  

PATH=/usr/local/arm/4.5.1/bin/:$PATH  

export PATH  

注销用户,重新登录用户后生效

或者:

# source /root/.bash_profile  

// 使配置文件生效

检查交叉编译环境是否安装成功:

# arm-linux-gcc -v  

......  

gcc version 4.5.1 (ctng-1.8.1-FA)  

// 交叉编译环境安装成功 

检测到交叉编译环境版本为4.5.1,安装成功。


2.2 Minicom串口工具安装及配置

参考Minicom串口工具安装及配置


2.3 安装fastboot工具

2.4 安装NFS服务

现在多数Linux发行版都会自带NFS服务,一般系统安装时都会默认安装NFS服务,如果没有安装请查询资料自行安装,此处不再叙述NFS安装方法。


2.5 关闭防火墙

使用NFS网络文件系统需要系统关闭防火墙,否则,系统启动过程会失败。


4. 编译内核

Tiny4412编译内核linux-3.5后,将zImage烧写到SD卡中,启动过程中会出现卡死的现象

在kernel编译的时候将TrustZone模块去掉,之后再编译,再烧写


5. 编译uboot并制作SD卡

参考Tiny4412光盘资料README for FriendlyARM Tiny4412


5.1 Build uboot

a) 安装好toolchain

    (arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz)

    并设置好环境变量PATH,保证可以正常使用。


b) 解压 uboot_tiny4412-20130929.tgz 并进入相应的目录

    # tar xzf uboot_tiny4412-20130929.tgz

    # ls

    uboot_tiny4412_0929  uboot_tiny4412-20130929.tgz


c) 配置 uboot 并编译

    # cd uboot_tiny4412

    # make tiny4412_config

    # make


d) 编译 用于生成bl2 的工具

    # make -C sd_fuse

    或者

    # cd sd_fuse; make

5.2 制作启动 Tiny4412 的SD卡

a) 先准备一张4G或以上的SDHC卡

    注意:该卡的已有数据将会被破坏,因此请先对SD卡上的数据进行备份。


b) 如果SD卡容量大于等于32G

    # cd uboot_tiny4412_0929/sd_fuse/tiny4412

    # vim sd_fusing.sh 


     36 if [ ${BDEV_SIZE} -gt 32000000 ]; then

     37     echo "Error: Block device size (${BDEV_SIZE}) is too large"

     38 #   exit 1

     39 fi

    将判断SD卡容量中的处理exit 1注释掉。


c) fusing SD card

    # 假设SD卡已被PC Linux识别为/dev/sdb, 以root用户运行以下命令即可:

    # cd sd_fuse/tiny4412

    # ./sd_fusing.sh /dev/sdb

5.3 使用SD卡启动 Tiny4412

a) 将已经制作好的SD卡插到Tiny4412板上,拨动S2切换到SDBOOT,同时连接串口线到PC且假设已经准备好。


b) 开发板加电,然后在串口控制台(如:Minicom),按任意键进入uboot命令行模式


c) 对SD卡进行分区

    输入以下uboot命令即可对SD卡进行分区:

    # fdisk -c 0 320 806 518

    重新分区后,可重新格式化FAT分区

    # fatformat mmc 0:1

5.4 使用fastboot工具烧写内核

a) 进入fastboot模式以烧写内核镜像

    使用USB线连接Tiny4412的MICRO_USB口到PC,然后输入以下uboot命令:

    # fastboot


b) 烧写内核镜像到SD卡

    首先准备好的内核镜像zImage,进入zImage所在的文件夹

    在PC端输入以下命令进行烧写:

    # fastboot flash kernel zImage              (烧写kernel)

6. 制作简单的网络文件系统

6.2 NFS服务配置

6.3 使用busybox编译出命令

解压缩:


    # tar xf busybox-1.17.2-20101120.tgz    (linux基本命令)

    # cd busybox-1.17.2

编辑:

配置:


make defconfig    (默认)

make menuconfig    (修改默认配置)

        Busybox Settings  --->

            -> Build Options 

                -> (arm-linux-) Cross Compiler prefix

                    ^^^^^^^^^^ 交叉编译

                    arm-linux-gcc  指定编译工具为交叉编译器;


在busybox中添加命令:rmmod insmod lsmod

        Linux Module Utilities  ---> 

            [ ] Simplified modutils

            [*]   insmod

            [*]   rmmod

            [*]   lsmod

            [*]     Pretty output

            [*]   modprobe

            [*]     Blacklist support

            [*]   depmod


make

make install

或者:

make && make install

^        ^

编译    安装(拷贝)


注意: 编译完时提示; 执行程序需要的依赖库;

    Trying libraries: crypt m

    Library crypt is not needed, excluding it

    Library m is needed, can't exclude it (yet)



安装完时提示

--------------------------------------------------

You will probably need to make your busybox binary

setuid root to ensure all configured applets will

work properly.

--------------------------------------------------


拷贝安装完的命令:

    cp ./_install/* /nfsroot -rf



到这里去执行编译好的程序,会提示执行失败????

    是因为在编译时,选择使用动态链接;要解决该问题,需要将交叉编译工具中的库文件拷贝到nfsroot/lib目录下。

    

6.4 添加库文件和动态链接加载器

(执行命令需要依赖库)


    mkdir /nfsroot/lib

    cp /usr/local/arm/4.5.1/arm-none-linux-gnueabi/lib/* /nfsroot/lib -rf

       ^ arm 架构的库和加载器

6.5 添加设备文件

(应用运行需要)


    mkdir /nfsroot/dev /nfsroot/sys /nfsroot/proc /nfsroot/tmp

    mkdir /nfsroot/etc


    mkdir /nfsroot/etc/init.d

6.5.1 编辑启动脚本:

    vim /nfsroot/etc/init.d/rcS

        #!/bin/sh


        //挂载虚拟文件系统:

        //    proc虚拟文件系统 : ps top 

        //        kernel运行状况, 进程信息;

        /bin/mount -t proc  none /proc


        //    sysfs虚拟文件系统: mdev

        //        kernel中所有的支持的设备信息;

        /bin/mount -t sysfs none /sys


        //    tmpfs虚拟文件系统: 

        //        断电清空数据/dev /tmp

        /bin/mount -t tmpfs none /dev

        //                         ^^^^ 

        ///dev实时描述当前kernel中支持的所有设备的节点;


        //    tmpfs同上;

        /bin/mount -t tmpfs none /tmp


        //mdev -s : 扫描/sys目录, 在/dev目录下生成设备节点;

        //busybox中有mdev, x86下没有;

        /sbin/mdev -s


        //支持热插拔; 需要kernel监听设备的插入拔出并调用/sbin/mdev命令;

        echo /sbin/mdev > /proc/sys/kernel/hotplug

设置脚本的执行权限:


    chmod 777 rcS

6.5.2 编辑init进程启动配置文件:

    vim /nfsroot/etc/inittab

[1] [2]
关键字:Exynos4412  SD卡启动  网络文件系统 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic488329.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:Qemu搭建ARM vexpress开发环境(一)
下一篇:Exynos4412交叉编译环境搭建

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

Exynos4412的外部中断是如何安排的?
平台Linux4.9tiny4412概述结合tiny4412开发板分析一下Exynos4412的外部中断是如何组织的。在Exynos4412的用户手册第9章Interrupt Controller列出了支持的外部中断:第1列是按Shared Peripheral Interrupt 排序的第2列是按Software Generated Interrupt + Peripheral Interrupt(PPI+SPI)排序的, 目前GIC提供了16个SGI中断和16个PPI中断从上面可以看到,硬件上提供了32个外部中断,但是我们在第6章的GPIO Control一节说:图2 上面说,有172个外部中断以及32个外部可唤醒
发表于 2020-02-16
Exynos4412的外部中断是如何安排的?
Exynos4412交叉编译环境搭建
效或者:source /root/.bash_profile使配置文件生效。5)检测交叉编译环境是否安装成功:# arm-linux-gcc -v...gcc version 4.5.1 (ctng-1.8.1-FA) 检测到交叉编译环境版本为4.5.1,安装成功。至此,Exynos4412的交叉编译环境已经搭建完成,可以使用交叉编译工具,编译出能在开发板上运行的应用程序和内核镜像文件。
发表于 2020-02-15
“2+2+4”设计方案,7nm制程,三星Exynos 990不逊高通865
近日有消息称三星Galaxy S11系列将搭载Exynos 990处理器/高通Snapdragon 865处理器,外媒Phone Arena整理了Exynos 990芯片的配置细节供大家参考,一起来看一下。 三星Exynos 990处理器将基于7nm+工艺打造,由“2+2+4”两大两中四小的核心设计方案组成。值得注意的是三星Exynos 990处理器此次采用的7nm(7LPP)采用了第二代7纳米工艺,与Apple A13和Snapdragon 855一致。根据三星的说法,新型7nm LPP可使元件效率提高40%,性能提高20%或功耗降低50%,从而通过更少的层数来实现更高的元件良率。    
发表于 2019-11-27
“2+2+4”设计方案,7nm制程,三星Exynos 990不逊高通865
三星新推Exynos 990芯片,或成5G芯片又一强劲对手
    手机芯片对于一部手机的重要性,相信大家都很清楚,可以说一款手机性能的好坏,很大程度上取决于这款手机内置芯片如何。华为Mate 30系列之所以能够成为今年安卓手机旗舰机皇,麒麟990 5G芯片可以说是功不可没。而相比于华为自研芯片,其他手机厂商的芯片还是要找芯片厂商提供,就目前来看,联发科、高通和三星都已经陆续发布了各自的5G芯片,比较有意思的是,三星这次发布的顶级处理器名为Exynos 990,多少有点针对华为麒麟990 5G芯片的意思。大家应该还记得,三星曾在9月份宣布和vivo共同研发猎户座 980芯片,采用了8nm制程工艺,数据通信最高可达3.55Gb,AI计算性能
发表于 2019-10-30
三星新推Exynos 990芯片,或成5G芯片又一强劲对手
三星预告即将发布新款Exynos的处理器
三星在Twitter上已经发出预告,即将发布新的Exynos处理器,外媒称很可能会是在明天的2019年三星技术日活动上发布。该预告片本身并没有提供具体细节,但八月份有消息称三星已经开始测试Exynos 9630中端芯片组,这可能是2020年Galaxy A系列将要搭载的处理器,目前还没有该芯片组的技术规格。该预告片还提到了“移动智能”,因此新款芯片可能与人工智能有关。三星已经宣布将于明天举行2019年三星技术日活动,主题演讲来自半导体部门,议程中提到了有关5G,GPU和人工智能的会议。
发表于 2019-10-24
BootLoader启动引导方式分析(sd卡引导)
:  ① 通过Ethernet网口从宿主机下载内核到目标板,从而实现软件系统启动;  ② 通过串口从宿主机下载内核到目标板从而实现软件系统启动;  ③ 直接从Flash中提取已存储的内核,从而实现软件系统的启动。  总结以上几种引导方式会发现,它们有些共同的弊端;在系统调试时需要进行宿主机与目标板间的硬件线路的实际连接,使用起来不够方便,且烧片的速 度比较缓慢,调试的效率不高;硬件方面需要大容量的Flash的支持,增加了研发成本;进行内核更新时显得不够灵活。为此,采用可移动的存储介质对系统内 核进行存储(如SD卡、CF卡等),从而实现对系统内核的灵活调试和引导。这种引导方式的好处是,在调试时无需把宿主机和目标板进行硬件连接,提高了调试 的效率,使用起来更便
发表于 2018-08-21
BootLoader启动引导方式分析(sd卡引导)
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved