一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

多用戶安全型串口服務(wù)器的組成與設(shè)計方案

電子設(shè)計 ? 作者:電子設(shè)計 ? 2018-11-06 09:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

物聯(lián)網(wǎng)的出現(xiàn)及迅猛發(fā)展為世界經(jīng)濟帶來了新的增長點,將那些傳統(tǒng)的儀器設(shè)備采用統(tǒng)一的方式接入LAN/Internet 勢在必行。而眾多的設(shè)備采用各種串口方式進行通信,當(dāng)前出現(xiàn)了稱為串口服務(wù)器的工具來將這些設(shè)備接入LAN/Internet,一般都采用微控制器實現(xiàn),其功能比較簡單。同時由于互聯(lián)網(wǎng)在安全性方面存在眾多的問題,有許多儀器設(shè)備的數(shù)據(jù)關(guān)系到企業(yè)乃至國家的信息安全,因此設(shè)計與開發(fā)具備良好安全性的串口服務(wù)器極為重要,本文采用ARM9 微處理器Linux 操作系統(tǒng),設(shè)計開發(fā)了具有多用戶訪問,使用SSL 協(xié)議的安全型串口服務(wù)器。

1 硬件電路組成

所采用的主控微處理器為AT91SAM9261[2],它擴展了 DSP 指令集和Janelle java 加速器,主時鐘頻率達到190MHz,為大量復(fù)雜的運算提供了強大了支持。

同時,其眾多的外部接口包括了從UARTUSB 的廣泛支持。其自身只帶有四個UART 接口,可以直接用來做為四串口服務(wù)器使用。另外,由軟件控制的功率管理器(PMC)可以有選擇地關(guān)閉和開啟處理器核心和各種外設(shè)或降低其工作頻率,能使得系統(tǒng)的功耗保持在最小。

使用 DM9000A 作為以太網(wǎng)控制芯片,其集成10/100M 物理層接口;內(nèi)部帶有16K 字節(jié)SRAM 用作接收發(fā)送的FIFO 緩存;支持8/16bit 兩種主機工作模式;支持TCP/IP 加速減輕CPU 負(fù)擔(dān),提高整機效能。

另外做為系統(tǒng)必需,還包括了電源模塊、32M 的SDRAM、2G 的NAND Flash 以及4M 的Data Flash(用于存放U-boot 和Linux 內(nèi)核)。系統(tǒng)的硬件框圖如圖1所示。

多用戶安全型串口服務(wù)器的組成與設(shè)計方案

圖 1 硬件組成

2 軟件平臺構(gòu)建

系統(tǒng)的軟件平臺基于嵌入式 Linux 操作系統(tǒng),主要的工作包括引導(dǎo)程序的移植,嵌入式Linux 內(nèi)核的編譯,及根文件系統(tǒng)的生成。在做這些工作之前,需要建立一個完整的交叉編譯環(huán)境,包含gcc、glibc 等等,用來在PC 機上產(chǎn)生ARM 處理器能執(zhí)行的二進制代碼。

引導(dǎo)程序采用廣泛使用的U-boot,其功能強大,包含了對TFTP、NFS 以及NAND的支持。同時ATMEL發(fā)布了專門針對其產(chǎn)生的處理器的U-boot 修改版本,對快速的產(chǎn)品開發(fā)起到了很大的幫助。從其專門網(wǎng)站下載U-boot 源代碼,解壓生成uboot 源代碼目錄,在其中運行“make at91sam9261ek_config; make”即可生成uboot.bin 的二進制文件,通過使用ATMEL 的ISP工具將其寫入到DATA FLASH 的8000 位置,復(fù)位AT91SAM9261 之后即能看到“U-boot>”字樣的提示符,表示U-boot 運行成功。

第二步為編譯Linux 的內(nèi)核,同樣有針對AT91SAM926X 型號處理器的專門修改版本,考慮系統(tǒng)的穩(wěn)定性,采用Linux-2.6.24 的內(nèi)核版本。下載之后解壓生成Linux-2.6.24 的目錄,運行“make ARCH=armCROSS_COMPILE=arm-linux-menuconfig”命令,表示使用Linux 的處理器架構(gòu)為ARM,交叉編譯器的前端為“arm-linux-”,同時使用菜單的方式對Linux 進行配置,只需將其中的芯片選為AT91SAM9261 即可。此后即可用make 命令編譯生成二進制映像文件,為了讓U-boot 能向內(nèi)核傳遞一些保正正確啟動的參數(shù),二進制映像文件還需要使用U-boot 的mkImage 工具進行包裹之后才能被U-boot 使用。

