關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > Nios II與CF卡的接口設計

        Nios II與CF卡的接口設計

        作者: 時間:2009-12-15 來源:網絡 收藏

        3 II處理器與CF卡的硬件
          在Altera公司提供的SoPC軟件中對該軟核進行配置時,選用 II CPU、內部定時器、CF卡接口控制器、SDRAM 控制器、FLASH 存儲器接口、LCD 接口和EPCS4串行配置器件控制器接口。其框圖如圖2所示。


               
            圖2 硬件接口框圖

        4 CF卡的接口控制器的軟件操作
          在 II系統中,應用軟件架構在HAL(硬件抽象層)和C標準庫函數上。在Nios II IDE 中建立新的軟件工程時,IDE會根據SoPC Builder對系統的硬件配置自動生成一個定制HAL系統庫。這個庫能為程序和底層硬件的通信提供接口驅動程序,HAL系統庫為CF卡接口控制器內核提供了兩組直接訪問設備寄存器的API函數,其中一個是針對IDE任務文件(ATA)寄存器的,主要提供了對標準的實IDE模式寄存器的訪問設,另一個是針對CF接口控制寄存器的,主要提供了對電源,復位,插入或移除檢測和中斷的控制。設計者只需要調用這些函數就可以訪問外部設備。
          由于CF卡的讀寫是以一個扇區為基本單位的。在讀寫一個扇區之前必須先指明當前需要讀寫的柱面、頭和扇區或LBA地址,然后發送讀寫命令。一個扇區的512 B需要一次性連續讀出或寫入。主機讀/寫CF卡上一個文件的過程是這樣的:
          (1)CF卡檢測。調用:
        IORD_ALTERA_AVALON_CF_CTL_STATUS(CF_CTI_BASE)。
          (2)CF卡內部控制器向CF卡某些寄存器填寫必要的信息。如向扇區號寄存器填寫讀寫數據的起始扇區號或I.BA地址、向扇區數寄存器填寫讀寫數據所占的扇區個數、設置CF卡的扇區尋址方式等。調用:
        IOWR_ALTERA_AVALON_CF_IDE_SECTOR_COUNT(CF_IDE_BASE,Sector_cunt);
        IOWR_ALTERA_AVALON_CF_IDE_SECTOR_NUMBER(CF_IDE_BASE,Sector_num);
        IOWR_ALTERA_AVALON_CF_IDE_CYLINDER_LOW(CF_IDE_BASE,0x00);
        IOWR_ALTERA_AVALON_CF_IDE_CYLINDER_HIGH(CF_IDE_BASE,0x00);
        IOWR_ALTERA_AVALON_CF_IDE_DEVICE_HEAD(CF_IDE_BASE,0xe0)。
          (3)向CF卡的命令寄存器寫入操作CF卡的命令。如寫操作向CF卡的命令寄存器寫入30H,讀操作向CF卡的命令寄存器寫入20H。調用:
        IOWR_ALTERA_AVALON_CF_IDE_COMMAND(CF_IDE_BASE,0x30);
        IOWR_ALTERA_AVALON_CF_IDE_COMMAND(CF_IDE_BASE,0x20)。
          (4)CF卡有數據傳輸請求之后,主機讀寫CF卡的數據寄存器,從而實現從CF卡數據緩沖讀出數據或向CF卡數據緩沖寫入數據。調用:
        IORD_ALTERA_AVAlON_CF_IDE_DATA (CF_IDE_BASE);
        IOWR_ALTERA_AVALON_CF_IDE_DATA(CF_IDE_BASE,Data_Write)。
          (5)在執行以上操作的過程中,每執行一步。都應該檢測狀態寄存器,確定CF卡的當前狀態,從而確定下一步應該執行什么操作(參考狀態寄存器的BIT位的意義,編寫檢測代碼)。調用:
        IORD_ALTERA_AVALON_CF_IDE_STATUS(CF_IDE_BASE)。
          由于CF卡由ATA控制器和FLASH存儲器2部分構成,處理器訪問FLASH存儲器的速度遠遠小于訪問內存的速度,如果系統頻繁訪問CF卡,勢必會影響系統的實時性和工作效率。所以必須考慮CF卡讀寫程序的設計技巧 。根據存儲器訪問的局部性原理,CPU 存取數據所訪問的存儲單元都趨向于聚集在一個較小的連續區域。從時間上看,如果一個信息項正在被訪問,那么在近期他很可能還會被再次訪問。從空間上看,在最近將用到的信息很可能與目前正在使用的信息在空間地址上是臨近的。在Nios II硬件系統設計中,添加了片上的存儲空間,用于存儲最近訪問過的扇區數據。另外還設置了兩個全局變量:一個保存最近備份的扇區編號;另一個說明備份數據是否與CF卡中的相應數據一致,如果一致,其值為0,否則為1。這樣不但可以減少讀寫CF卡的次數。而且提高了訪問速度,通過添加硬件緩沖區,滿足嵌入式操作系統的實時性要求。目前,該設計已經在開發板上實現,運行穩定可靠。


        上一頁 1 2 下一頁

        關鍵詞: Nios 接口設計

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 上犹县| 乌兰浩特市| 景泰县| 定安县| 长岭县| 安仁县| 公安县| 文成县| 公主岭市| 朝阳市| 土默特左旗| 济南市| 出国| 博白县| 陵川县| 湄潭县| 夹江县| 杭锦后旗| 裕民县| 咸丰县| 观塘区| 韶山市| 富民县| 札达县| 台东市| 七台河市| 东兰县| 赫章县| 仁寿县| 文山县| 城固县| 柯坪县| 白朗县| 萨嘎县| 桂平市| 大悟县| 宜春市| 文成县| 广河县| 商丘市| 霍州市|