• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 60, 文章 - 0, 評論 - 197, 引用 - 0
            數據加載中……

            構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)

            一 前言
              本文旨在將 arm-linux 在 skyeye 上搭建起來,并在 arm-linux 上能成功 mount
            NFS 為目標, 最終我們能在 arm-linux 里運行我們自己的應用程序. 其實在 skyeye 上移
            植 arm-linux 并非難事,網上也有不少資料, 只是大都遺漏細節, 以致細微之處卡殼,所以本
            文力求詳實清析, 希望能對大家有點用處。


            二 安裝 Skyeye
              我們選定 skyeye 的 1.2.4 這個版本, 為了能讓它上面運行的 arm-linx 能掛接 NFS,我
            們需要修改 device/net/dev_net_cs8900a.c (修改后的文件在附件里), 再編譯 skyeye。
            操作如下, 先解壓源碼包:
              #tar xzf skyeye-1.2.4_Rel.tar.gz
              #cd skyeye-1.2.4

            請用附件里的 dev_net_cs8900a.c 替換 device/net/dev_net_cs8900a.c 后執行編譯:
              #make NO_DBCT=1 NO_BFD=1

            編譯完后生成的 skyeye 在 binary 下,將其拷貝至 /usr/local/bin/ 下:
              #cp binary/skyeye /usr/local/bin


            三 編譯內核
              我們選定 linux-2.6.14.tar.bz2 這個版本, 交叉編譯器用 arm-linux-gcc 3.4.1 (對
            2.6 內核用 3.4 以下的版本編譯經常會出現問題)。操作步驟如下:

            1.假定內核源碼包在 /root 下, 首先解壓源碼:
              #cd /root
              #tar xjf linux-2.6.14.tar.bz2

            2.進入內核目錄:
              #cd linux-2.6.14

              修改此目錄下的 Makefile, 將
              ARCH          ?= $(SUBARCH)
              CROSS_COMPILE ?=
              改為
              ARCH          ?= arm
              CROSS_COMPILE ?= /usr/local/arm/3.4.1/bin/arm-linux-

            3.生成默認的內核配置文件(for s3c2410):
              #make smdk2410_defconfig

            4.為內核添加 cs8900(見附件) 網卡驅動,以支持 NFS 掛接:
              (1)復制 cs8900 驅動到 drivers/net/arm 目錄
                 #cp cs8900.c drivers/net/arm
                 #cp cs8900.h drivers/net/arm

              (2)修改 drivers/net/arm 目錄下的 Kconfig 文件, 在最后添加:
                 config ARM_CS8900
                    tristate "CS8900 support"
                    depends on NET_ETHERNET && ARM && ARCH_SMDK2410
                    help
                      Support for CS8900A chipset based Ethernet cards. If you have a network
                      (Ethernet) card of this type, say Y and read the Ethernet-HOWTO, available
                      from as well as .To compile this driver as a module, choose M here and read.
                      The module will be called cs8900.o.

                 注:在運行 make menuconfig 命令時就會出現: [ ] CS8900 support 這一選項

              (3)修改 drivers/net/arm 目錄下的Makefile文件,在最后添加如下內容:
                 obj-$(CONFIG_ARM_CS8900) += cs8900.o

                 注:2.6 版本內核的 Makefile 也與 2.4 的有所不同, 添加以上語句, 就會使內核在
                 編譯的時候根據配置將cs8900A的驅動程序以模塊或靜態的方式編譯到內核當中。

              (4)修改 arch/arm/mach-s3c2410/mach-smdk2410.c
                 在此文件中找到 smdk2410_iodesc[] 結構數組,添加如下如下內容:

                 {vSMDK2410_ETH_IO,pSMDK2410_ETH_IO, SZ_1M, MT_DEVICE}

                 修改之后變成:

                 static struct map_desc smdk2410_iodesc[] __initdata = {
                 /* nothing here yet */
                 /* Map the ethernet controller CS8900A */
                 {vSMDK2410_ETH_IO,pSMDK2410_ETH_IO, SZ_1M, MT_DEVICE}
                 };

                 并且添加一個頭文件引用:
                 #include <asm-arm/arch-s3c2410/smdk2410.h>

              (5)在 include/asm-arm/arch-s3c2410 目錄下創建文件 smdk2410.h
                 #ifndef _INCLUDE_SMDK2410_H_
                 #define _INCLUDE_SMDK2410_H_

                 #include <linux/config.h>
                 #define pSMDK2410_ETH_IO 0x19000000
                 #define vSMDK2410_ETH_IO 0xE0000000
                 #define SMDK2410_ETH_IRQ IRQ_EINT9

                 #endif

            5.參照 http://skyeye.wiki.sourceforge.net/Linux 修改內核文件
              修改 include/asm-arm/arch-s3c2410/map.h
              #define S3C2410_CS6 (0x30000000UL)
              to
              #define S3C2410_CS6 (0xC0000000UL)

              修改 include/asm-arm/arch-s3c2410/memory.h
              #define PHYS_OFFSET (0x30000000UL)
              to
              #define PHYS_OFFSET (0xC0000000UL)

            6.裁剪/定制內核
              (1)#make menuconfig
              (2)設置內核啟動參數
                 Boot options ---> Default kernel command string:
                 mem=32M console=ttySAC0 root=/dev/ram initrd=0xc0800000,0x00800000 ramdisk_size=8192 rw
              (3)設置 CS8900 的支持
                 Device Drivers --->
                 Network device support --->
                 Ethernet (10 or 100Mbit)  ---> []   CS8900 support
                 選中 [*]   CS8900 support
              (4)設置 initrd 的支持
                 Device Drivers ---> Block devices  ---> [ ] RAM disk support
                 下面三項必須設置:
                 1.確保 RAM disk support 被選中
                 2.相應的將默認的 (4096) Default RAM disk size (kbytes) 改成 8192;
                 3.Initial RAM disk (initrd) support 一定要選中, 切記!
              (5)設置 NFS 的支持
                 File systems  ---> Network File Systems  --->
                 至少確保下面兩項被選中:
                 [*] NFS file system support
                 [*]   Provide NFSv3 client support
              (6)設置 ROM file system 的支持
                 File systems  ---> [*] ROM file system support
                 確保 [*] ROM file system support 被選中
              (7)設置 ext2 的支持
                 File systems  ---> [*] Second extended fs support
                 確保 [*] Second extended fs support 被選中

            7.編譯
              #make
              編譯完成后會有個 vmlinux 在當前目錄下, 這就是我們要的 arm-linux 內核了


            四 制作根文件系統 initrd.img(Initial RAM disk)
              我們選定 busybox-1.9.2.tar.bz2 這個版本, 以靜態方式編譯, 即生成的 busybox 不需
            要共享庫的支持就能運行。這樣做我們就不需要布署程序庫了。缺點是自己寫的 arm-linux 程序在
            這個根文件系統中是不能運行的,因為缺少共享程序庫的支持。不過別擔心,我們會解決這個問題的,稍
            后你將看到,通過在 arm-linux 里以掛接 NFS 的方式, 將宿主機的 arm-linux-gcc 編譯器的
            庫文件掛到 arm-linux 的 /lib 下, 就可完美的運行我們自己的程序了。好,一步步來,先來看看
            根文件系統的制作:

            1.解壓源碼包
              #tar xjf busybox-1.9.2.tar.bz2
              #cd busybox-1.9.2
            2.修改 Makefile, 將
              ARCH          ?= $(SUBARCH)                                                                                                                               
              CROSS_COMPILE ?= 
              改為
              ARCH          ?= arm                                                                                                                                      
              CROSS_COMPILE ?= /usr/local/arm/3.3.2/bin/arm-linux- 

              注:這個版本的 busybox 用 3.4.1 的 arm-linux-gcc 編譯有些問題, 用 3.3.2 版則可順利編譯。
            3.定制 busybox
              #make menuconfig

              設置靜態編譯方式
              Busybox Settings  ---> Build Options  ---> [*] Build BusyBox as a static binary (no shared libs)
              確保 [*] Build BusyBox as a static binary (no shared libs) 被選中
            4.執行 make 編譯
              #make

              編譯出錯, 信息如下:
              applets/applets.c:15:2: warning: #warning Static linking against glibc produces buggy executables
              applets/applets.c:16:2: warning: #warning (glibc does not cope well with ld --gc-sections).
              applets/applets.c:17:2: warning: #warning See sources.redhat.com/bugzilla/show_bug.cgi?id=3400
              applets/applets.c:18:2: warning: #warning Note that glibc is unsuitable for static linking anyway.
              applets/applets.c:19:2: warning: #warning If you still want to do it, remove -Wl,--gc-sections
              applets/applets.c:20:2: warning: #warning from scripts/trylink and remove this warning.
              applets/applets.c:21:2: error: #error Aborting compilation.
              make[1]: *** [applets/applets.o] Error 1

              按照提示,修改 scripts/trylink, 將此文件里面有 -Wl,--gc-sections 的行都刪除掉,
              然后重新 make
              #make

              還是出錯, 信息如下:
              root@hukq-desktop:~/busybox/busybox-1.9.2# make
              CC      applets/applets.o
              applets/applets.c:15:2: warning: #warning Static linking against glibc produces buggy executables
              applets/applets.c:16:2: warning: #warning (glibc does not cope well with ld --gc-sections).
              applets/applets.c:17:2: warning: #warning See sources.redhat.com/bugzilla/show_bug.cgi?id=3400
              applets/applets.c:18:2: warning: #warning Note that glibc is unsuitable for static linking anyway.
              applets/applets.c:19:2: warning: #warning If you still want to do it, remove -Wl,--gc-sections
              applets/applets.c:20:2: warning: #warning from scripts/trylink and remove this warning.
              applets/applets.c:21:2: error: #error Aborting compilation.
              make[1]: *** [applets/applets.o] Error 1
              make: *** [applets] Error 2

              修改文件 applets/applets.c 第 21 行, 將
              #error Aborting compilation.
              注釋掉:
              /*#error Aborting compilation.*/

              執行 make 重新編譯
              #make

              編譯通過, busybox 被生成了, 然后執行
              #make install

              busybox 就被安裝到默認的臨時目錄 _install 下了
            5.制作 initrd.img
              有了 busybox 后制作 initrd.img 就容易多了,只是說起來比較煩瑣。以命令演示如下:

              創建映像文件并掛到 initrd 目錄
              #mkdir initrd
              #dd if=/dev/zero of=initrd.img bs=1k count=4096
              #mke2fs -F -v initrd.img
              #mount -o loop initrd.img initrd

              將添加 busybox 到此映像文件
              #cd initrd
              #cp -r ../_install/* .

              #創建必要的目錄
              #mkdir proc lib etc dev root home var tmp
              #chmod 777 tmp

              建立設備文件
              #cd dev
              #mknod -m 644 console c 5 1
              #mknod -m 644 null c 1 3
              #mknod -m 640 ram b 1 1
              #mknod -m 644 mem c 1 1
              #cd ..

              創建腳本文件 etc/inittab, 內容如下:
              ::sysinit:/etc/init.d/rcS
              ::askfirst:-/bin/sh
              ::restart:/sbin/init
              ::ctrlaltdel:/sbin/reboot
              ::shutdown:/bin/umount -a -r
              ::shutdown:/sbin/swapoff -a

              設置此腳本執行權限
              #chmod 644 etc/inittab

              創建腳本文件 etc/init.d/rcS, 內容如下:
              #!/bin/sh
              /bin/mount -t proc none /proc
              /sbin/ifconfig lo 127.0.0.1 up
              /sbin/ifconfig eth0 10.0.0.2 netmask 255.0.0.0 up
              hostname skyeye
              mkdir /var/tmp
              mkdir /var/log
              mkdir /var/run
              mkdir /var/lock
              /bin/ash

              設置此腳本執行權限
              #chmod 755 etc/init.d/rcS
             
              最后一步,執行實際的寫入操作,生成 initrd.img
              cd ..
              umount initrd


            五 運行 arm-linux
              現在我們有了內核 vmlinux, 映像文件 initrd.img, 模擬程序 skyeye, 我們還需要一個
              配置文件 skyeye.conf 進行 arm-linux 的仿真運行。

              #mkdir /root/test
              #cd /root/test

              將 vmlinux, initrd.img 都拷貝到此目錄, 在此目錄下建立一個 skyeye 的配制文件
              skyeye.conf, 文件內容如下:
              cpu: arm920t
              mach: s3c2410x

              # physical memory
              mem_bank: map=M, type=RW, addr=0xc0000000, size=0x00800000
              mem_bank: map=M, type=RW, addr=0xc0800000, size=0x00800000, file=./initrd.img
              mem_bank: map=M, type=RW, addr=0xc1000000, size=0x01000000

              # all peripherals I/O mapping area
              mem_bank: map=I, type=RW, addr=0x48000000, size=0x20000000

              mem_bank: map=I, type=RW, addr=0x19000300, size=0x00000020
              net: type=cs8900a, base=0x19000300, size=0x20,int=9, mac=0:4:3:2:1:f, ethmod=tuntap, hostip=10.0.0.1

              lcd: type=s3c2410x, mod=gtk
              #dbct:state=on


              好了,試運行吧:
              skyeye -e vmlinux

              看到你的 arm-linux 運行了嗎 :-)

             
            六 在 arm-linux 里運行我們自己的程序
              現在 arm-linux 在 skyeye 上跑起來了, 我們能運行里面的命令, 但這些都是 busybox
            的,是系統程序。怎樣才能在 arm-linux 里運行我們自己的程序呢? 有兩種方案,我們不妨討論一
            下,擇優而錄之:

            1.在制作根文件系統 initrd.img 的時候把我們自己的程序加進去,比如放在 /usr/bin 里
              目錄下,然后重新生成 initrd.img,并用這個新的根文件系統來運行 arm-linux。其實這
              是我們的產品在 arm-linux 上發布的最終方式,但這有個缺點: 在產品開發/調試階段這么
              做比較麻煩,每修改一次代碼就得 build 一次根文件系統。

            2.利用掛接 NFS(Network file system) 的方式,我們訪問/執行一個網絡文件系統上的文件
              就像它在本地一樣,顯然這么做能避免第一種方案的弊端! 如何實現呢? 隨我來:

              (1)在 arm-linux 的宿主機里配置 NFS Server (我用是 ubuntu,而且是在 vmware 里)
                 #apt-get install nfs-kernel-server
                 #apt-get install nfs-common
              (2)編輯文件 /etc/exports, 內容如下(具體需求由你而定):
                 /test                          *(rw,sync,no_root_squash)
                 /usr/local/arm/3.3.2/lib       *(ro,sync,no_root_squash)    
              (3)配置宿主機的 ip
                 #ifconfig eth1 down
                 #ifconfig eth1 10.0.0.1 netmask 255.0.0.0 up
                 注:你的可能是 eth0, 另外 ip 地址你也可自己定義,只要能和 arm-liux 通信
              (4)重啟 nfs server
                 #/usr/sbin/exportfs -r
                 #/etc/init.d/nfs-kernel-server restart
                 #/etc/init.d/portmap restart
                 注:可用 showmount -e 來驗證你的配置是否成功
              (5)在 skyeye 運行 arm-linux,為其配置 ip
                 #ifconfig lo down
                 #ifconfig eth0 down   
                 #ifconfig lo 127.0.0.1 up
                 #ifconfig eth0 10.0.0.2 netmask 255.0.0.0 up
                 注:可將這幾個命令加到 rcS 腳本里,讓 arm-linux 啟動時幫你做
              (6)在 skyeye 上運行 arm-linux,演示 nfs 掛接
                 #mount -o nolock 10.0.0.1:/usr/local/arm/3.3.2/lib /lib
                 #export LD_LIBRARY_PATH=/lib   
                 #mount -o nolock 10.0.0.1:/test /tmp

                 在宿主機的 /test 下建立文件 hello.c,用 arm-linux-gcc 3.3.2 編譯
                 #cd /test
                 #arm-linux-gcc -o hello hello.c

                 在 arm-linux 的 /tmp 下看看,是不是有 hello.c 和 hello 這兩個文件了? 試著運行看看:
                 #cd /tmp
                 #./hello

            注:為了確認 arm-linux 能和宿主機通信, 可嘗試以下手段:
            (1)在宿主機上 ping 你的 arm-linux
               #ping 10.0.0.2 -c 2
            (2)在 arm-linux 里 ping 你的宿主機
               #ping 10.0.0.1 -c 2
            (3)如果相互都 ping 不通過,可這樣做:
               重新設置一下 arm-linux 的網絡:
               #ifconfig eth0 down
               #ifconfig eth0 up

               再重新設置一下宿主機的網絡:
               #ifconfig eth1 down
               #ifconfig eth1 up

               然后再像上一步那樣,相互 ping 對方,直至 ping 通為止。能說的就這么多了,祝你好運!



            附件內容(可下載)

            posted on 2008-04-17 11:53 Normandy 閱讀(12321) 評論(32)  編輯 收藏 引用 所屬分類: Embeded Area

            評論

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            慢慢看, 先給頂一下再說.
            2008-04-17 13:24 | samsun

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)[未登錄]  回復  更多評論   

            好東西呀!感謝樓主貢獻出來與大家共享!
            2008-04-17 14:38 | kyle

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            CROSS_COMPILE ?= arm-linux-

            介個之前要export或者改成完整的路徑呀。

            :) 感覺和俺之前摸索的方法差不多。幫頂了。
            2008-04-17 15:01 | 菌子

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)[未登錄]  回復  更多評論   

            模擬只是玩具,有時間還不如多讀讀內核
            2008-04-17 15:08 | 補考少年

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            @補考少年
            模擬正是為了實踐,這樣修改了內核可以在 skyeye 上跑跑, 省得老燒板子了
            2008-04-17 15:39 | Normandy

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            用skyeye比燒板子確實快得多。挺好的一個東西。
            2008-04-18 08:23 | 菌子

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)[未登錄]  回復  更多評論   

            先說聲謝謝,按照你的文檔做下來,基本上成功了,不過還是有些小問題,好像網絡有問題,運行的時候網絡啟動不了

            錯誤如:ifconfig: SIOCSIFADDR: No such device

            運行ifconfig查看,只有lo,沒有eth0網絡設備打印信息,不知道大蝦有沒有遇到過這種問題,還請指點

            # ifconfig
            lo Link encap:Local Loopback
            inet addr:127.0.0.1 Mask:255.0.0.0
            UP LOOPBACK RUNNING MTU:16436 Metric:1
            RX packets:0 errors:0 dropped:0 overruns:0 frame:0
            TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:0
            RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
            2008-04-20 23:40 | silence

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            @silence
            我的成功了??赡芫W卡驅動沒有加載,請用如下命令確認一下: dmesg | grep -i 'eth'
            看看有沒有 eth0 或 cs8900 之類的字消息,有的話,請重新在 skyeye 上運行 arm-linux。如果沒有,那就考慮一下如何加載 cs8900 這個網卡驅動。
            2008-04-21 10:43 | Normandy

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   


            io scheduler noop registered
            io scheduler anticipatory registered
            io scheduler deadline registered
            io scheduler cfq registered
            RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize
            Cirrus Logic CS8900A driver for Linux (Modified for SMDK2410)
            eth0: CS8900A rev D at 0xe0000300 irq=53, no eeprom , addr: 08: 0:3E:26:0A:5B
            mice: PS/2 mouse device common for all mice
            NET: Registered protocol family 2
            IP route cache hash table entries: 512 (order: -1, 2048 bytes)
            TCP established hash table entries: 2048 (order: 1, 8192 bytes)
            TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
            TCP: Hash tables configured (established 2048 bind 2048)
            TCP reno registered
            TCP bic registered
            NET: Registered protocol family 1
            RAMDISK: ext2 filesystem found at block 0
            RAMDISK: Loading 4096KiB [1 disk] into ram disk... done.
            VFS: Mounted root (ext2 filesystem).
            Freeing init memory: 92K
            2008-05-18 00:25 | guest

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   


            io scheduler noop registered
            io scheduler anticipatory registered
            io scheduler deadline registered
            io scheduler cfq registered
            RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize
            Cirrus Logic CS8900A driver for Linux (Modified for SMDK2410)
            eth0: CS8900A rev D at 0xe0000300 irq=53, no eeprom , addr: 08: 0:3E:26:0A:5B
            mice: PS/2 mouse device common for all mice
            NET: Registered protocol family 2
            IP route cache hash table entries: 512 (order: -1, 2048 bytes)
            TCP established hash table entries: 2048 (order: 1, 8192 bytes)
            TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
            TCP: Hash tables configured (established 2048 bind 2048)
            TCP reno registered
            TCP bic registered
            NET: Registered protocol family 1
            RAMDISK: ext2 filesystem found at block 0
            RAMDISK: Loading 4096KiB [1 disk] into ram disk... done.
            VFS: Mounted root (ext2 filesystem).
            Freeing init memory: 92K


            然后就不動了。。。。。。
            2008-05-18 00:26 | guest

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            @guest
            從上面看不出哪出錯了,你的用 skyeye 和 linux 內核版本是多少? 內核如何配置的?
            2008-05-19 09:35 | Normandy

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            再回去看Kconfig的配置,cs8900是否選上了
            Device Drivers --->
            Network device support --->
            Ethernet (10 or 100Mbit) ---> [] CS8900 support
            選中 [*] CS8900 support
            2008-05-24 10:43 | 路人甲

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            除了交叉編譯的版本不一樣外,其他的,例如內核版本,skyeye版本,busybox版本等,都和這篇文章的一樣。謝謝
            2008-05-24 11:46 | guest

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            CS8900 support

            是已選的
            2008-05-24 12:02 | guest

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            @guest
            可能是 "Initial RAM disk (initrd) support" 沒有選中,所以根文件系統沒能成功加載。檢查一下你的內核配置,看看在我這篇博客里用黃色加亮的部分是否被正確配置。或者把你的內核配置文件 .config 發我看看(jbin8164@gmail.com)。
            2008-05-26 10:12 | Normandy

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            Normandy:config文件已經發送到您的郵箱,請幫忙查看一下,謝謝!
            2008-05-26 23:12 | guest

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            @guest
            看了, 內核配置應該沒有問題, 可能是根文件系統的問題, 你用 busybox 制作的根文件系統有多大? 你先用 skyeye testsuite 里的根文件系統試試, 看能否啟動?
            2008-05-28 11:53 | Normandy

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            我在制作根文件系統的時候出現錯誤

            make menuconfig時出現以下錯誤

            /root/busybox-1.9.2/scripts/gcc-version.sh: line 1: /usr/local/arm/3.3.2/bin/arm-linux-: 沒有那個文件或目錄

            請問下這個是什么問題,搞了半天沒搞定

            前面的配置都按照你的文章來的,沒出現問題,就是make menuconfig出問題

            版本跟你的一樣
            2008-07-12 13:39 | 宗華

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            @宗華
            編譯 busybox 1.9.2 需要 arm linux 3.3.2 的編譯器, 用 3.3.4 的編譯器會有問題, 你需要安裝 3.3.2 版本來制作根文件系統
            2008-07-14 11:04 | Normandy

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            我用busybox 1.9.2一直出現問題,不管是用3.4.1還是3.3.2 都一樣

            后來我嘗試了很多版本,最后用1.9.1和arm-linux-gcc 3.4.1 成功了

            謝謝樓主
            2008-07-14 20:18 | 宗華

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            有個問題
            (5)在 include/asm-arm/arch-s3c2410 目錄下創建文件 smdk2410.h
            .....
            #inlcue <linux/config.h>

            為什么 我們config.h這個文件 2.6.20內核是不是低版本才有這個?
            2008-12-02 15:12 | armlinux

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            編譯內核時候出現一下錯誤:
            arch/arm/mm/alignment.c: In function 'proc_alignment_write':
            arch/arm/mm/alignment.c:119: error: read-only variable '__r2' used as 'asm' output
            arch/arm/mm/alignment.c:119: error: read-only variable '__r2' used as 'asm' output
            arch/arm/mm/alignment.c:119: error: read-only variable '__r2' used as 'asm' output
            arch/arm/mm/alignment.c:119: error: read-only variable '__r2' used as 'asm' output
            make[1]: *** [arch/arm/mm/alignment.o] 錯誤 1
            make: *** [arch/arm/mm] 錯誤 2

            看看什么問題哦
            2009-01-16 11:10 | rainbowbirds

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            [root@ARMLinux arm_test]# skyeye -e vmlinux
            big_endian is false.
            arch: arm
            cpu info: armv4, arm920t, 41009200, ff00fff0, 2
            mach info: name s3c2410x, mach_init addr 0x805faf0
            ethmod num=1, mac addr=0:4:3:2:1:f, hostip=10.0.0.2
            uart_mod:0, desc_in:, desc_out:, converter:
            SKYEYE: use arm920t mmu ops
            Loaded RAM ./initrd.img
            start addr is set to 0xc0008000 by exec file.

            那位大哥幫我解決一下咯 謝謝!
            2009-03-13 22:19 | ooooo

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)[未登錄]  回復  更多評論   

            我遇到以下錯誤...
            ERROR: s3c2410x_io_write_word(0x19000308)

            ===============
            fb0: Virtual frame buffer device, using 1024K of video memory
            s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2410
            s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2410
            s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2410
            io scheduler noop registered
            io scheduler anticipatory registered
            io scheduler deadline registered
            io scheduler cfq registered
            RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize
            Cirrus Logic CS8900A driver for Linux (Modified for SMDK2410)
            ERROR: s3c2410x_io_write_word(0x19000308) = 0x00000000
            eth0: incorrect signature 0xffff
            mice: PS/2 mouse device common for all mice
            NET: Registered protocol family 2
            IP route cache hash table entries: 512 (order: -1, 2048 bytes)
            TCP established hash table entries: 2048 (order: 1, 8192 bytes)
            TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
            TCP: Hash tables configured (established 2048 bind 2048)
            TCP reno registered
            TCP bic registered
            NET: Registered protocol family 1
            RAMDISK: ext2 filesystem found at block 0
            ==========

            那位大哥幫我解決一下咯 謝謝!
            2009-03-22 15:07 | Alex

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)[未登錄]  回復  更多評論   

            我試了在2.6.21 安裝CS8900, 失敗了,有沒有方法可以在2.6.21 里用NETWORK? rtl8019 和CS8900 也失敗,TUN 也不可,什麼辦法才能用到SKYEYE的NETWORK呢?

            那位大哥幫我解決一下咯 謝謝!
            2009-03-25 00:44 | Alex

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            Loaded RAM ./initrd.img
            start addr is set to 0xc0008000 by exec file.


            這個我是用高版本的skyeye解決的
            我的是1.2.6,直接編譯skyeye就可以了不用修改源碼

            我移植了linux 2.6.25 CS8900
            主機能ping通宿主機 ,但宿主機不能ping通主機。。。。。。
            2009-04-29 09:50 | rootkit

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            freeing init memory:92K
            Kernel panic - not syncing:No init found. Try passing init= option to Kernel

            就掛掉了

            請問各問大大這是哪裡出錯了?

            請救救我吧
            2009-06-03 21:02 | iolcst

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            感謝大蝦的傾心相告,向你學習認真的精神。
            2009-09-28 10:14 | joel

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            @guest
            ram_disk我想變為16m,是不是修改下面三個部分
            1.(mem=32M console=ttySAC0 root=/dev/ram initrd=0xc0800000,0x00800000 ramdisk_size=8192 rw) Default kernel command string,里面的ramdisk_size=16384
            2.(16384) Default RAM disk size (kbytes) 改為16384
            3.dd if=/dev/zero of=initrd.img bs=1k count=16384
            可是我啟動arm-linux時報錯:
            Warning: unable to open an initial console.
            Kernel panic - not syncing: No init found. Try passing init= option to kernel.
            改怎么樣解決?
            2009-11-10 13:40 | wangjl

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            @wangjl
            解決了
            1.修改內核參數
            #cd /home/linux-2.6.14
            #make menuconfig
            (1)修改內核的啟動參數
            Boot options ---> Default kernel command string:
            mem=64M console=ttySAC0 root=/dev/ram initrd=0xc0800000,0x01000000 ramdisk_size=16384 rw
            注:
            這里的地址0x01000000剛好是16384K=16M,mem=64M不應該設置為32m,因為32m為內核+文件系統的總內存
            (2)設置 initrd 的支持
            Device Drivers ---> Block devices ---> [ ] RAM disk support
            相應的將默認的 (4096) Default RAM disk size (kbytes) 改成 16384;
            2.生成16M的文件系統
            #cd /home/busybox-1.9.2
            #dd if=/dev/zero of=initrd.img bs=1M count=16
            3.修改skyeye.conf配置文件
            修改為:
            cpu: arm920t
            mach: s3c2410x

            # physical memory
            mem_bank: map=M, type=RW, addr=0xc0000000, size=0x00800000
            mem_bank: map=M, type=RW, addr=0xc0800000, size=0x01000000, file=./initrd.img
            mem_bank: map=M, type=RW, addr=0xc1800000, size=0x02800000

            # all peripherals I/O mapping area
            mem_bank: map=I, type=RW, addr=0x48000000, size=0x20000000

            mem_bank: map=I, type=RW, addr=0x19000300, size=0x00000020
            net: type=cs8900a, base=0x19000300, size=0x20,int=9, mac=0:4:3:2:1:f, ethmod=tuntap, hostip=10.0.0.1, state=on
            lcd: type=s3c2410x, mod=gtk
            #dbct:state=on
            注:
            0xc0000000+0x00800000=0xc0800000
            0x01000000=16M
            0xc0800000+0x01000000=0xc1800000
            0x00800000+0x01000000+0x02800000=64M
            2009-11-10 15:33 | wangjl

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)  回復  更多評論   

            你好,我是按照樓主的方法一步一步做的,但是當我啟動arm-linux時報錯:
            在Skyeyearm-linux時,出現錯誤:

            Warning: unable to open an initial console.
            Kernel panic - not syncing: No init found. Try passing init= option to kernel.

            這該怎么樣解決?
            2009-11-30 22:49 | yanglibin1000

            # re: 構建 arm-linux 仿真運行環境 (skyeye + arm-linux + NFS)[未登錄]  回復  更多評論   

            請問樓主,你的skyeye.conf中mem_bank的地址及大小是根據什么配置的?
            2010-08-06 15:30 | 1
            色欲综合久久中文字幕网| 精品久久无码中文字幕| 久久综合久久性久99毛片| 一本色道久久88精品综合| 国产精品成人无码久久久久久| 国产精品久久久久久久app| 99久久国产综合精品五月天喷水 | 99国产欧美精品久久久蜜芽 | 无码AV中文字幕久久专区| 久久精品国产亚洲AV香蕉| 亚洲va久久久久| 精品国产综合区久久久久久 | jizzjizz国产精品久久| 久久国产福利免费| 国产精品99久久99久久久| 香蕉aa三级久久毛片| 久久精品二区| 免费一级做a爰片久久毛片潮| 久久婷婷五月综合97色 | 久久久久亚洲AV综合波多野结衣| 久久人妻AV中文字幕| 亚洲精品乱码久久久久久蜜桃不卡 | 亚洲国产精品无码成人片久久| 国产精品免费久久久久久久久| 7777精品久久久大香线蕉| 亚洲乱码日产精品a级毛片久久 | 国产成人精品综合久久久久| 国产成人香蕉久久久久| 精品久久久久久无码专区| 久久久久久久精品成人热色戒| 久久久久人妻精品一区三寸蜜桃| 久久夜色tv网站| 四虎影视久久久免费| 欧美综合天天夜夜久久| 久久久久久久尹人综合网亚洲 | 久久狠狠爱亚洲综合影院 | 99久久婷婷免费国产综合精品| 狠狠色丁香久久婷婷综合| 狠狠色婷婷久久一区二区| 亚洲精品99久久久久中文字幕| 久久亚洲国产成人精品无码区|