新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 基于μClinux的 SoPC應用系統設計

        基于μClinux的 SoPC應用系統設計

        作者: 時間:2012-07-31 來源:網絡 收藏

        完成μ內核及文件系統的裝載后,即可運行μ。鍵入g800000(800000為啟動代碼地址,在 Builder中設置),μ自動完成初始化過程,用戶輸入登錄用戶名nios,密碼μClinux,出現μClinux的提示符#,表示已進入μClinux運行環境。
        2.2 轉換器應用程序的實現
        轉換器主要完成網絡接口和串行接口間的數據傳輸,所傳輸的數據流如圖4所示。μClinux操作系統中提供了網絡驅動程序和串口驅動程序,并提供了多線程的支持。



        轉換器中的串口收發數據和網絡口收發數據是異步進行的,可分別作為一個任務來對待,任務間是并發的,因此可采用多線程程序設計技術來實現多任務間的并發執行,系統主程序流程圖如圖5所示。



        在 此中有4個任務,分別創建4個線程:網絡接收線程、網絡發送線程、串口接收線程和串口發送線程。這4個線程可并發執行.因網絡速度與串口速度存在 著差異,需設置相應的緩沖區來對收發數據進行緩沖。在此應用系統中設置兩個環形緩沖區,如圖4所示,其中nctrv_uartsd_buf用于接收網絡數 據,供存儲從網絡口接收的數據,然后串口從此緩沖區中取出數據發送。另一緩沖區uartrv_netsd_bur用于接收串口數據,然后網絡口取出此緩沖 區中數據發送出去。
        線程間需實現相互通信和同步,共用緩沖區既要互斥執行又要同步執行,其操作遵循生產者和消費者模型。線程間的互斥操作采用互斥鎖(mu-tex)來實現。線程間的同步通過設置兩個指針來實現,一個是讀指針,另一個是寫指針,寫指針指向隊頭,初
        始化為0,讀指針指向隊尾,初始化為BUFSIZE-1。當寫數據時,比較讀寫指針是否相等,相同則寫線程阻塞;不相等,則寫入數據,然后將寫指針加1。當讀數據時,讀指針加1,然后比較讀寫指針是否相等,相等則讀線程阻塞;不相等,則讀出數據。

        網絡發送線程(流程圖如圖6所示)和串口接收線程(流程圖如圖7所示)間共用環形緩沖區uartrv_netsd_buf。串口發送線程和網絡接收線程共用環形緩沖區netrv_uartsd_buf。兩線程間的關系和處理類似網絡發送線程和串口接收線程。




        3 系統測試
        完成轉換器的軟硬件設計后,按如圖8所示,連接系統進行轉換器數據的傳輸測試。在PC機A上運行串口收發程序,而在PC機B上運行以太網收發程序,經測試后數據傳輸無誤。

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

        上一頁 1 2 下一頁

        關鍵詞: Clinux SoPC 應用系統

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 海晏县| 电白县| 德化县| 九龙县| 扶绥县| 平罗县| 佛冈县| 南投市| 繁峙县| 蛟河市| 固阳县| 东至县| 青川县| 上思县| 宁化县| 沭阳县| 临沂市| 桐乡市| 喀什市| 新闻| 汶川县| 安庆市| 娄烦县| 鲁甸县| 松原市| 德钦县| 平度市| 丘北县| 逊克县| 吉首市| 鸡泽县| 毕节市| 元谋县| 静乐县| 曲阜市| 无极县| 临汾市| 揭西县| 武隆县| 揭阳市| 波密县|