下一步,還需要制作根文件系統(tǒng)[3],即以”/”為起點的文件系統(tǒng),在PC 機上制作rootfs 目錄來模擬,在其下生成etc、bin、lib 等Linux 所需的目錄結(jié)構(gòu),使用busybox 工具在bin 目錄中生成基本命令工具集,同時將交叉編譯器所使用的glibc 的庫文件拷貝到lib目錄下,再經(jīng)過對etc 目錄的配置之后,完整的嵌入式Linux 系統(tǒng)即構(gòu)建完成。

最后,為了滿足應(yīng)用軟件的需要,還需要編譯出openSSL、XML 等支持庫,將它們拷貝到根文件系統(tǒng)的/lib 或/usr/lib 目錄下,將來應(yīng)用軟件運行時就會自動連接到這些庫調(diào)用所需要的功能。

3 軟件實現(xiàn)

3.1 總體架構(gòu)

串口服務(wù)器的應(yīng)用軟件采用C 語言進行線程化及模塊化設(shè)計,總體架構(gòu)如圖2 所示。

多用戶安全型串口服務(wù)器的組成與設(shè)計方案

圖 2 軟件框架

在設(shè)計中借用了Unix/Linux 的設(shè)計思想,Unix/Linux 在系統(tǒng)層將所有的設(shè)備及接口都視為文件,采用統(tǒng)一的接口規(guī)范,使得應(yīng)用程序只需使用read、write等操作即可與設(shè)備進行交互,極大地方便了程序的開發(fā)及維護,同時具有極高的可擴展性。在本設(shè)計中,將串行接口以及TCP 通信采用統(tǒng)一的接口框架,可以帶來擴展支持更多接口的好處,比如MODBUS 總線協(xié)議,CAN 總線等等,另外SSL 也就是在這個基礎(chǔ)上的擴展支持。定義結(jié)構(gòu)體如下:

struct Interface{

int type;

int fd; //file descriptor

int init(int num);

int (*read)(int clientfd, BufPtr buf, int size);

int (*write)(int clientfd, BufPtr buf, int size);

int (*accept)(int sockfd);

int (*disconn)(int fd);

}

結(jié)構(gòu)體中使用了Buf 緩沖塊結(jié)構(gòu)體,用來存儲接收或者發(fā)送的數(shù)據(jù)。同時定義了接口的回調(diào)函數(shù)比如讀寫,連接等操作,這些函數(shù)根據(jù)不同的接口就有不同的實現(xiàn)。

接口模塊與處理模塊之間采用隊列的方式進行通信,為了充分利用Linux 系統(tǒng)的特性,采用信號量的方式來模擬出生產(chǎn)者-消費者模型,當(dāng)隊列為空時使得接收線程進入睡眠狀態(tài),降低系統(tǒng)資源消耗。數(shù)據(jù)包處理線程負(fù)責(zé)根據(jù)轉(zhuǎn)發(fā)策略來處理來自串口或者以太網(wǎng)的數(shù)據(jù)、用戶的登錄以及設(shè)備配置操作等等。

3.2 多用戶支持及工作模式

為了使得多個用戶同時在不同地點都能訪問到服務(wù)器,設(shè)計了用戶管理模塊,將用戶分為兩類:一類為管理員用戶,除了對串口的通信操作之外,還可以對串口服務(wù)器進行配置操作(以太網(wǎng)參數(shù),串口參數(shù)等);另一類為普通用戶,它只能與串口進行數(shù)據(jù)的通信。進行這樣的劃分之后,可以避免掉許多普通訪問者對設(shè)備進行篡改,造成不必要的故障。

每個創(chuàng)建的用戶都被保存在user.xml 文件當(dāng)中,采用的格式如下,其中的password 節(jié)點不以明文的方式來存取,而是使用MD5 算法對“用戶名+密碼”字符串生成16 字節(jié)的摘要字串進行保存,這樣可以方式被非法獲取到密碼。

test

16 字節(jié)MD5

normal

用戶對串口的操作應(yīng)是互不影響的。用戶A 對串口1 進行操作的時候,意味得用戶B 此時不能對串口1 進行操作,但可能可以對串口2 進行操作,如果串口2 處在空閑的狀態(tài)下。因此,對串口操作定義兩種工作模式:

(1)響應(yīng)模式,在此模式下,定義用戶對串口(也即串口所接設(shè)備)發(fā)送請求數(shù)據(jù)和串口對用戶的請求回應(yīng)數(shù)據(jù)這一過程稱為一個響應(yīng)過程,響應(yīng)過程過程是互斥的。響應(yīng)模式可以使得多個用戶能更充分地利用串口, 當(dāng)多個用戶進行相同的數(shù)據(jù)請求時,可以合成為一個請求,從而較大地提高訪問效率。

