• arm linux 移植 mtd-utils 1.x


    --- title: file_name date: 2020-06-15 08:27:11 categories: tags: - mtd - arm - Linux - porting ---

    背景

    关于在公司的生产环境有关。不希望每次都在uboot下面做nand flash 的烧写;也觉得使用U盘升级的方法比较慢,而且有关的驱动不是我写的,不希望受制于人。还是希望在Linux下面比较通用。

    有关文章:《mtd-utils 的 使用》、《使用 mtd-utils 烧写Arm Linux 系统各个部分

    要求: 根据本文进行操作时,需要明确清楚各个部分的烧写地址和大小。

    host平台   :Ubuntu 16.04
    arm平台   : 3531d

    mtd-utils   :1.4.8

    zlib     :1.2.11

    lzo     :2.08

    e2fsprogs  : 1.41.14

    arm-gcc   :4.9.4

    编译

    一个脚本解决所有的事情

    ##
    #    Copyright By Schips, All Rights Reserved
    # 自定义变量
    
    OUTPUT_PATH=`pwd`/install
    BUILD_HOST=arm-linux
    ARM_GCC=${BUILD_HOST}-gcc
    BASE=`pwd`
    ZLIB=zlib-1.2.11
    MTD_UTILS=mtd-utils-1.4.8
    LZO=lzo-2.08
    E2FSPROGS=e2fsprogs-1.41.14
    
    make_dirs () {
        #为了方便管理,创建有关的目录
        cd ${BASE} && mkdir compressed install source -p
    }
    
    tget () { #try wget
        filename=`basename $1`
        echo "Downloading [${filename}]..."
        if [ ! -f ${filename} ];then
            wget $1
        fi
    
        echo "[OK] Downloaded [${filename}] "
    }
    
    
    download_package () {
        cd ${BASE}/compressed
    
        tget https://www.zlib.net/${ZLIB}.tar.gz 
        tget http://www.oberhumer.com/opensource/lzo/download/${LZO}.tar.gz
        # 注意下面这行的网址
        tget https://jaist.dl.sourceforge.net/project/e2fsprogs/e2fsprogs/1.41.14/${E2FSPROGS}.tar.gz
        tget ftp://ftp.infradead.org/pub/mtd-utils/${MTD_UTILS}.tar.bz2
    
    }
    
    tar_package () {
        cd ${BASE}/compressed
        ls * > /tmp/list.txt
        for TAR in `cat /tmp/list.txt`
        do
            tar -xf $TAR -C  ../source
        done
        rm -rf /tmp/list.txt
    }
    
    
    make_zlib () {
        # 编译安装 zlib
        cd ${BASE}/source/${ZLIB}
        echo "ZLIB ABOUT"
        CC=${ARM_GCC} ./configure --prefix=${OUTPUT_PATH}/${ZLIB}
        make && make install
    }
    
    make_lzo () {
        # 编译安装 lzo
        cd ${BASE}/source/${LZO}
        echo "LZO ABOUT"
        CC=${ARM_GCC} ./configure --host=arm-linux  --prefix=${OUTPUT_PATH}/${LZO}
        make && make install
    }
    
    make_e2fsprogs () {
        # 编译安装 e2fsprogs
        cd ${BASE}/source/${E2FSPROGS}
        echo "E2FSPROGS ABOUT"
        CC=${ARM_GCC} ./configure --host=arm-linux --enable-elf-shlibs --prefix=${OUTPUT_PATH}/${E2FSPROGS}
        make && make install-libs
        mkdir ${OUTPUT_PATH}/${E2FSPROGS}/include/uuid -p
        cp lib/uuid/uuid.h ${OUTPUT_PATH}/${E2FSPROGS}/include/uuid
    }
    
    make_mtd_utils () {
       # 编译安装 mtd-utils
        cd ${BASE}/source/${MTD_UTILS}
        echo "MTD ABOUT"
        # 下面4行修复了mtd编译的一些问题
        sed -r -i "/LDLIBS_mkfs.ubifs = -lz -llzo2 -lm -luuid/ s/.*/LDLIBS_mkfs.ubifs = -lz -llzo2 -lm -luuid $(ZLIBLDFLAGS) $(LZOLDFLAGS) $(UUIDLDLIBS)/g" Makefile
        sed -r -i "/#include <uuid/uuid.h>/ s/.*/#include "uuid/uuid.h"/g" mkfs.ubifs/mkfs.ubifs.h
        mkdir mkfs.ubifs/uuid -p
        cp ${BASE}/source/${E2FSPROGS}/lib/uuid/uuid.h mkfs.ubifs/uuid/uuid.h
    
        export CROSS=${BUILD_HOST}-
        export DESTDIR=${OUTPUT_PATH}/mtd-utils
        export ZLIBCPPFLAGS=-I${OUTPUT_PATH}/${ZLIB}/include
        export  LZOCPPFLAGS="-I${OUTPUT_PATH}/${LZO}/include -I{$OUTPUT_PATH}/${E2FSPROGS}/include/"
        export  ZLIBLDFLAGS=-L${OUTPUT_PATH}/${ZLIB}/lib
        export   LZOLDFLAGS=-L${OUTPUT_PATH}/${LZO}/lib
        export   UUIDLDLIBS=-L${OUTPUT_PATH}/${E2FSPROGS}/lib
    
        make WITHOUT_XATTR=1
    }
    
    make_dirs
    #download_package
    tar_package
    make_zlib
    make_lzo
    make_e2fsprogs
    make_mtd_utils
    

    mtd-utils:

    make 后     :mtd-utils工具链将会在当前目录下$CROSS目录生成

    make install后  :make生成的结果将安装到DESTDIR目录下

    如果 make install 失败,手动在 $CROSS 文件名的目录下就可以找到编译的结果

    img

    拷贝需要的程序和库即可

    mtd-utils 2.0版本的编译: https://blog.csdn.net/liyangzmx/article/details/93901411

    (注:本人尝试过2.x版本的编译,但是失败了。)

  • 相关阅读:
    【POJ 2987 Firing】 最大权闭合子图
    【sgu176】有源汇有上下界的最大/最小流
    【HDU1263 水果】 STL之map应用经典好题
    【HDU1227 Fast Food】经典DP
    【hdu1043 && poj 1077】八数码问题
    有上下界的网络流问题
    【HDU4521】 dp思想+线段树操作
    miracl库下椭圆曲线方程常用函数使用入门
    函数指针
    python数据查询操作之 一场缺少db.commit()引发的血案……
  • 原文地址:https://www.cnblogs.com/schips/p/12309281.html
Copyright © 2020-2023  润新知