The Linux MTD, JFFS HOWTO - (第2部分) FAQ (未完待续 2007/2/27)

本文介绍了Linux MTD(Memory Technology Devices)的概念及其重要性,并深入探讨了JFFS(Journaling Flash File System)的工作原理和技术细节,包括其如何高效地管理和更新Flash存储设备上的数据。
[ 本文第一部分] The Linux MTD, JFFS HOWTO - (第1部分) HOWTO

*** FAQ's:

Q. 什么是MTD?为什么我们需要MTD?

A. 来自MTD网站:
“我们的专注于建立一个关于内存设备的通用Linux子系统,特别针对Flash设备。
这个系统通过为硬件驱动和上层软件提供通用接口,使之能够简单的为新硬件提供驱动。
硬件驱动不需要了解(内存设备)使用哪种存储格式,如FTL,
FFS2等等,它只需要提供简单的读、写以及擦除程序。由上层软件来把设备中的信息以适当的形式显示给用户。”

Q. 什么是JFFS?

A. JFFS是Axis Communications AB, Sweden(www.axis.com)设计的。它是一种开源日志文件系统,非常适于放在Flash芯片上。想了解更多详细信息,请看:
http://developer.axis.com/software/jffs/

其它相关文档(没有审视过,也没有链接指向它):
http://developer.axis.com/software/jffs/doc/jffs.shtml

David Woodhouse在jffs邮件列表的一封邮件中这样描述jffs:
“JFFS完全是日志结构的。这个文件系统在flash媒介上的一大串结点。每一个结点(struct
jffs_node)都包含它所属文件(严格说,是inode)的部分信息,可能也包含文件的名字,或文件的数据。当jffs_node保存了文件中的数据时,它会包含一个字段表明这些数据在文件所处的位置。通过这种方式,新的数据能够覆盖老的数据。
除于具有通常inode所具有信息之外,jffs_node中还包含了一个字段,用于表示在这个结点的偏移上,此文件有多少数据被删除了。这种机制用于截短文件等操作。
每个结点也包含一个“version”,当对文件的第一个结点,它为1;每当有一个新的结点被加入文件,这个数字递增1。不需要关心这些结点的物理顺序,它只是用于保持擦除级别,我们从开头开始擦除,一直擦除到最后。
当重建一个文件的内容时,你可以扫描整个媒介(看一下jffs_scan_flash(),它在mount时会被调用),然后按“version”递增的顺序排列单个结点。解析每个结点的内容找到你应该在哪里插入/删除数据。当前的文件名保存在最近的一个包含“name”字段的结点中。
(这并不是微不足道的。举个例子,如果你有一个文件中包含1024字节的数据,那么当你再把512字节的数据写到文件偏移256处时,你会得到两个结点
---
其中一个包含偏移0到偏移1024的数据,另外一个结点包含偏移256,长度为512字节的数据,以及标明从偏移256处删除512字节。实际上,你的第一个结点中的数据出现在这个文件的两个位置:从0-256字节以及从768-1024字节。JFFS代码使用struct
jffs_node_ref来处理这种情况,并保存组成这个文件的结点的一个列表。)
所有这些都非常简单,直到你巨大的结点列表到达了媒介的结尾。在这种情况下,我们不得不再次媒介的起始处开始。位于第一个擦除块中的结点,内容可能已经陈旧了,为新的结点所替代。所以在我们真的到达文件的结尾写满整个文件系统之前,我们把第一个块内依旧有效的结点拷贝出来,然后擦除原来的块。期望这样可以回收到一些空间。如果没有,我们继续处理下一个块,以此类推。这叫做垃圾回收。
我们要保证避免把位于“头”(我们在这里写入新的结点)和“尾”(它指向最老的结点)之间的空闲空间耗尽。一旦出现这种情况,那意味着我们完全不能进行垃圾回收了,所以文件系统就会始终保持这个样子,即使它里面的某个地方还存在着废弃的结点。
尽管当前我们由起始处开始写,直到结尾处。其实,我们应该独立的处理每个擦除块,为擦除块保持一个各种状态的列表(空闲/正在填充/已满/废弃/正在擦除/坏块)。通常,擦除块将沿着“空闲-->正在擦除”的路线前进,最终再回到“空闲”状态(当重写任何有效结点到“正在填充”结点时,擦除块的状态会由“已满”变成“废弃”)。”

