新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于WindowsCE下S3C2410的多串口移植技術

        基于WindowsCE下S3C2410的多串口移植技術

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

        然后在注冊表中添加中2、3的注冊項:
        [HKEY_LOCAL_MACHINEDriversBuiltInUART1]
        DeviceArrayIndex=dword:1
        Irq=dword:13 //中斷號
        IoBase=dword:50004000 //2地址
        IoLen=dword:2C
        Prefix=COM //設備文件前綴
        Dll=SER2410.Dll //驅動動態連接庫
        Index=dword:2
        [HKEY_LOCAL_MACHINEDriversBuiltInUART2]
        DeviceArrayIndex=dword:2
        Irq=dword:09 //中斷號
        IoBase=dword:50008000 //串口3地址
        IoLen=dword:2C
        Prefix=COM //設備文件名前綴
        Dll=SER2410.Dll //串口驅動動態連接庫
        Order=dword:0
        Index=dword:3

        其次,修改文件 ser2410_ser.c。

        在此文件中增加串口2、3的初始化函數,并添加兩個函數表:
        SerInitSerial2( ULONG Identifier,PVOID pMddHead,PHWOBJ pHWObj);
        SerInitSerial3( ULONG Identifier,PVOID pMddHead,PHWOBJ pHWObj);
        const HW_VTBL IoVTbl2{ };
        const HW_VTBL IoVTbl3{ };

        在函數GetSerialObject(DWORD DeviceArrayIndex)中添加對串口2、3的處理程序。GetSerialObject函數是PDD層唯一不能改變函數名的函數,它最先被 MDD層的COM-Init函數調用,通過搜索注冊表中DeviceArrayIndex項的值,返回給MDD層一個PHWOBJ結構體。相關代碼如下:
        if ( DeviceArrayIndex == 0 )
        pSerObj = (PHWOBJ)(IoObj);
        else if (DeviceArrayIndex == 1)
        pSerObj = (PHWOBJ)(IoObj2);
        else if(DeviceArrayIndex == 2)
        pSerObj = (PHWOBJ)(IoObj3);
        else
        pSerObj = (PHWOBJ)(IoObj);

        最后,修改文件 ser2410_hw.c 中的函數 SL_Init( PVOID pHead, PUCHAR pRegBase, UINT8 RegStride, EVENT_FUNC EventCallback, PVOID pMddHead, PLOOKUP_TBL ),根據不同的pHead -〉dwIOBase處理不同的端口內容,串口1的dwIOBase為0X50000000,串口2的dwIOBase為0X50004000,串口3的 dwIOBase為0X50008000。

        至此,驅動更改完畢。重新編譯,生成新的SDK,安裝后即可在新平臺下使用串口2和串口3。

        在EVC中通過函數CreateFile(szPort,GENERIC_READ|GENERIC_WRITE, 0,NULL, OPEN_EXISTING,0,NULL)即可打開所需的串口,然后通過COMMTIMEOUTS結構設置通訊超時設置,通過DCB結構設置奇偶校驗、波特率、停止位個數等。成功打開端口后,就可以通過WriteFile發送數據,通過ReadFile接收數據。

        四、結束語

        本文作者的創新點在于充分利用硬件資源,開發OEM層串口驅動程序,由于可以同時使用三個串口,提高了穩定性,精簡硬件設計,具有較好的推廣價值。

        參考文獻:
        [1]江俊輝,ARM的嵌入式系統硬件設計,微計算機信息,2005年,7-2
        [2]田東風,Windows CE應用程序設計,機械工業出版社,2005年
        [3]陳向群等,Windows CE.NET系統分析及試驗教程,機械工業出版社,2003年
        [4]于明等,ARM9嵌入式系統設計與開發教程,電子工業出版社,2006年


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 灵璧县| 徐闻县| 漳浦县| 岢岚县| 梓潼县| 松阳县| 宁波市| 彰武县| 梧州市| 石楼县| 老河口市| 台州市| 新邵县| 安岳县| 荃湾区| 太原市| 句容市| 常宁市| 苏尼特左旗| 新竹市| 拉萨市| 金溪县| 资兴市| 苍山县| 突泉县| 霍山县| 新建县| 呼图壁县| 平凉市| 福泉市| 滁州市| 古浪县| 嘉善县| 曲沃县| 琼海市| 和田县| 陆丰市| 盐池县| 孝义市| 如皋市| 兴海县|