C語言在哪裡?

來源:互聯網
上載者:User

原文地址:http://hi.baidu.com/nios4fun/blog

上次寫那幾行程式確實沒用到C標準庫裡的函數,altera_avalon_seg7_×× ×是我們自己定義的,不算數。典型的C標準庫函數有:open() close()   printf()   read()...等等,在電腦上用C語言寫應用程式,就是拿C標準庫函數拼拼湊湊而成。

       C語言的簡單易用性有目共睹,軟體設計人員早已習慣了C語言的文法和思維邏輯,nios要將軟體設計和硬體設計隔離開,必須迎合軟體設計者的習慣,引入C標準庫,這樣才能使軟體開發人員從其它平台的開發轉到nios的時候,不會覺得突兀和陌生。

       軟體開發人員不會去關心底層硬體實現細節,所謂軟體,是很虛的東西,邏輯功能的組織和具體落實到硬體畢竟是兩回事,因此必須把C標準庫中那些很“虛”的函數跟實際的硬體操作對應起來,這個過程稱為“移植”。

       既然規定nios的軟體用C語言實現,altera肯定為使用者完成了C標準庫的移植,將C標準函數與硬體操作一一對應。但是,硬體種類千千萬萬,altera考慮得再怎麼周全,也不可能顧得上所有的硬體,於是,它想出一個辦法:把 硬體分門別類,把同一類硬體的共性提取出來,形成一個“虛擬設備”,然後確定這個“虛擬設備”適用於C標準庫的哪些函數,把這些函數指標放到一個結構體 中,OK,它的任務就算完成了。如果設計人員想把一個硬體外設加入nios系統,如果他希望別人能用C函數訪問到該硬體,那麼,請他考量一下這個硬體能夠 歸到哪個“虛擬設備”名下,然後對照著這個“虛擬設備”的結構體,自個兒實現結構體中的函數去吧。說到底,這些C標準函數對應什麼樣的硬體操作,還得自己去填&……%#*!

       nios的“虛擬設備”有6種:
        ◆ 字元型裝置
              hardware peripherals that send and/or receive characters serially, such as a UART.
        ◆ 檔案子系統
               provide a mechanism for accessing files stored within physical device(s).
        ◆ DMA裝置
               peripherals that perform bulk data transactions from a data source to a destination.
        ◆ 定時器裝置
               hardware peripherals that count clock ticks and can generate periodic interrupt requests.
        ◆ FLASH裝置
               nonvolatile memory devices that use a special programming protocol to store data.
        ◆ 乙太網路裝置
               provide access to an Ethernet connection for the Altera-provided lightweight IP protocol stack.

       似乎寫得有點亂了,舉個例子清醒清醒。

       以LCD顯示屏為例,按照“字元型裝置”的定義- 串列發送或接收字元的硬體外設,可以確定將LCD顯示屏歸入“字元型裝置”,定義“字元型裝置”的標頭檔為alt_dev.h,定義“LCD顯示屏”的頭 檔案為altera_avalon_lcd_16207.h,兩者對應關係如:

結構體alt_dev_s定義了“字元型裝置”的共性:能被open() close()等一系列C標準函數訪問,所以,表示LCD顯示屏的結構體alt_LCD_16207_dev裡包含“共性”的alt_dev類型的變數 dev,還有其它一些“個性”的屬性base、alarm等,執行個體化dev就實現了C標準庫函數與硬體操作的一一對應,實際上,這個例子中只完成了 write()→alt_lcd_16207_write()的對應,其它函數以null 指標NULL代替。

       這樣,我們就可以在軟體中用write()向LCD顯示屏輸出字元。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.