有关文章:《mtd-utils 的 使用

背景:

  关于在公司的生产环境有关。不希望每次都在uboot下面做nand flash 的烧写;也觉得使用U盘升级的方法比较慢,而且有关的驱动不是我写的,不希望受制于人。还是希望在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
ARM_GCC=arm-hisiv500-linux-gcc
BASE=`pwd`
ZLIB=zlib-
MTD_UTILS=mtd-utils-
LZO=lzo-2.08
E2FSPROGS=e2fsprogs-

make_dirs () {
    #为了方便管理,创建有关的目录
    cd ${BASE} && mkdir compressed install source -p
}

download_package () {
    cd ${BASE}/compressed

    #wget -c https://www.zlib.net/${ZLIB}.tar.gz
    #wget -c http://www.oberhumer.com/opensource/lzo/download/${LZO}.tar.gz
    # 注意下面这行的网址
    #wget -c https://jaist.dl.sourceforge.net/project/e2fsprogs/e2fsprogs/1.41.14/${E2FSPROGS}.tar.gz
    #wget -c ftp://ftp.infradead.org/pub/mtd-utils/${MTD_UTILS}.tar.bz2

}
tar_package () {
    cd ${BASE}/compressed

    #解压下载的包
    tar -C ../source -xf ${ZLIB}.tar.gz
    tar -C ../source -xf ${LZO}.tar.gz
    tar -C ../source -xf ${E2FSPROGS}.tar.gz
    tar -C ../source -xf ${MTD_UTILS}.tar.bz2
}

#编译
# 有些人喜欢把交叉库编译到工具链中以简化编译的操作步骤,本人觉得这样的做法是非常错误的。(会对工具链造成污染)

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=arm-hisiv500-linux-
    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_dirs#download_packagetar_package
make_zlib
make_lzo
make_e2fsprogs
make_mtd_utils

mtd-utils:

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

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

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

拷贝需要的程序和库即可

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

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

Arm-Linux 移植 mtd-utils 1.x的更多相关文章

  1. arm linux 移植 x265

    背景 本来想着把 x265编译到ffmpeg里面,搞定了x265的编译:但是一直报ERROR: x265 not found using pkg-config这个错误,我按照网上的资料,查看了ffbu ...

  2. Linux 安装 go 以及 arm linux 移植 go

    背景 Go是一门全新的静态类型开发语言,具有自动垃圾回收,丰富的内置类型,函数多返回值,错误处理,匿名函数,并发编程,反射等特性. 从Go1.4之后Go语言的编译器完全由Go语言编写,所以为了从源代码 ...

  3. arm linux 移植 MQTT (paho、mosquitto)

    前言 我们在这里做2件事情: 1)编译 paho.mqtt.mosquitto 2个开源项目的c版本库(mosquitto库没有用上) 2)编译好 依赖 paho.mqtt的库编写例程 + mosqu ...

  4. arm linux 移植 ffmpeg 库 + x264

    背景 Ffmpeg 中带有h264的解码,没有编码,需要添加x264.libx264是一个自由的H.264编码库,是x264项目的一部分,使用广泛,ffmpeg的H.264实现就是用的libx264. ...

  5. arm linux 移植 PHP

    背景: PHP 是世界上最好的语言. host平台 :Ubuntu 16.04 arm平台 : 3531d arm-gcc :4.9.4 php :7.1.30 zlib :1.2.11 libxml ...

  6. arm linux 移植支持 HP打印机

    背景 由于业务需要,需要hi3531d主板上加入对于HP打印机的支持. 通过与产品经理,技术主管的沟通:通用支持是不现实的,只要求彩色打印,先不考虑打印机的价格,只要支持一款打印机即可. 注意: Li ...

  7. arm linux 移植 gdb/gdbserver

    背景 调试工具gdb的使用对于嵌入式Linux开发人员来说是一项不可少的技能. 目前,嵌入式 Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:用ROM Monitor调试目标机 ...

  8. arm linux 移植 udhcp 与 使用

    背景 在一些网络环境下,需要静态IP不够现实,需要使用DHCP进行自动获取IP地址. udhcpc是一个面向嵌入式系统的非常小的DHCP客户端,字母的缩写微μ- DHCP -客户端client(μDH ...

  9. arm linux 移植 rsync

    背景: 在产品开发中可以使用rsync进行大文件的拷贝,断点续传. host平台 :Ubuntu 16.04 arm平台 : 3531d   rsync   :3.1.3 arm-gcc :4.9.4 ...

  10. arm linux 移植 jpeg

    背景: host平台 :Ubuntu 16.04 arm平台 : S5P6818 jpeg :v9c arm-gcc :4.8.1 主机准备: 运行以下脚本: ## # Copyright By Sc ...

随机推荐

  1. 修改layui的表单手机、邮箱验证可以为空怎么实现?

      修改layui的表单手机.邮箱验证可以为空   解决办法: 修改源码: 把表单验证源代码(form.js)的正则表达式改一下,例如手机的正则为:/^1d{10}$/,可以改成/^$|^1d{10} ...

  2. 获取div下的input type为file的所有对象

    var files = $(".profile-content").find("input[type='file']"); files.each(functio ...

  3. Diffie-Hellman算法简介

    一.DH算法是一种密钥交换协议,它可以让双方在不泄漏密钥的情况下协商出一个密钥来. DH算法基于数学原理,比如小明和小红想要协商一个密钥,可以这么做: . 小明先选一个素数和一个底数,例如,素数p=, ...

  4. PHP7 serialize_precision 配置不当导致 json_encode() 浮点小数溢出错误

    https://blog.csdn.net/moliyiran/article/details/81179825 感谢 @地狱星星:原因已找到, 该现象只出现在PHP 7.1+版本上建议使用默认值 s ...

  5. [转]地理投影,常用坐标系详解、WGS84、WGS84 Web墨卡托、WGS84 UTM、北京54坐标系、西安80坐标系、CGCS2000坐标系

    转自:http://www.rivermap.cn/docs/show-1829.html 常用坐标系详解 (一)WGS84坐标系 WGS-84坐标系(World Geodetic System一19 ...

  6. postgresql 利用pgAgent实现定时器任务

    1.安装pgAgent 利用Application Stack Builder安装向导,安装pgAgent. 根据安装向导一步一步安装即可. 安装完成之后,windows服务列表中会增加一个服务:Po ...

  7. 【440】Tweet 元素意义

          参考:Tweet Object 参考:Geo Objects 参考:User Object Ref: Place data dictionary Tweet Object Attribut ...

  8. Spring Boot与MyBatis的集成

    SSM(Spring+Spring MVC+MyBatis)是当前主流的框架组合开发方式之一,普遍被应用于互联网项目中.如果要使用Spring Boot开发一个基于SSM框架的应用,那么我们要怎么做呢 ...

  9. Pycharm一些额外使用笔记

    (1)关于调试的一个小技巧: 在上面下栏的调试界面中可以修改变量a的值: (2)指定参数执行脚本: 第一步在run中指定edit configuration,然后在Parameters中指定训练的参数 ...

  10. 【物联网】arduino wifi

    https://www.arduino.cn/forum.php?mod=viewthread&tid=49561 http://dy.163.com/v2/article/detail/DC ...