1. 程式人生 > >fs4412開發板學習筆記(三)

fs4412開發板學習筆記(三)

1.重新制作跟檔案系統啟動還是發生如下錯誤

[    1.955000] request_module: runaway loop modprobe binfmt-464c
//該錯誤是由於沒有配置交叉編譯工具  
配置busybox時,在配置中發現busybox setting->build options->
在cross compile prefix中寫入arm-none-linux-gnueabi-
[    1.965000] Failed to execute /linuxrc (error -8).  Attempting defaults...
[    1.990000] request_module: runaway loop
modprobe binfmt-464c [ 2.000000] Starting init: /sbin/init exists but couldn't execute it (error -8) [ 2.020000] request_module: runaway loop modprobe binfmt-464c [ 2.030000] Starting init: /bin/sh exists but couldn't execute it (error -8) [ 2.040000] Kernel panic - not syncing: No working init found. Try passing init= option
to kernel. See Linux Documentation/init.txt for guidance.

2.載入檔案系統映象到記憶體啟動引數設定為如下:

//這個手冊沒提到
setenv bootargs root=/dev/ram0 init=/linuxrc console=ttySAC2,115200
setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;tftp 43000000 ramdisk.img\;bootm 41000000 43000000 42000000

3.製作linux檔案系統步驟:
a.從http://busybox.net/downloads/

