一、簡(jiǎn)要說(shuō)明
本文主要講解A40i Boa應(yīng)用,適用于飛凌 A40i 系列FETA40i-C核心板 Linux3.10 操作系統(tǒng),其他平臺(tái)也可以參考,但是不同平臺(tái)之間會(huì)存在差異,需客戶自行修改以適應(yīng)自己的使用。編寫本文章的主要目的是協(xié)助客戶加速產(chǎn)品的研發(fā)速度,由于小編水平有限,在服務(wù)過(guò)程中所提供的任何資料和信息,都僅供參考,客戶有權(quán)不使用或自行參考修改,本文章參考資料和信息的完整性、可靠性等問(wèn)題請(qǐng)自行驗(yàn)證。 硬件平臺(tái)簡(jiǎn)介: FETA40i-C核心板基于全志工控行業(yè)平臺(tái)級(jí)處理器四核Cortex-A7 A40i設(shè)計(jì),主頻1.2GHz,集成MAli400MP2 GPU,內(nèi)存1GB/2GB ddr3L,存儲(chǔ)8GB eMMC。支持絕大部分當(dāng)前流行的視頻及圖片格式解碼,具有穩(wěn)定可靠的工業(yè)級(jí)產(chǎn)品性能和高性價(jià)比低功耗等優(yōu)勢(shì),搭載Linux和Android操作系統(tǒng),適用于基于視覺(jué)交互的工業(yè)控制產(chǎn)品,目標(biāo)應(yīng)用包含,嵌入式設(shè)備、智能終端、工業(yè)控制、數(shù)據(jù)采集、機(jī)器視覺(jué) 、工業(yè)物聯(lián)網(wǎng) 、移動(dòng)互聯(lián)設(shè)備、數(shù)字標(biāo)牌等。 <
第二章 A40i系列Boa應(yīng)用Boa是一種非常小巧的Web服務(wù)器,其可執(zhí)行代碼只有大約60KB左右。作為一種單任務(wù)Web服務(wù)器,Boa只能依次完成用戶的請(qǐng)求,而不會(huì)fork出新的進(jìn)程來(lái)處理并發(fā)連接請(qǐng)求。但Boa支持CGI,能夠?yàn)镃GI程序fork出一個(gè)進(jìn)程來(lái)執(zhí)行,Boa的設(shè)計(jì)目標(biāo)是速度和安全。 1、Boa配置文件Boa配置文件在/etc/boa/boa.conf 常用配置說(shuō)明: (可根據(jù)項(xiàng)目需要,將以下配置添加到配置文件里) Group nogroup User nobody 這兩個(gè)配置是配置boa的運(yùn)行的屬主和屬組,如果cgi要配置網(wǎng)卡地址,就必須修改成User root CGIPath /bin:/usr/bin:/usr/local/bin:/sbin Cgi程序運(yùn)行的一個(gè)程序搜索路徑;比如運(yùn)行ifconfig eth0 192.169.0.232 就必須配置/sbin路徑;ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ /usr/lib/cgi-bin/ 是cgi程序放到boa中的絕對(duì)地址,/cgi-bin/ 是客戶在網(wǎng)頁(yè)中提交的cgi地址;例如:/usr/lib/cgi-bin/中放置一個(gè)app.cgi;網(wǎng)頁(yè)訪問(wèn)時(shí)候使用/cgi-bin/app.cgi?type=conf&random=0.1111 DocumentRoot /var/www 這個(gè)是虛擬目錄在開(kāi)發(fā)板中的真實(shí)目錄 /var/log/boa/access_log 日志需要的文件夾和名字 VerboseCGILogs 調(diào)試日志開(kāi)關(guān),正式運(yùn)行時(shí)候關(guān)閉。 2、cgi應(yīng)用測(cè)試demoCGI是Web服務(wù)器運(yùn)行時(shí)外部程序的規(guī)范,按CGI編寫的程序可以擴(kuò)展服務(wù)器功能。CGI 應(yīng)用程序能與瀏覽器進(jìn)行交互,還可通過(guò)數(shù)據(jù)庫(kù)API 與數(shù)據(jù)庫(kù)服務(wù)器等外部數(shù)據(jù)源進(jìn)行通信,從數(shù)據(jù)庫(kù)服務(wù)器中獲取數(shù)據(jù)。格式化為HTML文檔后,發(fā)送給瀏覽器,也可以將從瀏覽器獲得的數(shù)據(jù)放到數(shù)據(jù)庫(kù)中。 2.1 配置服務(wù)器先運(yùn)行#boa 之后電腦瀏覽器瀏覽http://192.168.0.232/ 正常瀏覽不報(bào)錯(cuò),說(shuō)明boa運(yùn)行ok。 把boa/boa.conf 放到A40i 開(kāi)發(fā)板/etc/boa/boa.conf 替換原來(lái)的boa.conf 2.2 放置程序cgi-bin內(nèi)部的文件放到 /usr/lib/cgi-bin/app.cgi index.html ,xmlhttpreq.js 放到 /var/www/ajax/文件夾下 修改權(quán)限 /etc/boa/boa.conf chown root:root /var/www/ajax/* chown root:root /usr/lib/cgi-bin/app.cgi chmod o+x /usr/lib/cgi-bin/app.cgi chmod o+r /usr/lib/cgi-bin/app.cgi 2.3 開(kāi)啟boa測(cè)試先運(yùn)行#boa 之后電腦瀏覽器瀏覽http://192.168.0.232/ajax/ 2.4 開(kāi)發(fā)及調(diào)試代碼說(shuō)明當(dāng)打開(kāi)配置文件VerboseCGILogs 后調(diào)試信息就會(huì)生成access_log error_log 程序正式調(diào)試完成后要關(guān)閉程序.程序調(diào)試時(shí)候需要看這兩個(gè)日志文件。 Web網(wǎng)頁(yè)端 說(shuō)明xmlhttpreq.js程序運(yùn)行的腳本 特別說(shuō)明:index.html 和xmlhttpreq.js程序腳本是下載在本地瀏覽器里執(zhí)行的;cgi不是下載到本地瀏覽器執(zhí)行。 Js應(yīng)用程序 異步返回的時(shí)間請(qǐng)求 xhr.open("GET", "/cgi-bin/app.cgi?type=time&random="+Math.random(),true); 是向遠(yuǎn)程的app.cgi 發(fā)送請(qǐng)求,請(qǐng)求獲取時(shí)間后返回web瀏覽器。 當(dāng)遠(yuǎn)程boa返回正確的數(shù)據(jù)后。 var returnValue = xhr.responseText;就是返回的結(jié)果 異步設(shè)置ip請(qǐng)求 //配置ip地址 var data={"name":"ipconfig"}; //ip_address var str_ip=document.getElementById("ip_address").value; data.address=str_ip; xhr.onreadystatechange=callback_configipFunction; //test.cgi后面跟個(gè)cur_time參數(shù)是為了防止Ajax頁(yè)面緩存 xhr.open("POST", "/cgi-bin/app.cgi?type=conf&random="+Math.random(),true); xhr.setRequestHeader("content-type","application/json"); xhr.send(JSON.stringify(data)); 向app.cgi發(fā)送一個(gè)異步j(luò)son對(duì)象 對(duì)象內(nèi)容是{"name":"ipconfig", “address” :”192.168.0.232”} 服務(wù)器回收到這個(gè)字符串,然后解釋這個(gè)字符串進(jìn)行配置ip 配置成功后會(huì)收到{“status”:”ok”} 返回結(jié)果。 Cgi程序說(shuō)明 程序段1 item = cJSON_GetObjectItem(root, "address");// value=cJSON_Print(item); if(value!=0) { sprintf(str_configip,"ifconfig eth0 %s",value); ret=system(str_configip); } 程序段2 if(ret==0) { char* retstr="{\"status\":\"ok\"}"; printf("%s",retstr); }else{ char* retstr="{\"status\":\"error\"}"; printf("%s",retstr); } 程序段1 解釋json配置網(wǎng)絡(luò)。 程序段2返回配置執(zhí)行結(jié)果。 通過(guò)這個(gè)demo,客戶就可以實(shí)現(xiàn)web網(wǎng)頁(yè)配置A40i開(kāi)發(fā)板的各種硬件資源。 原文鏈接:https://www.forlinx.com/article_view_777.html
|