一種基于A(yíng)RM的嵌入式網(wǎng)關(guān)系統設計與實(shí)現
s3c2410_mcp2510_read用于將MCP2510從CAN總線(xiàn)上接收到接收緩沖器的數據,通過(guò)SPI總線(xiàn)讀到用戶(hù)區,并返回所讀出的字節數。
s3c2410_mcp2510_ioctl用于控制CAN總線(xiàn)通信的波特率、設置幀ID、設置工作模式、設置設備濾波器等工作。
s3c2410_mcp2510_release用于釋放所占用的內存、中斷等資源。
3.2.2 CAN設備的初始化函數
CAN設備的初始化函數主要負責創(chuàng )建CAN設備的節點(diǎn)設備文件、注冊CAN設備的中斷處理函數、初始化MCP2510等工作。本文引用地址:http://dyxdggzs.com/article/152398.htm
在Linux系統中,初始化函數從s3c2410_mcp2510_init()開(kāi)始。通過(guò)調用register_chrdev向系統注冊字符型設備驅動(dòng)程序;通過(guò)devfs_register()函數創(chuàng )建設備文件系統的CAN設備節點(diǎn)。同時(shí),CAN設備驅動(dòng)程序通過(guò)調用request_irq函數來(lái)申請中斷,向系統注冊CAN設備的CAN中斷處理函數s3c2410_isr_mcp2510()。在實(shí)現了MCP2510的各個(gè)接口函數后,還需要編寫(xiě)MCP2510的模塊加載函數module_init()和模塊卸載函數module_exit(),用于向內核注冊設備及注銷(xiāo)設備。
3.2.3 驅動(dòng)程序的加載與使用
Linux設備驅動(dòng)會(huì )以?xún)群四K的形式出現。Eth-ernet/CAN網(wǎng)關(guān)設備驅動(dòng)程序作為內核的一部分,應在編譯時(shí)把設備驅動(dòng)程序編譯成可加載的模塊。當使用insmod命令加載內核模塊時(shí),模塊的加載函數mod-ule_init(初始化函數名)會(huì )自動(dòng)被內核執行,將初始化函數加入內核全局初始化函數列表中,在內核初始化時(shí)執行驅動(dòng)的初始化函數,從而完成驅動(dòng)的初始化和注冊,之后驅動(dòng)便停止等待,被應用程序調用。當用rm-mod命令卸載某內核模塊時(shí),模塊的卸載函數module_exit(退出處理函數名)也會(huì )自動(dòng)被內核執行,完成與模塊加載函數相反的功能。當驅動(dòng)程序加載到內核中后,就可將CAN設備文件進(jìn)行open,read,write,release等操作。
4 結語(yǔ)
隨著(zhù)工業(yè)控制系統性能的提高,以太網(wǎng)在工業(yè)上的應用也會(huì )越來(lái)越廣泛。在此詳細介紹了一種嵌入式網(wǎng)關(guān)的設計與實(shí)現。作為連接以太網(wǎng)和現場(chǎng)總線(xiàn)的紐帶,實(shí)現以太網(wǎng)與CAN現場(chǎng)總線(xiàn)之間的協(xié)議轉換,為CAN/Ethernet的互聯(lián)提供了一種傳輸速度快、成本低,穩定性和安全性高的解決方案。同時(shí),利用嵌入式ARM處理器,接口資源豐富,設計通用性強,便于擴展其他現場(chǎng)總線(xiàn)與以太網(wǎng)的互聯(lián),具有較好的應用推廣價(jià)值。
評論