• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > PXA272啟動引導程序的實現和功能擴展

    PXA272啟動引導程序的實現和功能擴展

    作者: 時間:2012-04-16 來源:網絡 收藏

    加載內核、文件系統映像,設置參數:讀取映像大小和格式,將映像從Flash定向到RAM。定向后,就可 Linux 內核。內核前,要作些準備工作:設置啟動參數。Linux 2.4.x 以后的內核以標記列表(tagged list)形式傳遞啟動參數。由Boot Loader設置常見啟動參數:ATAG_CORE、ATAG_MEM、ATAG_CMDLINE、ATAG_RAMDISK、ATAG_INITRD 等。啟動參數列表以標記 ATAG_CORE 開始,以標記 ATAG_NONE 結束。
    ……
    tags = (struct tag *)BOOT_PARAMS;
    tags->hdr.tag = ATAG_CORE; //以CORE開始
    tags->hdr.size = tag_size(tag_core);
    ……
    tags = tag_next(tags);
    tags->hdr.tag = ATAG_NONE; //以NONE結束
    tags->hdr.size = 0;
    ……

    Boot Loader 調用 Linux 內核的方法是直接跳轉到內核的第一條指令處:
    theKernel = (void *)mp->dramb;//Linux內核基址
    theKernel (0, ARCH_URANIUM, 0xa0008000);

    至此,Bootloader完成該作的工作,跳轉到內核入口點,內核接管控制權,開始啟動Linux。

    4.3 啟動

    在開發板的硬件測試階段,命令接口,以協助硬件測試工作。

    1.內存測試(MEM_TEST)[5]

    測試存儲器有3個部分:數據總線測試、地址總線測試和器件測試;優化通用的測試,能測試出錯誤,還對錯誤進行分析診斷,給出錯誤原因,并定位錯誤。

    數據線測試(走1法):選擇有代表性的寫入值(0x01(單位),0x03(兩個相鄰位), 0x07(三個相連位),0x0F(四個相連位))。分別將值寫入內存地址,寫入后立刻讀出與寫入前的值比較,相等則將寫入值邏輯左移一位作為下一次寫入值。如此。直到所有值被測試完。如有不等,則報錯將寫入前后的值顯示出來。

    地址線測試:取測試值0xaaaaaaaa,選擇測試地址,分別寫入測試值,比較寫入前后值。然后取其反值為測試值寫入測試地址。改換測試地址,按從低向高的順序依次寫入1的遞增值,比較寫入前后的值;再按上一步的地址順序寫入1遞增值反值,比較寫入前后值;在每步寫入前后值的比較中如果不一致,就輸出出錯的地址和寫入前后的值。

    器件測試:用來測試器件完成性,確定器件每一位正確。選擇一組隨地址變化的值寫入內存,再讀出比較。然后取這些值的反寫入內存驗證。

    如測試內存代碼放在SDRAM上,測試時會修改內存,這樣會造成系統崩潰。所以測試內存時,把代碼放在片載SRAM上。

    2.液晶屏測試(LCD_TEST):啟動沒用到LCD,為確定目標板的LCD正常工作,提供LCD_TEST命令測試LCD。點亮LCD前,初始化 LCD控制器寄存器,劃出一塊內存作為LCD顯示緩沖區。通過參數來控制寫入顯示緩沖區中的數據以顯示不同圖形。



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 军事| 江永县| 兴化市| 呼图壁县| 陆河县| 唐山市| 南投县| 霞浦县| 开平市| 崇义县| 繁峙县| 马鞍山市| 睢宁县| 汾西县| 周口市| 古浪县| 常德市| 宁夏| 铜山县| 子长县| 故城县| 汤阴县| 团风县| 吉木萨尔县| 蓬溪县| 贵州省| 徐水县| 读书| 北票市| 若羌县| 滁州市| 子洲县| 林甸县| 行唐县| 通城县| 九龙城区| 胶南市| 呈贡县| 新化县| 泾川县| 睢宁县|