新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 學習嵌入式Linux系統(tǒng)的筆記和體會(2)

        學習嵌入式Linux系統(tǒng)的筆記和體會(2)

        ——
        作者: 時間:2007-02-28 來源:天極網 收藏

        入門試驗,制作一個簡單的應用

          我們使用一張軟盤啟動一臺假象的只有一個串口,鍵盤輸入,顯示輸出的x86架構的linux系統(tǒng),執(zhí)行的特定應用就是運行minicom,通過串口撥號。需要軟件: minicom-xx.src.tar.gz 和 syslinux-xx.tar.gz,xx代表版本號,開始之前,在主目錄建立一個目錄,來釋放這兩個軟件包:

        cd
        mkdir -p project/minilinux
        cd project/minilinux
        tar zxvf minicom-xx.src.tar.gz
        tar zxvf syslinux-xx.tar.gz

          1、裁減linux內核(需要系統(tǒng)安裝內核文件包)

          配置內核的時候,我們需要選擇這些:摸塊編入內核,386處理器、物理內存off、支持ELF、標準PC軟盤、支持RAM盤(4096)、支持 initial RAM disk (initrd)、虛你終端、虛擬終端控制臺、標準串口、ext2文件系統(tǒng)、控制臺驅動,VGA text console、DOS FAT、MSDOS文件系統(tǒng),其他的都可以不要,這樣內核編出來較小。

        步驟:
        cd /usr/src/linux
        make mrproper
        make xconfig
        make dep && make bzImage
        得到 /usr/src/linux/arch/i386/boot/目錄的內核文件bzIamge。

          2、編譯一個靜態(tài)的minicom ,把它作為將來的linuxrc

        cd minicom-xx/src
        vi Makefile
        修改下面這行
        minicom: $(minicom_OBJECTS) $(minicom_DEPENDENCIES)
        rm -f minicom 下面的行加上 -static,連接為靜態(tài)程序
        (LINK) -static $(minicom_LDFLAGS) $(minicom_OBJECTS) $(minicom_LDADD) $(LIBS)

        vi minicom.c
        找到 if (real_uid==0 && dosetup==0 ) 刪除這個判斷條件語句,主要是用于權限判斷的,因為這個嵌入應用不關注權限問題,否則會出錯。
        make
        得到可執(zhí)行程序,用ldd 檢查一下是不是靜態(tài)程序。

          3、準備initrd壓縮文件image.gz

        dd if=/dev/zero of=image bs=1k count=4096
        losetup /dev/loop0 image
        mke2fs -m 0 /dev/loop0
        mounmt -t ext2 /dev/loop0 /mnt/
        mkdir -p /mnt/dev
        mkdir -p /mnt/usr/share/terminfo/l/
        cd /dev
        cp -a consle null tty tty0 zero mem /mnt/dev
        cp -P /usr/share/terminfo/l/linux /mnt/usr/share/terminfo/l/linux
        cp ~/project/minilinux/mincom/src/minicom /mnt/linuxrc
        umount /mnt
        losetup -d /dev/loop0
        sync
        gzip -9 image

        4、制作軟盤引導,并拷貝文件 bzimage image.gz 到軟盤

        A.使用grub
        fdformat /dev/fd0
        mke2fs /dev/fd0
        mount /mnt/fd0 /mnt/floppy
        mkdir -p /mnt/floppy/boot/grub
        cp /boot/grub/stage1 /boot/grub/stage2 /mnt/floppy/boot/grub
        執(zhí)行 grub,在軟盤上創(chuàng)建引導
        grub > root (fd0)
        grub > setup (fd0)
        grub > quit

        cp /usr/src/linux/arch/i386/boot/bzImge /mnt/floppy
        cp ~/porject/minilinux/image.gz /mnt/floppy

        編輯 /mnt/floppy/boot/grub/grub.conf
        default =0
        timeout-=10
        title minilinux
        root (fd0)
        kernel /bzImage
        initrd /image.gz

        卸下軟盤
        umount /mnt/floppy


        B. 使用syslinux
        fdformat /dev/fd0
        mkfs.msdos /dev/fd0
        mount -t msdos /dev/fd0 /mnt/floppy

        cp /usr/src/linux/arch/i386/boot/bzImge /mnt/floppy
        cp ~/porject/minilinux/image.gz /mnt/floppy

        cp syslinux-xx/ldlinxu.sys /mnt/floppy
        cat > /mnt/floppy/syslinux.cfg
        LABEL linux
        KERNEL bzimage
        APPEND initrd=image.gz

        umont /mnt/floppy
        syslinux-xx/syslinux /dev/fd0
        sync

          5、用軟盤啟動計算機,如果幸運,minicom的運行畫面出現(xiàn)在屏幕上。

          到此,我們的單應用嵌入式linux做好了,但它還很簡陋,沒有什么實際用途,但通過這個實驗,可以了解嵌入式系統(tǒng)的大致結構和開發(fā)過程。在進行實際的嵌入式開發(fā)時,通常要在PC機上借助嵌入式linux開發(fā)工具包,如:uclinux,bluecat等,對相應的硬件平臺(目標機)進行軟件編寫編譯,調試成功后,將內核及應用程序寫入到目標機的存儲器中,從而完成整個應用。


         



        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 巴青县| 客服| 尚志市| 新津县| 高州市| 罗山县| 宝鸡市| 宕昌县| 涿州市| 黄大仙区| 东台市| 娄烦县| 台南县| 榆中县| 张家港市| 绍兴市| 白朗县| 本溪市| 罗定市| 敦化市| 左贡县| 冀州市| 闽清县| 来凤县| 南木林县| 乡宁县| 云龙县| 贡山| 盐城市| 商城县| 西林县| 广汉市| 海口市| 望谟县| 大新县| 南安市| 晋中市| 宁陕县| 西昌市| 天长市| 黔西|