freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于armlinux的嵌入式網(wǎng)絡(luò)訂餐系統(tǒng)-資料下載頁(yè)

2024-12-03 19:39本頁(yè)面

【導(dǎo)讀】[注釋3]交叉編譯環(huán)境的建立和bootloader相關(guān)操作.................傳統(tǒng)手段實(shí)現(xiàn)的網(wǎng)絡(luò)訂餐系統(tǒng)復(fù)雜而龐大,用戶使用時(shí)有諸多不便。嵌入式系統(tǒng)與Inter的。結(jié)合為嵌入式設(shè)備的網(wǎng)絡(luò)互連提供了一條有效的途徑。Server功能,提供一些獨(dú)具特色的服務(wù),是一項(xiàng)很有前景的應(yīng)用??蛻艨梢酝ㄟ^(guò)此系統(tǒng)獲得菜單,提交訂單,商戶通過(guò)此系統(tǒng)發(fā)布菜單,接受訂單。統(tǒng)可以使用戶節(jié)省大量花費(fèi)。本設(shè)計(jì)涉及到的技術(shù)有嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的搭建、應(yīng)用程序的移植、網(wǎng)頁(yè)設(shè)計(jì)、CGI程序的開(kāi)發(fā)等。圍為餐飲,客戶通過(guò)訪問(wèn)這個(gè)網(wǎng)站獲得商品信息,并且下訂單,服務(wù)器在接收到新訂單后通知商戶。這是我的一個(gè)大計(jì)劃的一部分,我的完整設(shè)想是構(gòu)建一個(gè)大的平臺(tái)(服務(wù)器),客戶在上面注冊(cè),然后獲得一個(gè)(二級(jí))域名和我的終端,上面有一個(gè)嵌入式web服務(wù)器,給他們留有接口使他們可以給自己量身定制一個(gè)網(wǎng)站。

  