(2)獨占模式,在此模式下,串口為某用戶獨自占有,一直到其明確地釋放了該串口。這一模式的好處是如果需要長時間與串口進行通信,可以避免其它用戶的干擾。

3.3 接口模塊

接口模塊是整個系統(tǒng)中最重要的部分,TCP 數(shù)據(jù)的接收及串口數(shù)據(jù)的接收都依賴于它的實現(xiàn),前文提到了TCP 以及串口采用統(tǒng)一的接口進行抽象,串口服務(wù)器的TCP 連接同時采用了C/S 模式和S/C,也即串口服務(wù)器同時以服務(wù)器的形式供上位機連接,還能以客戶端的方式主動地去連接上位機,這在服務(wù)器地IP 地址為通過DHCP 自動獲取時非常有用,因為此時上位機無從知曉串口服務(wù)器的IP 地址而無法連接。

由于要同時服務(wù)于多個用戶,同時又要隨時地接收來自串口的數(shù)據(jù),也就是說串口服務(wù)器應(yīng)該具有良好的并發(fā)性,以不至于在多個用戶同時訪問時產(chǎn)生瓶頸。采用Select 模型來實現(xiàn)I/O 的操作,該模型首先使用FD_SET 將需要偵聽的客戶fd,TCP 偵聽fd 以及串口fd 加入到偵聽集當(dāng)中,然后使用函數(shù)select()偵聽,當(dāng)任何一個fd 上有數(shù)據(jù)到來時馬上返回,將數(shù)據(jù)接收完成后放入接收數(shù)據(jù)隊列后返回繼續(xù)進行偵聽,流程如圖3 所示。

多用戶安全型串口服務(wù)器的組成與設(shè)計方案

圖 3 select 模型流程

3.4 SSL 的擴展

針對 ARM9 的運算能力,只要求上位機對串口服務(wù)器的數(shù)字證書進行驗證,服務(wù)器證書名為server.pem,由CA 進行簽證。CA 可以是正規(guī)證書簽發(fā)機構(gòu),也可以是自已建立的非正式簽發(fā)機構(gòu)。根據(jù)非對稱密碼學(xué),CA 使用其私鑰簽名的數(shù)據(jù)證書只有其公鑰才能解密,將其公鑰及相關(guān)信息做為根證書,只要上位機保證從安全的途徑得到根證書,因為只需要一次獲取,從而不會出現(xiàn)中間人攻擊的情況。

因為SSL 通信是建立在TCP 協(xié)議基礎(chǔ)之上,可以在原socket 程序代碼之上實現(xiàn)SSL 程序,openSSL 很好地對SSL 進行了封裝,且在1.0 之后的版本中提供了對ARM處理器的支持,使用openSSL 對原有TCP通信代碼進行修改即可實現(xiàn)SSL 安全通信。修改分別針對于struct Interface 中的accept、write、read。對于SSL,它們分別指向SSLaccept、SSLdisconn、SSLwrite、SSLread,在SSLaccept 函數(shù)中,在原有TCP 連接建立之后再進行SSL 協(xié)議的握手過程,在此過程中進行服務(wù)器數(shù)字證書的驗證并交換臨時密鑰,代碼如下:

clientFd=accept(listenerFd,(struct

sockaddr *)(&tmpAddr),(socklen_t *)&len);

bio=BIO_new_socket(clientFd,BIO_NOCLOSE);

ssl=SSL_new(ctx);

SSL_set_bio(cli->ssl,cli->sbio,cli->sbio);

//SSL 握手

if(( ret=SSL_accept(cli->ssl)) <= 0 ) {

sslErr(ssl);

}

在SSLwrite 及SSLread 函數(shù)中可以簡單地將原socket 中的read 及write 函數(shù)替換為openSSL 庫中的SSL_write 和SSL_read 函數(shù)。不過對于SSLread,由于使用了select 并發(fā)模型,只要fd 上有數(shù)據(jù)出現(xiàn)select函數(shù)即馬上返回,而此時可能openSSL 正在進行數(shù)據(jù)解密操作,SSL_write 函數(shù)則返回錯誤的信息。對此必須對返回的錯誤進行處理,一直等到解密完成才能讀取返回:

do {

ret=SSL_read(ssl,buf, size);

switch(SSL_get_error(ssl,ret)){

case SSL_ERROR_NONE:

goto read_done; //真正讀完

case SSL_ERROR_ZERO_RETURN:

ret=SSL_shutdown(ssl);

goto end;

case SSL_ERROR_WANT_READ:

read_blocked=1;

break;

default:

DBG("SSL read problem\n");

}

} while (SSL_pending(ssl)&& !read_blocked);