下載busybox
b.解壓busybox
c. cd busybox

    make menuconfig
        ||
        Busybox Settings --->
            Build Options --->
                [*] Build BusyBox as a static binary (no shared libs)
                [ ] Force NOMMU build
                [ ] Build with Large File Support (for accessing files > 2 GB)
                (arm-none-linux-gnueabi-) Cross Compiler prefix//這裡設定交叉編譯工具
                () Additional CFLAGS
    make
    make install
    cd _install
    ls(發現有如下目錄)
        ||
        bin linuxrc sbin usr
    mkdir dev etc mnt proc var tmp sys root
    新增庫:
        toolchain-4.5.1-farsight.tar.bz2
                ||(題外話)
                Toolchain  即工具鏈,一套流程裡面用到的每個工具和相關的庫組成的集合,就稱為工具鏈(tool chain)。
                    ||
                    四種工具
                        ||
                        cross assembler
                        cross compile
                        cross library
                        cross link
                        Toolchain 一般內附有程式編譯器(compiler),如GCC,可以進行程式編譯、或跨平臺編譯(cross compile)工作。
                        目前的工具鍵軟體有 RealWorks toolchain、GNU toolchain。微軟公司的 Visual Studio 2005 是 Windows CE 的 toolchain。
                交叉編譯(cross compile)
                    交叉編譯通俗地講就是在一種平臺上編譯出能執行在體系結構不同的另一種平臺上的程式,
                    比如在PC平臺(X86 CPU)上編譯出能執行在以ARM為核心的CPU平臺上的程式,
                    編譯得到的程式在X86 CPU平臺上是不能執行的,必須放到ARM CPU平臺上才能執行,
                    雖然兩個平臺用的都是Linux系統。這種方法在異平臺移植和嵌入式開發時非常有用。
                    相對與交叉編譯,平常做的編譯叫本地編譯,也就是在當前平臺編譯,編譯得到的程式也是在本地執行。
        tar -xjf toolchain-4.5.1-farsight.tar.bz2
        cp ../../../toolchain-4.5.1-farsight/arm-none-linux-gnueabi/lib/ . -a(此時在_install目錄下面)
    刪除靜態庫和共享庫檔案中的符號表:
    rm lib/*.a
    arm-none-linux-gnueabi-strip lib/*.so(超級使用者執行)
    檢視庫的大小,確保不超過4M
    du -mh lib/

d.新增系統啟動檔案
(1)在 etc 下新增檔案inittab,檔案內容如下:

        #this is run first except when booting in single-user mode.
                ::sysinit:/etc/init.d/rcS
                # /bin/sh invocations on selected ttys
                # start an "askfirst" shell on the console (whatever that may be)
                ::askfirst:-/bin/sh
                # stuff to do when restarting the init process
                ::restart:/sbin/init
                # stuff to do before rebooting
                ::ctrlaltdel:/sbin/reboot
(2)在 etc 下新增檔案fstab ,檔案內容如下:
            #device mount-point type options dump fsck order
            proc /proc proc defaults 0 0
            tmpfs /tmp tmpfs defaults 0 0
            sysfs /sys sysfs defaults 0 0
            tmpfs /dev tmpfs defaults 0 0
            這裡我們掛載的檔案系統有三個proc、sysfs 和 tmpfs 。在核心中proc 和sysfs 預設都支援,而
            tmpfs 是沒有支援的,我們需要新增tmpfs 的支援
                修改 Linux 核心配置;
                $ cd ~/ kernel/linux-3.14
                $ make menuconfig
                    File systems --->
                    Pseudo filesystems --->
                    [*] Virtual memory file system support (former shm fs)
                    [*] Tmpfs POSIX Access Control Lists
                重新編譯核心:
                $ make uImage
                $ cp arch/arm/boot/uImage /tftpboot

(3)回到建立的檔案系統處,在etc 下建立init.d 目錄,
     並在init.d 下建立rcS 檔案,rcS 檔案內容為:
            #!/bin/sh
            # This is the first script called by init process
            /bin/mount -a
            echo /sbin/mdev > /proc/sys/kernel/hotplug
            /sbin/mdev -s
    為 rcS 新增可執行許可權:
            $ chmod +x init.d/rcS


(4)在 etc 下新增profile 檔案,檔案內容為:
            #!/bin/sh
            export HOSTNAME=farsight
            export USER=root
            export HOME=root
            export PS1="[[email protected]$HOSTNAME \W]\# "
            PATH=/bin:/sbin:/usr/bin:/usr/sbin
            LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
            export PATH LD_LIBRARY_PATH

重要:新制作的檔案系統尺寸若超出8M,刪除不需要的庫檔案

e . NFS 測試
刪除原先的/source/rootfs:
sudormrf/source/rootfs/source/rootfssudo mkdir /source/rootfs
$ sudo cp _install/* /source/rootfs –a

4.Ramdisk 檔案系統製作
將通過nfs 測試好的檔案系統內容打包成ramdisk 檔案映象,並燒寫到目標平臺測試。通過實驗掌握
ramdisk 檔案系統的特性及映象製作方法。
步驟

(1)、製作一個大小為8M 的映象檔案
    $ cd ~
    $ dd if=/dev/zero of=ramdisk bs=1k count=8192 (ramdisk 為8M)
(2)、格式化這個映象檔案為ext2
    $ mkfs.ext2 -F ramdisk
(3)、在mount 下面建立initrd 目錄作為掛載點
    $ sudo mkdir /mnt/initrd
(4)、將這個磁碟映象檔案掛載到/mnt/initrd 下
    注意這裡的ramsidk 不能存放在rootfs 目錄中
    $ sudo mount -t ext2 -o loop ramdisk /mnt/initrd
(5)、將我們的檔案系統複製到initrd.img 中
    將測試好的檔案系統裡的內容全部拷貝到/mnt/initrd 目錄下面
    $ sudo cp /source/rootfs/* /mnt/initrd –a
               cp /source/rootfs_ram/* /mnt/initrd -ra
(6)、解除安裝initrd
    $ sudo umount /mnt/initrd
(7)、壓縮initrd.img 為initrd.img.gz 並拷貝到/tftpboot 下
    $ gzip --best -c ramdisk > ramdisk.gz
(8)、格式化為uboot 識別的格式
    $ mkimage -n "ramdisk" -A arm -O linux -T ramdisk -C gzip -d ramdisk.gz ramdisk.img
    $ cp ramdisk.img /tftpboot
(9)、配置核心支援RAMDISK
    製作完 ramdisk.img 後,需要配置核心支援RAMDISK 作為啟動檔案系統,修改核心配置
    $ cd ~/ kernel/linux-3.14
    make menuconfig
        File systems --->
            <*> Second extended fs support
        Device Drivers
            SCSI device support --->
                <*> SCSI disk support
            Block devices --->
                <*>RAM block device support
                (16)Default number of RAM disks
                (8192) Default RAM disk size (kbytes) (修改為8M)
        General setup --->
            [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
        重新編譯核心,複製到/tftpboot
(10)、在U-BOOT 命令列重新設定啟動引數:
setenv bootargs root=/dev/ram0 init=/linuxrc console=ttySAC2,115200
setenv bootcmd tftp 41000000 uImage_3.14\;tftp 42000000 exynos4412-fs4412.dtb\;tftp 43000000 ramdisk.img\;bootm 41000000 43000000 42000000

重新啟動開發板檢視能否正常啟動。

問題:自己製作的跟檔案系統,執行第一個檔案的時候發生如下問題

 bad variable nameine 10: LD_LIBRARY_PATH
 ': No such file or directory
Please press Enter to activate this console.
can't run '/bin/
Please press Enter to activate this console. ÿ
': No such file or directory

使用光碟的配置檔案可以。說明檔案系統是沒問題的,問題出在配置檔案。
應該是配置檔案的格式有問題,以前是直接貼上的。(有些用vim手打後可以)

相關推薦

fs4412開發學習筆記()

1.重新制作跟檔案系統啟動還是發生如下錯誤 [ 1.955000] request_module: runaway loop modprobe binfmt-464c //該錯誤是由於沒有配置交叉編譯工具 配置busybox時,在配置中發現bus

fs4412開發學習筆記(十七)

# madplay 123.mp3 WM8960 Playback: ASoC: unmatched rate symmetry: 8000 - 44100 output: ioctl(SNDCTL_DSP_SPEED): Invalid argument

fs4412開發學習筆記(十五)

音效卡驅動dts. ====== wm8960:[email protected]1a{ compatible="wlf,wm8960"; reg = <0x1a>; };

fs4412開發學習筆記(二十一)

常用命令: setenv bootargs root=/dev/nfs nfsroot=192.168.0.110:/source/rootfs rw ip=192.168.0.140:192.168.0.110:192.168.0.1:255.255.2

fs4412開發學習筆記(十)

移植motion: 1.從官網 http://www.lavrsen.dk/foswiki/bin/view/Motion/WebHome 下載最新的motion-3.2.12 2.tar -xzf motion-3.2.12.tar.gz 解壓 3.mkdi

野火-Mini-RT-1052開發-學習筆記

RT-1052啟動細節 一、基本概念 Code :程式程式碼 RO-Data:只讀資料(定義的常量或const型的變數) RW-Data:靜態初始化,即有初值的變數 ZI-Data:未初始化的靜態變數(一般這類變數,被初始化為0) Total RO Size = Code + RO-

ALIENTEK MiniSTM32開發 學習筆記(一)

首先把屏插入開發板,OLED的話靠左,LED就要靠右(最左為空) 結果白屏。。。 檢查跳線均已接地,仍舊白屏。 用串列埠助手看,LCD ID貌似有問題,悲催??? FML ,屏腳插緊點就好了,LCD ID正常。 貌似出廠自帶DEMO,無限迴圈中,看樣子有點和GTK的DEMO類似啊,似乎可以做很多東西嘛。 研

遊戲開發學習筆記

nor scrip 筆記 nsrunloop posit ppr 遊戲開發 tor http sdk%E6%9B%B4%E6%96%B0%E4%B8%8D%E6%88%90%E5%8A%9F%E6%B1%82%E5%A4%A7%E7%A5%9E%E5%B8%AE%E5%BF

webservice學習筆記():使用jdk開發Web Service

開發Web Service有兩種方式: 1.使用JDK開發(至少1.6或以上) 2.使用CXF框架開發(工作中) 組成: 1.伺服器端 2.客戶端   使用jdk開發Web Service 1.開發伺服器端 a.Web Service編碼: [ema

嵌入式核心及驅動開發學習筆記) 點燈實驗

完成應用程式通過驅動控制硬體的實現。實驗建立在之前的框架上,我們先實現使用者層與核心層之間的資料互動,驅動程式拿到使用者傳來的指令後,就可以執行點燈的動作了。   應用程式與驅動資料互動 對於驅動程式而言,使用copy_to_user 和 copy_from_user

IOS開發學習筆記 實現一個簡單的加法器

首先看一下我們實現的效果:demo下載 開始我們的操作 使用XCode新建一個Project,選擇Main.storyboard,從控制元件欄中拖拽Button,Label,Text三種控制

軟體開發過程學習筆記)之概要設計說明書模板

1 引言 本設計書主要是基於以下目的編寫: 1、對系統概要設計的階段任務成果形成文件,以便階段驗收、評審,最終的文件驗收。 2、對需求階段的文件再次確認過程,對前一階段需求沒有做充分或錯誤的提出修改。 3、明確整個系統的功能框架和資料庫結構,為下一階段的詳細設計、編碼、和

敏捷開發學習筆記()——如何進行團隊專案會議

1.先看一些失敗的團隊會議:         有些關於方案討論的會議,到最後可能會失控變成了情緒化的指責,變成做決定是基於誰提出了這個觀點,而不是權衡觀點本身的利弊。參加這種會議,到最後會鬧得大家都很不愉快。但是,這也很正常! 2.如何討論    一個好的設計作品,都需要

嵌入式Linux學習筆記() 字元型裝置驅動--LED的驅動開發

  在成功構建了一個能夠執行在開發板平臺的系統後,下一步就要正式開始應用的開發(這裡前提是有一定的C語言基礎,對ARM體系的軟/硬體,這部分有疑問可能要參考其它教程),根據需求仔細分解任務,可以發現包含的外設有LED,BEEP,RS232,六軸感測(SPI介面),光環境感測器(I2C),音訊輸出, RTC等,

Linux學習筆記():系統執行級與執行級的切換

查看 用戶操作 回車 water hat ntsysv tde 文件表 config 1.Linux系統與其它的操作系統不同,它設有執行級別。該執行級指定操作系統所處的狀態。Linux系統在不論什麽時候都執行於某個執行級上,且在不同的執行級上執行的程序和服務都不同,所要

【Unity 3D】學習筆記十:遊戲元素——遊戲地形

nbsp 3d遊戲 strong 直觀 分辨率 == 摩擦力 fill 世界 遊戲地形 在遊戲的世界中,必然會有非常多豐富多彩的遊戲元素融合當中。它們種類繁多。作用也不大同樣。一般對於遊戲元素可分為兩種:經經常使用。不經經常使用。經常使用的元素是遊戲中比較重要的元素。一

MYSQL學習筆記:日期和時間函數

div content minute name top fonts table hmm 指定 MYSQL學習筆記三:日期和時間函數 1. 獲取當前日期的函數和獲取當前時間的函數 /*獲取當前日期的函數和獲取當前時間的函數。將日期以‘YYYY-MM-DD‘或者’YYYYM

Hadoop權威指南學習筆記

支持 第三方 handle line src factory 模式 多個 重要 HDFS簡單介紹 聲明:本文是本人基於Hadoop權威指南學習的一些個人理解和筆記,僅供學習參考。有什麽不到之處還望指出,一起學習一起進步。 轉載請註明:http://blog.cs

NLTK學習筆記():NLTK的一些工具

ast 關註 code 值範圍 通過 自動 ive 叠代器 emma 主要總結一下簡單的工具:條件頻率分布、正則表達式、詞幹提取器和歸並器。 條件分布頻率 《自然語言學習》很多地方都用到了條件分布頻率,nltk提供了兩種常用的接口:FreqDist 和 Condit

Tomcat學習筆記()

containe 請求 container connect 技術 http 簡單 img 容器 Tomcat連接器 tomcat連接器是tomcat的一個核心組件,在tomcat4中的實現原理如下 1.實現Connector接口 2.創建Reques