(未完待续)
和工控系统网络安全相关的标准共计25个。 GB T 32919-2016 信息安全技术 工业控制系统安全控制应用指南.doc GB∕T 30976.1-2014 工业控制系统信息安全第1部分:评估规范.pdf GB∕T 30976.2-2014 工业控制系统信息安全第2部分:验收规范.pdf GB∕T 32919-2016 信息安全技术工业控制系统安全控制应用指南(2016年8月29日发布,2017年3月1日施行).pdf GB∕T 33008.1-2016 工业自动化和控制系统网络安全 可编程序控制器(PLC) 第1部分:系统要求(2016年10月13日发布,2017年5月1日实施).pdf GB∕T 33009.1-2016 工业自动化和控制系统网络安全 集散控制系统(DCS) 第1部分:防护要求(2016年10月13日发布,2017年5月1日实施).pdf GB∕T 33009.2-2016 工业自动化和控制系统网络安全 集散控制系统(DCS)2部分:管理要求(2016年10月13日发布,2017年5月1日实施).pdf GB∕T 33009.3-2016 工业自动化和控制系统网络安全 集散控制系统(DCS) 第3部分:评估指南(2016年10月13日发布,2017年5月1日实施).pdf GB∕T 33009.4-2016 工业自动化和控制系统网络安全 集散控制系统(DCS) 第4部分:风险与脆弱性检测要求(2016年10月13日发布,2017年5月1日实施).pdf GB∕T 34978-2017 信息安全技术 移动智能终端个人信息保护技术要求(2017年11月1日发布,2018年5月1日实施).pdf GB∕T 35278-2017 信息安全技术移动终端安全保护技术要求(2017年1229日发布,2018年7月1日实施).pdf GB∕T 35317-2017 公安物联网系统信息安全等级保护要求(2017年1229日发布,同日实施).pdf GB∕T 35673-2017 工业通信网络 网络和系统安全 系统安全要求和安全等级(2017年1229日发布,2018年7月1日实施).pdf GB∕T 36047-2018 电力信息系统安全检查规范(2018年3月15日发布,2018年10月1日施行).pdf GB∕T 36323-2018 信息安全技术工业控制系统安全管理基本要求(2018年6月7日发布,2019年1月1日施行).pdf GB∕T 36324-2018 信息安全技术工业控制系统信息安全分级规范(2018年6月7日发布,2019年1月1日施行).pdf GB∕T 36466-2018 信息安全技术工业控制系统风险评估实施指南(2018年6月7日发布,2019年1月1日施行).pdf GB∕T 36470-2018 信息安全技术工业控制系统现场测控设备通用安全功能要求(2018年6月7日发布,2019年1月1日施行).pdf GB∕T 36627-2018 信息安全技术网络安全等级保护测试评估技术指南(2018年9月17日颁布,2019年4月1日正式实施).pdf
我按照你的指示进行了修复,改完报错如下:ERROR: please fix package/tp_package/lte/Makefile - see logs/package/tp_package/lte/dump.txt for details ERROR: please fix package/tp_package/lib/libsdm/Makefile - see logs/package/tp_package/lib/libsdm/dump.txt for details Collecting package info: done AMS: buildams.config and ams.config updated from local nvmp_artifact make[1]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp' TOOLS_BACKUP_OPEN, TOOLS_BACKUP_FILE_NOT_EXISTED, TOOLS_COMPILE. make[2]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp' + mkdir -p /home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1 + cd /home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1 + mkdir -p bin lib include stamp mkdir -p /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/stamp touch /home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/.prepared + mkdir -p /home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host + cd /home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host + mkdir -p bin lib include stamp mkdir -p /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/stamp /home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/include/sys install -m0644 /home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/include/*.h /home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/include/ install -m0644 /home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/include/sys/*.h /home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/include/sys/ ln -sf lib /home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/lib64 touch /home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/.prepared make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/m4' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/m4' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/m4' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/m4' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/sed' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/sed' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/sed' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/sed' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/autoconf' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/autoconf' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/autoconf' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/autoconf' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/pkg-config' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/pkg-config' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/pkg-config' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/pkg-config' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/xz' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/xz' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/xz' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/xz' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/automake' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/automake' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/automake' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/automake' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/missing-macros' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/missing-macros' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/missing-macros' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/missing-macros' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/libtool' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/libtool' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/libtool' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/libtool' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/flex' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/flex' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/flex' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/flex' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/bison' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/bison' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/bison' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/bison' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/mklibs' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/mklibs' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/mklibs' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/mklibs' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/sstrip' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/sstrip' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/sstrip' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/sstrip' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/ipkg-utils' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/ipkg-utils' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/ipkg-utils' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/ipkg-utils' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/genext2fs' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/genext2fs' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/genext2fs' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/genext2fs' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/e2fsprogs' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/e2fsprogs' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/e2fsprogs' make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/e2fsprogs' make[3]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/mtd-utils' make -C /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib CFLAGS="-O2 -I/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/include -I/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/include/e2fsprogs -fgnu89-inline -I/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/include -L/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5 -L/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/lib -DNO_NATIVE_SUPPORT" LDFLAGS="-L/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/lib " WITHOUT_LZO=1 WITHOUT_XATTR=1 LZMA_STATIC_LIB="/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/lib/liblzma.a" SUBDIRS="" BUILDDIR="/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5" TARGETS="libmtd.a libcrc32.a" LIBS="libmtd libcrc32" make[4]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib' mkdir -p /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/ gcc -I../include -D_FILE_OFFSET_BITS=64 -O2 -I/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/include -I/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/include/e2fsprogs -fgnu89-inline -I/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/include -L/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5 -L/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/lib -DNO_NATIVE_SUPPORT -c -o /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/libmtd.o libmtd.c -g -Wp,-MD,/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/.libmtd.c.dep libmtd.c: In function 'dev_node2num': libmtd.c:444:7: warning: implicit declaration of function 'major' [-Wimplicit-function-declaration] 444 | ma = major(st.st_rdev); | ^~~~~ libmtd.c:445:7: warning: implicit declaration of function 'minor' [-Wimplicit-function-declaration] 445 | mi = minor(st.st_rdev); | ^~~~~ libmtd.c: In function 'mtd_get_dev_info1': libmtd.c:741:46: warning: passing argument 3 of 'dev_read_data' discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers] 741 | ret = dev_read_data(lib->mtd_name, mtd_num, &mtd->name, | ^~~~~~~~~~ libmtd.c:182:63: note: expected 'void *' but argument is of type 'const char (*)[128]' 182 | static int dev_read_data(const char *patt, int mtd_num, void *buf, int buf_len) | ~~~~~~^~~ libmtd.c:747:46: warning: passing argument 3 of 'dev_read_data' discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers] 747 | ret = dev_read_data(lib->mtd_type, mtd_num, &mtd->type_str, | ^~~~~~~~~~~~~~ libmtd.c:182:63: note: expected 'void *' but argument is of type 'const char (*)[65]' 182 | static int dev_read_data(const char *patt, int mtd_num, void *buf, int buf_len) | ~~~~~~^~~ ar crv /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/libmtd.a /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/libmtd.o /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/libmtd_legacy.o /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/libcrc32.o /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/libfec.o r - /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/libmtd.o r - /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/libmtd_legacy.o r - /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/libcrc32.o r - /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/libfec.o ranlib /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/libmtd.a make[4]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib' make -C /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5 CFLAGS="-O2 -I/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/include -I/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/include/e2fsprogs -fgnu89-inline -I/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/include -L/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5 -L/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/lib -DNO_NATIVE_SUPPORT" LDFLAGS="-L/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/lib " WITHOUT_LZO=1 WITHOUT_XATTR=1 LZMA_STATIC_LIB="/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/lib/liblzma.a" SUBDIRS="" BUILDDIR="/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5" TARGETS=mkfs.jffs2 make[4]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5' d=lib_all; \ t=`echo $d | sed s:.*_::` d=`echo $d | sed s:_.*::`; \ make BUILDDIR=/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/$d -C $d $t make[5]: Entering directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib' gcc -I../include -D_FILE_OFFSET_BITS=64 -O2 -I/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/include -I/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/include/e2fsprogs -fgnu89-inline -I/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/include -L/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5 -L/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/lib -DNO_NATIVE_SUPPORT -c -o /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib/libmtd.o libmtd.c -g -Wp,-MD,/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib/.libmtd.c.dep libmtd.c: In function 'dev_node2num': libmtd.c:444:7: warning: implicit declaration of function 'major' [-Wimplicit-function-declaration] 444 | ma = major(st.st_rdev); | ^~~~~ libmtd.c:445:7: warning: implicit declaration of function 'minor' [-Wimplicit-function-declaration] 445 | mi = minor(st.st_rdev); | ^~~~~ libmtd.c: In function 'mtd_get_dev_info1': libmtd.c:741:46: warning: passing argument 3 of 'dev_read_data' discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers] 741 | ret = dev_read_data(lib->mtd_name, mtd_num, &mtd->name, | ^~~~~~~~~~ libmtd.c:182:63: note: expected 'void *' but argument is of type 'const char (*)[128]' 182 | static int dev_read_data(const char *patt, int mtd_num, void *buf, int buf_len) | ~~~~~~^~~ libmtd.c:747:46: warning: passing argument 3 of 'dev_read_data' discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers] 747 | ret = dev_read_data(lib->mtd_type, mtd_num, &mtd->type_str, | ^~~~~~~~~~~~~~ libmtd.c:182:63: note: expected 'void *' but argument is of type 'const char (*)[65]' 182 | static int dev_read_data(const char *patt, int mtd_num, void *buf, int buf_len) | ~~~~~~^~~ ar crv /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib/libmtd.a /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib/libmtd.o /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib/libmtd_legacy.o /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib/libcrc32.o /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib/libfec.o r - /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib/libmtd.o r - /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib/libmtd_legacy.o r - /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib/libcrc32.o r - /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib/libfec.o ranlib /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib/libmtd.a make[5]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib' gcc -O2 -I/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/include -I/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/include/e2fsprogs -fgnu89-inline -I/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/include -L/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5 -L/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/lib -DNO_NATIVE_SUPPORT -L/home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/host/lib -g -o /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/mkfs.jffs2 /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/mkfs.jffs2.o /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib/libmtd.a /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/compr_rtime.o /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/compr_zlib.o /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/compr_lzma.o /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lzma/LzFind.o /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lzma/LzmaEnc.o /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lzma/LzmaDec.o /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/compr.o /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/rbtree.o -L/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/lib -lmtd -lz /usr/bin/ld: /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/mkfs.jffs2.o: in function `write_special_file': /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/mkfs.jffs2.c:972: undefined reference to `major' /usr/bin/ld: /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/mkfs.jffs2.c:972: undefined reference to `minor' /usr/bin/ld: /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/mkfs.jffs2.o: in function `recursive_populate_directory': /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/mkfs.jffs2.c:1301: undefined reference to `minor' /usr/bin/ld: /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/mkfs.jffs2.c:1301: undefined reference to `major' /usr/bin/ld: /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/mkfs.jffs2.c:1291: undefined reference to `minor' /usr/bin/ld: /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/mkfs.jffs2.c:1291: undefined reference to `major' /usr/bin/ld: /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/mkfs.jffs2.o: in function `interpret_table_entry': /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/mkfs.jffs2.c:484: undefined reference to `makedev' /usr/bin/ld: /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/mkfs.jffs2.c:531: undefined reference to `makedev' /usr/bin/ld: /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/mkfs.jffs2.c:538: undefined reference to `makedev' collect2: error: ld returned 1 exit status make[4]: *** [common.mk:54: /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/mkfs.jffs2] Error 1 make[4]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5' make[3]: *** [Makefile:70: /home/wuyilun/Desktop/NVMP/NVMP/nvmp/build_dir/host/mtd-utils-1.4.5/.built] Error 2 make[3]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp/tools/mtd-utils' make[2]: *** [tools/Makefile:237: tools/mtd-utils/compile] Error 2 make[2]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp' make[1]: *** [tools/Makefile:201: /home/wuyilun/Desktop/NVMP/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/stamp/.tools_install_nnnnn] Error 2 make[1]: Leaving directory '/home/wuyilun/Desktop/NVMP/NVMP/nvmp' make: *** [/home/wuyilun/Desktop/NVMP/NVMP/nvmp/include/toplevel.mk:279: world] Error 2
08-19
duanchangxu1604@ubuntu:~/NVMP$ find . -name "mtd" ./nvmp/package/mtd ./nvmp/tools/mstarbin/src/src/mtd ./nvmp/tools/mstarbin/src/src/ubinize/include_mtd/mtd ./nvmp/tools/mstarbin/src/include/linux/mtd ./nvmp/tools/mstarbin/src/include/mtd ./nvmp/build_dir/host/u-boot-2012.04.01/drivers/mtd ./nvmp/build_dir/host/u-boot-2012.04.01/include/linux/mtd ./nvmp/build_dir/host/u-boot-2012.04.01/include/mtd ./nvmp/build_dir/host/mtd-utils-1.4.5/include/mtd ./nvmp/build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/libmpp/mpp/src/project/kbuild/4.9.84/i6b0/include/linux/mtd ./nvmp/build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/libmpp/mpp/src/project/kbuild/4.9.84/i6b0/include/uapi/mtd ./nvmp/build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/linux-mstar_ssc335/bootloader/factory_boot/drivers/mtd ./nvmp/build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/linux-mstar_ssc335/bootloader/factory_boot/doc/device-tree-bindings/mtd ./nvmp/build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/linux-mstar_ssc335/bootloader/factory_boot/include/linux/mtd ./nvmp/build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/linux-mstar_ssc335/bootloader/factory_boot/include/mtd ./nvmp/build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/linux-mstar_ssc335/bootloader/normal_boot/drivers/mtd ./nvmp/build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/linux-mstar_ssc335/bootloader/normal_boot/doc/device-tree-bindings/mtd ./nvmp/build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/linux-mstar_ssc335/bootloader/normal_boot/include/linux/mtd ./nvmp/build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/linux-mstar_ssc335/bootloader/normal_boot/include/mtd ./nvmp/build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/linux-mstar_ssc335/linux-4.9.84/drivers/mtd ./nvmp/build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/linux-mstar_ssc335/linux-4.9.84/user_headers/include/mtd ./nvmp/build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/linux-mstar_ssc335/linux-4.9.84/include/config/mtd ./nvmp/build_dir/target-arm-openwrt-linux-gnueabi-c212v3/linux-ssc37x_ssc375/bootloader/factory_boot/drivers/mtd ./nvmp/build_dir/target-arm-openwrt-linux-gnueabi-c212v3/linux-ssc37x_ssc375/bootloader/factory_boot/doc/device-tree-bindings/mtd ./nvmp/build_dir/target-arm-openwrt-linux-gnueabi-c212v3/linux-ssc37x_ssc375/bootloader/factory_boot/include/linux/mtd ./nvmp/build_dir/target-arm-openwrt-linux-gnueabi-c212v3/linux-ssc37x_ssc375/bootloader/factory_boot/include/mtd ./nvmp/build_dir/target-arm-openwrt-linux-gnueabi-c212v3/linux-ssc37x_ssc375/bootloader/factory_boot/include/config/mtd ./nvmp/build_dir/target-arm-openwrt-linux-gnueabi-c212v3/linux-ssc37x_ssc375/bootloader/normal_boot/drivers/mtd ./nvmp/build_dir/target-arm-openwrt-linux-gnueabi-c212v3/linux-ssc37x_ssc375/bootloader/normal_boot/doc/device-tree-bindings/mtd ./nvmp/build_dir/target-arm-openwrt-linux-gnueabi-c212v3/linux-ssc37x_ssc375/bootloader/normal_boot/include/linux/mtd ./nvmp/build_dir/target-arm-openwrt-linux-gnueabi-c212v3/linux-ssc37x_ssc375/bootloader/normal_boot/include/mtd ./nvmp/build_dir/target-arm-openwrt-linux-gnueabi-c212v3/linux-ssc37x_ssc375/bootloader/normal_boot/include/config/mtd ./nvmp/build_dir/target-arm-openwrt-linux-gnueabi-c212v3/linux-ssc37x_ssc375/linux-5.10.117/Documentation/devicetree/bindings/mtd ./nvmp/build_dir/target-arm-openwrt-linux-gnueabi-c212v3/linux-ssc37x_ssc375/linux-5.10.117/Documentation/driver-api/mtd ./nvmp/build_dir/target-arm-openwrt-linux-gnueabi-c212v3/linux-ssc37x_ssc375/linux-5.10.117/drivers/mtd ./nvmp/build_dir/target-arm-openwrt-linux-gnueabi-c212v3/linux-ssc37x_ssc375/linux-5.10.117/include/linux/mtd ./nvmp/build_dir/target-arm-openwrt-linux-gnueabi-c212v3/linux-ssc37x_ssc375/linux-5.10.117/include/config/mtd ./nvmp/build_dir/target-arm-openwrt-linux-gnueabi-c212v3/linux-ssc37x_ssc375/linux-5.10.117/include/uapi/mtd ./nvmp/target/linux/ar71xx/files/drivers/mtd ./nvmp/target/linux/generic/files-3.10/drivers/mtd ./nvmp/target/linux/generic/files-3.3/drivers/mtd ./sdk/soc/ssc37x/linux-5.10.61/Documentation/devicetree/bindings/mtd ./sdk/soc/ssc37x/linux-5.10.61/Documentation/driver-api/mtd ./sdk/soc/ssc37x/linux-5.10.61/drivers/mtd ./sdk/soc/ssc37x/linux-5.10.61/include/linux/mtd ./sdk/soc/ssc37x/linux-5.10.61/include/config/mtd ./sdk/soc/ssc37x/linux-5.10.61/include/uapi/mtd ./sdk/soc/ssc37x/uclibc-toolchain-ssc375/arm-sigmastar-linux-uclibcgnueabihf-9.1.0/arm-sigmastar-linux-uclibcgnueabihf/sysroot/usr/include/mtd ./sdk/soc/ssc37x/linux-5.10.117/Documentation/devicetree/bindings/mtd ./sdk/soc/ssc37x/linux-5.10.117/Documentation/driver-api/mtd ./sdk/soc/ssc37x/linux-5.10.117/drivers/mtd ./sdk/soc/ssc37x/linux-5.10.117/include/linux/mtd ./sdk/soc/ssc37x/linux-5.10.117/include/config/mtd ./sdk/soc/ssc37x/linux-5.10.117/include/uapi/mtd ./sdk/soc/ssc37x/boot/src/drivers/mtd ./sdk/soc/ssc37x/boot/src/doc/device-tree-bindings/mtd ./sdk/soc/ssc37x/boot/src/include/linux/mtd ./sdk/soc/ssc37x/boot/src/include/mtd ./sdk/soc/ssc37x/boot/src/include/config/ms/mtd ./sdk/soc/ssc37x/boot-ssc375/src/drivers/mtd ./sdk/soc/ssc37x/boot-ssc375/src/doc/device-tree-bindings/mtd ./sdk/soc/ssc37x/boot-ssc375/src/include/linux/mtd ./sdk/soc/ssc37x/boot-ssc375/src/include/mtd ./sdk/soc/ssc37x/boot-ssc375/src/include/config/mtd ./sdk/soc/ssc37x/uclibc-toolchain/arm-sigmastar-linux-uclibcgnueabihf-9.1.0/arm-sigmastar-linux-uclibcgnueabihf/sysroot/usr/include/mtd ./sdk/soc/ssc335/glibc-toolchain-9.1.0/gcc-sigmastar-9.1.0-2019.11-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include/mtd ./sdk/soc/ssc335/boot/src/drivers/mtd ./sdk/soc/ssc335/boot/src/doc/device-tree-bindings/mtd ./sdk/soc/ssc335/boot/src/include/linux/mtd ./sdk/soc/ssc335/boot/src/include/mtd ./sdk/soc/ssc335/linux-4.9.84/Documentation/devicetree/bindings/mtd ./sdk/soc/ssc335/linux-4.9.84/Documentation/mtd ./sdk/soc/ssc335/linux-4.9.84/drivers/mtd ./sdk/soc/ssc335/linux-4.9.84/include/linux/mtd ./sdk/soc/ssc335/linux-4.9.84/include/uapi/mtd ./sdk/soc/ssc335/mpp/ssc335/src/project/kbuild/4.9.84/i6b0/include/linux/mtd ./sdk/soc/ssc335/mpp/ssc335/src/project/kbuild/4.9.84/i6b0/include/uapi/mtd ./sdk/soc/ssc335/uclibc-toolchain/arm-buildroot-linux-uclibcgnueabihf-4.9.4/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/include/mtd 哪个才是我需要的mtd文件呢
最新发布
09-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值