【正文】 單,然后對(duì)菜單做出修改,提交,這需要維護(hù)用戶的登陸狀態(tài)。 解決這個(gè)問(wèn)題通常有兩種方法,一是使用 session。 Session 的功能很強(qiáng)大,它可以完成兩個(gè)基本的任務(wù),一是確定請(qǐng)求連接的用戶是否登錄,二,若是登陸了,那么這個(gè)用戶是誰(shuí),從而確定他擁有的權(quán)限。而本系統(tǒng)中需要認(rèn)證的用戶只有一個(gè),若是判斷其登陸了,則其身份也就確定了,所以使用 session 在功能上和系統(tǒng)資源上都是一 種浪費(fèi),同時(shí)在嵌入式 web 服務(wù)器中利用 cgi 對(duì) session進(jìn)行操作也增加了開(kāi)發(fā)的難度,這不符合嵌入式系統(tǒng)設(shè)計(jì)的原則。還有一種方法就是使用 cookie,它也有一些缺點(diǎn),比如瀏覽器可能禁用了 cookie,或者瀏覽器不(完全)支持 cookie,一些常見(jiàn)的嵌入式瀏覽器存在這樣的問(wèn)題,同時(shí) cookie 也增加了開(kāi)發(fā)難度。 為了解決這個(gè)問(wèn)題,我設(shè)計(jì)了一個(gè)新的解決方案: 該方案利用 log 文件實(shí)現(xiàn)。所有被定義為商戶身份發(fā)送的請(qǐng)求,都先用一個(gè)函數(shù)requestPreProcess(char**)來(lái)處理 ,參數(shù)帶回 validate 和 type。發(fā)送請(qǐng)求的頁(yè)面中的表單有一個(gè)隱藏元素 ”type”,它是隱藏的文本區(qū)域,它標(biāo)識(shí)了發(fā)送請(qǐng)求的頁(yè)面同時(shí)也就確定了操作的內(nèi)容,比如登陸頁(yè)面中 type 為 ”login”,查看訂單為 ”orderview”,查看菜單為 ”listview”, 登出為 ”logout”等等。 當(dāng)商戶登陸時(shí),先對(duì)照提交的密碼和 password 中的是否一致,一致則登陸成功,在 log 中保存登陸信息,返回 0,產(chǎn)生的記錄形式大致如下: i|1826589432|0904242102|t|login 不一致則將返回一個(gè)錯(cuò)誤碼,產(chǎn)生的記錄形式大 致如下: o|ffffffffff|0904242110|f|login 如登陸失敗第二個(gè)字段 validate 被置為 ”ffffffffff”,登陸成功則是服務(wù)器端產(chǎn)生的一個(gè)隨機(jī)數(shù),在后續(xù)發(fā)往瀏覽器的頁(yè)面,每個(gè) form 都有一個(gè)隱藏的 validate 字段,內(nèi)容為這個(gè)隨機(jī)數(shù),商戶提交這個(gè)表單給服務(wù)器時(shí),先判斷商戶是否登陸( status 字段是 ’i’ 還是 ’o’),是 ’i’則對(duì)比提交的 validate 和湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì)) 18 記錄中的 validate 是否一致,記錄本次請(qǐng)求,一致則可以做進(jìn)一步操作,不一致則返回一個(gè)錯(cuò)誤碼。當(dāng)一次請(qǐng)求失敗,產(chǎn)生 的新 記錄 status 和 validate 字段和上一條相同。 requestPreProcess(char**)返回的 錯(cuò)誤碼定義如下: 表 錯(cuò)誤碼定義 錯(cuò)誤碼 意義 1 密碼錯(cuò)誤 2 未登錄 3 驗(yàn)證碼( validate)不一致 文件 IO 當(dāng)多 個(gè)進(jìn)程同時(shí)打開(kāi)一個(gè)文件時(shí),通常會(huì)使用記錄鎖,一般的策略是:以只讀方式打開(kāi)的文 件,加共享讀鎖,以寫(xiě)方式打開(kāi)的文件加獨(dú)占性寫(xiě)鎖。在本系統(tǒng)中也 這樣做,毫無(wú)疑問(wèn)它是安全的 ,系統(tǒng)也可以實(shí)現(xiàn)其功能 ,由于只是做功能演示和驗(yàn)證,我采用了這種方案。 但是 記錄鎖也帶來(lái)了一些缺陷 ,最明顯的一個(gè):當(dāng)一個(gè)進(jìn)程給 order 文件加了記錄鎖(讀或?qū)懀儆衅渌M(jìn)程試圖打開(kāi)文件并加不兼容的鎖時(shí),若設(shè)置非阻塞,則會(huì)直接返回錯(cuò)誤,這是我們不希望的;若設(shè)置阻塞,則多個(gè)進(jìn)程只能輪流讀寫(xiě) order,然而多個(gè)客戶同時(shí)提交訂單是有可能的,這個(gè)時(shí)候系統(tǒng)只不過(guò)是一個(gè)更加熟練地接單員,它依舊不能同時(shí)寫(xiě)下多張訂單。為了解決這個(gè)問(wèn)題我 有一個(gè)初步的設(shè)想:使用 IPC,由一個(gè)獨(dú)立的進(jìn)程負(fù)責(zé)寫(xiě)文件。這將使系統(tǒng)的結(jié)構(gòu)和原理發(fā)生較大的變化,所以沒(méi)有實(shí)施。作為未來(lái)改進(jìn)的一個(gè)選項(xiàng),我們?cè)诖俗龊?jiǎn)單的分析。 先來(lái)看一下原理圖: 圖 改進(jìn)原理圖 當(dāng)一個(gè)文件有可能被多個(gè)進(jìn)程寫(xiě)時(shí),需要寫(xiě)文件的進(jìn)程將寫(xiě)的內(nèi)容寫(xiě)進(jìn) FIFO,多個(gè)進(jìn)程 可以非阻塞地正確的返回。 FIFO 做了一個(gè)緩沖區(qū)的角色,由一個(gè)和服務(wù)器一起啟動(dòng)的進(jìn)程來(lái)負(fù)責(zé)從 FIFO中取出內(nèi)容寫(xiě)進(jìn)文件。 3 實(shí)現(xiàn) Linux 平臺(tái)的建立 開(kāi)發(fā)環(huán)境的建立 1. 宿主機(jī)環(huán)境建立 基于 Linux 的應(yīng)用開(kāi)發(fā)模式一般是 T/H(目標(biāo)機(jī) /宿主機(jī) )模式。因此,基于 Linux 的應(yīng)用開(kāi)發(fā)環(huán)境一般是由目標(biāo)系統(tǒng)硬件開(kāi)發(fā)板和宿主 PC 機(jī)構(gòu)成。硬件開(kāi)發(fā)板用于嵌入式操作系統(tǒng)和目標(biāo) 系統(tǒng)應(yīng)用軟件的運(yùn)行,而操作系統(tǒng)內(nèi)核的編譯、應(yīng)用軟件的開(kāi)發(fā)和調(diào)試則需要借助宿主 PC 機(jī)來(lái)完成。雙方之間一般通過(guò)串口或網(wǎng)卡建立連接關(guān)系。建立宿主機(jī)需要在 PC 機(jī)上安裝 Linux 系統(tǒng),通常通過(guò)兩種方式來(lái)實(shí)現(xiàn):構(gòu)建“雙啟動(dòng)”工作站,在一個(gè) PC 機(jī)上安裝 Windows 和 Linux 操作系統(tǒng),如果當(dāng)前處于 Windows 操作系統(tǒng)環(huán)境,但需要使用 Linux 工具,則只需簡(jiǎn)單地重啟進(jìn)入 Linux 的操作系統(tǒng)就可以了,反之亦然。這種方法看起來(lái)好像是一個(gè)令人滿意的解決方法,但是實(shí)現(xiàn)的時(shí)候還是有專寫(xiě)文件進(jìn)程 FIFO 請(qǐng)求寫(xiě)文件進(jìn)程 請(qǐng)求 寫(xiě)文件進(jìn)程 ..... 湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì)) 19 一定困難,主要是存在硬盤(pán)分區(qū)等細(xì)節(jié)問(wèn)題,而且在兩 個(gè)系統(tǒng)之間頻繁的切換也是一個(gè)令人頭疼的問(wèn)題。另一種方法就是通過(guò) VMware Workstation(虛擬工作站),它允許在一個(gè)操作系統(tǒng)中運(yùn)行多個(gè)不同的操作系統(tǒng)。只需在 Windows 操作系統(tǒng)下安裝 VMware 軟件,然后在 VMware 環(huán)境下建立虛擬機(jī),就可以在該虛擬機(jī)上安裝 Linux 操作系統(tǒng)。使用時(shí)在 VMware 中啟動(dòng)該虛擬機(jī),就像一臺(tái)真實(shí)的物理機(jī)器一樣,可以使用 PC外部硬件資源和網(wǎng)絡(luò)。而對(duì)于 Windows 來(lái)說(shuō)它只是一個(gè)窗口,切換非常方便,而且整個(gè) Linux 操作系統(tǒng)和文件都包含在一個(gè)虛擬機(jī)的文件里,對(duì)實(shí)際的硬盤(pán) 分配沒(méi)有影響。因此本文采用 VMware Workstation 在宿主機(jī)上建立 Linux 環(huán)境。 2. 安裝交叉編譯工具 安裝好宿主機(jī)上的 Linux 環(huán)境,為了能在 Linux 環(huán)境下編譯 Linux 軟件,還需要在 Linux 下安裝交叉編譯工具。在開(kāi)發(fā)板配套的文件中包含了交叉編譯工具,也可以使用 crosstool 來(lái)制作適用于我們平臺(tái)的交叉編譯工具。 crosstool 是由美國(guó)人 Dan Kegel 開(kāi)發(fā)的一套可以自動(dòng)編譯不同匹配版本gcc 和 glibc ,并作測(cè)試的腳本程序??梢詮囊韵碌刂访赓M(fèi)下載:這樣在 Linux 下就可以使用它來(lái)對(duì)開(kāi)發(fā)好的程序進(jìn)行編譯。 3. 內(nèi)核的編譯 從網(wǎng)上可以下載到在系統(tǒng)中使用的 Linux 內(nèi)核源代碼,只要將該代碼在 Linux 環(huán)境下編譯并根據(jù)需要進(jìn)行相應(yīng)的配置即可下載到開(kāi)發(fā)板上運(yùn)行,在內(nèi)核代碼的目錄下運(yùn)行以下命令進(jìn)行編譯和配置: make menuconfig //用于配置內(nèi)核,選擇我們硬件平臺(tái)以及我們需要的驅(qū)動(dòng)程序 make zImage //生 成內(nèi)核鏡像文件 zImage,可以將其燒寫(xiě)到開(kāi)發(fā)板的 Flash 中運(yùn)行。 內(nèi)核加 載 1. Bootloader 介紹 1) Bootloader 的主要任務(wù) ARM 處理器上有 Flash 和 SDRAM 兩種存儲(chǔ)介質(zhì)。 Flash 因?yàn)榈綦姷臅r(shí)候不會(huì)丟失數(shù)據(jù),所以一般都作為 rom 使用。 SDRAM 是可讀寫(xiě)的存儲(chǔ)介質(zhì),而且讀寫(xiě)速度比 Flash 快的多,在系統(tǒng)運(yùn)行的時(shí)候是主要的存儲(chǔ)設(shè)備。但 SDRAM 里的數(shù)據(jù)掉電后丟失,無(wú)法用來(lái)保存數(shù)據(jù)。所以每次啟動(dòng)的時(shí)候都需要 bootloader 將內(nèi)核重新裝載到 SDRAM 里面去。因此系統(tǒng)的 Bootloader 需要完成了兩個(gè)任務(wù): a)存儲(chǔ)器的映射; b)下載內(nèi)核函數(shù)。 2) Bootloader 的工作模式 大多數(shù) Bootloader 都支持兩種不同的操作模式,即所謂“啟動(dòng)加載”模式和“下載”模式。但最終用戶一般只使用“啟動(dòng)加載”模式,用來(lái)啟動(dòng)加載嵌入式操作系統(tǒng)?!皢?dòng)加載”模式是 Bootloader的正常工作模式, Bootloader 從嵌入式系統(tǒng)的 Flash 存儲(chǔ)器上將操作系統(tǒng)加載到系統(tǒng) RAM 中并運(yùn)行。整個(gè)過(guò)程沒(méi)有用戶的介入,從而實(shí)現(xiàn)操作系統(tǒng)的自啟動(dòng)。 而“下載”的模式主要用于在嵌入式系統(tǒng)的開(kāi)發(fā)過(guò)程中,在這種模式下 運(yùn)行在嵌入式目標(biāo)系統(tǒng)上的 Bootloader 將通過(guò)串口連接或網(wǎng)絡(luò)連接等通信手段,從 Linux 服務(wù)器或其他主機(jī)下載內(nèi)核映像文件和根系統(tǒng)文件等。從 Linux 服務(wù)器或其它主機(jī)下載的文件通常首先被保存到的 RAM 存儲(chǔ)器中,然后再由 Bootloader 燒寫(xiě)到 Flash 中。 關(guān)于交叉編譯環(huán)境的建立以及 Bootloader 更詳細(xì)的操作細(xì)節(jié)參見(jiàn)附錄中華清遠(yuǎn)見(jiàn)嵌入式學(xué)院在培訓(xùn)課程中提供的文檔 (附錄注釋 1) 。 Boa 程序的移植 下載 Boa 源碼 下載地址 : 或者 最新發(fā)行版本: 下載 ,注意:從 boa 上下載的是 ,解壓方式一樣 湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì)) 20 解壓: tar xzf 生成 Makefile 文件 直接運(yùn)行 src/configure 文件 修改 Makefile 文件 (1)修改 CC = gcc 為 CC = /usr/local/arm/(2)修改 CPP = gcc E 為 CPP = /usr/local/ 編譯 make /usr/local/arm/ Boa 的配置 Boa 需要在 /etc 目錄下建立一個(gè) boa 目錄,里面放入 Boa 的主要配置文件 。在 Boa 源碼目錄下已有一個(gè)示例 ,可以在其基礎(chǔ)上進(jìn)行修改。 (1)Group nogroup 修改成 Group 0,由于在 /etc/group 文件中沒(méi)有 nogroup 組,所以設(shè)成 0 另外在 /etc/passwd 中有 nobody 用戶,所以 User nobody 不用修改。 (2)ScriptAlias /cgibin/ /usr/lib/cgibin/ 修改成 ScriptAlias /cgibin/ /var//cgibin/ 其它默認(rèn)設(shè)置即可。 還需要?jiǎng)?chuàng)建日志文件所在目錄 /var/log/boa,創(chuàng)建 HTML 文檔的主目錄 /var/,將靜態(tài)網(wǎng)頁(yè)存入該目錄下(可以將主機(jī) /usr/share/doc/HTML/目錄下的 文件和 img 目錄復(fù)制到 /var/目錄下),創(chuàng)建 CGI 腳本所在目錄 /var//cgibin,將 cgi 的腳本存放在該目錄下。另外還要將 文件復(fù)制 /etc 目錄下,通??梢詮?linux 主機(jī)的 /etc 目錄下直接復(fù)制即可。 Boa 的執(zhí)行 成功配置以后,還需要?jiǎng)?chuàng)建日志文件所在目錄 /var/log/boa,創(chuàng)建 HTML 文檔的主目錄 /var/,將靜態(tài)網(wǎng)頁(yè)存入該目錄下(可以將主機(jī) /usr/share/doc/HTML/目錄下的 文件和 img 目錄復(fù)制到 /var/ 目錄下),創(chuàng)建 CGI 所在目錄 /var//cgibin,將 cgi 程序存放在該目錄下。另外還要將 文件復(fù)制 /etc 目錄下,通??梢詮?linux 主機(jī)的 /etc 目錄下直接復(fù)制即可。 實(shí)際運(yùn)行時(shí),可以將 文件、 img 目錄和 文件放到 CF 卡目錄下,建立目錄后,拷貝至相應(yīng)目錄。 制作 !/bin/sh mkdir /var/log mkdir /var/log/boa mkdir /var/ cp /html/ /var// cp rf /images /var// mkdir /var//cgibin/ cp /cgi/* /var//cgibin/ CGI 腳本測(cè)試 編寫(xiě) 程序 include int main(void) { printf(Contenttype: text/html\n\n)。 湖北大學(xué)本科畢業(yè)論文(設(shè)計(jì)) 21 printf(html\n)。 printf(headtitleCGI Output/title/head\n)。 printf(body\n)。 printf(h1Hello,world./h1\n)。 printf(body\n)。 printf(/html\n)。 exit(0)。 } 交叉編譯生成 armlinuxgcc o 瀏覽 將 拷貝至 /var//cgibin/下,瀏覽器輸 入 成功顯示頁(yè)面則移植成功。 4 總結(jié) BOA 服務(wù)器是單進(jìn)程的,每來(lái)一個(gè)請(qǐng)求它會(huì)調(diào)用相應(yīng)的 CGI 來(lái)處理, CGI 會(huì)運(yùn)行一個(gè)新的進(jìn)程,而 BOA 則可以接收新的請(qǐng)求。在實(shí)際使用中多個(gè)請(qǐng)求同時(shí)到達(dá)服務(wù)器的 情況 是有可能發(fā)生的(這同時(shí)也意味著網(wǎng)站有較大的訪問(wèn)量,那么我們的商戶一定生意興隆,他們有錢(qián)來(lái)升級(jí)他們的系統(tǒng)了),發(fā)生這種情況時(shí),瀏覽器會(huì)提示找不到服務(wù)器,無(wú)法顯示網(wǎng)頁(yè),雖然服務(wù)器單進(jìn)程不是產(chǎn)生這種現(xiàn)象的唯一原因,而且 通常刷新網(wǎng)頁(yè)就能解決這個(gè)問(wèn) 題,這是用戶一個(gè)很經(jīng)常的行為 。然而 這個(gè)缺陷總是不好的。要徹底解決這個(gè)問(wèn)題而又不用花大力氣去重新開(kāi)發(fā)一個(gè)多進(jìn)程的服務(wù)器, 我有一個(gè)初步的解決方案: 開(kāi)發(fā)一個(gè)多 進(jìn)程的“緩沖程序”,它每收到
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1