• <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, 評(píng)論 - 197, 引用 - 0
            數(shù)據(jù)加載中……

            構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)

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


            二 安裝 Skyeye
              我們選定 skyeye 的 1.2.4 這個(gè)版本, 為了能讓它上面運(yùn)行的 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 后執(zhí)行編譯:
              #make NO_DBCT=1 NO_BFD=1

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


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

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

            2.進(jìn)入內(nèi)核目錄:
              #cd linux-2.6.14

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

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

            4.為內(nèi)核添加 cs8900(見附件) 網(wǎng)卡驅(qū)動(dòng),以支持 NFS 掛接:
              (1)復(fù)制 cs8900 驅(qū)動(dòng)到 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.

                 注:在運(yùn)行 make menuconfig 命令時(shí)就會(huì)出現(xiàn): [ ] CS8900 support 這一選項(xiàng)

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

                 注:2.6 版本內(nèi)核的 Makefile 也與 2.4 的有所不同, 添加以上語句, 就會(huì)使內(nèi)核在
                 編譯的時(shí)候根據(jù)配置將cs8900A的驅(qū)動(dòng)程序以模塊或靜態(tài)的方式編譯到內(nèi)核當(dāng)中。

              (4)修改 arch/arm/mach-s3c2410/mach-smdk2410.c
                 在此文件中找到 smdk2410_iodesc[] 結(jié)構(gòu)數(shù)組,添加如下如下內(nèi)容:

                 {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}
                 };

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

              (5)在 include/asm-arm/arch-s3c2410 目錄下創(chuàng)建文件 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 修改內(nèi)核文件
              修改 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.裁剪/定制內(nèi)核
              (1)#make menuconfig
              (2)設(shè)置內(nèi)核啟動(dòng)參數(shù)
                 Boot options ---> Default kernel command string:
                 mem=32M console=ttySAC0 root=/dev/ram initrd=0xc0800000,0x00800000 ramdisk_size=8192 rw
              (3)設(shè)置 CS8900 的支持
                 Device Drivers --->
                 Network device support --->
                 Ethernet (10 or 100Mbit)  ---> []   CS8900 support
                 選中 [*]   CS8900 support
              (4)設(shè)置 initrd 的支持
                 Device Drivers ---> Block devices  ---> [ ] RAM disk support
                 下面三項(xiàng)必須設(shè)置:
                 1.確保 RAM disk support 被選中
                 2.相應(yīng)的將默認(rèn)的 (4096) Default RAM disk size (kbytes) 改成 8192;
                 3.Initial RAM disk (initrd) support 一定要選中, 切記!
              (5)設(shè)置 NFS 的支持
                 File systems  ---> Network File Systems  --->
                 至少確保下面兩項(xiàng)被選中:
                 [*] NFS file system support
                 [*]   Provide NFSv3 client support
              (6)設(shè)置 ROM file system 的支持
                 File systems  ---> [*] ROM file system support
                 確保 [*] ROM file system support 被選中
              (7)設(shè)置 ext2 的支持
                 File systems  ---> [*] Second extended fs support
                 確保 [*] Second extended fs support 被選中

            7.編譯
              #make
              編譯完成后會(huì)有個(gè) vmlinux 在當(dāng)前目錄下, 這就是我們要的 arm-linux 內(nèi)核了


            四 制作根文件系統(tǒng) initrd.img(Initial RAM disk)
              我們選定 busybox-1.9.2.tar.bz2 這個(gè)版本, 以靜態(tài)方式編譯, 即生成的 busybox 不需
            要共享庫的支持就能運(yùn)行。這樣做我們就不需要布署程序庫了。缺點(diǎn)是自己寫的 arm-linux 程序在
            這個(gè)根文件系統(tǒng)中是不能運(yùn)行的,因?yàn)槿鄙俟蚕沓绦驇斓闹С帧2贿^別擔(dān)心,我們會(huì)解決這個(gè)問題的,稍
            后你將看到,通過在 arm-linux 里以掛接 NFS 的方式, 將宿主機(jī)的 arm-linux-gcc 編譯器的
            庫文件掛到 arm-linux 的 /lib 下, 就可完美的運(yùn)行我們自己的程序了。好,一步步來,先來看看
            根文件系統(tǒng)的制作:

            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- 

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

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

              編譯出錯(cuò), 信息如下:
              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

              還是出錯(cuò), 信息如下:
              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.*/

              執(zhí)行 make 重新編譯
              #make

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

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

              創(chuàng)建映像文件并掛到 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/* .

              #創(chuàng)建必要的目錄
              #mkdir proc lib etc dev root home var tmp
              #chmod 777 tmp

              建立設(shè)備文件
              #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 ..

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

              設(shè)置此腳本執(zhí)行權(quán)限
              #chmod 644 etc/inittab

              創(chuàng)建腳本文件 etc/init.d/rcS, 內(nèi)容如下:
              #!/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

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


            五 運(yùn)行 arm-linux
              現(xiàn)在我們有了內(nèi)核 vmlinux, 映像文件 initrd.img, 模擬程序 skyeye, 我們還需要一個(gè)
              配置文件 skyeye.conf 進(jìn)行 arm-linux 的仿真運(yùn)行。

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

              將 vmlinux, initrd.img 都拷貝到此目錄, 在此目錄下建立一個(gè) skyeye 的配制文件
              skyeye.conf, 文件內(nèi)容如下:
              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


              好了,試運(yùn)行吧:
              skyeye -e vmlinux

              看到你的 arm-linux 運(yùn)行了嗎 :-)

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

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

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

              (1)在 arm-linux 的宿主機(jī)里配置 NFS Server (我用是 ubuntu,而且是在 vmware 里)
                 #apt-get install nfs-kernel-server
                 #apt-get install nfs-common
              (2)編輯文件 /etc/exports, 內(nèi)容如下(具體需求由你而定):
                 /test                          *(rw,sync,no_root_squash)
                 /usr/local/arm/3.3.2/lib       *(ro,sync,no_root_squash)    
              (3)配置宿主機(jī)的 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 來驗(yàn)證你的配置是否成功
              (5)在 skyeye 運(yùn)行 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
                 注:可將這幾個(gè)命令加到 rcS 腳本里,讓 arm-linux 啟動(dòng)時(shí)幫你做
              (6)在 skyeye 上運(yùn)行 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

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

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

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

               再重新設(shè)置一下宿主機(jī)的網(wǎng)絡(luò):
               #ifconfig eth1 down
               #ifconfig eth1 up

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



            附件內(nèi)容(可下載)

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

            評(píng)論

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)[未登錄]  回復(fù)  更多評(píng)論   

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

            CROSS_COMPILE ?= arm-linux-

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

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)[未登錄]  回復(fù)  更多評(píng)論   

            模擬只是玩具,有時(shí)間還不如多讀讀內(nèi)核
            2008-04-17 15:08 | 補(bǔ)考少年

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)[未登錄]  回復(fù)  更多評(píng)論   

            先說聲謝謝,按照你的文檔做下來,基本上成功了,不過還是有些小問題,好像網(wǎng)絡(luò)有問題,運(yùn)行的時(shí)候網(wǎng)絡(luò)啟動(dòng)不了

            錯(cuò)誤如:ifconfig: SIOCSIFADDR: No such device

            運(yùn)行ifconfig查看,只有l(wèi)o,沒有eth0網(wǎng)絡(luò)設(shè)備打印信息,不知道大蝦有沒有遇到過這種問題,還請指點(diǎn)

            # 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: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

            @silence
            我的成功了。可能網(wǎng)卡驅(qū)動(dòng)沒有加載,請用如下命令確認(rèn)一下: dmesg | grep -i 'eth'
            看看有沒有 eth0 或 cs8900 之類的字消息,有的話,請重新在 skyeye 上運(yùn)行 arm-linux。如果沒有,那就考慮一下如何加載 cs8900 這個(gè)網(wǎng)卡驅(qū)動(dòng)。
            2008-04-21 10:43 | Normandy

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   


            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: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   


            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


            然后就不動(dòng)了。。。。。。
            2008-05-18 00:26 | guest

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

            CS8900 support

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

            我在制作根文件系統(tǒng)的時(shí)候出現(xiàn)錯(cuò)誤

            make menuconfig時(shí)出現(xiàn)以下錯(cuò)誤

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

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

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

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

            我用busybox 1.9.2一直出現(xiàn)問題,不管是用3.4.1還是3.3.2 都一樣

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

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

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

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

            編譯內(nèi)核時(shí)候出現(xiàn)一下錯(cuò)誤:
            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] 錯(cuò)誤 1
            make: *** [arch/arm/mm] 錯(cuò)誤 2

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

            [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: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)[未登錄]  回復(fù)  更多評(píng)論   

            我遇到以下錯(cuò)誤...
            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: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)[未登錄]  回復(fù)  更多評(píng)論   

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

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

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


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

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

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

            就掛掉了

            請問各問大大這是哪裡出錯(cuò)了?

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

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

            感謝大蝦的傾心相告,向你學(xué)習(xí)認(rèn)真的精神。
            2009-09-28 10:14 | joel

            # re: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

            @guest
            ram_disk我想變?yōu)?6m,是不是修改下面三個(gè)部分
            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
            可是我啟動(dòng)arm-linux時(shí)報(bào)錯(cuò):
            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: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

            @wangjl
            解決了
            1.修改內(nèi)核參數(shù)
            #cd /home/linux-2.6.14
            #make menuconfig
            (1)修改內(nèi)核的啟動(dòng)參數(shù)
            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不應(yīng)該設(shè)置為32m,因?yàn)?2m為內(nèi)核+文件系統(tǒng)的總內(nèi)存
            (2)設(shè)置 initrd 的支持
            Device Drivers ---> Block devices ---> [ ] RAM disk support
            相應(yīng)的將默認(rèn)的 (4096) Default RAM disk size (kbytes) 改成 16384;
            2.生成16M的文件系統(tǒng)
            #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: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)  回復(fù)  更多評(píng)論   

            你好,我是按照樓主的方法一步一步做的,但是當(dāng)我啟動(dòng)arm-linux時(shí)報(bào)錯(cuò):
            在Skyeyearm-linux時(shí),出現(xiàn)錯(cuò)誤:

            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: 構(gòu)建 arm-linux 仿真運(yùn)行環(huán)境 (skyeye + arm-linux + NFS)[未登錄]  回復(fù)  更多評(píng)論   

            請問樓主,你的skyeye.conf中mem_bank的地址及大小是根據(jù)什么配置的?
            2010-08-06 15:30 | 1
            久久婷婷色综合一区二区| 亚洲AV无码久久精品色欲| 久久久无码精品午夜| 精品国产乱码久久久久软件| 久久国产精品一区二区| 伊人久久一区二区三区无码| 久久99精品久久久久久动态图| 久久精品这里只有精99品| 中文无码久久精品| 久久精品夜色噜噜亚洲A∨| 久久这里只有精品18| 久久99精品久久久久久不卡 | 人妻无码αv中文字幕久久 | 久久久久国产精品麻豆AR影院| 亚洲午夜无码AV毛片久久| 国产精品美女久久久久网| 国产精品乱码久久久久久软件| 久久九九有精品国产23百花影院| 久久免费视频1| yellow中文字幕久久网 | 亚洲国产小视频精品久久久三级| 亚洲va中文字幕无码久久不卡| 久久久久亚洲av成人无码电影| 久久99热精品| 99久久99久久久精品齐齐| 囯产极品美女高潮无套久久久| 久久精品国产只有精品66| 久久er国产精品免费观看2| 国产精品一久久香蕉国产线看观看| 国产欧美久久久精品影院| 亚洲精品国精品久久99热| 久久精品国产99久久丝袜| 久久综合九色综合久99| 国产国产成人精品久久| 精品乱码久久久久久久| 亚洲AV无码久久精品狠狠爱浪潮| 久久人妻AV中文字幕| 精品熟女少妇AV免费久久 | 久久精品国产色蜜蜜麻豆| 久久综合狠狠综合久久激情 | 狠狠狠色丁香婷婷综合久久五月 |