久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

        手機(jī)站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

        千鋒教育

        掃一掃進(jìn)入千鋒手機(jī)站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

        當(dāng)前位置:首頁  >  技術(shù)干貨  > 制作YAFFS2文件系統(tǒng)

        制作YAFFS2文件系統(tǒng)

        來源:千鋒教育
        發(fā)布人:wjy
        時(shí)間: 2022-12-28 11:59:47 1672199987

          如果開發(fā)板只有Nand Flash,那么選擇最合適的文件系統(tǒng)為YAFFS文件系統(tǒng)。mini2440 只有 Nand Flash 沒有 Nor Flash,因此選擇的文件系統(tǒng)為 YAFFS2 文件系統(tǒng)。

          1.制作文件系統(tǒng)時(shí)準(zhǔn)備的源代碼

          關(guān)于內(nèi)核源代碼和交叉編譯器,讀者可以根據(jù)自己的實(shí)際情況選擇具體的對(duì)應(yīng)版本, yaffs2.tar.gz 源碼是必需的。

        制作 YAFFS2 文件系統(tǒng)179

          2.解壓源碼

          解壓內(nèi)核源碼和交叉編譯器的源碼,并將 yaffs2.tar.gz 復(fù)制到內(nèi)核源碼的 fs 目錄下進(jìn)行解壓。如果是第一次使用交叉編譯器,那么應(yīng)該在環(huán)境變量中添加交叉編譯器的路徑或者在/etc/profile 中添加交叉編譯器路徑,并重新啟動(dòng)計(jì)算機(jī)。文件/etc/profile 中的交叉編譯 器的設(shè)置,例如:

          # Path manipulation

          if [ "$EUID" = "0" ]; then

          pathmunge /sbin

          pathmunge /usr/sbin

          pathmunge /usr/local/sbin

          pathmunge /usr/local/arm/4.3.2/bin

          fi

          3.修改內(nèi)核頂層Makefile

          在 Makefile 中設(shè)置目標(biāo)平臺(tái)為 arm,交叉編譯器為 arm-linux。

          # vi Makefile

          ARCH ?= $(SUBARCH)

          CROSS_COMPILE ?=

          修改為

          ARCH ?=arm

          CROSS_COMPILE ?=arm-linux-

          4.修改機(jī)器碼

          在 vivi 啟動(dòng)時(shí)如果機(jī)器碼與設(shè)置的不一致會(huì)出現(xiàn)提示,在文件 arch/arm/tools/mach-types

          中進(jìn)行下面的修改。

          # vi arch/arm/tools/mach-types

          s3c2440 ARCH_S3C2440 S3C2440 362

          修改為

          s3c2440 ARCH_S3C2440 S3C2440 782

          5.修改時(shí)鐘頻率

          修改 arch/arm/mach-s3c2440/mach-smdk2440.c 中的時(shí)鐘為 12MHz,具體修改如下:

          static void __init smdk2440_map_io(void)

          {

          s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));

          //s3c24xx_init_clocks(16934400);

          s3c24xx_init_clocks(12000000);//將頻率設(shè)置為 12MHz

          s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));

          }

          6.使內(nèi)核支持YAFFS2

          解壓 yaffs2.tar.gz 后進(jìn)入 YAFFS2 目錄,在 YAFFS2 目錄下有可執(zhí)行文件 patch-ker.sh,

          執(zhí)行如下命令:

          # ./patch-ker.sh c /usr/local/arm/linux-2.6.29.6

          執(zhí)行該命令后,就會(huì)在 fs 的 Kconfig 和 Makefile 中增加對(duì) YAFFS2 的編譯選項(xiàng)的支持。

          在 fs/Kconfig 會(huì)自動(dòng)添加:

          # Patched by YAFFS

          source "fs/yaffs2/Kconfig"

          在 fs/Makefile 中會(huì)自動(dòng)添加:

          # Patched by YAFFS

          obj-$(CONFIG_YAFFS_FS) += yaffs2/

          注意:這兩部分內(nèi)容也可以進(jìn)行手動(dòng)添加。添加的目的是在內(nèi)核的文件系統(tǒng)選項(xiàng)中增加 對(duì) YAFFS2 的支持選項(xiàng)。

          回到內(nèi)核的一級(jí)目錄下運(yùn)行 make menuconfig,對(duì)內(nèi)核進(jìn)行配置,配置中多了對(duì) YAFFS2 文件系統(tǒng)支持的選項(xiàng)。進(jìn)入內(nèi)核配置界面后,依次選擇命令 File systems ---> Miscellaneous filesystems --->,進(jìn)入 Miscellaneous filesystems 配置窗口,選擇對(duì) YAFFS2 文件系統(tǒng)的支持

        制作 YAFFS2 文件系統(tǒng)1783

          7.使內(nèi)核支持Mini2440

          在內(nèi)核的 System Type-->ARM system type 選項(xiàng)下,選擇 Samsung S3C24xx 系列。如果讀者的開發(fā)板不是 mini2440,那么就應(yīng)該選擇對(duì)應(yīng)的處理器類型。然后 在 S3C2440 Machines 中選擇 Mini2440 支持選項(xiàng)。

        制作 YAFFS2 文件系統(tǒng)1943

          8.編譯內(nèi)核映像文件

          執(zhí)行 make zImage 生成內(nèi)核的映像文件,如果遇到下面的錯(cuò)誤可以執(zhí)行 make distclean 進(jìn)行清理,然后重新生成映像文件。

          # make distclean

          # make zImage

          9.編譯Busybox

          編譯 Busybox 的配置細(xì)節(jié)可以參考制作 《Ramdisk 文件系統(tǒng)》。這里可以將 Busybox 交叉編譯安裝在 _install 文件中,

        制作 YAFFS2 文件系統(tǒng)2151

          在/usr/local 目錄下新建 yaffs_root 文件夾,將 Busybox 的安裝目錄_install 中的文件 bin、linuxrc、sbin、usr 復(fù)制到 yaffs_root 目錄下。

          # mkdir /usr/local/yaffs_root

          # cd /usr/local/busybox-1.21.1/_install

          # cp –rf bin linuxrc sbin usr /usr/local/yaffs_root

          10.為YAFFS文件系統(tǒng)準(zhǔn)備lib庫

          將交叉編譯器目錄下的庫文件全部復(fù)制到 lib 庫目錄下,-d 表示復(fù)制的時(shí)候包括鏈接 文件一起復(fù)制過來。

          #cp -d /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib/*so* ./lib

          11.制作etc目錄下必要的文件

          etc 目錄是文件系統(tǒng)中最重要的目錄,系統(tǒng)配置的啟動(dòng)信息都在該目錄下,下面分別給出必要的幾個(gè)文件。

          (1)/etc/inittab 文件。

          ::sysinit:/etc/init.d/rcS #調(diào)用系統(tǒng)初始化文件

          s3c2410_serial0::askfirst:-/bin/sh #文件 drivers/serial/s3c2410.c 中指定了串口驅(qū)動(dòng)名字 s3c2410_serial

          ::ctrlaltdel:/sbin/reboot #重啟

          ::shutdown:/bin/umount -a -r #關(guān)機(jī)

          該文件為 init 進(jìn)程的配置文件。

          (2)etc/init.d/rcS 文件。

          #!/bin/sh

          PATH=/sbin:/bin:/usr/sbin:/usr/bin

          runlevel=S

          prevlevel=N

          umask 022

          export PATH runlevel prevlevel

          mount -a

          mkdir /dev/pts

          mount -t devpts devpts /dev/pts

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

          mdev -s

          mkdir -p /var/lock

          /bin/hostname -F /etc/sysconfig/HOSTNAME

          該文件為可執(zhí)行文件,完成后還要修改其權(quán)限為可執(zhí)行。該文件功能包括指定環(huán)境變量、運(yùn)行級(jí)別和掛載設(shè)備等。

          (3)etc/profile 文件。

          USER="`id -un`"

          LOGNAME=$USER

          PS1='[Yaffs_LiuG]# '

          PATH=$PATH

          HOSTNAME='/bin/hostname'

          export USER LOGNAME PS1 PATH

          如果不配置 profile,移植完文件系統(tǒng)后,進(jìn)入系統(tǒng)命令行頭為空,效果如下:

          # ls

          bin home lost+found proc sys var

          dev lib mnt root tmp

          etc linuxrc opt sbin usr

          配置 profile 文件后,其效果如下:

          ]# ls

          bin home lost+found proc sys var

          dev lib mnt root tmp

          etc linuxrc opt sbin usr

          (4)etc/sysconfig/HOSTNAME 文件。

          Yaffs@LiuG #指定 HOSTNAME,rcS 中調(diào)用該文件

          (5)etc/fstab 文件。

          proc /proc proc defaults 0 0

          tmpfs /tmp tmpfs defaults 0 0

          sysfs /sys sysfs defaults 0 0

          tmpfs /dev tmpfs defaults 0 0

          var /dev tmpfs defaults 0 0

          該文件指明需要掛載的文件系統(tǒng)。

          12.制作YAFFS映像文件

          解壓制作文件系統(tǒng)工具 mkyaffs2image.tar,解壓后該工具自動(dòng)安裝在目錄 usr/sbin/下。 使用 mkyaffs2image 將上面制作的文件系統(tǒng)制作成映像文件。

          # tar xvf mkyaffs2image.tar

          # mkyaffs2image yaffs_root yaffs_root.img

          本文摘自《linux系統(tǒng)移植(第2版)》

        tags:
        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
        請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
        免費(fèi)領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學(xué) 138****2860 剛剛成功領(lǐng)取
        王同學(xué) 131****2015 剛剛成功領(lǐng)取
        張同學(xué) 133****4652 剛剛成功領(lǐng)取
        李同學(xué) 135****8607 剛剛成功領(lǐng)取
        楊同學(xué) 132****5667 剛剛成功領(lǐng)取
        岳同學(xué) 134****6652 剛剛成功領(lǐng)取
        梁同學(xué) 157****2950 剛剛成功領(lǐng)取
        劉同學(xué) 189****1015 剛剛成功領(lǐng)取
        張同學(xué) 155****4678 剛剛成功領(lǐng)取
        鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
        董同學(xué) 138****2867 剛剛成功領(lǐng)取
        周同學(xué) 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        為什么SpringBoot的 jar 可以直接運(yùn)行?

        一、JAR文件的結(jié)構(gòu)與執(zhí)行方式Spring Boot的JAR包是Java Archive的縮寫,它是一種壓縮文件格式,可以將Java項(xiàng)目的類文件、資源文件以及依賴庫等...詳情>>

        2023-10-14 23:01:49
        站群服務(wù)器是什么?

        站群服務(wù)器的含義與用途站群服務(wù)器主要用于支持站群,即由一組相互鏈接的網(wǎng)站組成的群體。這些網(wǎng)站通常由同一組織或個(gè)人擁有,并且經(jīng)常會(huì)互相鏈...詳情>>

        2023-10-14 22:46:12
        自編碼器是什么?

        一、自編碼器原理自編碼器的設(shè)計(jì)靈感源于神經(jīng)科學(xué)中關(guān)于感知系統(tǒng)的認(rèn)知原理,它的核心思想是將輸入數(shù)據(jù)經(jīng)過編碼過程,形成一個(gè)隱藏層的特征表示...詳情>>

        2023-10-14 22:41:10
        什么是云網(wǎng)融合?

        一、云網(wǎng)融合的定義云網(wǎng)融合是指將云計(jì)算與網(wǎng)絡(luò)技術(shù)相結(jié)合,實(shí)現(xiàn)資源的共享、業(yè)務(wù)的協(xié)同,將網(wǎng)絡(luò)與云端服務(wù)深度融合,提供更靈活、高效、安全的...詳情>>

        2023-10-14 22:31:47
        什么是setnx、Redlock、Redisson?

        一、setnxsetnx是Redis中的一個(gè)命令,用于將鍵值對(duì)(key-value)設(shè)置到Redis數(shù)據(jù)庫中。其中,setnx表示”Set if Not Exists”,即當(dāng)...詳情>>

        2023-10-14 22:22:53
        故城县| 木里| 桑日县| 珲春市| 彰化市| 宿迁市| 海门市| 平湖市| 芷江| 虹口区| 盐池县| 江都市| 渝北区| 东阳市| 永城市| 锦屏县| 广汉市| 房产| 桃园市| 子洲县| 三门县| 兴化市| 鲁甸县| 南召县| 五寨县| 罗山县| 柳江县| 长子县| 高州市| 施秉县| 汉中市| 武汉市| 靖远县| 扶风县| 富民县| 苍山县| 巴彦县| 安岳县| 浮山县| 定襄县| 甘孜县|