嵌入式LINUX 電子教程全集 嵌入式系統出現于60年代晚期,它最初被用于控制機電電話交換機,如今已被廣泛的應用于工業制造、過程控制、通訊、儀器、儀表、汽車、船舶、航空、航天、軍事裝備、消費類產品等眾多領域。計算機系統核心CPU,每年在全球范圍內的產量大概在二十億顆左右,其中超過80%應用于各類專用性很強的嵌入式系統。一般的說,凡是帶有微處理器的專用軟硬件系統都可以稱為嵌入式系統。 1. 嵌入式Linux系統就是利用Linux其自身的許多特點,把它應用到嵌入式系統里。 Linux做嵌入式的優勢,首先,Linux是開放源代碼的,不存在黑箱技術,遍布全球的眾多Linux愛好者又是Linux開發者的強大技術支持;其次,Linux的內核小、效率高,內核的更新速度很快,linux是可以定制的,其系統內核最小只有約134KB。第三,Linux是免費的OS,在價格上極具競爭力。 Linux還有著嵌入式操作系統所需要的很多特色,突出的就是Linux適應于多種CPU和多種硬件平臺,是一個跨平臺的系統。到目前為止,它可以支持二三十種CPU。而且性能穩定,裁剪性很好,開發和使用都很容易。很多CPU包括家電業芯片,都開始做Linux的平臺移植工作。移植的速度遠遠超過Java的開發環境。也就是說,如果今天用Linux環境開發產品,那么將來換CPU就不會遇到困擾。同時,Linux內核的結構在網絡方面是非常完整的,Linux對網絡中最常用的TCP/IP協議有最完備的支持。提供了包括十兆、百兆、千兆的以太網絡,以及無線網絡,Toker ring(令牌環網)、光纖甚至衛星的支持。所以Linux很適于做信息家電的開發。 還有使用Linux為的是來開發無線連接產品的開發者越來越多。Linux在快速增長的無線連接應用主場中有一個非常重要的優勢,就是有足夠快的開發速度。這是因為LInux有很多工具,并且Linux為眾多程序員所熟悉。因此,我們要在嵌入式系統中使用Linux操作系統。 Linux的大小適合嵌入式操作系統——Linux固有的模塊性,適應性和可配置性,使得這很容易做到。另外,Linux源碼的實用性和成千上萬的程序員熱切其望它用于無數的嵌入式應用軟件中,導致很多嵌入式Linux的出現,包括:Embedix,ETLinux,LEM,Linux Router Project,LOAF,uCLinux,muLinux,ThinLinux,FirePlug,Linux和PizzaBox Linux 相對,Linux的圖形界面還相對較弱,但近年Linux的圖形界面發展也很快,這也就不是問題。 2. 什么是嵌入式Linux 嵌入式linux 是將日益流行的Linux操作系統進行裁剪修改,使之能在嵌入式計算機系統上運行的一種操作系統。嵌入式linux既繼承了Interlnet上無限的開放源代碼資源,又具有嵌入式操作系統的特性。嵌入式Linux的特點是版權費免費;購買費用媒介成本技術支持全世界的自由軟件開發者提供支持網絡特性免費,而且性能優異,軟件移植容易,代碼開放,有許多應用軟件支持,應用產品開發周期短,新產品上市迅速,因為有許多公開的代碼可以參考和移植,實時性能RT_Linux Hardhat Linux 等嵌入式Linux支持,實時性能穩定性好安全性好。 3. 嵌入式Linux有巨大的市場前景和商業機會,出現了大量的專業公司和產品,如Montavista Lineo Emi等,有行業協會如Embedded Linux Consortum等,得到世界著名計算機公司和OEM板級廠商的支持,例如IBM Motorola Intel等。傳統的嵌入式系統廠商也采用了Linux策略,如Lynxworks Windriver QNX等,還有Internet上的大量嵌入式Linux愛好者的支持。嵌入式Linux支持幾乎所有的嵌入式CPU和被移植到幾乎所有的嵌入式OEM板。 4.嵌入式Linux的應用領域非常廣泛,主要的應用領域有信息家電、PDA 、機頂盒、Digital Telephone、Answering Machine、Screen Phone 、數據網絡、Ethernet Switches、Router、Bridge、Hub、Remote access servers、ATM、Frame relay 、遠程通信、醫療電子、交通運輸計算機外設、工業控制、航空航天領域等。 5.如果分別讓10位工程師給出嵌入式系統的定義,將得到10個不同的答案。一般來說,大部分的嵌入式系統執行特定的任務。我們假定最簡單的嵌入式系統包括輸入/輸出功能,以及一些控制邏輯,該系統基于它的配置執行某些類型的功能。按照這個標準,可以認為一個包含實現控制邏輯74123計數器以及一個狀態是一個嵌入式系統。也許可以補充說,該系統必須可通過存儲在固件中的軟件進行編程。這個新的嵌入式系統定義包括輸入/輸出(I/O),以及存儲在系統固件中的控制邏輯。一個帶有鼠標、鍵盤、網絡連接并運行圖形用戶界面(GUI,graphical user interface)多任務操作系統的桌面計算機顯然滿足這些要求,但我們能認為它是一個嵌入式系統嗎? 如果桌面計算機不是一個嵌入式系統,那么手持設備呢?它們有I/O功能,可以運行存儲在固件中的控制邏輯。有人說,桌面計算機和手持設備都有通用計算機設備,可以運行軟件來執行許多不同的任務,與之不同的是,嵌入式系統(例如,洗碗機控制器或飛行導航系統)主要是為特定任務而設計的。這種特定的功能限定使嵌入式設備有功能上的唯一性。如果是這樣,為什么一些嵌入式系統設計成具有附加的功能,如存儲在非易失性存儲器中的程序,并且具有運行可以完成原始設計范圍之外的任務的多任務操作系統的能力呢? 在過去,區分嵌入式系統和通用計算機比現在簡單的多。例如,可以很容易地區分出一個基于8051的T1分幅卡嵌入式系統和一臺Sun UNIX工作站。而現在,從功能方面很難區分一臺Sun工作站和一個包含PowerPC以及32MB內存和16MB閃存的機頂盒。這樣的機頂盒可以運行帶GUI的多任務操作系統,可現場升級,可以同時運行多個程序(如視頻控制器、數字錄像和Java虛擬機),還可以進行安全的因特網在線交易。很難判斷這種機頂盒是否是一個嵌入式系統。顯然,硬件性能的提升和價格的下降使通用計算機和嵌入式系統之間的界限變得很模糊,技術的進步使得我們很難定義什么是嵌入式。
上傳時間: 2014-12-30
上傳用戶:ljt101007
藍牙4.0低功耗 ●鑒于蘋果產品對藍牙4.0的開發政策,藍牙模塊可以不用解密芯片與蘋果產品取得通信, 結合APP軟件,使用藍牙指令和數據實現對藍牙健康醫療設備,藍牙玩具,藍牙家居設備,藍牙工業設備的控制和數據顯示 ● 藍牙模塊:RB105(CSR 1000 藍牙4.0 BLE) ●同時兼容IOS、android、windows 8
上傳時間: 2013-12-11
上傳用戶:xhwst
產品說明: 是 1000M自適應以太網外置電源光纖收發器,可以將 10/100BASE-TX的雙絞線電信號和1000BASE-LX的光信號相互轉換。它將網絡的傳輸距離的極限從銅線的100 米擴展到224/550m(多模光纖)、100公里(單模光纖)??珊啽愕貙崿F HUB、SWITCH、服務器、終端機與遠距離終端機之間的互連。HH-GE-200 系列以太網光纖收發器即插即用,即可單機使用,也可多機集成于同一機箱內使用。
上傳時間: 2013-12-22
上傳用戶:哈哈haha
1. 使晶閘管導通的條件是什么? 答:使晶閘管導通的條件是:晶閘管承受正向陽極電壓,并在門極施加觸發電流(脈沖)。 或:uAK>0且uGK>0。
上傳時間: 2013-11-22
上傳用戶:aig85
MOTION BUILDER Ver.2 是用于監控 KV-H20/H20S/H40S/H20G 的參數設定以及當前動作狀態的軟件。 在 PC 上可以設定復雜的參數,并可以在顯示畫面上監控正在運行的 KV-H20/H20S/H40S/H20G。 關于 MOTION BUILDER Ver.2 概要、功能與使用方法的詳細說明。在安裝之前,請仔細閱讀本手冊,并充分 理解。 注意 1、使用 MOTION BUILDER Ver.2 時,必須在可以使用 KV-H20/H20S/H40S/H20G 上 連接的緊急停止開關的地方使用。 通訊異常時,不接受 MOTION BUILDER Ver.2 的“強制停止”,可能會導致事故指示發生。發生通信異常時,MOTION BUILDER Ver.2 的“強制停止”按鈕將不起作用。 2、JOG 過程中,不能采用斷開 PLC 的連接電纜等手段停止通訊。 KV-H20/H20S/H40S/H20G 單元的 JOG 繼電器會一直保持 ON,機器繼續運轉,并可能導致事故發生。 3、執行監控或者寫入參數(設定)時,不能斷開和 PLC 的連接電纜。 否則會發生通訊錯誤,PC 可能會被重啟。KV-H20/H20S/H40S/H20G 內的數據可 能會損壞。 4、在 RUN 過程中,KV-1000/700 進行 JOG 示教時,必須在 PROG 模式下實施。 如果掃描時間較長,則反映的時間變長,且可能發生無法預料的動作。 5、發送到 KV-1000/700 的單元設定信息必須與當前打開的梯形圖程序的單元設定信 息一致。如果設定信息不同,則顯示錯誤,且不運行。 6、錯誤操作或者靜電等會引起數據變化或者去失,為了保護數據,請定期進行備份。 指示 關于數據的變化或者消失引起的損失,本公司不負任何責任,請諒解。 7、保存數據時,如果需要保留原來保存的數據,則選擇“重命名保存”。 如果“覆蓋保存”則會失去原來保存的數據。 運行環境及系統配置 運行 MOTION BUILDER Ver.2 ,必須具備如下環境。 請確認您使用的系統是否符合如下條件、是否備齊了必需的設備。 對應的 PC 機型 • IBM PC 以及 PC/AT 兼容機(DOS/V) 系統配置 • CPU Pentium 133 MHz 以上 支持 Windows 的打印 (推薦 Pentium 200 MHz 以上) • 內存容量擴展內存 64MB 以上 • 硬盤可用空間 20MB 以上 • CD-ROM 驅動器 • 接口 RS-232C 或者 USB
上傳時間: 2013-10-08
上傳用戶:fujiura
發明人簡介:發明人米有泉是復合型人才,在電子領域很有造就,給國內外眾多企業開發設計了不少創新產品解決了不少技術難題。單極開關是串聯在一根火線與負載一端之間或者串聯在一根零線與負載一端之間的控制開關,比如智能照明控制墻壁開關和機械墻照明控制壁開關就是單極開關。要解決的技術壁壘是串聯供電難題,開發難度相當大。雙極開關是并聯在零火線上的控制開關,比如電視、空調、風扇、裝在燈具里的吸頂遙控燈開關和遙控插座就是雙極遙控開關。并聯供電沒有技術壁壘,開發簡單容易。
上傳時間: 2013-11-06
上傳用戶:問題問題
溫濕度傳感器 sht11 仿真程序 sbit out =P3^0; //加熱口 //sbit input =P1^1;//檢測口 //sbit speek =P2^0;//報警 sbit clo =P3^7;//時鐘 sbit ST =P3^5;//開始 sbit EOC =P3^6;//成功信號 sbit gwei =P3^4;//個位 sbit swei =P3^3;//十位 sbit bwei =P3^2;//百位 sbit qwei =P3^1;//千位 sbit speak =P0^0;//報警音 sbit bjled =P0^1;//報警燈 sbit zcled =P0^2;//正常LED int count; uchar xianzhi;//取轉換結果 uchar seth;//高時間 uchar setl;//低時間 uchar seth_mi;//高時間 uchar setl_mi;//低時間 bit hlbz;//高低標志 bit clbz; bit spbz; ///定時中斷程序/// void t0 (void) interrupt 1 using 0 { TH0=(65536-200)/256;//5ms*200=1000ms=1s TL0=(65536-200)%256; clo=!clo;//產生時鐘 if(count>5000) { if(hlbz) { if(seth_mi==0){seth_mi=seth;hlbz=0;out=0;} else seth_mi--; } if(!hlbz) { if(setl_mi==0){setl_mi=setl;hlbz=1;out=1;} else setl_mi--; } count=0; } else count++; } ///////////// ///////延時/////// delay(int i) { while(--i); } ///////顯示處理/////// xianshi() { int abcd=0; int i; for (i=0;i<5;i++) { abcd=xianzhi; gwei=1; swei=1; bwei=1; qwei=1; P1=dispcode[abcd/1000]; qwei=0; delay(70); qwei=1; abcd=abcd%1000; P1=dispcode[abcd/100]; bwei=0; delay(70); bwei=1; abcd=abcd%100; P1=dispcode[abcd/10]; swei=0; delay(70); swei=1; abcd=abcd%10; P1=dispcode[abcd]; gwei=0; delay(70); gwei=1; } } doing() { if(xianzhi>100) {bjled=0;speak=1;zcled=1;} else {bjled=1;speak=0;zcled=0;} } void main(void) { seth=60;//h60秒 setl=90;//l90秒 seth_mi=60;//h60秒 setl_mi=90;//l90秒 TMOD=0X01;//定時0 16位工作模式 TH0=(65536-200)/256; TL0=(65536-200)%256; TR0=1; //開始計時 ET0=1; //開定時0中斷 EA=1; //開全中斷 while(1) { ST=0; _nop_(); ST=1; _nop_(); ST=0; // EOC=0; xianshi(); while(!EOC) { xianshi(); } xianzhi=P2; xianshi(); doing(); } }
上傳時間: 2013-11-07
上傳用戶:我們的船長
注:1.這篇文章斷斷續續寫了很久,畫圖技術也不精,難免錯漏,大家湊合看.有問題可以留言. 2.論壇排版把我的代碼縮進全弄沒了,大家將代碼粘貼到arduino編譯器,然后按ctrl+T重新格式化代碼格式即可看的舒服. 一、什么是PWM PWM 即Pulse Wavelength Modulation 脈寬調制波,通過調整輸出信號占空比,從而達到改 變輸出平均電壓的目的。相信Arduino 的PWM 大家都不陌生,在Arduino Duemilanove 2009 中,有6 個8 位精度PWM 引腳,分別是3, 5, 6, 9, 10, 11 腳。我們可以使用analogWrite()控 制PWM 腳輸出頻率大概在500Hz 的左右的PWM 調制波。分辨率8 位即2 的8 次方等于 256 級精度。但是有時候我們會覺得6 個PWM 引腳不夠用。比如我們做一個10 路燈調光, 就需要有10 個PWM 腳。Arduino Duemilanove 2009 有13 個數字輸出腳,如果它們都可以 PWM 的話,就能滿足條件了。于是本文介紹用軟件模擬PWM。 二、Arduino 軟件模擬PWM Arduino PWM 調壓原理:PWM 有好幾種方法。而Arduino 因為電源和實現難度限制,一般 使用周期恒定,占空比變化的單極性PWM。 通過調整一個周期里面輸出腳高/低電平的時間比(即是占空比)去獲得給一個用電器不同 的平均功率。 如圖所示,假設PWM 波形周期1ms(即1kHz),分辨率1000 級。那么需要一個信號時間 精度1ms/1000=1us 的信號源,即1MHz。所以說,PWM 的實現難點在于需要使用很高頻的 信號源,才能獲得快速與高精度。下面先由一個簡單的PWM 程序開始: const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { if((bright++) == 255) bright = 0; for(int i = 0; i < 255; i++) { if(i < bright) { digitalWrite(PWMPin, HIGH); delayMicroseconds(30); } else { digitalWrite(PWMPin, LOW); delayMicroseconds(30); } } } 這是一個軟件PWM 控制Arduino D13 引腳的例子。只需要一塊Arduino 即可測試此代碼。 程序解析:由for 循環可以看出,完成一個PWM 周期,共循環255 次。 假設bright=100 時候,在第0~100 次循環中,i 等于1 到99 均小于bright,于是輸出PWMPin 高電平; 然后第100 到255 次循環里面,i 等于100~255 大于bright,于是輸出PWMPin 低電平。無 論輸出高低電平都保持30us。 那么說,如果bright=100 的話,就有100 次循環是高電平,155 次循環是低電平。 如果忽略指令執行時間的話,這次的PWM 波形占空比為100/255,如果調整bright 的值, 就能改變接在D13 的LED 的亮度。 這里設置了每次for 循環之后,將bright 加一,并且當bright 加到255 時歸0。所以,我們 看到的最終效果就是LED 慢慢變亮,到頂之后然后突然暗回去重新變亮。 這是最基本的PWM 方法,也應該是大家想的比較多的想法。 然后介紹一個簡單一點的。思維風格完全不同。不過對于驅動一個LED 來說,效果與上面 的程序一樣。 const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { digitalWrite(PWMPin, HIGH); delayMicroseconds(bright*30); digitalWrite(PWMPin, LOW); delayMicroseconds((255 - bright)*30); if((bright++) == 255) bright = 0; } 可以看出,這段代碼少了一個For 循環。它先輸出一個高電平,然后維持(bright*30)us。然 后輸出一個低電平,維持時間((255-bright)*30)us。這樣兩次高低就能完成一個PWM 周期。 分辨率也是255。 三、多引腳PWM Arduino 本身已有PWM 引腳并且運行起來不占CPU 時間,所以軟件模擬一個引腳的PWM 完全沒有實用意義。我們軟件模擬的價值在于:他能將任意的數字IO 口變成PWM 引腳。 當一片Arduino 要同時控制多個PWM,并且沒有其他重任務的時候,就要用軟件PWM 了。 多引腳PWM 有一種下面的方式: int brights[14] = {0}; //定義14個引腳的初始亮度,可以隨意設置 int StartPWMPin = 0, EndPWMPin = 13; //設置D0~D13為PWM 引腳 int PWMResolution = 255; //設置PWM 占空比分辨率 void setup() { //定義所有IO 端輸出 for(int i = StartPWMPin; i <= EndPWMPin; i++) { pinMode(i, OUTPUT); //隨便定義個初始亮度,便于觀察 brights[ i ] = random(0, 255); } } void loop() { //這for 循環是為14盞燈做漸亮的。每次Arduino loop()循環, //brights 自增一次。直到brights=255時候,將brights 置零重新計數。 for(int i = StartPWMPin; i <= EndPWMPin; i++) { if((brights[i]++) == PWMResolution) brights[i] = 0; } for(int i = 0; i <= PWMResolution; i++) //i 是計數一個PWM 周期 { for(int j = StartPWMPin; j <= EndPWMPin; j++) //每個PWM 周期均遍歷所有引腳 { if(i < brights[j])\ 所以我們要更改PWM 周期的話,我們將精度(代碼里面的變量:PWMResolution)降低就行,比如一般調整LED 亮度的話,我們用64 級精度就行。這樣速度就是2x32x64=4ms。就不會閃了。
上傳時間: 2013-10-08
上傳用戶:dingdingcandy
超聲波傳感器適用于對大幅的平面進行靜止測距。普通的超聲波傳感器測距范圍大概是 2cm~450cm,分辨率3mm(淘寶賣家說的,筆者測試環境沒那么好,個人實測比較穩定的 距離10cm~2m 左右,超過此距離就經常有偶然不準確的情況發生了,當然不排除筆者技術 問題。) 測試對象是淘寶上面最便宜的SRF-04 超聲波傳感器,有四個腳:5v 電源腳(Vcc),觸發控制端(Trig),接收端(Echo),地端(GND) 附:SRF 系列超聲波傳感器參數比較 模塊工作原理: 采用IO 觸發測距,給至少10us 的高電平信號; 模塊自動發送8個40KHz 的方波,自動檢測是否有信號返回; 有信號返回,通過IO 輸出一高電平,高電平持續的時間就是超聲波從發射到返回的時間.測試距離=(高電平時間*聲速(340m/s))/2; 電路連接方法 Arduino 程序例子: constintTrigPin = 2; constintEchoPin = 3; floatcm; voidsetup() { Serial.begin(9600); pinMode(TrigPin, OUTPUT); pinMode(EchoPin, INPUT); } voidloop() { digitalWrite(TrigPin, LOW); //低高低電平發一個短時間脈沖去TrigPin delayMicroseconds(2); digitalWrite(TrigPin, HIGH); delayMicroseconds(10); digitalWrite(TrigPin, LOW); cm = pulseIn(EchoPin, HIGH) / 58.0; //將回波時間換算成cm cm = (int(cm * 100.0)) / 100.0; //保留兩位小數 Serial.print(cm); Serial.print("cm"); Serial.println(); delay(1000); }
上傳時間: 2013-10-18
上傳用戶:星仔
美國Robert McNeel & Assoc.開發的PC上強大的專業3D造型軟件,它可以廣泛地應用于三維動畫制作、工業制造、科學研究以及機械設計等領域。其設計團隊是原ALIAS Design Studio設計程序師,其Beta測試版即推出以來,歷經一年半的測試,是有歷以來態度最嚴謹的網上測試。它能輕易整合3DS MAX 與Softimage的模型功能部分,對要求精細、彈性與復雜的3D NURBS模型,有點石成金的效能。能輸出obj、DXF、IGES、STL、3dm等不同格式,并適用于幾乎所有3D軟件,尤其對增加整個3D工作團隊的模型生產力有明顯效果,故使用3D MAX、AutoCAD、MAYA、Softimage、Houdini、Lightwave等3D設計人員不可不學習使用。 Rhino,又叫犀牛,是一款超強的三維建模工具,大小才幾十兆,硬件要求也很低。不過不要小瞧它,它包含了所有的NURBS建模功能,用它建模感覺非常流暢,所以大家經常用它來建模,然后導出高精度模型給其他三維軟件使用。
標簽: Rhinoceros Rhino 4.0 語言
上傳時間: 2013-10-09
上傳用戶:aix008