3.5 SSL 的擴展

在ARM這種相對于PC 處理器運算能力弱很多的處理器上,必須選擇安全性高且速度有快的加密算法,RC4 是最理想的選擇,下表為采用SSL_RC4_MD5 加密方式的傳輸與普通TCP 傳輸?shù)囊唤M速率對比:

表 1 TCP 和SSL 傳輸速率測試(處理器:190MHz,以太網(wǎng):100M)

從表中可以看到隨著傳輸數(shù)據(jù)量的增大,傳輸率逐步趨于穩(wěn)定,可以推測出為最大的數(shù)據(jù)傳輸率,TCP約為5.2MB/S,SSL 約為2.34MB/S。在SSL 下,若以半雙工的方式傳輸,而根據(jù)串口固定的波特率,可以以“波特率*N<最大數(shù)據(jù)傳輸率”的公式求得在此波特率下可支持的串口數(shù),在測試中,以四個串口為例,當(dāng)四個串口波特率都設(shè)為460800bps 時,仍能正常通信。

4 總結(jié)

通過對設(shè)計目標(biāo)的需求分析,結(jié)合ARM9 及Linux軟硬件平臺豐富資源的優(yōu)勢整合,設(shè)計的串口服務(wù)器實現(xiàn)了多用戶多點訪問以及安全通信。為串口設(shè)備接入互聯(lián)網(wǎng)提供了更好的選擇。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5152

    文章

    19675

    瀏覽量

    317605
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2931

    文章

    46251

    瀏覽量

    392610
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11511

    瀏覽量

    213824
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    13

    文章

    9795

    瀏覽量

    87996
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    【教程】NA111串口服務(wù)器可配置網(wǎng)關(guān)使用教程#串口服務(wù)器

    串口服務(wù)器
    電子學(xué)習(xí)
    發(fā)布于 :2023年02月08日 09:53:50

    【教程】NA111串口服務(wù)器存儲網(wǎng)關(guān)模式使用教程#串口服務(wù)器

    串口服務(wù)器
    電子學(xué)習(xí)
    發(fā)布于 :2023年02月08日 10:21:04

    嵌入式串口服務(wù)器設(shè)計方案深度探究

    項目背景及可行性分析 項目名稱、項目的主要內(nèi)容及目前的進展情況 項目名稱:基于MicroBlaze的嵌入式串口服務(wù)器的實現(xiàn) 項目的主要內(nèi)容:本作品將要實現(xiàn)一個串口服務(wù)器,它有2個串口,每個串口
    發(fā)表于 10-16 15:55 ?2次下載
    嵌入式<b class='flag-5'>串口服務(wù)器</b>的<b class='flag-5'>設(shè)計方案</b>深度探究

    moxa串口服務(wù)器通訊設(shè)置參數(shù)

    本文詳細介紹了串口服務(wù)器的定義,其次介紹了MOXA串口服務(wù)器的工作方式,最后詳細介紹了moxa串口服務(wù)器通訊設(shè)置參數(shù)。
    發(fā)表于 02-01 15:00 ?1.4w次閱讀

    串口服務(wù)器調(diào)試方法_口服務(wù)器怎么設(shè)置

    MOXA串口服務(wù)器有多種型號,其中最常用的要數(shù)5130、5232等基本型號。其功能強大性能穩(wěn)定深的用戶喜愛。在此我們就5130這個型號看一看MOXA串口服務(wù)器的基本調(diào)試方法串口服務(wù)器
    發(fā)表于 02-01 17:25 ?2.9w次閱讀
    <b class='flag-5'>串口服務(wù)器</b>調(diào)試方法_<b class='flag-5'>口服務(wù)器</b>怎么設(shè)置

    什么是串口服務(wù)器,串口服務(wù)器的作用是什么

    的RS-232/422/485機器設(shè)備馬上連接網(wǎng)絡(luò),運用經(jīng)過TCP/IP的串口數(shù)據(jù)流分析傳輸?shù)谋3謥聿倏v管理方法的機器設(shè)備硬件配置是致力于串口轉(zhuǎn)以太網(wǎng)接口設(shè)計方案聯(lián)接的公路橋梁。串口設(shè)
    的頭像 發(fā)表于 10-18 07:57 ?2.4w次閱讀

    串口服務(wù)器485轉(zhuǎn)以太網(wǎng)

    串口服務(wù)器485轉(zhuǎn)以太網(wǎng)可以將485等串口設(shè)備連接到網(wǎng)絡(luò)中,讓這些設(shè)備采集的數(shù)據(jù)發(fā)往網(wǎng)絡(luò),建立串口和網(wǎng)絡(luò)的透明傳輸通道,實現(xiàn)設(shè)備聯(lián)網(wǎng)。用戶可以使用組態(tài)軟件或者自己編寫網(wǎng)絡(luò)通信程序和設(shè)備
    發(fā)表于 04-02 09:18 ?4384次閱讀

    串口服務(wù)器是什么 有哪些分類及特點

    串口服務(wù)器相對單串口服務(wù)器來說,具備多個串行口,其要求主CPU的性能及功能的要求更多,這也是很多廠商只有單串口服務(wù)器,而沒有多串口服務(wù)器的原因。接下來我們就來為大家詳細介紹下什么是多
    的頭像 發(fā)表于 02-12 15:45 ?2904次閱讀

    串口服務(wù)器的常見問題及解決方法

    串口服務(wù)器因為其功能的原因,如今在工控領(lǐng)域有著非常廣泛的應(yīng)用,在實際使用串口服務(wù)器的過程中也會遇到一些問題。下面為大家介紹幾個在使用串口服務(wù)器時經(jīng)常會遇到的問題及解決方法。
    發(fā)表于 06-16 16:01 ?3323次閱讀

    串口服務(wù)器的類型及作用

    串口服務(wù)器是通過本地局域網(wǎng)網(wǎng)絡(luò),甚至在互聯(lián)網(wǎng)上訪問串口設(shè)備非常有用的工具。一個串口轉(zhuǎn)以太網(wǎng)服務(wù)器,也可以稱為串口服務(wù)器。
    發(fā)表于 06-16 16:03 ?1776次閱讀

    串口服務(wù)器連接MQTT服務(wù)器方法說明

    串口服務(wù)器連接MQTT服務(wù)器方法參考“串口服務(wù)器用戶手冊”,不再重復(fù)說明。
    發(fā)表于 03-30 09:58 ?5153次閱讀
    <b class='flag-5'>串口服務(wù)器</b>連接MQTT<b class='flag-5'>服務(wù)器</b>方法說明

    兩路串口同時獨立工作——澤耀科技A700雙串口服務(wù)器

    物聯(lián)網(wǎng)技術(shù)在逐漸發(fā)展,很多用戶表示單串口服務(wù)器已經(jīng)無法滿足他們的需求,這時雙串口服務(wù)器的優(yōu)勢便逐漸凸顯出來,它可以幫助設(shè)備更高效的運作。本期為大家介紹的澤耀科技推出的A700-SS(01),便為一款
    的頭像 發(fā)表于 12-16 17:52 ?1086次閱讀
    兩路<b class='flag-5'>串口</b>同時獨立工作——澤耀科技A700雙<b class='flag-5'>串口服務(wù)器</b>

    多功能串口服務(wù)器設(shè)計方案

    設(shè)計方案思路的由來,是因為我們現(xiàn)在的開發(fā)板基本需要通過串口與WIFI模組或以太網(wǎng)模組連接以實現(xiàn)聯(lián)網(wǎng)功能,如果多個開發(fā)板就要配多個模組,所以做一個類似路由的功能,將多種串口協(xié)議集中連接
    的頭像 發(fā)表于 06-29 17:36 ?1514次閱讀
    多功能<b class='flag-5'>串口服務(wù)器</b><b class='flag-5'>設(shè)計方案</b>

    串口服務(wù)器作用與實際應(yīng)用實例詳解

    ,設(shè)備可以像緊靠設(shè)備一樣工作,而無需任何中間設(shè)備。▍串口服務(wù)器的作用遠程監(jiān)控和管理:通過串口服務(wù)器,用戶可以遠程監(jiān)控和管理串口設(shè)備,無需現(xiàn)場操作,節(jié)省人力和時間成本。
    的頭像 發(fā)表于 03-12 14:59 ?1351次閱讀
    <b class='flag-5'>串口服務(wù)器</b>作用與實際應(yīng)用實例詳解

    串口服務(wù)器的定義和功能

    串口服務(wù)器,作為一種重要的網(wǎng)絡(luò)設(shè)備,在現(xiàn)代通信和數(shù)據(jù)傳輸中扮演著至關(guān)重要的角色。以下是對串口服務(wù)器的詳細解析,包括其定義、功能、工作原理、應(yīng)用領(lǐng)域以及未來發(fā)展等方面。
    的頭像 發(fā)表于 08-25 17:21 ?3422次閱讀