<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 189,comments - 115,trackbacks - 0

    [url:]http://www.yuanma.org/data/2006/1228/article_2024.htm
    SkyEye是一個可以運行嵌入式操作系統的硬件仿真工具,這樣就可以在沒有硬件條件下來進行嵌入式系統的開發。

    以下操作均在Fedora Core 1.0里通過。

    Skyeye項目資源列表
    http://gro.clinux.org/projects/skyeye/


    文檔摘要:
    1、什么是SkyEye?
    2、SkyEye可以做什么事情?
    3、安裝SkyEye
    4、安裝arm-elf交叉編譯器
    5、測試你的arm-elf-gcc編譯器
    6、執行你的hello程序
    7、編譯并運行uClinux-dist-20030909.tar.gz
    8、加入網絡功能
    9、安裝完成SkyEye后,下一步將做什么?


    1、什么是SkyEye?

    SkyEye 是開源軟件的一個項目,SkyEye的目標是在Linux和Windows操作系統里提供一個完全的仿真環境。SkyEye仿真環境相當于一個嵌入式計算 機系統,你可以在SkyEye里運行一些嵌入式Linux操作系統,如ARMLinux,uClinux,uc/OS-II(ucos-ii)等,并能分 析和調試它們的源代碼。

    如果你想知道關于SkyEye和嵌入式系統更詳細的信息,請訪問下面的站點:
    www.SkyEye.org
    http://www.skyeye.org/index_cn.html

    通過SkyEye能仿真下面的硬件:
    CPU核心:ARM7TDMI, ARM720T, ARM9, StrongARM, XScale
    CPU: Atmel AT91/X40, Cirrus CIRRUS LOGIC EP7312, Intel SA1100/SA1110, Intel XScale PXA 250/255, CS89712, samsung 4510B, samsung 44B0(還不全)
    內存: RAM, ROM, Flash
    周邊設備: Timer, UART, ne2k網絡芯片, LCD, 觸摸屏等

    目前能在SkyEye上運行下面的操作系統和系統軟件:
    uC/OSII-2.5.x(支持網絡)
    uClinux(基于Linux2.4.x內核, 支持網絡)
    ARM Linux 2.4.x/2.6.x
    lwIP on uC/OSII
    基于uC/OSII, uClinux, ARM Linux的應用程序


    2.SkyEye可以做什么事情?
    1. 通過SkyEye可以幫助促進嵌入式系統的學習,在不需要額外硬件的情況下學習和分析uclinux操作系統和其它嵌入式操作系統,如ucosII等。
    2. SkyEye可用于嵌入式系統的教學。
    3. 希望通過skyeye促進操作系統的研究,如ucosII,uclinux+RTAI,uclinux2.5.x等。
    4. 可以基于SkyEye進行仿真特定硬件模塊的研究。
    5. SkyEye可以作為嵌入式集成開發環境開發嵌入式系統(當然需要對SkyEye做大量的工作)。
    注:引自陳渝《SkyEye Project FAQ》


    3、安裝SkyEye

    http://gro.clinux.org/projects/skyeye/下載skyeye-0.7.0.tar.bz2包:

    tar jxvf skyeye-v0.7.0.tar.bz2

    進入解壓后的skyeye目錄,如果SkyEye的版本低于0.6.0,則運行下面的命令:

    ./configure --target=arm-elf --prefix=/usr/local --without-gtk-prefix --without-gtk-exec-prefix --disable-gtktest

    如果SkyEye的版本高于0.6.0,則運行下面的命令:

    ./configure --target=arm-elf --prefix=/usr/local

    接下來執行:

    make
    make install

    安裝完成后執行skyeye

    注意:
    a.如果你使用的是Mandrake Linux發行版,那么你在編譯SkyEye時遇到錯誤,并且錯誤與readline, ncurse, termcap等有關,你可以試試下面的方法:

    ln -s /usr/include/ncurses/termcap.h /usr/local/include/termcap.h

    接著再make和make install看能否成功!
    b.如果你的Linux發行版是Debian Linux,那么不要使用gcc 2.95或是gcc 3.0,請使用gcc 3.2+
    c.gcc的版本要在2.96或以上
    d.如果SkyEye的版本大于0.6.0,那么使用LCD仿真需要在Linux系統里安裝GTK軟件。


    4、安裝arm-elf交叉編譯器

    下載arm-elf-tools-20030314.sh
    ftp://166.111.68.183/pub/embed/uclinux/soft/tools/arm
    或到
    ftp://166.111.8.229/OS/Embeded

    執行:
    chmod a+x arm-elf-tools-20030314.sh
    然后:
    ./arm-elf-tools-20030314.sh

    ls /usr/local/bin/

    你應能看到以arm-elf開頭的可執行文件,其中arm-elf-gcc就是用來編譯你目標平臺的編譯器的,當然還有一些小工具,后面將一一講來。


    5、測試你的arm-elf-gcc編譯器

    先寫一個小程序hello.c
    PHP代碼:
    #include <stdio.h>

    int main(void)
    {
        
    int i;

        for(
    i = 0; i < 6; i++){

            
    printf("i = %d  ",i);

            
    printf("Hello, embedded linux!\n");
        }

        return
    0;
    }

    然后執行:

    arm-elf-gcc -Wl,-elf2flt -o hello hello.c

    -elf2flt參數是將elf文件格式轉為flat文件格式,這個工具是在你安裝交叉編譯器產生的。

    或者你可以寫個Makefile文件,執行:

    make

    這里是我的Makefile文件,僅供參考:
    PHP代碼:
    # begin

    CC = arm-elf-gcc

    CFLAGS
    = -D__PIC__ -fpic -msingle-pic-base -O2 -pipe -Wall -g
    LDFLAGS
    = -Wl,-elf2flt

    LIBS
    =
    OBJS = hello.o

    all
    :    hello

    hello
    :  $(OBJS)
            $(
    CC) $(CFLAGS) $(LDFLAGS) -o hello $(OBJS) $(LIBS)

    clean:
            
    rm -rf *.o *.elf *.gdb hello

    # end

    如果編譯通過,就會產生hello可執行文件。用下面的命令:

    file hello

    你會發現,它是BFLT(binary FLAT),你目標平臺所支持的文件格式。


    6、執行你的hello程序

    這里,我們將借助genromfs這個小工具來完成測試,這個工具就是你在安裝交叉編譯器時產生的,你可以直接使用它。

    http://gro.clinux.org/projects/skye...0.4.tar.bz2包:

    tar jxvf skyeye-binary-testutils-1.0.4.tar.bz2

    cd testsuits/at91/uclinux2(當然你還可以用別的)

    mkdir romfs(建一個目錄,后面用)

    mount -o loop boot.rom /mnt/xxx

    cp -r /mnt/xxx/* romfs

    另外,把你編譯好的可執行程序拷貝到/romfs/bin目錄里,這里就是hello了!

    genromfs -f boot.rom -d romfs/

    注:可以用genromf -h來獲得幫助!

    OK!執行下面的命令:

    skyeye linux

    (skyeye)target sim

    (skyeye)load

    (skyeye)run

    kernel start.....

    很熟悉了吧。。。

    cd /bin

    hello

    可以看到結果了嗎?

    其實到了這一步,你就可以開發自己的程序了!


    7、編譯并運行uClinux-dist-20030909.tar.gz

    ftp://166.111.68.183/pub/embed/uclinux/soft/
    或到ftp://166.111.8.229/OS/Embeded/uclinux/pub/uClinux/dist下載
    uClinux-dist-20030909.tar.gz

    假設把它下載到/usr/src/目錄下,然后依次執行下面的命令:

    tar zxvf uClinux-dist-20030909.tar.gz
    cd uClinux-dist/

    在圖形方式下可用命令make xconfig

    在命令行方式下用命令make menuconfig

    vendor/product中選擇GDB/ARMulator
    kernel版本選擇2.4
    然后save and exit

    運行下面這兩條命:
    make dep
    make

    此時在/usr/src/uClinux-dist/linux-2.4.x目錄下會生成可執行文件linux
    在/usr/src/uClinux-dist/images/會生成romfs.img等文件

    在uClinux-dist目錄下建立仿真AT91的skyeye配置文件skyeye.conf,內容如下:
    cpu: arm7tdmi
    mach: at91
    mem_bank: map=M, type=RW, addr=0x00000000, size=0x00004000
    mem_bank: map=M, type=RW, addr=0x01000000, size=0x00400000
    mem_bank: map=M, type=R, addr=0x01400000, size=0x00400000, file=images/romfs.img
    mem_bank: map=M, type=RW, addr=0x02000000, size=0x00400000
    mem_bank: map=M, type=RW, addr=0x02400000, size=0x00008000
    mem_bank: map=M, type=RW, addr=0x04000000, size=0x00400000
    mem_bank: map=I, type=RW, addr=0xf0000000, size=0x10000000


    這個時候就可以用skyeye來調試運行kernel了,在/usr/src/uClinux-dist執行如下命令:

    skyeye linux-2.4.x/linux

    (skyeye)target sim

    (skyeye)load

    (skyeye)run

    kernel start.....

    注意:
    要在skyeye.conf所在目錄下執行skyeye linux-2.4.x/linux


    8、加入網絡功能
    a.用root用戶進行操作。
    b.你要看你的/lib/modules/'uname -r'/kernel/drivers/net/目錄里有沒有tun.o
    如果沒有的話你就需要編譯你的linux內核來獲得tun.o了。
    c.(1)運行tun設備模塊:

    #insmod /lib/modules/'uname -r'/kernel/drivers/net/tun.o

    如果你沒有該設備,那你就要用下面的命令來創建它:

    #mkdir /dev/net
    #mknod /dev/net/tun c 10 200

    (2)運行vnet(虛擬集線器)設備模塊(這一步不是必需的):
    獲取vnet的源碼,然后創建設備:

    #mknod /dev/net/vnet c 10 201
    #chmod 666 /dev/net/vnet

    創建vnet.o
    #make vnet.o

    插入模塊vnet.o
    #insmod vnet.o

    進入test目錄,用test來測度vnet.o
    #cd test
    #make
    #./testvnet1

    d.配置skyeye.conf文件

    cpu: arm7tdmi
    mach: at91
    mem_bank: map=M, type=RW, addr=0x00000000, size=0x00004000
    mem_bank: map=M, type=RW, addr=0x01000000, size=0x00400000
    mem_bank: map=M, type=R, addr=0x01400000, size=0x00400000, file=images/romfs.img
    mem_bank: map=M, type=RW, addr=0x02000000, size=0x00400000
    mem_bank: map=M, type=RW, addr=0x02400000, size=0x00008000
    mem_bank: map=M, type=RW, addr=0x04000000, size=0x00400000
    mem_bank: map=I, type=RW, addr=0xf0000000, size=0x10000000
    # format: state=on/off mac=xx:xx:xx:xx:xx:xx ethmod=tuntap/vnet hostip=dd.dd.dd.dd
    net: state=on, mac=0:4:3:2:1:f, ethmod=tun, hostip=10.0.0.1


    下面將對上面的一些參數作下說明:
    state=on/off意思是仿真的NIC(網絡接口板)是有線的還是無線的;
    mac=仿真適配器的MAC地址;
    ethmod=tuntap/vnet在主機環境里使用的虛擬設備;
    hostip=意思是主機環境與keyeye交互用的IP
    格式: state=on/off mac=xx:xx:xx:xx:xx:xx ethmod=tuntap/vnet hostip=dd.dd.dd.dd

    For example:
    #set nic info state=on/off mac=xx:xx:xx:xx:xx:xx ethmod=tuntap/vnet hostip=dd.dd.dd.dd
    net: state=on, mac=0:4:3:2:1:f, ethmod=tun, hostip=10.0.0.1

    net: state=on, mac=0:4:3:2:1:f, ethmod=vnet, hostip=10.0.0.1

    注意:
    如果你想在同一時刻運行兩個或更多的skyeye,那么請為每一個skyeye使用不同的skyeye.conf

    e.運行skyeye linux-2.4.x/linux

    9、安裝完成SkyEye后,下一步將做什么?

    1、 對于嵌入式操作系統的初學者和入門者和入門的學生而言,他們可以先看一些有關操作系統和嵌入式操作系統方面的教材和書籍,如與uC/OS、Minix、 uClinux、Linux相關的書籍等。然后可以在Skyeye上開發一些簡單的應用程序例子(如進程間通信、進程優先級、死鎖情況、網絡應用等),對 某些操作系統功能(如進程調度、內存管理、網絡子系統、文件子系統等)進行簡單的修改和擴展,并通過Skyeye進行運行和調試,看看會發生什么情況。

    2、 對于有一定經驗的軟件工程師而言,在SkyEye上完成一定的應用系統原型開發是值得一做的事情。比如移植或開發一個文件子系統或網絡子系統到一個特定的 操作系統中,相信比在一個真實的開發板上開發要容易一些。在Skyeye上進行一些操作系統的移植和開發(如移植RTLinux、RTAI等其它操作系統 到Skyeye上)也是很有挑戰性的工作。

    3、對于硬件工程師而言,對Skyeye進行擴充,設計新的硬件仿真(如USB、IDE硬盤等)使得Skyeye的硬件仿真功能更加強大,支持更多功能的軟件,是很有意義的事情。

    參考:
    SkyEye項目站點里的一篇中文文檔;
    陳渝《SkyEye Project FAQ》;
    skyeye-0.7.0中的README文檔。

    后記:
    為了讓大家能快速上手,進行實際的開發工作,我趕湊了一篇文檔,很粗糙。但我堅信隨著更多的有經驗的人的加入;隨著我們自己水平的提高,一定會出現更多、更好的文章來。就讓我們快點行動起來吧!

    最后,我再次建議大家看一下《嵌入式Linux技術與應用》這本書。

    可以到http://www.skyeye.org/document.htm或是
    ftp://166.111.68.183/pub/embed/skyeye/document/或是
    http://www.huihoo.org/mirrors/skyeye/
    下載文檔,可以獲得更多有關skyeye和嵌入式Linux開發的知識和經驗。

    posted on 2007-12-06 20:09 MEYE 閱讀(643) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 红杏亚洲影院一区二区三区| 亚洲AV一二三区成人影片| 久久午夜免费鲁丝片| 亚洲一卡2卡4卡5卡6卡在线99| 国产在线观看免费视频播放器| 99精品免费视频| 亚洲欧美成人av在线观看| 亚洲伊人久久综合中文成人网| 无码av免费毛片一区二区| 一级视频在线免费观看| 亚洲高清免费在线观看| 亚洲第一区在线观看| 成人免费黄色网址| 一级做a免费视频观看网站| 亚洲午夜精品国产电影在线观看| 又黄又大又爽免费视频| 37pao成人国产永久免费视频| 无码 免费 国产在线观看91| 亚洲欧洲日本精品| 国内精品99亚洲免费高清| 国产成人A在线观看视频免费| 182tv免费视频在线观看| 亚洲a∨无码精品色午夜| 亚洲女人影院想要爱| 国产精品亚洲综合专区片高清久久久| 中文字幕无码不卡免费视频| 国产色爽免费无码视频| 精品久久久久亚洲| 亚洲综合久久精品无码色欲| 亚洲欧洲日韩不卡| 黑人大战亚洲人精品一区| 国产区卡一卡二卡三乱码免费| 免费h片在线观看网址最新| 成人自慰女黄网站免费大全| 亚洲高清乱码午夜电影网| 亚洲伦理一二三四| 久久久无码精品亚洲日韩蜜臀浪潮| 亚洲日本中文字幕天堂网| 国产成人无码a区在线观看视频免费 | 亚洲中文字幕无码久久综合网| 国产精品jizz在线观看免费|