版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、嵌入式系統(tǒng)是物聯(lián)網(wǎng)產(chǎn)業(yè)發(fā)展的核心推動(dòng)力 (作者:中嵌協(xié)會(huì) 柏斯維 ) 2009年8月7日*總理視察無錫時(shí),提出在無錫加快建立“感知中國”中心的指示。從此在國內(nèi)不管是各級(jí)地方政府還是企業(yè)都很重視,并掀起了一個(gè)追逐物聯(lián)網(wǎng)的行動(dòng)熱潮。一年過去了,再一次的解讀溫總理的“感知中國”更具有現(xiàn)實(shí)意義和深遠(yuǎn)的歷史意義。嵌入式與物聯(lián)網(wǎng)的關(guān)系 溫總理用經(jīng)典的四個(gè)字“感知中國”全面描述和定義了物聯(lián)網(wǎng)產(chǎn)業(yè)的內(nèi)涵。從字面上來理解,“感”既是信息采集(傳感器);“知”信息處理(運(yùn)算、處理、控制、通信并通過互聯(lián)網(wǎng)進(jìn)行信息傳遞和控制)。這些都是嵌入式系統(tǒng)的特征實(shí)質(zhì)。如果歸納一句話來理解總理“感知中國”的含義,既是通過嵌入式系
2、統(tǒng)智能終端產(chǎn)品網(wǎng)絡(luò)化的過程實(shí)現(xiàn)感知的目的。 簡單講,物聯(lián)網(wǎng)是物與物、人與物之間的信息傳遞與控制。專業(yè)上講就應(yīng)該是智能終端的網(wǎng)絡(luò)化。大家都知道,嵌入式系統(tǒng)無所不在,有嵌入式系統(tǒng)的地方才會(huì)有物聯(lián)網(wǎng)的應(yīng)用。所以,我在所有的場(chǎng)合都在傳播一個(gè)理念,什么是物聯(lián)網(wǎng)呢?物聯(lián)網(wǎng)就是基于互聯(lián)網(wǎng)的嵌入式系統(tǒng)。從另一個(gè)意義也可以說,物聯(lián)網(wǎng)的產(chǎn)生是嵌入式系統(tǒng)高速發(fā)展的必然產(chǎn)物,更多的嵌入式智能終端產(chǎn)品有了聯(lián)網(wǎng)的需求,催生了物聯(lián)網(wǎng)這個(gè)概念的產(chǎn)生。記得是在09年10月12日,英特爾公司宣布成立中國研究院并且專攻嵌入式方向。在全球熱炒物聯(lián)網(wǎng)概念時(shí),英特爾為什么不成立物聯(lián)網(wǎng)研究院?而專注嵌入式的研究呢。這是值得深思研究的課題。
3、那么,在2010英特爾信息技術(shù)峰會(huì)(IDF)的前一天,英特爾CTO賈斯汀和英特爾研究院方之熙院長一起宣布了英特爾中國研究院全新的研究戰(zhàn)略致力于打造世界一流的嵌入式系統(tǒng)研究院。方院長講到:作為英特爾研究院全球5大節(jié)點(diǎn)之一,英特爾中國研究院將承擔(dān)嵌入式系統(tǒng)的前瞻性研究任務(wù),放眼全球嵌入式增長機(jī)遇,融合國人智慧做世界級(jí)的研究,并將國際水準(zhǔn)的研究成果直接貢獻(xiàn)于中國的發(fā)展。 中國手機(jī)、互聯(lián)網(wǎng)、有線電視用戶人數(shù)均居全球第一,也已成為名副其實(shí)的世界第一汽車市場(chǎng)。從智能交通到車載信息設(shè)備,從“物聯(lián)網(wǎng)”到智能家電,嵌入式移動(dòng)互聯(lián)在中國發(fā)展前景廣闊。中國這么大的市場(chǎng)規(guī)模、這么快的增長速度,提供了很多非常好的研究課
4、題。這些研究課題在世界上也都是非常前沿的,為企業(yè)提供了很多的發(fā)展機(jī)會(huì)。 企業(yè)追逐的是利潤而不是概念。從以上例子就足以看出物聯(lián)網(wǎng)與嵌入式系統(tǒng)的關(guān)系、嵌入式系統(tǒng)的重要性、嵌入式系統(tǒng)在物聯(lián)網(wǎng)產(chǎn)業(yè)發(fā)展中的角色地位。嵌入式系統(tǒng)才是拉動(dòng)GDP的增長和產(chǎn)業(yè)升級(jí)的真正動(dòng)力。嵌入式系統(tǒng)才是物聯(lián)網(wǎng)產(chǎn)業(yè)發(fā)展的核心推動(dòng)力。 物聯(lián)網(wǎng)人才需求與培養(yǎng) 企業(yè)發(fā)展科技進(jìn)步離不開人才,特別是在21世紀(jì)科技高速發(fā)展的今天。毋庸置疑,物聯(lián)網(wǎng)的發(fā)展對(duì)人才的需求更是迫在眉睫,人才的短缺將是物聯(lián)網(wǎng)產(chǎn)業(yè)發(fā)展的瓶頸??梢赃@樣說,在物聯(lián)網(wǎng)產(chǎn)業(yè)發(fā)展中,有了人才就掌握了競爭的主動(dòng)權(quán),有了人才就占領(lǐng)了競爭的制高點(diǎn)。目前,在高等院校都紛紛加快物聯(lián)網(wǎng)相關(guān)
5、的學(xué)科建設(shè),社會(huì)培訓(xùn)機(jī)構(gòu)也是人才培養(yǎng)的不可或缺的力量,特別是利用嵌入式系統(tǒng)的培訓(xùn)機(jī)構(gòu),在嵌入式系統(tǒng)教學(xué)的基礎(chǔ)上,增加通信、無線模塊、RFID、網(wǎng)絡(luò)等課程,就可以很快的適應(yīng)物聯(lián)網(wǎng)技術(shù)發(fā)展的需求,這也是最快的人才培養(yǎng)捷徑之一。大力推動(dòng)嵌入式與物聯(lián)網(wǎng)的人才引進(jìn)和培訓(xùn),是為構(gòu)筑物聯(lián)網(wǎng)產(chǎn)業(yè)發(fā)展創(chuàng)造人力資源的基礎(chǔ)條件。 物聯(lián)網(wǎng)、云計(jì)算不是炒作,是嵌入式系統(tǒng)物聯(lián)與互聯(lián)網(wǎng)技術(shù)在高級(jí)階段上交叉融合變革時(shí)代產(chǎn)物。當(dāng)物聯(lián)網(wǎng)熱鬧過后,必然會(huì)進(jìn)入一個(gè)理性時(shí)代。深入了解嵌入式系統(tǒng)物聯(lián)史,有助于厘清物聯(lián)網(wǎng)、云計(jì)算的本質(zhì)。目前,物聯(lián)網(wǎng)、云計(jì)算領(lǐng)域中,缺少嵌入式系統(tǒng)視角。物聯(lián)網(wǎng)系統(tǒng)構(gòu)建、物聯(lián)網(wǎng)系統(tǒng)工程應(yīng)用,是物聯(lián)網(wǎng)時(shí)代嵌入式系
6、統(tǒng)的新機(jī)遇。下面由卓躍教育為您介紹。單片、嵌入、物聯(lián)三位一體的嵌入式系統(tǒng)單片機(jī)與嵌入式系統(tǒng)是不同時(shí)代概念的同一事物,經(jīng)歷了許多不為人知的誕生環(huán)境與發(fā)展歷程。單片機(jī)概念出現(xiàn)在PC機(jī)誕生之前,PC機(jī)誕生后才有了嵌入式系統(tǒng)概念。無論是單片機(jī)還是嵌入式系統(tǒng),它們都呈現(xiàn)出單片、嵌入、物聯(lián)的三位一體的特征?!皢纹睓C(jī)強(qiáng)調(diào)的是形態(tài),“嵌入式”系統(tǒng)強(qiáng)調(diào)的是應(yīng)用形式,“物聯(lián)”則是它們的本質(zhì)。PC機(jī)出現(xiàn)后,計(jì)算機(jī)走出機(jī)房,成為大眾工具。計(jì)算領(lǐng)域、工業(yè)控制領(lǐng)域都寄希望于計(jì)算機(jī),由此誕生了通用計(jì)算機(jī)系統(tǒng)與嵌入式計(jì)算機(jī)系統(tǒng)兩大概念。嵌入式計(jì)算機(jī)系統(tǒng)企圖沿襲PC機(jī)的模式,走單板機(jī)、工控機(jī)、單片微型計(jì)算機(jī)(6801系列)的
7、道路,卻進(jìn)入死胡同。在計(jì)算機(jī)界,“嵌入式計(jì)算機(jī)系統(tǒng)”死亡了,“嵌入式系統(tǒng)”卻始終存在,以至于20多年后,單片機(jī)有了“嵌入式系統(tǒng)”的稱呼與視角。1971年,Intel公司推出了世界上第一個(gè)微處理器,即4位微處理器4004。隨后又推出了8位的8008。1974年,8008發(fā)展成8080,成為第二代微處理器,其目的是代替子邏輯電路器件,應(yīng)用于各種電路系統(tǒng)和設(shè)備中,由此開始了嵌入式處理器的嘗試。隨后,眾多的單片機(jī)(微控制器)應(yīng)運(yùn)而生,如1974年Mostek公司與仙童公司的3870系列單片機(jī)、1976年Intel公司的8048單片機(jī)、1977年GI公司的PIC1650系列單片機(jī)、1978年Rockwe
8、ll公司的6500系列單片機(jī),以及1980年Intel公司推出的MCS51系列單片機(jī),這些單片機(jī)本質(zhì)上都是嵌入式處理器基礎(chǔ)上的微控制器。1981年8月12日,IBM公司在Intel8088微處理器基礎(chǔ)上,推出了全球第一臺(tái)個(gè)人計(jì)算機(jī),即IBMPC。實(shí)際上,在PC機(jī)誕生前,單片機(jī)也經(jīng)為嵌入式應(yīng)用尋找到了最佳的“微控制器”應(yīng)用模式。當(dāng)時(shí)由于強(qiáng)調(diào)的自己獨(dú)立的單片形態(tài),稱之為單片機(jī),即實(shí)現(xiàn)單片形態(tài)嵌入式應(yīng)用的微控制器,控制的是物理對(duì)象。因此,“單片”、“嵌入”、“物聯(lián)”是單片機(jī)或嵌入式系統(tǒng)三位一體、與生俱來的本質(zhì)特性M0內(nèi)核PLC11C14的中斷和其他arm產(chǎn)品的中斷不一樣,PLC11C14芯片手冊(cè)上說
9、有32個(gè)中斷0-31,其中27號(hào)中斷保留,0-11共十二個(gè)是靜態(tài)的中斷向量,有外部引腳P0端口的,P0_0到P0_11,一一對(duì)應(yīng),12號(hào)中斷由P1_0對(duì)應(yīng)。PLC11C14一共四個(gè)端口,P0到P3,其中P0到P2每個(gè)端口十二個(gè)引腳,P3口四個(gè)引腳。內(nèi)部中斷有四個(gè)定時(shí)器中斷,看門狗中斷,串口,SPI,等等。這些也大同小異,但是在最后的有一個(gè)中斷狀態(tài)的中斷源28 PIO_3 GPIO interrupt status of port 329 PIO_2 GPIO interrupt status of port 230 PIO_1 GPIO interrupt status of port 131
10、 PIO_0 GPIO interrupt status of port 0經(jīng)過仔細(xì)研究BSP包內(nèi)的軟件源碼,發(fā)現(xiàn)上訴四個(gè)中斷可以監(jiān)控四個(gè)端口,當(dāng)這些端口中有引腳電位變化時(shí),出發(fā)中斷,進(jìn)入中斷服務(wù)函數(shù),PIOINT0_IRQHandler(void);在中斷中判斷是哪個(gè)引腳發(fā)生了中斷if(GPIOIntStatus(PORT2, 8)/對(duì)應(yīng)PORT2_8端口的中斷事件,這樣一來所有外部的GPIO,都可以作為外部中斷使用,大大提高了資源的利用率,我們可以在下半部機(jī)制完成中斷處理函數(shù),在中斷中只置位標(biāo)志位,在main()函數(shù)中輪詢標(biāo)志位是否發(fā)生變化,發(fā)生變化后跳轉(zhuǎn)到對(duì)應(yīng)的下半部處理函數(shù)中,這樣中斷
11、觸發(fā)后可以很快完成處理,不會(huì)在中斷中浪費(fèi)過多資源。同時(shí)我們可以設(shè)置觸發(fā)中斷的條件,BSP包中提供了一個(gè)函數(shù)GPIOSetInterrupt(PORT2, 8, 1,0, 0 );GPIOIntEnable(PORT2,8);對(duì)應(yīng)參數(shù),第一個(gè)端口號(hào);第二個(gè)參數(shù)管腳號(hào);第三個(gè)參數(shù)電平觸發(fā)還是跳變沿觸發(fā)(0為跳變沿觸發(fā),1為電平觸發(fā));第四個(gè)參數(shù)當(dāng)?shù)谌齾?shù)設(shè)置為跳變沿出發(fā)時(shí),0位單邊沿觸發(fā),1為雙邊沿觸發(fā);當(dāng)?shù)谌齾?shù)設(shè)置為點(diǎn)評(píng)觸發(fā)是,0代表低電平,1代表高電平。第五個(gè)參數(shù)設(shè)置上升沿還是下降沿觸發(fā),對(duì)單邊沿觸發(fā)有效。上面設(shè)置PORT2_8引腳,低電平觸發(fā)方式。1、Colink 固件升級(jí)Colink板子
12、鏈接2、安裝Colink驅(qū)動(dòng)ColinkExUsbDriver-1.2.0,然后重啟PC3、Colink與keil鏈接調(diào)試插件安裝CoMDKPlugin-1.4.2win7 64 位ColinkExUsbDriver-1.2.0 安裝方法you need to downloadModified the inf file from:/tools/patch/colinkex.inf,then do the following operation:1.Open theInstallation folder: replace the inf file with
13、 the new one.2.Delete the file:dpinst.xml.3. run dpinst_amd64.exe.PS: Only Windows 64bit OS need to dothe replacement.ForNepi: Please do the same operation.If the driveris unable to be installed on vista 64bit, connect us.We will release a new driver in a few days.早上安裝keil的一點(diǎn)小插曲,我的是vin7 64位沒有對(duì)應(yīng)的驅(qū)動(dòng),后
14、來在網(wǎng)上查到的解決方法; 好了下面開始分析程序,在keil下建立工程就會(huì)生成對(duì)應(yīng)的引導(dǎo)文件,也就是匯編寫的,怎么引導(dǎo)c代碼,這里掠過。開始第一個(gè)main();int main(void) SystemInit(); GPIOInit(); CLKOUT_Setup(CLKOUTCLK_SRC_MAIN_CLK); /*這個(gè)主要是要設(shè)置CLKOUT,WDT CLOCK,SPI,UART,等輸出時(shí)鐘*/ while(1) 好了啃掉第一個(gè)函數(shù)SystemInit(),這里涉及到各種寄存器都要親自動(dòng)手去看芯片手冊(cè),void SystemInit (void) uint32_t i; LPC_SYSCO
15、N-SYSMEMREMAP = 0x2;/*這個(gè)函數(shù)是內(nèi)存映射函數(shù),0x2,是將flash映射到0x0地址,我看了一下手冊(cè),發(fā)現(xiàn)flash就在0x0地址,所以只要程序下載到flash中就可以運(yùn)行,(注意,程序默認(rèn)從0x0地址開始執(zhí)行的)*/ LPC_SYSCON-SYSOSCCTRL = 0x00;/*系統(tǒng)晶振選擇,0x00 是默認(rèn)值,頻率范圍是1-20MHz*/ LPC_SYSCON-PDRUNCFG &= (0x15);/*這個(gè)用來設(shè)置power-down 的,不知道怎么翻譯好了,大家應(yīng)該都懂得,這種表示是將第六位清零,其他位保持不變第六位是SYSOSC_PD 系統(tǒng)晶振*/ for ( i
16、 = 0; i SYSAHBCLKCTRL |= (1SYSPLLCLKSEL = MAIN_CLKSRCSEL_Val; /* Select system OSC */ LPC_SYSCON-SYSPLLCLKUEN = 0x01; /* Update clock source */ LPC_SYSCON-SYSPLLCLKUEN = 0x00; /* toggle Update register once */ LPC_SYSCON-SYSPLLCLKUEN = 0x01; while ( !(LPC_SYSCON-SYSPLLCLKUEN & 0x01) ); /* Wait until
17、 updated */*這一部分是選擇時(shí)鐘源的,將SYS-PLL時(shí)鐘源設(shè)置為 System 晶振,并更新時(shí)鐘源*/ regVal = LPC_SYSCON-SYSPLLCTRL; regVal &= 0x1FF; LPC_SYSCON-SYSPLLCTRL = (regVal | (MAIN_PLL_P_ValPDRUNCFG &= (0x1SYSPLLSTAT & 0x01) ); LPC_SYSCON-MAINCLKSEL = 0x03; LPC_SYSCON-MAINCLKUEN = 0x01; LPC_SYSCON-MAINCLKUEN = 0x00; LPC_SYSCON-MAINC
18、LKUEN = 0x01; while ( !(LPC_SYSCON-MAINCLKUEN & 0x01) ); /*這一部分是選擇時(shí)鐘源的,將MAINCLK 時(shí)鐘源設(shè)置為 PLL clock,并更新時(shí)鐘源*/ LPC_SYSCON-SYSAHBCLKDIV = SYS_AHB_DIV_Val; SystemFrequency = ClockSource * (MAIN_PLL_M_Val+1); SystemAHBFrequency = (uint32_t)(SystemFrequency/SYS_AHB_DIV_Val); return;項(xiàng)目大體框架:假如你要管理一個(gè)大的倉庫,其中要防止的
19、重要的物品,你要實(shí)時(shí)的監(jiān)控倉庫的環(huán)境,包括溫度,濕度,光照,和進(jìn)出貨物的數(shù)量以及進(jìn)出人員。怎么樣像不像一個(gè)倉庫管理員的工作,沒錯(cuò)就是管理員的工作,我們的項(xiàng)目就是要用物聯(lián)網(wǎng)的知識(shí)來搭建一個(gè)系統(tǒng)完成管理員的工作,這個(gè)項(xiàng)目管理比管理員管理范圍更大精度更高,成本更低。好了下面具體說一說項(xiàng)目模塊。模塊一:感知模塊,實(shí)時(shí)監(jiān)測(cè)倉庫環(huán)境,主要有溫度傳感器,濕度傳感器,三軸傳感器。模塊二:服務(wù)模塊,boa服務(wù)器,在a8上創(chuàng)建服務(wù)器,處理由M0上傳來的信息。模塊三:在a8上移植linux kernel,用于線程調(diào)度,攝像頭驅(qū)動(dòng)(I2C控制)模塊四:網(wǎng)頁編寫,可以登錄物聯(lián)網(wǎng)系統(tǒng),實(shí)時(shí)查看環(huán)境信息下面是boa服務(wù)器移
20、植過程嵌入式Linux中的Web服務(wù)器應(yīng)用(一)BOA簡介Boa是一個(gè)非常小巧的Web服務(wù)器,其可執(zhí)行代碼只有60K左右。它是一個(gè)單任務(wù)的Web服務(wù)器,只能依次完成用戶的請(qǐng)求,而不會(huì)fork出新的進(jìn)程處理并發(fā)連接請(qǐng)求。但boa支持cgi,能夠?yàn)閏gi程序fork出一個(gè)進(jìn)程來執(zhí)行。Boa的設(shè)計(jì)目標(biāo)是速度和安全,在其站點(diǎn)公布的性能測(cè)試中,boa的性能要好于apache服務(wù)器。:w隨著網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,在嵌入式設(shè)備的管理和交互中,基于Web方式的應(yīng)用成為目前的主流,用戶可以直接通過遠(yuǎn)程登錄的方式對(duì)設(shè)備進(jìn)行管理和維護(hù),大大方便了使用性。下面就為大家講解一下boa服務(wù)器在嵌入式Linux系統(tǒng)中的移植過
21、程。(二)BOA服務(wù)器移植工具鏈:gccversion4.5.1平臺(tái): 處理器:s5pc100內(nèi)核:linux-2.6.351.解壓源碼tarxvfboa-0.94.13.tar.tarcdboa-0.94.132.進(jìn)入src/./configure生成Makefile修改Makefile修改CCgcc為CCarm-none-linux-gnueabi-gcc修改CPPgcc-E為CPParm-none-linux-gnueabi-gcc-E3.make編譯1)編譯一個(gè)linux下的c系統(tǒng),包含詞法和語法分析模塊,Linux上用bison和flex。yacc是一個(gè)文法分析器的生成器,bison
22、即是yacc的GNU版本.Lex和YACC是用于構(gòu)造詞法分析機(jī)和語法解釋器的工具,利用Lex和YACC你可以輕松的構(gòu)造一個(gè)語法解釋器。sudoapt-getinstallbisonflex2)修改src/log.c注釋掉if(dup2(error_log,STDERR_FILENO)=-1)DIE(unabletodup2theerrorlog);為:/*if(dup2(error_log,STDERR_FILENO)=-1)DIE(unabletodup2theerrorlog);*/3)修改src/boa.c注釋掉下面內(nèi)容:if(passwdbuf=NULL)DIE(”getpwuid”)
23、;if(initgroups(passwdbuf-pw_name,passwdbuf-pw_gid)=-1)DIE(”initgroups”);為#if0if(passwdbuf=NULL)DIE(”getpwuid”);if(initgroups(passwdbuf-pw_name,passwdbuf-pw_gid)=-1)DIE(”initgroups”);#endif4)修改src/boa.cif(setuid(0)!=-1)DIE(”ickyLinuxkernelbug!”);為#if0if(setuid(0)!=-1)DIE(”ickyLinuxkernelbug!”);#endif
24、5)執(zhí)行make出現(xiàn)錯(cuò)誤:arm-none-linux-gnueabi-gcc-g-O2-pipe-Wall-I.-c-outil.osrc/util.csrc/util.c:100:1:error:pastingtand-doesnotgiveavalidpreprocessingtokenmake:*util.oError1#去掉其中(./src/compat.h)120行的”#”。然后給boa瘦身arm-none-linux-gnueabi-stripboa(三)Boa服務(wù)器配置1創(chuàng)建目錄mkdir/source/rootfs/etc/boa將boa源碼目錄下的boa.conf拷貝到/s
25、ource/rootfs/etc/boa目錄下cpboa.conf/source/rootfs/etc/boa2修改配置文件boa.confvim/source/rootfs/etc/boa(1)user的修改修改Usernobody為User0(2)Group的修改修改Groupnogroup為Group0(3)ScriptAlias的修改修改ScriptAlias/cgi-bin/usr/lib/cgi-bin/為ScriptAlias/cgi-bin/www/cgi-bin/(5)DocumentRoot的修改修改DocumentRoot/var/www為DocumentRoot/www
26、(6)ServerName的設(shè)置修改#ServerN.here為ServerN.here否則會(huì)出現(xiàn)錯(cuò)誤“gethostbyname:Nosuchfileordirectory”(7)AccessLog修改修改AccessLog/var/log/boa/access_log為#AccessLog/var/log/boa/access_log(8)以下配置和boa.conf的配置有關(guān),都是在ARM根文件系統(tǒng)rootfs中創(chuàng)建以下步驟在開發(fā)板上進(jìn)行:創(chuàng)建HTML文檔的主目錄/wwwmkdir/www創(chuàng)建CGI腳本所在錄/www/cgi-bi
27、nmkdir/www/cgi-bin當(dāng)不能使用cgi時(shí)將#AddTypeapplication/x-httpd-cgicgi改為AddTypeapplication/x-httpd-cgicgi(四)boa器測(cè)試將boa拷貝到開發(fā)板根文件系統(tǒng)的/etc/boa下#cpsrc/boa/source/rootfs/etc/boa將ubuntu下/etc/mime.types拷貝到開發(fā)板根文件系統(tǒng)的/etc下#cp/etc/mime.types/source/rootfs/etc將你的主頁index.html拷貝到www目錄下運(yùn)行boa,然后在主機(jī)游覽器輸入開發(fā)板網(wǎng)址rootfarsightboa#
28、./boa30/10/2011:19:10:36+0000rootfarsightboa#boa:serverversionBoa/0.94.1330/10/2011:19:10:36+0000boa:serverbuilt10302011at19:10:3630/10/2011:19:10:36+0000boa:startingserverpid=968,port8010附1):boa配置文件參數(shù)說明boa的配置文件是/etc/boa/boa.conf。Port:boa服務(wù)器監(jiān)聽的端口,默認(rèn)的端口是80。如果端口小于1024,則必須是root用 戶啟動(dòng)服務(wù)器。Liste
29、n:綁定的ip地址。不使用這個(gè)參數(shù)時(shí),將綁定所有的地址。User:連接到服務(wù)器的客戶端的身份,可以是用戶名或UID。Group:連接到服務(wù)器的客戶端的組,可以是組名或GID。ServerAdmin:服務(wù)器出故障時(shí)要通知的郵箱地址。ErrorLog:指定錯(cuò)誤日志文件。如果路徑?jīng)]有以“/”開始,則相對(duì)于ServerRoot路徑。沒 有配置時(shí)默認(rèn)的文件是/dev/stderr。若不想記錄日志,指定文件為/dev/null。AccessLog:設(shè)置存取日志文件,與ErrorLog類似。UseLocaltime:設(shè)置使用本地時(shí)間,使用UTC時(shí)注釋這個(gè)參數(shù)。這個(gè)參數(shù)沒有值。VerboseCGILogs:在
30、錯(cuò)誤日志文件中記錄CGI啟動(dòng)和停止時(shí)間,若不記錄,注釋這個(gè)參數(shù)。這個(gè)參數(shù)沒有值。ServerName:指定服務(wù)器的名稱,當(dāng)客戶端使用gethostname+gethostbyname時(shí)返回給客戶端。VirtualHost:虛擬主機(jī)開關(guān)。使用此參數(shù),則會(huì)在DocumentRoot設(shè)定的目錄添加一個(gè)ip地址作為新的DocumentRoot來處理客戶端的請(qǐng)求。如DocumentRoot設(shè)置為/var/www,則http:/localhost/則轉(zhuǎn)換成/var/www//,若注釋此參數(shù),則為/var/www/。DocumentRoot:HTML文件的根目錄(也就是網(wǎng)站的目錄)。Use
31、rDir:指定用戶目錄。DirectoryIndex:指定預(yù)生成目錄信息的文件,注釋此變量將使用DirectoryMaker變量。這個(gè)變量也就是設(shè)置默認(rèn)主頁的文件名。DirectoryMaker:指定用于生成目錄的程序,注釋此變量將不允許列目錄。DirectoryCache:當(dāng)DirectoryIndex文件不存在,而DirecotryMaker又被注釋掉時(shí),將列出這個(gè)參數(shù)指定目錄給客戶端。KeepAliveMax:每個(gè)連接允許的請(qǐng)求數(shù)量。如果將此值設(shè)為0,將不限制請(qǐng)求的數(shù)目。KeepAliveTimeOut:在關(guān)閉持久連接前等待下一個(gè)請(qǐng)求的秒數(shù)。(秒)。MimeTypes:設(shè)置包含mimet
32、ypes信息的文件,一般是/etc/mime.types。DefaultType:默認(rèn)的mimetype類型,一般是text/html。CGIPath:相當(dāng)于給CGI程序使用的$PATH變量。SinglePostLimit:一次POST允許最大的字節(jié)數(shù),默認(rèn)是1MB.AddType:增加MimeType沒有指定的類型,例:AddTypetypeextensionextension.。要使用cgi,必須添加cgi類型:AddTypeapplication/x-httpd-cgicgiRedirect:重定向文件Aliases:指定路徑的別名。ScriptAlias:指定腳本路徑的虛擬路徑。附2)
33、:編譯中的出錯(cuò)處理錯(cuò)誤1:debian:/home/a/boa-0.94.13/src#makeyacc-dboa_grammar.ymake:yacc:Commandnotfoundmake:*y.tab.cError127解決方法:debian:/home/a/boa-0.94.13/src#apt-getinstallbison錯(cuò)誤2:debian:/home/a/boa-0.94.13/src#makelexboa_lexer.lmake:lex:Commandnotfoundmake:*lex.yy.cError127解決方法:debian:/home/a/boa-0.94.13/s
34、rc#apt-getinstallflexmake:Nothingtobedoneforall.說明make沒有檢查到需要編譯的東西,庫或者應(yīng)用程序已經(jīng)編譯好了。make主要檢查的是時(shí)間戳,只要target比依賴的文件時(shí)間靠后它就認(rèn)為不需要編譯.今天寫個(gè)程序,要求有輸入兩個(gè)數(shù)字,想都沒想就用了scanf();本想寫的嚴(yán)謹(jǐn)一些,就加了判斷條件if(scanf(“%d,%d”,&a,&b) != 2)perror(input errorn);exit(1);測(cè)試時(shí),輸入少于兩了數(shù)據(jù),一個(gè)或不插入時(shí)錯(cuò)誤信息被打印出來,但是當(dāng)我輸入的數(shù)字個(gè)數(shù)超過兩個(gè)時(shí),不會(huì)出現(xiàn)打印信息,測(cè)試結(jié)果也正常這樣讓我覺得這個(gè)
35、判斷條件有些雞肋了,于是到網(wǎng)上找一下關(guān)于scanf()原函數(shù)#include #include #include loc_incl.hint scanf(const char *format, .) va_list ap; int retval; va_start(ap, format); retval = _doscan(stdin, format, ap); va_end(ap); return retval;其中,_doscan(stdin,fromat,ap)很復(fù)雜,大致功能 定義一些后面需要用到的變量跳過format格式串中的空格,并且跳過輸入流中的空格輸入流stream與forma
36、t格式串中的空白符(空白符可以是空格(space)、制表符(tab)和新行符(newline))保持一致在format中的字符為%的前提下,stream中的字符也為%,則繼續(xù)format當(dāng)前字符為*,表示讀指定類型的數(shù)據(jù)但不保存指定說明最大域?qū)挕?在百分號(hào)(%)與格式碼之間的整數(shù)用于限制從對(duì)應(yīng)域讀入的最大字符數(shù)于寬度所以我出現(xiàn)的問題很好解釋了,我輸入數(shù)字時(shí)被放在輸入緩沖區(qū)中,scanf對(duì)有需要的數(shù)字進(jìn)行格式化輸入,多余的還在緩沖區(qū)內(nèi),所以不會(huì)報(bào)錯(cuò)。輸入一個(gè)數(shù)字后再輸入任何間隔符,都會(huì)被scanf吃掉,直到輸入第二個(gè)數(shù)字為止,格式化輸入結(jié)束。項(xiàng)目中涉及到溫濕度傳感器,原理圖給出,用DHT11溫濕
37、度一體ICDHT11 數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有枀高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個(gè)電阻式感濕元件和一個(gè) NTC 測(cè)溫元件。單總線說明DHT11 器件采用簡化的單總線通信。單總線即只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換、控制均由單總線完成。設(shè)備(主機(jī)或從機(jī))通過一個(gè)漏枀開路或三態(tài)端口連至該數(shù)據(jù)線,以允許設(shè)備在不發(fā)送數(shù)據(jù)時(shí)能夠釋放總線,而讓其它設(shè)備使用總線;單總線通常要求外接一個(gè)約 5.1k 的上拉電阻,這樣,當(dāng)總線閑置時(shí),其狀態(tài)為高電平。由于它們是主從結(jié)極,只有主機(jī)呼叫從機(jī)時(shí),從機(jī)才能應(yīng)答,因此
38、主機(jī)訪問器件都必須嚴(yán)格遵循單總線序列,如果出現(xiàn)序列混亂,器件將不響應(yīng)主機(jī)。單總線傳送數(shù)據(jù)位定義DATA 用于微處理器與 DHT11 之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次傳送 40 位數(shù)據(jù),高位先出。數(shù)據(jù)格式:8bit 濕度整數(shù)數(shù)據(jù) + 8bit 濕度小數(shù)數(shù)據(jù)+8bit 溫度整數(shù)數(shù)據(jù) + 8bit 溫度小數(shù)數(shù)據(jù)+8bit 校驗(yàn)位。校驗(yàn)位數(shù)據(jù)定義“8bit 濕度整數(shù)數(shù)據(jù) + 8bit 濕度小數(shù)數(shù)據(jù)+8bit 溫度整數(shù)數(shù)據(jù) + 8bit 溫度小數(shù)數(shù)據(jù)” 8bit 校驗(yàn)位等于所得結(jié)果的末 8 位。示例一:接收到的 40 位數(shù)據(jù)為:0011 0101 0000 0000 0001 1000 000
39、0 0000 0100 1101濕度高 8 位 濕度低 8 位 溫度高 8 位 溫度低 8 位 校驗(yàn)位計(jì)算:0011 0101+0000 0000+0001 1000+0000 0000= 0100 1101下面是一些代碼,其中涉及到時(shí)序的地方做出注釋uint32_t Read_Temp_Hum(uint8_t *temp, uint8_t *hum) uint32_t cnt_last; uint8_t hum_10, hum_01, temp_10, temp_01, chksum, chk; uint32_t tc1, tc; uint32_t i; p3_2_counter = 0;
40、/ 用來檢測(cè)中斷是否產(chǎn)生,在中斷中進(jìn)行p3_2_counter+; cnt_last = p3_2_counter; GPIOIntDisable(PORT1, 5);/* 微處理器的 I/O 設(shè)置為輸出同時(shí)輸出低電平,且低電平保持時(shí)間不能小于 18ms,然后微處理器的 I/O 設(shè)置為輸入狀態(tài),由于上拉電阻,微處理器的 I/O 即 DHT11 的 DATA 數(shù)據(jù)線也隨之變高,等待 DHT11 作 出回答信號(hào)*/ GPIOSetDir(PORT1, 5, 1); / Set PIO1_5 to output GPIOSetValue(PORT1, 5, 0); delay_ms(30); /保證
41、時(shí)間大于18ms GPIOSetValue(PORT1, 5, 1); /變成高電平 GPIOSetDir(PORT1, 5, 0); /set PIO1_5 to input GPIOSetInterrupt(PORT1, 5, 0, 0, 0); /設(shè)置下降沿觸發(fā),使能中斷 GPIOIntEnable(PORT1, 5);/* DHT11 的 DATA 引腳檢測(cè)到外部信號(hào)有低電平時(shí),等待外部信號(hào)低電平結(jié)束,延遲后 DHT11 的 DATA 引腳處于輸出狀態(tài),輸出 80 微秒的低電平作為應(yīng)答信號(hào),緊接著輸出 80 微秒的高電平通知外設(shè)準(zhǔn)備接 收數(shù)據(jù),微處理器的 I/O 此時(shí)處于輸入狀態(tài),檢測(cè)
42、到 I/O 有低電平(DHT11 回應(yīng)信號(hào))后,等待 80 微秒的高電平后的數(shù)據(jù)接收*/ for(i=0; i3; i+) /應(yīng)答信號(hào)剛好是三個(gè)跳變沿,全部接受后,進(jìn)行數(shù)據(jù)的接收 GPIOSetInterrupt(PORT1, 5, 0, 0, i&0x01); while(p3_2_counter = cnt_last); /用來檢測(cè)是否有中斷產(chǎn)生,生成中斷后p3_2_counter+; cnt_last = p3_2_counter; /* 由 DHT11 的 DATA 引腳輸出 40 位數(shù)據(jù),微處理器根據(jù) I/O 電平的變化接收 40 位數(shù)據(jù), 位數(shù)據(jù)“0”的格式為: 50 微秒的低電平
43、和 26-28 微秒的高電平。 位數(shù)據(jù)“1”的格式為: 50 微秒的低電平加 70微秒的高電平。*/ for(i=0; iVAL;在中斷中完成GPIOSetInterrupt(PORT1, 5, 0, 0, 0); while(p3_2_counter = cnt_last); cnt_last = p3_2_counter;if(p3_2_tc tc1)tc = tc1 - p3_2_tc; /高電平時(shí)間,低電平都是50us不判斷,判斷高電平是時(shí)間來判斷是0 or 1elsetc = 48000 - (p3_2_tc - tc1);/* DATA 用于微處理器與 DHT11 之間的通訊和同步
44、,采用單總線數(shù)據(jù)格式,一次傳送 40 位數(shù)據(jù),高位先出。 數(shù)據(jù)格式: 8bit 濕度整數(shù)數(shù)據(jù) + 8bit 濕度小數(shù)數(shù)據(jù)+8bit 溫度整數(shù)數(shù)據(jù) + 8bit 溫度小數(shù)數(shù)據(jù)+8bit 校驗(yàn)位。 */if(i 8)hum_10 = 2328)/ 這里的2328是怎么得到的,系統(tǒng)時(shí)鐘設(shè)置為48MHz,(1/48MHZ )*2328 = 48.5us; hum_10 |= 0x01;/ 上面提到位數(shù)據(jù)“0”時(shí)高電平26-28 微秒我們?nèi)?7us,位數(shù)據(jù)“1”時(shí)高電平70, / 判斷高低的臨界值(27 + 70)/2 = 48.5;else if(i 16)hum_01 = 2328) hum_01
45、|= 0x01;else if(i 24)temp_10 = 2328) temp_10 |= 0x01;else if(i 32)temp_01 = 2328) temp_01 |= 0x01;elsechksum = 2328) chksum |= 0x01; /* 當(dāng)一位數(shù)據(jù)傳輸結(jié)束后,總線重新恢復(fù)高電平狀態(tài),下面的一次中斷,就是恢復(fù)高電平狀態(tài)同時(shí)也用來 同步p3_2_counter = cnt_last;*/ GPIOSetInterrupt(PORT1, 5, 0, 0, 1); while(p3_2_counter = cnt_last); GPIOIntDisable(PORT1
46、, 5); *temp = temp_10; *(temp+1) = temp_01; *hum = hum_10; *(hum+1) = hum_01;/* 下面是對(duì)校驗(yàn)位核對(duì),如上面所訴“8bit 濕度整數(shù)數(shù)據(jù) + 8bit 濕度小數(shù)數(shù)據(jù)+8bit 溫度整數(shù)數(shù)據(jù) + 8bit 溫度小數(shù)數(shù)據(jù)” 8bit 校驗(yàn)位等于所*/ chk = hum_10; chk += hum_01; chk += temp_10; chk += temp_01; if(chk = chksum) return 1; else return 0;以上就是單總線下溫濕度傳感器的核心代碼,其中中斷部分不同處理器定義不同
47、,這里就不進(jìn)行闡述了。還有不處理器的系統(tǒng)時(shí)鐘設(shè)置不同,在臨界值得判斷也不一樣。關(guān)于ucos在lpc上移植:主要有四個(gè)文件,傳統(tǒng)的有三個(gè)文件:os_cpu_c.c,os_cpu_a.s,os_cpu.h還有一個(gè)是IRQ.incOs_cpu.h:這個(gè)文件相對(duì)來說還是很簡單的,關(guān)于變量的重新定義,堆棧生長度,臨界區(qū)了,最有特色的是運(yùn)用swi軟中斷。Os_task_sw()肯定是用軟中斷了,在mdk中要聲明一個(gè)沒有定義的函數(shù),就要在這個(gè)函數(shù)前面加上_SWI(),也就是用它聲明,而_swi()就是一個(gè)關(guān)鍵字了。uc在x86上移植也是用的軟中斷int 0x80。在lpc中一旦調(diào)用os_task_sw()就會(huì)觸發(fā)_swi(0x00)這個(gè)軟中斷,那它就會(huì)使arm進(jìn)入管理模式然后執(zhí)行軟中斷函數(shù)SoftwareInterrupt,這個(gè)函數(shù)在os_cpu_a.s中定義
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年稅務(wù)局信息技術(shù)服務(wù)外包合同版B版
- 個(gè)人商鋪?zhàn)赓U協(xié)議范本2024年版A版
- 2、3、4的乘法口訣說課稿(說課稿)-2024-2025學(xué)年二年級(jí)上冊(cè)數(shù)學(xué)人教版
- 2025年度三人房地產(chǎn)合作開發(fā)協(xié)議書范本3篇
- 職業(yè)學(xué)院學(xué)生轉(zhuǎn)專業(yè)申請(qǐng)表
- 2024年礦石勘探技術(shù)服務(wù)合同版B版
- 福建省南平市五夫中學(xué)2020-2021學(xué)年高三地理上學(xué)期期末試題含解析
- 福建省南平市渭田中學(xué)2021-2022學(xué)年高三數(shù)學(xué)理聯(lián)考試卷含解析
- 2024年行政報(bào)告模板制作與市場(chǎng)反饋服務(wù)合同3篇
- 2024年長途汽車運(yùn)輸協(xié)議
- 中小學(xué)十五五發(fā)展規(guī)劃(2025-2030)
- 2024年江蘇客運(yùn)從業(yè)資格證繼續(xù)教育
- 人教版高中地理選擇性必修1第一章地球的運(yùn)動(dòng)單元檢測(cè)含答案
- 電廠員工三級(jí)安全培訓(xùn)(完美版)課件
- 2024年中考復(fù)習(xí)-數(shù)學(xué)(廣州專用)(解析版)
- 精細(xì)陶瓷 斷裂韌性試驗(yàn)方法 單邊V型切口梁法
- 2024年海峽出版發(fā)行集團(tuán)有限責(zé)任公司招聘筆試沖刺題(帶答案解析)
- 第三十六屆全國電力行業(yè)風(fēng)力發(fā)電運(yùn)行檢修職業(yè)技能競賽基礎(chǔ)理論題庫附有答案
- 人教版三年級(jí)上冊(cè)數(shù)學(xué)期末測(cè)試卷a4版可打印
- 2024年紀(jì)檢監(jiān)察綜合業(yè)務(wù)知識(shí)題庫含答案(研優(yōu)卷)
- 科室醫(yī)療質(zhì)量與安全管理小組工作制度
評(píng)論
0/150
提交評(píng)論