青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 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 閱讀(12359) 評論(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
我的成功了。可能網卡驅動沒有加載,請用如下命令確認一下: 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
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美在线一二三| 一区二区三区欧美| 久久久999| 在线日韩av片| 亚洲国产精选| 欧美日韩一区二区在线| 亚洲一区二区三区四区在线观看| 亚洲国产成人不卡| 亚洲福利视频网站| 亚洲国产精品小视频| 欧美三级电影网| 久久久久一区二区三区| 久久久一二三| 一区二区福利| 午夜精品福利一区二区蜜股av| 一区在线免费| 亚洲精品欧美极品| 国产视频久久久久久久| 美日韩在线观看| 欧美日韩中文字幕日韩欧美| 性伦欧美刺激片在线观看| 久久国产精品72免费观看| 亚洲精品美女在线观看| 香港成人在线视频| 日韩视频精品在线| 欧美主播一区二区三区| 一区二区三区毛片| 欧美影院在线| 亚洲一级电影| 久久综合伊人77777蜜臀| 亚洲免费视频观看| 欧美99在线视频观看| 午夜精品视频在线观看| 免费不卡亚洲欧美| 欧美在线观看一区二区| 欧美激情综合色综合啪啪| 久久精品在线视频| 国产精品女主播在线观看| 欧美激情中文不卡| 国产色视频一区| 99re国产精品| 亚洲毛片在线| 久久综合国产精品台湾中文娱乐网| 亚洲综合色视频| 欧美日本韩国一区| 日韩网站在线观看| 国产一区二区丝袜高跟鞋图片| 亚洲毛片在线免费观看| 91久久精品国产91久久性色| 欧美尤物巨大精品爽| 亚洲一区二区视频在线| 欧美激情综合在线| 亚洲精品久久久一区二区三区| 伊人久久亚洲美女图片| 久久成人综合视频| 久久久精品一区二区三区| 国产麻豆综合| 午夜精品区一区二区三| 午夜亚洲福利| 国产欧美一区二区精品仙草咪| 亚洲婷婷综合久久一本伊一区| 一二三区精品| 欧美性视频网站| 亚洲视频一区| 亚洲欧美日韩综合一区| 国产精品女人久久久久久| 99视频精品全部免费在线| aa级大片欧美| 欧美日韩亚洲另类| 亚洲色无码播放| 小黄鸭精品密入口导航| 国产日韩视频| 久久久久久国产精品一区| 欧美精品一区二区三| 亚洲视频二区| 亚洲一区二区三区免费在线观看 | 欧美在线观看你懂的| 国产亚洲美州欧州综合国| 久久国产精品亚洲va麻豆| 美女黄毛**国产精品啪啪| 亚洲第一区色| 欧美日韩免费观看一区=区三区| 在线亚洲观看| 久久久另类综合| 亚洲第一区在线观看| 欧美精品激情在线| 亚洲欧美国产精品专区久久| 久久中文字幕一区二区三区| 91久久视频| 国产精品久久国产三级国电话系列| 一区二区欧美国产| 久久久九九九九| 日韩午夜在线视频| 国产亚洲一区二区在线观看 | 欧美成人精品在线视频| 一区二区毛片| 欧美99在线视频观看| 亚洲手机视频| 亚洲国产成人久久综合一区| 国产精品白丝黑袜喷水久久久| 久久久噜噜噜久久中文字免| 亚洲人永久免费| 久久久国产精品一区二区中文| 亚洲乱码国产乱码精品精| 国产麻豆午夜三级精品| 欧美精品一区三区| 久久黄金**| 亚洲欧美激情诱惑| 亚洲精品国产欧美| 你懂的成人av| 久久精品国产久精国产一老狼 | 韩国精品久久久999| 欧美日韩午夜精品| 看片网站欧美日韩| 午夜亚洲福利| 在线亚洲+欧美+日本专区| 亚洲国产日韩在线| 久久日韩精品| 欧美伊人久久大香线蕉综合69| 中文亚洲字幕| 日韩视频久久| 亚洲黄色av| 亚洲国产精品免费| 国内精品视频在线播放| 国产精品毛片高清在线完整版| 欧美乱大交xxxxx| 免费成人高清| 久久久综合网| 久久精品综合| 久久全国免费视频| 久久精品在线观看| 欧美一区二区免费| 亚洲欧美日韩网| 亚洲一区二区免费看| 日韩一级大片在线| 亚洲精品视频啊美女在线直播| 欧美激情久久久久| 亚洲第一免费播放区| 免费国产一区二区| 美腿丝袜亚洲色图| 你懂的一区二区| 欧美成人在线免费观看| 欧美顶级少妇做爰| 欧美电影打屁股sp| 国产视频一区二区三区在线观看| 午夜免费在线观看精品视频| 亚洲一区二区三区四区五区黄| 日韩亚洲欧美高清| 99成人在线| 亚洲欧美一区二区原创| 亚洲一区免费| 性欧美xxxx大乳国产app| 欧美一区二区视频在线| 久久er99精品| 免费在线视频一区| 欧美激情影院| 国产精品国产福利国产秒拍| 国产精品久久午夜夜伦鲁鲁| 国产日韩精品一区| 在线播放亚洲| 99国产一区| 午夜精品久久| 久久综合久久美利坚合众国| 欧美国产日韩一区二区三区| 亚洲精品影视| 欧美一进一出视频| 老司机午夜免费精品视频 | 亚洲女人小视频在线观看| 欧美在线观看视频在线| 欧美成人免费网站| 国产精品久久久久一区| 国产一区久久久| 99精品国产在热久久下载| 亚洲欧美日韩国产一区二区| 麻豆成人在线| 日韩亚洲欧美成人一区| 久久精品一区二区三区四区| 欧美久久久久免费| 国产一区二区按摩在线观看| 亚洲乱码国产乱码精品精可以看 | 久久精品导航| 欧美日韩在线播放| 国产综合香蕉五月婷在线| 一本到高清视频免费精品| 久久久久国产成人精品亚洲午夜| 亚洲国产欧美在线| 欧美有码视频| 国产精品久久影院| 亚洲国产精品传媒在线观看| 午夜亚洲伦理| 亚洲欧洲一区| 老鸭窝91久久精品色噜噜导演| 国产精品久久久久久久久借妻| 亚洲黄色成人网| 免费成年人欧美视频| 亚洲自拍偷拍一区| 国产精品久久久久久久9999| 亚洲人成在线观看网站高清| 久久青青草综合| 亚洲与欧洲av电影|