(4)hex (其为string的变体):取值为十六进制数据,如:CONFIG_VECTORS_BASE =0xffff0000.
(5)int (其为string的变体):取值为十进制数据,如:CONFIG_SPLIT_PTLOCK_CPUS=4096
三.Kconfig 文件的要素:source
由于内核源代码中大多数目录下都有各自的Kconfig 文件,因此需要一种手段将所有的Kconfig 文件组织为一个整体。这就是source的功能,它用于引入另一个Kconfig文件,有点类似于C语言的#include 。
(举例:在内核的fs/Kconfig 中增加一行: source \就是如此)
续篇:.config 文件说明
make menuconfig 配置完成退出时,选择保存,则用户所做的选择将保存在内核源代码顶层目录文件中.config文件中。下面.config文件的片段显示内核配置者作了如下选择:将YAFFS_FS 、YAFFS_YAFFS1功能编译进uImage;不编译BFS_FS、EFS_FS、YAFFS_9BYTE_TAG功能;
续篇:Makefile 文件说明
下面是内核drivers/net/Makefile 文件的片段: 12 obj - $ (CONFIG_ATL1) + = atl1/
13 obj - $ (CONFIG_GIANFAR) + = gianfar_driver.o 14
15 gianfar_driver - objs : = gianfar.o \\ 16 gianfar_ethtool.o \\
17 gianfar_mii.o \\ 18 gianfar_sysfs.o
26 obj - $ (CONFIG_PLIP) + = plip.o 它的含义是:
(1)第26行,如果.config文件中变量CONFIG_PLIP=y,那么将编译本目录下的plip.文件并将其功能集成进uImage ;如果.config文件中变量CONFIG_PLIP=m,那么将编译本目录下的plip.c文件生成模块plip.ko;否则,将不编译plip.c。
(2)第13~18行,如果config文件中变量CONFIG_GIANFAR=y,那么将编译本目录下的cgianfar.c、gianfar_ethtool.c、gianfar_mii.c、gianfar_sysfs.c文件并将其功能集成进uImage ;如果config文件中变量CONFIG_GIANFAR=m,那么将编译本目录下的cgianfar.c、gianfar_ethtool.c、gianfar_mii.c、gianfar_sysfs.c文件生成模块并将其功能集成进gianfar_driver.ko ;否则不编译cgianfar.c、gianfar_ethtool.c、gianfar_mii.c、gianfar_sysfs.c文件。
(3)第12行,如果.config 文件中变量CONFIG_ARL1=y,将递归进入本目录的子目录atl1,并将根据子目录下的Makefile文件内容决定改子目录如何进行编译;否则,将不进入本目录的子目录atl1进行编译。 例如:
下面是内核fs/Makefile 文件的片段:如图:
之后进入yaffs2子目录下的Makefile 看看:如图:
制作ubifs文件系统
分类: 嵌入式linux 2010-11-08 10:32 2447人阅读 评论(1) 收藏 举报
1,安装相关的软件包 apt-get install liblzo2-dev
2,获取相关的工具mkfs.ubifs和ubinize
这两个工具是制作ubifs文件系统的时候用到,它们是mtd-utils工具包中的内容,mtd-utils工具包你可以从下面的网站下载和编译出来:
官方网站:http://www.linux-mtd.infradead.org/index.html 资源下载网站:http://git.infradead.org/
3,创建一个create-ubifs.sh脚本,主要是调用mkfs.ubifs和ubinize工具和相关参数来制作ubifs文件系统,内容如下: #!/bin/bash
########################################################## # Script to generate ubifs filesystem image. #
##########################################################
##### ubinize configuration file config_file=rootfs_ubinize.cfg
##### Function to check result of the command check_result() { if [ $? -ne 0 ] then
echo \else
echo \fi }
###### Function to check whether an application exists check_program() { for cmd in \do
which ${cmd} > /dev/null 2>&1 if [ $? -ne 0 ] then echo
echo \ echo exit 1 fi done }
if [ $# -ne 5 ] then echo
echo 'Usage: create-ubifs.sh [page_size_in_bytes] [pages_per_block] [partition_size_in_bytes] [blocks_per_device] [path_to_rootfs]' echo exit fi
page_size_in_bytes=$1
echo \[$page_size_in_bytes]bytes.\pages_per_block=$2
echo \[$pages_per_block]\partition_size_in_bytes=$3
echo \[$partition_size_in_bytes]bytes.\blocks_per_device=$4
echo \[$blocks_per_device]\path_to_rootfs=$5
# wear_level_reserved_blocks is 1% of total blcoks per device wear_level_reserved_blocks=`expr $blocks_per_device / 100`
echo \[$wear_level_reserved_blocks]\
#logical_erase_block_size is physical erase block size minus 2 pages for UBI