關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 基于龍芯2F架構的PMON分析與優化

        基于龍芯2F架構的PMON分析與優化

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

        1.3 在內存中的執行流程
        在內存中的執行過程非常復雜,下面按照其執行流程主要的函數:
        _init():主要功能是順序執行初始化。列表上的所有函數,建立必要的數據結構和編譯環境。初始化列表上的函數主要可以分為3類:命令初始化函數,文件系統初始化函數,可執行文件初始化函數。
        Evenint():環境變量初始化函數,這些環境變量解釋并執行不同的命令。它們對來說是必需的,用戶可以定義另外的變量來保存任何字符串,如文件名和命令符等。
        Tgt_devinit():主要功能是南橋初始化和PCI設備初始化。其中南橋初始化函數是cs5536_init()。PCI設備初始化由函數_pci_businit()完成,分為兩步;先是北橋初始化,然后是設備初始化,包括對設備的掃描和設備所需資源的分配。PCI設備的初始化部分是PMON中的難點。
        Init_net():主要進行了如下的工作;虛擬內存初始化等;用_pci_deviceinit函數完成了PCI配置空間的參數初始化,并且初始化顯卡;網絡系統的初始化包括網絡設備的初始化和協議的配置等。
        最后加載操作系統內核。這里會用到兩個重要的命令Load和g。Load命令用于加載文件(內核)到內存,g命令執行內核文件。加載了內核文件之后就可以通過g命令來執行內核。

        本文引用地址:http://www.104case.com/article/202462.htm

        2 基于的PMON修改與優化
        2.1 添加82551網卡驅動
        網卡是一個PCI設備,所以其驅動在PCI設備初始化時實現。對于PCI設備,有一個重要的數據結構struct cfdata cfdata,這個數組是根據具體平臺的配置文件生成的,以下是配置文件的相關部分:
        2.JPG
        這個部分描述了設備之間的鏈接關系,cfdata是這個關系的數組表示。另外還有一個PV數組定義一個設備的父設備,每個節點的父設備都是一個數組,在設備的cfdata結構中定義數組的開始。
        上述配置文件中的fxp0表示的就是網卡設備。因為fxp0是PCI子設備,因此在查找PCI子設備時,其4個子設備:fxp0,rtkO,ohci,pci-ide的驅動也會在此時加載。查找設備有一個函數:config_found,其會調用config_serch,config_search從靜態設備樹cfdata中查找當前設備的子設備,然后對設備調用mapply函數,進行設備的匹配,如果設備存在則會調用該設備的ca_attach函數來加載設備的驅動程序。這里找到網卡設備之后會調用fxp_attach函數。在設計的網卡驅動中,實現了操作系統將怎樣通過網卡驅動來講網絡包發送出去,而網卡收到網絡數據包之后怎樣通過操作系統來做后續處理。在PMON中,網卡中斷通過查詢來實現。fxp_attach函數會調用pci_intr_establish將中斷程序注冊到查詢列表poll_list上。網口要將數據包發送出去,就必須提供一個網絡接口,以提供給發送函數。在這里,將網絡數據包放在網絡接口的ifp→if_snd隊列中,然后啟動if_start來開始發送。在網卡發送完一個包后,檢查發送隊列,如果有剩余則繼續發送,直到發送完畢。然后通過函數e100_poll來檢查是否收到包,并進行收包處理。先進行緩沖區的清除,使能接收隊列,查詢是否有數據可接收,有則開始接收。無則繼續查詢并發出信息。



        關鍵詞: PMON 龍芯2F 架構 分析

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 昌平区| 溧水县| 酉阳| 新郑市| 双辽市| 陆丰市| 大城县| 金华市| 佛坪县| 南召县| 兴业县| 镇远县| 高淳县| 扎鲁特旗| 封丘县| 德钦县| 江川县| 西吉县| 永善县| 永安市| 任丘市| 皮山县| 天柱县| 东海县| 海兴县| 稻城县| 密山市| 罗平县| 阿城市| 金堂县| 喀喇| 鹤壁市| 工布江达县| 通江县| 左云县| 漯河市| 仁怀市| 白朗县| 萨嘎县| 南木林县| 博客|