新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 如何移植Linux到晶心平臺

        如何移植Linux到晶心平臺

        作者: 時間:2012-03-30 來源:網絡 收藏

        3. 調試環境

        之前,先架設好調試的環境,尤其對底層原始碼的,有莫大的幫助,在 printk尚未正常運作前,需依靠AndeShape™的AICE與 AndeSoft™的GDB來進行調試。

        3.1設定 kernel 調試選項
        Linux Kernel 需要設定一些調試選項,才能順利的運用AndeSoft™的GDB進行調試。中Linux kernel 調試選項設定如圖表4所示,增加這些選項會增加kernel 映像文件的空間,如果空間占用過大以至于不符合設計需求時,可在調試工作完畢后將調試選項關閉以節約不必要的空間浪費。


        3.2 Linux kernel 調試的程序

        Build成kernel bootpImage (含kernel debug message如圖表四選項) 后,Linux的映像檔放到FPGA板子上,PC host 端的AndeSoft™的GDB透過網絡(socket)與AICE連接至FPGA板子,進行調試的工作。

        3.2.1. 編譯鏈結成映像檔
        設定好AndeSoft™的 cross-compiler 路徑后,利用下列指令經由compiler and linker后可以得到 bootpImage,指令如下:

        #CROSS_COMPILE=nds32le-linux- ARCH=nds32 make xc5_defconfig
        #CROSS_COMPILE=nds32le-linux- ARCH=nds32 make menuconfig
        # CROSS_COMPILE=nds32le-linux- ARCH=nds32 make bootpImage INITRD=xc5_glibc_ramdisk.img

        將生成的bootpIamge放到FPGA板子上,將AICE連接到FPGA板子啟動ICEman,指令如下:

        #C:AndestechAndeSight200MCUice>ICEman.exe --p 1234

        PC host端的AndeSoft™的GDB透過網絡(socket)與AICE連接至FPGA板子,進行調試的工作,示范指令如下:

        #ddd --debugger nds32le-linux-gdb vmlinux
        gdb>target remote 10.0.2.164:1234

        其中IP值 10.0.2.164是一個應用范例,用戶可依環境實際IP值進行設定。環境設定完成后,可以開始進行調試工程。


        4. Linux至關鍵點經驗傳承

        4.1 Kernel加載程序調試實作

        kernel加載程序目的將kernel主程序進行解壓縮并加載正確位置,此程序與kernel主程序是兩個不同程序,但會一起包在zImage中只是kernel加載程序會attached在zImage的前面。調試時需 file不同的 ELF file才能進行正確的調試工作,kernel加載程序的位置在arch/nds32/boot/compressed/vmlinux,指令如下所示。


        #ddd --debugger nds32le-linux-gdb arch/nds32/boot/compressed/vmlinux

        kernel主程序的ELF file “vmlinux”在kernel source code的根目錄下指令如下所示。
        #ddd --debugger nds32le-linux-gdb vmlinux

        4.2 Linux kernel 調試實作

        kernel加載程序執行完畢后會跳到kernel主程序執行。進入點是arch/nds32/kernel/head.S的assembly code執行完后會進入 kernel 的主要函數 “start_kernel”。

        4.2.1. RAM offset patch

        晶心版Linux原始碼搭配XC5平臺,RAM的起始位置(指的是PA)是0x0,使用者FPGA開發板的RAM起始位置如果不是0x0,必須要修改FPGA板子中RAM的起始位置,做法是在晶心版的Linux原始碼中進行RAM address patch,將原始碼中RAM位置調整到FPGA開發板中RAM的真實位置。

        4.2.2. PA/VA remap table

        當FPGA板子IO的PA設定正確后,使用者需要設定PA/VA remap table,作法可參考arch/nds32/include/asm/spec-ag101.h,依照apec-ag101.h中PA/VA對應的關系去增減使用者自己IO device的 PA/VA remap table。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        關鍵詞: Linux 移植 晶心平臺

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 萍乡市| 枣庄市| 淮安市| 怀柔区| 宜兰县| 大田县| 济宁市| 于田县| 仙居县| 黄石市| 柯坪县| 海兴县| 休宁县| 肥西县| 吉安县| 莒南县| 长春市| 东乡族自治县| 海门市| 东乡县| 运城市| 抚远县| 高碑店市| 宁武县| 同心县| 修文县| 台前县| 抚松县| 思南县| 沂水县| 台中县| 吴川市| 汉沽区| 牟定县| 靖宇县| 长汀县| 东兰县| 叶城县| 临城县| 阳新县| 海口市|