日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

项目:飞凌单片机boa服务器遇到问题总结

發(fā)布時(shí)間:2024/7/19 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 项目:飞凌单片机boa服务器遇到问题总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.項(xiàng)目描述:

\qquad基于飛凌單片機(jī)OKA40i-C開發(fā)板,使用browser+boa進(jìn)行通信,可以通過網(wǎng)頁(yè)下載單片機(jī)的文件,也可以通過網(wǎng)頁(yè)上傳電腦客戶端的文件到單片機(jī)。

2.開發(fā)環(huán)境:

\qquad單片機(jī)是飛凌公司的OKA40i-C開發(fā)板,使用系統(tǒng)鏡像為sun8iw11p1_linux_OKA40i_C_uart0-1080p.img;
\qquad另外有兩臺(tái)電腦,負(fù)責(zé)對(duì)單片機(jī)進(jìn)行開發(fā),一臺(tái)操作系統(tǒng)是Ubuntu20.04.1;另外一臺(tái)為windows10。Ubuntu電腦的交叉編譯器是arm-linux-gnueabi-gcc-5.3.1。
\qquad單片機(jī)和兩臺(tái)電腦通過交換價(jià)互相連接,可以基于局域網(wǎng)的IP地址,通過ssh,telnet方式進(jìn)行控制,通過sftp,ftp方式進(jìn)行文件傳輸。

3. 問題描述

3.1 把boa移植到Ubuntu電腦上和網(wǎng)頁(yè)的簡(jiǎn)單編寫

83~92講

3.2 把boa移植到開發(fā)板上

嵌入式boa的移植
在嵌入式Linux系統(tǒng)(OK6410)中移植Boa 服務(wù)器

3.3 網(wǎng)頁(yè)把電腦文件上傳到單片機(jī)

CGIC編程

\qquad在這一步遇到問題,首先是網(wǎng)頁(yè)上傳文件不成功,出現(xiàn)下面錯(cuò)誤:

502 Bad Gateway The CGI was not CGI/1.1 compliant

\qquad這個(gè)問題一直沒有解決,然后發(fā)現(xiàn)在Ubuntu電腦經(jīng)過交叉編譯器編譯的程序,通過ftp發(fā)到單片機(jī)中,運(yùn)行會(huì)出現(xiàn)下面錯(cuò)誤:

** segmentation fault**

\qquad參考這篇文章之后,發(fā)現(xiàn)解決方案
segmentation fault,順著這個(gè)思路,發(fā)現(xiàn)前者那個(gè)問題也有了思路,單片機(jī)和開發(fā)電腦之間的文件傳輸,有兩種方式,一個(gè)是ftp,一個(gè)是sftp。
\qquad我發(fā)現(xiàn)經(jīng)過sftp方式,上傳到單片機(jī)的編譯完的程序在單片機(jī)上運(yùn)行都沒問題,然后我改變的發(fā)送方式,將upload.cgi和upload.html通過sftp方式發(fā)送到單片機(jī),然后通過網(wǎng)頁(yè)上傳文件就可以成功了。

4.boa的移植

4.1 boa的編譯

將boa的壓縮包解壓之后,進(jìn)入src文件,這里面放置boa的源碼,在進(jìn)行make之前,需要進(jìn)行修改里面的文件,和安裝一些必須工具比如flex,bison,再進(jìn)行make編譯,編譯之后得到可執(zhí)行文件boa。

4.2 配置boa.conf

boa.conf的放置位置有define.h決定,一般放在/etc/boa下面,在boa.conf中,可以修改端口號(hào),log日志文件的存放位置,HTML文件存放位置,cgi程序文件的存放位置。沒有相應(yīng)的目錄和文件的話,需要進(jìn)行創(chuàng)建。

4.3 移植和啟動(dòng)

將boa可執(zhí)行程序和boa.conf移植到開發(fā)板

5.瀏覽器和單片機(jī)之間的http通信

瀏覽器中輸入ip地址,默認(rèn)端口號(hào)為80,再加上要請(qǐng)求的文件,比如index.html,瀏覽器界面就可以跳轉(zhuǎn)到對(duì)應(yīng)的文件。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd"> <html> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Test Upload</title><meta name="author" content="scorpio"><!-- Date: 2016-07-30 --> </head> <body> <form action="cgi-bin/upload.cgi" method="post" enctype="multipart/form-data" target="_blank"><input type="file" name="file" value="" /><input type="submit" name="submit" value="OK"> </form> </body> </html>

6.cgi編程

cgi是外部拓展應(yīng)用程序和web服務(wù)器交互的標(biāo)準(zhǔn)接口, CGIC是一個(gè)功能比較強(qiáng)大的支持CGI開發(fā)的標(biāo)準(zhǔn)C庫(kù)。

6.1 CGI處理步驟

1、通過瀏覽器將用戶請(qǐng)求送到服務(wù)器
2、服務(wù)器接收用戶請(qǐng)求并交給CGI程序處理
3、CGI程序把處理結(jié)果傳送給服務(wù)器
4、服務(wù)器把結(jié)果送回到瀏覽器

1.取得html頁(yè)面中file元素的值,應(yīng)該是文件在客戶機(jī)上的路徑名 cgiFormFileName("file", name, sizeof(name))2.目前文件存在于系統(tǒng)臨時(shí)文件夾中,通常為/tmp,通過該命令打開臨時(shí)文件。臨時(shí)文件的名字與用戶文件的名字不同,所以不能通過路徑/tmp/userfilename的方式獲得文件 cgiFormFileOpen("file", &file) 3.在當(dāng)前目錄下建立新的文件,第一個(gè)參數(shù)實(shí)際上是路徑名,此處的含義是在cgi程序所在的目錄(當(dāng)前目錄))建立新文件 \ open(fileNameOnServer,O_RDWR|O_CREAT|O_TRUNC|O_APPEND,mode); 4.從系統(tǒng)臨時(shí)文件中讀出文件內(nèi)容,并放到剛創(chuàng)建的目標(biāo)文件中 cgiFormFileRead(file, buffer, BufferLen, &got)

總結(jié)

以上是生活随笔為你收集整理的项目:飞凌单片机boa服务器遇到问题总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。