新聞中心
隨著電子技術(shù)的快速發(fā)展,液晶顯示器(LCD)已經(jīng)成為我們生活中使用最廣泛的顯示設(shè)備之一。Linux作為一種廣泛使用的開(kāi)源操作系統(tǒng),也支持LCD顯示器。本文將深入淺出地為讀者解析Linux下LCD顯示原理,幫助讀者更好地了解LCD顯示技術(shù)、掌握Linux下的LCD顯示。

目前創(chuàng)新互聯(lián)已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、寶應(yīng)網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
一、LCD顯示原理
1.1 LCD的結(jié)構(gòu)
可以把LCD看作是基礎(chǔ)的液晶顯示器技術(shù)。在LCD中,液晶分子被放置在由透明電極造成的夾層之間。這些電極可以被激活,在液晶分子的電流下改變液晶的方向,從而改變光的偏振。這使得液晶分子有助于創(chuàng)造一個(gè)具有亮度和顏色變化的圖像。
1.2 LCD的工作原理
LCD顯示器通過(guò)控制后臺(tái)加熱和反向極性之間的電壓差來(lái)控制液晶分子的方向,從而通過(guò)添加和混合顏色來(lái)創(chuàng)造新圖像。電壓和電流通過(guò)二極管和集成電路控制,從而通過(guò)改變各像素的電場(chǎng)來(lái)改變每個(gè)像素的狀態(tài)。
二、Linux下LCD驅(qū)動(dòng)程序
Linux提供了許多LCD驅(qū)動(dòng)程序,使得Linux可以支持大多數(shù)顯示器的驅(qū)動(dòng)。我們可以通過(guò)C程序或shell執(zhí)行命令來(lái)調(diào)用驅(qū)動(dòng)程序并完成對(duì)LCD的控制。
2.1 安裝驅(qū)動(dòng)程序
Linux內(nèi)核支持MCU和DSP掃描控制器芯片,可以在相關(guān)設(shè)備驅(qū)動(dòng)中添加LCD驅(qū)動(dòng)程序。如果所使用的驅(qū)動(dòng)程序沒(méi)有內(nèi)置在內(nèi)核中,那么Linux也支持外部驅(qū)動(dòng)程序的編譯和安裝。在編譯內(nèi)核時(shí),我們可以將LCD驅(qū)動(dòng)程序作為外部?jī)?nèi)核模塊進(jìn)行編譯。
2.2 驅(qū)動(dòng)程序原理
當(dāng)LCD顯示時(shí),我們需要發(fā)送命令和數(shù)據(jù)到LCD。發(fā)送給LCD的數(shù)據(jù)由CPU提供,通過(guò)DMA傳輸?shù)絃CD內(nèi)部的顯存。通過(guò)控制寫(xiě)保護(hù)線、LCD復(fù)位線等信號(hào),LCD控制器芯片可以將這些數(shù)據(jù)完成正確的顯示。在Linux下,可以通過(guò)內(nèi)核驅(qū)動(dòng)提供的IOCTL命令來(lái)控制LCD的行為。
2.3 驅(qū)動(dòng)程序架構(gòu)
驅(qū)動(dòng)程序大致分為兩部分:上半部分用于初始化,下半部分用于數(shù)據(jù)傳輸。在初始化過(guò)程中,LCD驅(qū)動(dòng)程序啟動(dòng)LCD控制器、設(shè)置各種寄存器和寄存器位、設(shè)置DMA傳輸參數(shù)等。在數(shù)據(jù)傳輸過(guò)程中,將要顯示的數(shù)據(jù)通過(guò)操控內(nèi)存映射區(qū)域傳輸?shù)斤@存,并發(fā)送命令與數(shù)據(jù)控制LCD對(duì)應(yīng)的行和列顯示圖像。
三、LCD調(diào)試
在使用Linux下的LCD顯示時(shí),很有可能出現(xiàn)一些問(wèn)題,這些問(wèn)題很可能由不同之處引起的一些簡(jiǎn)單錯(cuò)誤,導(dǎo)致顯示器顯示圖像不正常。此時(shí)我們需要進(jìn)行調(diào)試。
3.1 調(diào)整液晶顯示器的分辨率
如果分辨率設(shè)置不正確,會(huì)導(dǎo)致LCD顯示模糊或沒(méi)有顯示的現(xiàn)象。調(diào)整分辨率的更好方式是在xorg.conf文件中編輯Linux的顯示參數(shù)。
3.2 檢查L(zhǎng)CD屏幕特性
LCD屏幕特性包括顯示器電源穩(wěn)定、顯示屏幕雙向通訊判斷、顯示屏幕順序、入式LVDS信號(hào)等。能夠準(zhǔn)確判斷LCD屏幕的特性,則效果更好,問(wèn)題也會(huì)更容易解決。
四、
Linux支持大多數(shù)液晶顯示屏類(lèi)型,Linux下的LCD驅(qū)動(dòng)程序也經(jīng)過(guò)多年的發(fā)展和完善。掌握Linux下LCD顯示原理,可以幫助我們正確地配置Linux,更好地使用LCD顯示器。同時(shí),如果出現(xiàn)LCD顯示不正常等問(wèn)題,我們也能根據(jù)所學(xué)知識(shí)進(jìn)行調(diào)試,從而更好地排除故障。
相關(guān)問(wèn)題拓展閱讀:
- 學(xué)習(xí)嵌入式,要如何學(xué)好嵌入式
學(xué)習(xí)嵌入式,要如何學(xué)好嵌入式
學(xué)習(xí)嵌入式linux之前必須要做好心理準(zhǔn)備:
之一,要明白學(xué)好嵌入式linux不是一件一蹴而就的事,一定要能堅(jiān)持使用它,特別是在使用初期,由于在linux中,用戶權(quán)限很大,做任何事情都很自由,所以,你往往需要知道你做的每一步在干什么,系統(tǒng)做了些什么,這需要時(shí)間去掌握,(背命令不是一件好的學(xué)習(xí)方法,相信我你一定會(huì)在你背完之前全部忘光),盡量掌握常用命令;
第二,在學(xué)習(xí)初期,你一定會(huì)遇到很多困難,或者說(shuō)各種困難,所以你更好先將悔皮讓你linux中的重要內(nèi)容備份,因?yàn)椋谀銓W(xué)習(xí)碧局的過(guò)程中,很可能將系統(tǒng)搞廢(eg:源混亂等);
第三,如果你想在以后的生涯中在軟件行業(yè)工作的話,學(xué)習(xí)linux是一項(xiàng)基本技能,所以打從你打算學(xué)習(xí)linux那天起,放棄windows吧!因?yàn)樗四芙o你帶來(lái)片刻的娛樂(lè),別無(wú)其他;
第四,如果你只是想應(yīng)付一下操作系統(tǒng)的課程,勸你更好別學(xué),或者說(shuō)不要指望能用的怎么樣,原因我說(shuō)了,這很耗時(shí)間,而且如果你學(xué)不好的話,你在linux中開(kāi)發(fā)的機(jī)會(huì)就很少,或者說(shuō)幾乎沒(méi)有,它的優(yōu)勢(shì)就消失了,然后隨著時(shí)間的流逝,你就會(huì)全部忘記她。要深入學(xué)習(xí),就到華清的星創(chuàng)客高端班,項(xiàng)目實(shí)戰(zhàn)豐富+職場(chǎng)老鳥(niǎo)帶領(lǐng)。
要學(xué)好嵌入式linux需要做些什么:
之一,要多google,因?yàn)槲也豢赡?,也不可以給你解答所有內(nèi)容,我只能告訴你一些關(guān)鍵點(diǎn),甚至我會(huì)故意隱瞞答案,因?yàn)樵趯ふ掖鸢傅倪^(guò)程中,你會(huì)學(xué)到更多的知識(shí),學(xué)習(xí)linux,更要學(xué)習(xí)一種geek的精神,python之禪中也說(shuō)過(guò):以總結(jié)分享為榮,以跪*求其解為恥;
第二,要多動(dòng)手,不要怕什么搞壞了怎么辦,你不搞壞,不去動(dòng)手,就永遠(yuǎn)不會(huì)有收獲,既然你在linux中是自由的,那就發(fā)揮自己的權(quán)利;
第三,學(xué)習(xí)linux,就意味著更快的開(kāi)發(fā)效率,等更多關(guān)于軟件本身或者說(shuō)操作系統(tǒng)本身的理解,(給你裝的系統(tǒng)里為ubuntu12.04,它已經(jīng)封裝的很臃腫了,但是考慮到你沒(méi)有很多時(shí)間投入其中,所以給你裝了它),但是怎么用它提高開(kāi)發(fā)效率,需要你在學(xué)習(xí)握攔的過(guò)程中不斷總結(jié)。
原文鏈接:
網(wǎng)頁(yè)鏈接
嵌入式Linux學(xué)習(xí)路線圖
我是1999年上的大學(xué),物理專(zhuān)業(yè)。在大一時(shí),我們班里普遍彌漫著對(duì)未來(lái)的不安,不知道學(xué)習(xí)了物塌辯理后出去能做什么。你當(dāng)下的經(jīng)歷、當(dāng)下的學(xué)習(xí),在未來(lái)的一天肯定會(huì)影響到你。畢業(yè)后我們也各自找到了自己的職業(yè):出國(guó)深造轉(zhuǎn)行做金融、留校任教做科研、設(shè)計(jì)芯片、寫(xiě)程序、創(chuàng)辦公司等等,這一切都離不開(kāi)在校時(shí)學(xué)到的基礎(chǔ)技能(數(shù)學(xué)、IT、電子電路)、受過(guò)煅煉的自學(xué)能力。
所以,各位正在迷茫的在校生,各位正在嘗試轉(zhuǎn)行的程序員,未來(lái)一定有你的位置,是好是壞取決于你當(dāng)下的努力與積累。
我不能預(yù)言幾年后什么行業(yè)會(huì)熱門(mén),也不能保證你照著本文學(xué)習(xí)可以發(fā)財(cái)。我只是一個(gè)有十幾年經(jīng)驗(yàn)的程序員,給對(duì)編程有興趣的你,提供一些建議。
1.程序員的三大方向
程序員的方向,一般可以分為3類(lèi):專(zhuān)業(yè)領(lǐng)域、業(yè)務(wù)領(lǐng)域、操作系統(tǒng)領(lǐng)域。你了解它們后,按興趣選擇吧。
對(duì)于專(zhuān)業(yè)領(lǐng)域,我提供不了建議。
業(yè)務(wù),也就是應(yīng)用程序,它跟操作系統(tǒng)并不是截然分開(kāi)的:
①開(kāi)發(fā)實(shí)體產(chǎn)品時(shí),應(yīng)用程序?qū)懙煤玫娜?,有時(shí)候需要操作系統(tǒng)的知識(shí),比如調(diào)度優(yōu)先級(jí)的設(shè)置、知道某些函數(shù)可能會(huì)令進(jìn)程休眠。
②寫(xiě)應(yīng)用程序的人進(jìn)階為系統(tǒng)工程師時(shí),他需要從上到下都了解,這時(shí)候就需要有操作系統(tǒng)領(lǐng)域的知識(shí)了,否則,你怎么設(shè)計(jì)整個(gè)系統(tǒng)的方案呢?
③做應(yīng)用程序的人,需要了解行業(yè)的需求,理解業(yè)務(wù)的邏輯。所以,當(dāng)領(lǐng)導(dǎo)的人,多是做應(yīng)用的。一旦鉆入了某個(gè)行業(yè),很難換行業(yè)。
④而操作系統(tǒng)領(lǐng)域,做好了這是通殺各行業(yè):他只負(fù)責(zé)底層系統(tǒng),在上面開(kāi)發(fā)什么業(yè)務(wù)跟他沒(méi)關(guān)系。這行很多是技術(shù)宅,行業(yè)專(zhuān)家。
⑤操作系統(tǒng)和業(yè)務(wù)之間并沒(méi)有一個(gè)界線。有操作系統(tǒng)經(jīng)驗(yàn),再去做應(yīng)用,你會(huì)對(duì)系統(tǒng)知根知底,碰到問(wèn)題時(shí)都有解決思路。有了業(yè)務(wù)經(jīng)驗(yàn),你再了解一下操作系統(tǒng),很快就可以組成一個(gè)團(tuán)隊(duì)自立門(mén)戶,至少做個(gè)CTO沒(méi)問(wèn)題。
1.1 專(zhuān)業(yè)領(lǐng)域
它又可以分為下面2類(lèi)。
1.1.1 學(xué)術(shù)研究
比如語(yǔ)音、圖像處理、人工智能,這類(lèi)工作需要你有比較強(qiáng)的理論知識(shí),我傾向于認(rèn)為這類(lèi)人是“科學(xué)家”,他們鉆研多年,很多時(shí)候是在做學(xué)術(shù)研孫李究。
在嵌入式領(lǐng)域,需要把他們的成果用某種算法表達(dá)出來(lái),針對(duì)某種芯片進(jìn)行優(yōu)化,這部分工作也許有專(zhuān)人來(lái)做。
1.1.2 工程實(shí)現(xiàn)
也有這樣一類(lèi)人,他們懂得這些專(zhuān)業(yè)領(lǐng)域的概念,但是沒(méi)有深入鉆研??梢允褂酶黝?lèi)開(kāi)源資料實(shí)現(xiàn)某個(gè)目標(biāo),做出產(chǎn)品。比如圖像處理,他懂得用opencv里幾百個(gè)復(fù)雜函數(shù)來(lái)實(shí)現(xiàn)頭像識(shí)別。有時(shí)候還可以根據(jù)具體芯片來(lái)優(yōu)化這些函數(shù)。
“專(zhuān)業(yè)領(lǐng)域”不是我的菜,如果你要做這一塊,我想更好的入門(mén)方法是在學(xué)校學(xué)習(xí)研究生、博士課程。
1.2 業(yè)務(wù)領(lǐng)域
換句話說(shuō),就是應(yīng)用程序,這又可以分為下面2類(lèi)。
1.2.1 界面顯示
做產(chǎn)品當(dāng)然需要好的界面,但是,不是說(shuō)它不重要,是沒(méi)什么發(fā)展后勁。
現(xiàn)在的熱門(mén)詞是Android APP和IOS APP開(kāi)發(fā)。你不要被Android、IOS兩個(gè)詞騙了,它們跟以前的VC、VB是同一路貨色,只是、僅僅是一套GUI控件的實(shí)現(xiàn)。
希望沒(méi)有冒犯則衫遲到你,我有理由。
一個(gè)程序需要有GUI界面,但是程序的內(nèi)在邏輯才是核心。Android、IOS的開(kāi)發(fā)工具給我們簡(jiǎn)化了GUI的開(kāi)發(fā),并提供了這些控件的交互機(jī)制,封裝并提供了一些服務(wù)(比如網(wǎng)絡(luò)傳輸)。但是程序內(nèi)部的業(yè)務(wù)邏輯、對(duì)視頻圖像聲音的處理等等,這才是核心。另外別忘了服務(wù)器那邊的后臺(tái)程序:怎樣更安全地保存數(shù)據(jù)、保護(hù)客戶的隱私,怎樣處理成千上萬(wàn)上百萬(wàn)的并發(fā)訪問(wèn),等等,這也是核心。
但是,從Android、IOS APP入門(mén)入行,這很快!如果你是大四,急于找到一份工作,那么花上1、2個(gè)月去學(xué)習(xí)Android或IOS,應(yīng)該容易找到工作,畢竟APP的需求永遠(yuǎn)是更大的,現(xiàn)在這兩門(mén)技術(shù)還算熱門(mén)。在2023、2023年左右,Android程序員的起薪挺高,然后開(kāi)始下滑。Android APP的入門(mén)基本只要1個(gè)月,所以懂的人也越來(lái)越多。2023、2023年,IOS開(kāi)發(fā)的工資明顯比Android高了,于是各類(lèi)IOS培訓(xùn)也火曝起來(lái)。中華大地向來(lái)不缺速成人才,估計(jì)再過(guò)一陣子IOS工程師也是白菜價(jià)了。
會(huì)Android、IOS只是基本要求,不信去51job搜搜Android或IOS,職位要求里肯定其他要求。
1.2.2 業(yè)務(wù)邏輯
舉個(gè)簡(jiǎn)單例子,做一個(gè)打卡軟件,你需要考慮這些東西:
①正常流程是上班下班時(shí)都要打卡
②有人忘記了怎么辦?作為異常記錄在案,推送給管理員
③請(qǐng)假時(shí)怎么處理?
④加班怎么處理?
對(duì)于更復(fù)雜的例子,視頻會(huì)議系統(tǒng)里,各個(gè)模塊怎么對(duì)接,各類(lèi)協(xié)議怎么兼容,你不深入這個(gè)行業(yè),你根本搞不清楚。
應(yīng)用開(kāi)發(fā)的職位永遠(yuǎn)是最多的,入門(mén)門(mén)檻也低?;旧现灰銜?huì)C語(yǔ)言,面試時(shí)表現(xiàn)比較得體,一般公司都會(huì)給你機(jī)會(huì)。因?yàn)椋?/p>
①你進(jìn)公司后,還需要重新培訓(xùn)你:熟悉它們的業(yè)務(wù)邏輯。
②你要做的,基本也就是一個(gè)個(gè)模塊,框架都有人給你定好了,你去填代碼就可以了。
說(shuō)點(diǎn)讓你高興的事:軟件公司里,做領(lǐng)導(dǎo)的基本都是寫(xiě)應(yīng)用程序的(當(dāng)然還有做市場(chǎng)的)。寫(xiě)應(yīng)用程序的人,對(duì)外可以研究市場(chǎng)接待客戶,對(duì)內(nèi)可以管理程序員完成開(kāi)發(fā),不讓他做領(lǐng)導(dǎo)讓誰(shuí)做?
如果你的志向是寫(xiě)應(yīng)用程序,那么我建議你先練好基本功:數(shù)據(jù)結(jié)構(gòu)、算法是必備,然后憑興趣選擇數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)編程等等進(jìn)行深入鉆研。
最后,選擇你看好的、感興趣的行業(yè)深耕個(gè)10年吧。做應(yīng)用開(kāi)發(fā)的人選擇了某個(gè)行業(yè),后面是很難換行業(yè)的,選行很重要!
1.3 操作系統(tǒng)領(lǐng)域
UCOS太簡(jiǎn)單,VxWorks太貴太專(zhuān)業(yè),Windows不玩嵌入式了,IOS不開(kāi)源,所以對(duì)于操作系統(tǒng)領(lǐng)域我們也只能玩Linux了。
在嵌入式領(lǐng)域Linux一家獨(dú)大!
Android呢?Android跟QT一樣,都是一套GUI系統(tǒng)。只是Google的實(shí)力太強(qiáng)了,現(xiàn)在Android無(wú)處不在,所以很多時(shí)候Linux+Android成了標(biāo)配。注意,在這里我們關(guān)心的是Android的整個(gè)系統(tǒng)、里面的機(jī)制,而不是學(xué)習(xí)幾個(gè)API然后開(kāi)發(fā)界面程序。操作系統(tǒng)領(lǐng)域所包含的內(nèi)容,簡(jiǎn)單地說(shuō),就是制作出一臺(tái)裝好系統(tǒng)的專(zhuān)用“電腦”,可以分為:
①為產(chǎn)品規(guī)劃硬件:
按需求、性能、成本選擇主芯片,搭配周邊外設(shè),交由硬件開(kāi)發(fā)人員設(shè)計(jì)。
②給單板制作、安裝操作系統(tǒng)、編寫(xiě)驅(qū)動(dòng)
③定制維護(hù)、升級(jí)等系統(tǒng)方案
④還可能要配置、安裝Android等GUI系統(tǒng):
⑤為應(yīng)用開(kāi)發(fā)人員配置開(kāi)發(fā)環(huán)境
⑥從系統(tǒng)角度解決疑難問(wèn)題
這個(gè)領(lǐng)域,通常被稱(chēng)為“底層系統(tǒng)”或是“驅(qū)動(dòng)開(kāi)發(fā)”。
先解決2個(gè)常見(jiàn)誤區(qū):
①這份工作是寫(xiě)驅(qū)動(dòng)程序嗎?
看看上面羅列的6點(diǎn),應(yīng)該說(shuō),它包含驅(qū)動(dòng)開(kāi)發(fā),但遠(yuǎn)遠(yuǎn)不只有驅(qū)動(dòng)開(kāi)發(fā)。
②我們還需要寫(xiě)驅(qū)動(dòng)嗎?不是有原廠嗎?或者只需要改改就可以?
經(jīng)常有人說(shuō),芯片原廠都做好驅(qū)動(dòng)了,拿過(guò)來(lái)改改就可以了。如果,你的硬件跟原廠的公板完全一樣,原廠源碼毫無(wú)BUG,不想優(yōu)化性能、削減成本,不想做一些有特色的產(chǎn)品,那這話是正確的。
但是在這個(gè)不創(chuàng)新就是找死的年代,可能嗎?!原因有二:
①即使只是修改代碼,能修改的前提是能理解;能理解的更好煅煉方法是從零寫(xiě)出若干驅(qū)動(dòng)程序。
②很多時(shí)候,需要你深度定制系統(tǒng)。
以前做聯(lián)發(fā)科手機(jī)只需要改改界面就可以出貨了,現(xiàn)在山寨廠一批批倒下。大家都使用原廠的方案而不加修改時(shí),最后只能拼成本。
舉個(gè)例子,深圳有2家做交通攝像頭、監(jiān)控?cái)z像頭的廠家,他們?cè)?jīng)找我做過(guò)4個(gè)項(xiàng)目:
①改進(jìn)廠家給的SD卡驅(qū)動(dòng)性能,使用DMA。
②換了Flash型號(hào)后,系統(tǒng)經(jīng)常出問(wèn)題,需要修改驅(qū)動(dòng)BUG。
③觸摸屏點(diǎn)擊不準(zhǔn),找原因,后來(lái)發(fā)現(xiàn)是旁路電容導(dǎo)致的。
④裁減成本,把4片DDR換為2片DDR,需要改bootloader對(duì)DDR的初始化。
這些項(xiàng)目都很急,搞不定就無(wú)法出貨,這時(shí)候找原廠?除非你是中興華為等大客戶,否則誰(shuí)理你?
我在中興公司上班時(shí),寫(xiě)驅(qū)動(dòng)的時(shí)間其實(shí)是很少的,大部分時(shí)間是調(diào)試:系統(tǒng)調(diào)優(yōu),上幫APP工程師、下幫硬件工程師查找問(wèn)題。我們從廠家、網(wǎng)上得到的源碼,很多都是標(biāo)準(zhǔn)的,當(dāng)然可以直接用。但是在你的產(chǎn)品上也許優(yōu)化一下更好。比如我們可以把攝像頭驅(qū)動(dòng)和DMA驅(qū)動(dòng)揉合起來(lái),讓攝像頭的數(shù)據(jù)直接通過(guò)DMA發(fā)到DSP去。我們可以在軟件和硬件之間起橋梁作用,對(duì)于實(shí)體產(chǎn)品,有可能是軟件出問(wèn)題也可能是硬件出問(wèn)題,一般是底層系統(tǒng)工程師比較容易找出問(wèn)題。
當(dāng)硬件、軟件應(yīng)用出現(xiàn)問(wèn)題,他們解決不了時(shí),從底層軟件角度給他們出主意,給他們提供工具。再比如方案選擇:芯片性能能否達(dá)標(biāo)、可用的BSP是否完善等等,這只能由負(fù)責(zé)整個(gè)方案的人來(lái)考慮,他必須懂底層。
在操作系統(tǒng)領(lǐng)域,對(duì)知識(shí)的要求很多:
①懂硬件知識(shí)才能看懂電路圖
②英文好會(huì)看芯片手冊(cè)
③有編寫(xiě)、移植驅(qū)動(dòng)程序的能力
④對(duì)操作系統(tǒng)本身有一定的理解,才能解決各類(lèi)疑難問(wèn)題
⑤理解Android內(nèi)部機(jī)制
⑥懂匯編、C語(yǔ)言、C++、JAVA
它絕對(duì)是一個(gè)大坑,沒(méi)有興趣、沒(méi)有毅力的人慎選。
①這行的入門(mén),絕對(duì)需要半年以上,即使全天學(xué)習(xí)也要半年。
②它的職位,絕對(duì)比APP的職位少
③并且你沒(méi)有1、2年經(jīng)驗(yàn),招你到公司后一開(kāi)始你做的還是APP。
優(yōu)點(diǎn)就是:
①學(xué)好后,行業(yè)通殺,想換行就換行;想自己做產(chǎn)品就自己做產(chǎn)品。
②相比做應(yīng)用程序的人,不會(huì)被經(jīng)常變動(dòng)的需求搞得天天加班。
③門(mén)檻高,當(dāng)然薪水相對(duì)就高。
操作系統(tǒng)領(lǐng)域,我認(rèn)為適合于這些人:
①硬件工程師想轉(zhuǎn)軟件工程師,從底層軟件入門(mén)會(huì)比較好
②單片機(jī)工程師,想升級(jí)一下。會(huì)Linux底層的人肯定會(huì)單片機(jī),會(huì)單片機(jī)的人不一定會(huì)Linux。
③時(shí)間充足的學(xué)生:如果你正讀大二大三,那么花上半年學(xué)習(xí)嵌入式Linux底層多有益處。
④想掌握整個(gè)系統(tǒng)的人,比如你正在公司里寫(xiě)APP,但是想升為系統(tǒng)工程師,那么底層不得不學(xué)。
⑤想自己創(chuàng)業(yè)做實(shí)體產(chǎn)品的工程師,你有錢(qián)的話什么技術(shù)都不用學(xué),但是如果沒(méi)錢(qián)又想做產(chǎn)品,那么Linux底層不得不學(xué)。
⑥做Linux APP的人,沒(méi)錯(cuò),他們也要學(xué)習(xí)。
這部分人不需要深入,了解個(gè)大概就可以:bootloader是用來(lái)啟動(dòng)內(nèi)核,Linux的文件系統(tǒng)(第1個(gè)程序是什么、做什么、各目錄干嘛用)、APP跟驅(qū)動(dòng)程序的調(diào)用關(guān)系、工具鏈,有這些概念就可以了
本文中,就把操作系統(tǒng)默認(rèn)為L(zhǎng)inux,講講怎么學(xué)習(xí)嵌入式Linux+Android系統(tǒng)。
1.4 嵌入式Linux+Android系統(tǒng)包含哪些內(nèi)容
嵌入式Linux系統(tǒng)包含哪些東西?不要急,舉一個(gè)例子你就知道了。
①電腦一開(kāi)機(jī),那些界面是誰(shuí)顯示的?
是BIOS,它做什么?一些自檢,然后從硬盤(pán)上讀入windows,并啟動(dòng)它。
類(lèi)似的,這個(gè)BIOS對(duì)應(yīng)于嵌入式Linux里的bootloader。這個(gè)bootloader要去Flash上讀入Linux內(nèi)核,并啟動(dòng)它。
②啟動(dòng)windows的目的是什么?
當(dāng)然運(yùn)行應(yīng)用程序以便上網(wǎng)、聊天什么的了。
這些上網(wǎng)程序、聊天程序在哪?
在C盤(pán)、D盤(pán)上。
所以,windows要先識(shí)別出C盤(pán)、D盤(pán)。在Linux下我們稱(chēng)之為根文件系統(tǒng)。
③windows能識(shí)別出C盤(pán)、D盤(pán),那么肯定有讀寫(xiě)硬盤(pán)的能力。
這個(gè)能力我們稱(chēng)之為驅(qū)動(dòng)程序。當(dāng)然不僅僅是操作硬盤(pán),還有網(wǎng)卡、USB等等其他硬件。嵌入式Linux能從Flash上讀出并執(zhí)行應(yīng)用程序,肯定也得有Flash的驅(qū)動(dòng)程序啊,當(dāng)然也不僅僅是Flash。
簡(jiǎn)單地說(shuō),嵌入式LINUX系統(tǒng)里含有bootloader、內(nèi)核、驅(qū)動(dòng)程序、根文件系統(tǒng)、應(yīng)用程序這5大塊。而應(yīng)用程序,我們又可以分為:C/C++、Android。
所以,嵌入式Linux+Android系統(tǒng)包含以下6部分內(nèi)容:
①bootloader
②Linux內(nèi)核
③驅(qū)動(dòng)程序
④使用C/C++編寫(xiě)的應(yīng)用程序
⑤Android系統(tǒng)本身
⑥Android應(yīng)用程序
Android跟Linux的聯(lián)系實(shí)在太大了,它的應(yīng)用是如此廣泛,學(xué)習(xí)了Linux之后沒(méi)有理由停下來(lái)不學(xué)習(xí)Android。在大多數(shù)智能設(shè)備中,運(yùn)行的是Linux操作系統(tǒng);它上面要么安裝有Android,要么可以跟Android手機(jī)互聯(lián)?,F(xiàn)在,Linux+Android已成標(biāo)配。
2. 怎么學(xué)習(xí)嵌入式Linux操作系統(tǒng)
本文假設(shè)您是零基礎(chǔ),以實(shí)用為主,用最快的時(shí)間讓你入門(mén);后面也會(huì)附上想深入學(xué)習(xí)時(shí)可以參考的資料。
在實(shí)際工作中,我們從事的是“操作系統(tǒng)”周邊的開(kāi)發(fā),并不會(huì)太深入學(xué)習(xí)、修改操作系統(tǒng)本身。
①操作系統(tǒng)具有進(jìn)程管理、存儲(chǔ)管理、文件管理和設(shè)備管理等功能,這些核心功能非常穩(wěn)定可靠,基本上不需要我們修改代碼。我們只需要針對(duì)自己的硬件完善驅(qū)動(dòng)程序
②學(xué)習(xí)驅(qū)動(dòng)時(shí)必定會(huì)涉及其他知識(shí),比如存儲(chǔ)管理、進(jìn)程調(diào)度。當(dāng)你深入理解了驅(qū)動(dòng)程序后,也會(huì)加深對(duì)操作系統(tǒng)其他部分的理解
③Linux內(nèi)核中大部分代碼都是設(shè)備驅(qū)動(dòng)程序,可以認(rèn)為L(zhǎng)inux內(nèi)核由各類(lèi)驅(qū)動(dòng)構(gòu)成
但是,要成為該領(lǐng)域的高手,一定要深入理解Linux操作系統(tǒng)本身,要去研讀它的源代碼。
在忙完工作,閑暇之余,可以看看這些書(shū):
①趙炯的《linux內(nèi)核完全注釋》,這本比較薄,推薦這本。他后來(lái)又出了《Linux 內(nèi)核完全剖析》,太厚了,搞不好看了后面就忘記前面了。
②毛德操、胡希明的《LINUX核心源代碼情景分析》,此書(shū)分上下冊(cè),巨厚無(wú)比。當(dāng)作字典看即可:想深入理解某方面的知識(shí),就去看某章節(jié)。
③其他好書(shū)還有很多,我沒(méi)怎么看,沒(méi)有更多建議
基于快速入門(mén),上手工作的目的,您先不用看上面的書(shū),先按本文學(xué)習(xí)。
2.1 入門(mén)路線圖
假設(shè)您是零基礎(chǔ),我們規(guī)劃了如下入門(mén)路線圖。前面的知識(shí),是后面知識(shí)的基礎(chǔ),建議按順序?qū)W習(xí)。每一部分,不一定需要學(xué)得很深入透徹,下面分章節(jié)描述。
2.2 學(xué)習(xí)驅(qū)動(dòng)程序之前的基礎(chǔ)知識(shí)
2.2.1 C語(yǔ)言
只要是理工科專(zhuān)業(yè)的,似乎都會(huì)教C語(yǔ)言。我見(jiàn)過(guò)很多C語(yǔ)言考試90、100分的,一上機(jī)就傻了,我懷疑他們都沒(méi)在電腦上寫(xiě)過(guò)程序。
理論再好,沒(méi)有實(shí)踐不能干活的話,公司招你去干嘛?
反過(guò)來(lái),實(shí)踐出真知,學(xué)習(xí)C語(yǔ)言,必須練練練、寫(xiě)寫(xiě)寫(xiě)!
當(dāng)你掌握基本語(yǔ)法后,就可以在電腦上練習(xí)一些C語(yǔ)言習(xí)題了;
當(dāng)你寫(xiě)過(guò)幾個(gè)C程序后,就可以進(jìn)入下一階段的裸機(jī)開(kāi)發(fā)了。
①不需要太深入
作為快速入門(mén),只要你會(huì)編寫(xiě)“Hello, world!”,會(huì)寫(xiě)冒泡排序,會(huì)一些基礎(chǔ)的語(yǔ)法操作,暫時(shí)就夠了。
指針操作是重點(diǎn),多練習(xí);
不需要去學(xué)習(xí)過(guò)多的數(shù)據(jù)結(jié)構(gòu)知識(shí),只需要掌握鏈表操作,其他不用學(xué)習(xí),比如:隊(duì)列、二叉樹(shù)等等都不用學(xué);不需要去學(xué)習(xí)任何的函數(shù)使用,比如文件操作、多線程編程、網(wǎng)絡(luò)編程等等;這些知識(shí),在編寫(xiě)Linux應(yīng)用程序時(shí)會(huì)用,但是在操作系統(tǒng)特別是驅(qū)動(dòng)學(xué)習(xí)時(shí),用不著!
永往直前吧,以后碰到不懂的C語(yǔ)言問(wèn)題,我們?cè)倩剡^(guò)頭來(lái)學(xué)習(xí)。
在后續(xù)的“裸機(jī)開(kāi)發(fā)”中,會(huì)讓你繼續(xù)練習(xí)C語(yǔ)言,那會(huì)更實(shí)戰(zhàn)化。
C語(yǔ)言是在寫(xiě)代碼中精進(jìn)的。
②可以在Visual Studio下學(xué)習(xí),也可以在Linux下學(xué)習(xí),后者需要掌握一些編譯命令,我們暫時(shí)沒(méi)有提供C語(yǔ)言的教程,找一本C語(yǔ)言書(shū),網(wǎng)上找找免費(fèi)的C語(yǔ)言視頻(主要看怎么搭建環(huán)境),就可以自學(xué)了。
2.2.2 PC Linux基本操作:
對(duì)于PC Linux,我們推薦使用Ubuntu,在它上面安裝軟件非常簡(jiǎn)便。
我們的工作模式通常是這樣:在Windows下閱讀、編寫(xiě)代碼,然后把代碼上傳到PC Linux去編譯。實(shí)際上,Ubuntu的桌面系統(tǒng)已經(jīng)很好用了,我們拿到各種智能機(jī)可以很快上手,相信Ubuntu的桌面系統(tǒng)也可以讓你很快上手。為了提高工作效率,我們通常使用命令行來(lái)操作Ubuntu。
不用擔(dān)心,你前期只需要掌握這幾條命令就可以了,它們是如此簡(jiǎn)單,脆列出它們:
①cd : Change Directory(改變目錄)
cd 目錄名// 進(jìn)入某個(gè)目錄cd ..// cd “兩個(gè)點(diǎn)”:返回上一級(jí)目錄cd // cd “短橫”:返回上一次所在目錄
②pwd : Print Work Directory(打印當(dāng)前目錄 顯示出當(dāng)前工作目錄的絕對(duì)路徑)
③mkdir : Make Directory(創(chuàng)建目錄)
mkdir abc// 創(chuàng)建文件夾abcmkdir -p a/b/c // 創(chuàng)建文件夾a,再a下創(chuàng)建文件夾b,再在b下創(chuàng)建文件夾c
④rm : Remove(刪除目錄或文件)
rm file // 刪除名為file的文件rm -rf dir // 刪除名為dir的目錄
⑤ls : List(列出目錄內(nèi)容)
⑥mount : 掛載
mount -t nfs -o nolock,vers=2 192.168.1.123:/work/nfs_root /mntmount -t yaffs /dev/mtdblock3 /mnt
⑦chown : Change owner(改變文件的屬主,即擁有者)
chown book:book /work -R //對(duì)/work目錄及其下所有內(nèi)容,屬主改為book用戶,組改為book
⑧chmod : Change mode(改變權(quán)限),下面的例子很簡(jiǎn)單粗暴
chmod 777 /work -R // 對(duì)/work目錄及其下所有內(nèi)容,權(quán)限改為可讀、可寫(xiě)、可執(zhí)行
⑨vi : Linux下最常用的編輯命令,使用稍微復(fù)雜,請(qǐng)自己搜索用法。
要練習(xí)這些命令,你可以進(jìn)入U(xiǎn)buntu桌面系統(tǒng)后,打開(kāi)終端輸入那些命令;或是用SecureCRT、putty等工具遠(yuǎn)程登錄Ubuntu后練習(xí)。
2.2.3 硬件知識(shí)
我們學(xué)習(xí)硬件知識(shí)的目的在于能看懂原理圖,看懂通信協(xié)議,看懂芯片手冊(cè);不求能設(shè)計(jì)原理圖,更不求能設(shè)計(jì)電路板。
對(duì)于正統(tǒng)的方法,你應(yīng)該這樣學(xué)習(xí):
①學(xué)習(xí)《微機(jī)原理》,理解一個(gè)計(jì)算機(jī)的組成及各個(gè)部件的交互原理。
②學(xué)習(xí)《數(shù)字電路》,理解各種門(mén)電路的原理及使用,還可以掌握一些邏輯運(yùn)算(與、或等)。
③《模擬電路》?好吧,這個(gè)不用學(xué),至少我在工作中基本用不到它,現(xiàn)在全忘光了。
就我個(gè)人經(jīng)驗(yàn)來(lái)說(shuō),這些課程是有用的,但是:
①原理有用,實(shí)戰(zhàn)性不強(qiáng)。
比如《微機(jī)原理》是基于x86系統(tǒng),跟ARM板子有很大差別,當(dāng)然原理相通。
我是在接觸嵌入式編程后,才理解了這些課程。
②每本書(shū)都那么厚,內(nèi)容都很多,學(xué)習(xí)時(shí)間過(guò)長(zhǎng),自學(xué)有難度。
針對(duì)這些校園教材的不足,并結(jié)合實(shí)際開(kāi)發(fā)過(guò)程中要用到的知識(shí)點(diǎn),我們推出了《學(xué)前班_怎么看原理圖》的系列視頻:
學(xué)前班第1課第1節(jié)___怎么看原理圖之GPIO和門(mén)電路.wmv
學(xué)前班第1課第2.1節(jié)_怎么看原理圖之協(xié)議類(lèi)接口之UART.wmv
學(xué)前班第1課第2.2節(jié)_怎么看原理圖之協(xié)議類(lèi)接口之I2C.wmv
學(xué)前班第1課第2.3節(jié)_怎么看原理圖之協(xié)議類(lèi)接口之SPI.wmv
學(xué)前班第1課第2.4節(jié)_怎么看原理圖之協(xié)議類(lèi)接口之NAND Flash.wmv
學(xué)前班第1課第2.5節(jié)_怎么看原理圖之協(xié)議類(lèi)接口之LCD.wmv
學(xué)前班第1課第3節(jié)___怎么看原理圖之內(nèi)存類(lèi)接口.wmv
學(xué)前班第1課第4.1節(jié)_怎么看原理圖之分析S3C2410開(kāi)發(fā)板.wmv
學(xué)前班第1課第4.2節(jié)_怎么看原理圖之分析S3C2440開(kāi)發(fā)板.wmv
學(xué)前班第1課第4.3節(jié)_怎么看原理圖之分析S3C6410開(kāi)發(fā)板.wmv
即使你只具備初中物理課的電路知識(shí),我也希望能通過(guò)這些視頻,讓你可以看懂原理圖,理解一些常見(jiàn)的通信協(xié)議;如果你想掌握更多的硬件知識(shí),這些視頻也可以起個(gè)索引作用,讓你知道缺乏什么知識(shí)。
這些視頻所講到的硬件知識(shí),將在《裸板開(kāi)發(fā)》系列視頻中用到,到時(shí)可以相互對(duì)照著看,加深理解。
2.2.4 要不要專(zhuān)門(mén)學(xué)習(xí)Windows下的單片機(jī)開(kāi)發(fā)
很多學(xué)校都開(kāi)通了單片機(jī)的課程,很多人都是從51單片機(jī)、AVR單片機(jī),現(xiàn)在比較新的STM32單片機(jī)開(kāi)始接觸嵌入式領(lǐng)域,并且使用Windows下的開(kāi)發(fā)軟件,比如keil、MDK等。
問(wèn)題來(lái)了,要不要專(zhuān)門(mén)學(xué)習(xí)Windows下的單片機(jī)開(kāi)發(fā)?
①如果這是你們專(zhuān)業(yè)的必修課,那就學(xué)吧
②如果你的專(zhuān)業(yè)跟單片機(jī)密切相關(guān),比如機(jī)械控制等,那就學(xué)吧
③如果你只是想從單片機(jī)入門(mén),然后學(xué)習(xí)更廣闊的嵌入式Linux,那么放棄在Windows下學(xué)習(xí)單片機(jī)吧!
理由如下:
①Windows下的單片機(jī)學(xué)習(xí),深度不夠
Windows下有很好的圖形界面單片機(jī)開(kāi)發(fā)軟件,比如keil、MDK等。
它們封裝了很多技術(shù)細(xì)節(jié),比如:
你只會(huì)從main函數(shù)開(kāi)始編寫(xiě)代碼,卻不知道上電后第1條代碼是怎么執(zhí)行的;
你可以編寫(xiě)中斷處理函數(shù),但是卻不知道它是怎么被調(diào)用的;
你不知道程序怎么從Flash上被讀入內(nèi)存;
也不知道內(nèi)存是怎么劃分使用的,不知道棧在哪、堆在哪;
當(dāng)你想裁剪程序降低對(duì)Flash、內(nèi)存的使用時(shí),你無(wú)從下手;
當(dāng)你新建一個(gè)文件時(shí),它被自動(dòng)加入到工程里,但是其中的機(jī)理你完全不懂;
等等等。
②基于ARM+Linux裸機(jī)學(xué)習(xí),可以學(xué)得更深,并且更貼合后續(xù)的Linux學(xué)習(xí)。實(shí)際上它就是Linux下的單片機(jī)學(xué)習(xí),只是一切更加原始:所有的代碼需要你自己來(lái)編寫(xiě);哪些文件加入工程,需要你自己來(lái)管理。
在工作中,我們當(dāng)然傾向于使用Windows下更便利的工具,但是在學(xué)習(xí)階段,我們更想學(xué)習(xí)到程序的本質(zhì)。
一切從零編寫(xiě)代碼、管理代碼,可以讓我們學(xué)習(xí)到更多知識(shí):
你需要了解芯片的上電啟動(dòng)過(guò)程,知道第1條代碼如何運(yùn)行;
你需要掌握怎么把程序從Flash上讀入內(nèi)存;
需要理解內(nèi)存怎么規(guī)劃使用,比如棧在哪,堆在哪;
需要理解代碼重定位;
需要知道中斷發(fā)生后,軟硬件怎么保護(hù)現(xiàn)場(chǎng)、跳到中斷入口、調(diào)用中斷程序、恢復(fù)現(xiàn)場(chǎng);
你會(huì)知道,main函數(shù)不是我們編寫(xiě)的第1個(gè)函數(shù);
你會(huì)知道,芯片從上電開(kāi)始,程序是怎么被搬運(yùn)執(zhí)行的;
你會(huì)知道,函數(shù)調(diào)用過(guò)程中,參數(shù)是如何傳遞的;
你會(huì)知道,中斷發(fā)生時(shí),每一個(gè)寄存器的值都要小心對(duì)待;
等等等。
你掌握了ARM+Linux的裸機(jī)開(kāi)發(fā),再回去看Windows下的單片機(jī)開(kāi)發(fā),會(huì)驚呼:怎么那么簡(jiǎn)單!并且你會(huì)完全明白這些工具沒(méi)有向你展示的技術(shù)細(xì)節(jié)。
驅(qū)動(dòng)程序=Linux驅(qū)動(dòng)程序軟件框架+ARM開(kāi)發(fā)板硬件操作,我們可以從簡(jiǎn)單的裸機(jī)開(kāi)發(fā)入手,先掌握硬件操作,并且還可以:
①掌握如何在PC Linux下編譯程序、把程序燒錄到板子上并運(yùn)行它
②為學(xué)習(xí)bootloader打基礎(chǔ):掌握了各種硬件操作后,后面一組合就是一個(gè)bootloader
2.2.5 為什么選擇ARM9 S3C2440開(kāi)發(fā)板,而不是其他性能更好的?
有一個(gè)錯(cuò)誤的概念:S3C2440過(guò)時(shí)了、ARM9過(guò)時(shí)了。
這是不對(duì)的,如果你是軟件工程師,無(wú)論是ARM9、ARM11、A8還是A9,對(duì)我們來(lái)說(shuō)是沒(méi)有差別的。
一款芯片,上面有CPU,還有眾多的片上設(shè)備(比如UART、USB、LCD控制器)。我們寫(xiě)程序時(shí),并不涉及CPU,只是去操作那些片上設(shè)備。
所以:差別在于片上設(shè)備,不在于CPU核;差別在于寄存器操作不一樣。
因?yàn)槲覀儗?xiě)驅(qū)動(dòng)并不涉及CPU的核心,只是操作CPU之外的設(shè)備,只是讀寫(xiě)這些設(shè)備的寄存器。
之所以推薦S3C2440,是因?yàn)樗腖inux學(xué)習(xí)資料最豐富,并有配套的第1、2期視頻。
2.2.6 怎么學(xué)習(xí)ARM+Linux的裸機(jī)開(kāi)發(fā)
學(xué)習(xí)裸機(jī)開(kāi)發(fā)的目的有兩個(gè):
①掌握裸機(jī)程序的結(jié)構(gòu),為后續(xù)的u-boot作準(zhǔn)備
②練習(xí)硬件知識(shí),即:怎么看原理圖、芯片手冊(cè),怎么寫(xiě)代碼來(lái)操作硬件
后面的u-boot可以認(rèn)為是裸機(jī)程序的,我們?cè)诼銠C(jī)開(kāi)發(fā)中逐個(gè)掌握各個(gè)部件,再起來(lái)就可以得到一個(gè)u-boot了。
后續(xù)的驅(qū)動(dòng)開(kāi)發(fā),也涉及硬件操作,你可以在裸機(jī)開(kāi)發(fā)中學(xué)習(xí)硬件知識(shí)。
注意:如果你并不關(guān)心裸機(jī)的程序結(jié)構(gòu),不關(guān)心bootloader的實(shí)現(xiàn),這部分是可以先略過(guò)的。在后面的驅(qū)動(dòng)視頻中,我們也會(huì)重新講解所涉及的硬件知識(shí)。
推薦兩本書(shū):杜春蕾的《ARM體系結(jié)構(gòu)與編程》,韋東山的《嵌入式Linux應(yīng)用開(kāi)發(fā)完全手冊(cè)》。后者也許是國(guó)內(nèi)第1本涉及在PC Linux環(huán)境下開(kāi)發(fā)的ARM裸機(jī)程序的書(shū),如果我說(shuō)錯(cuò)了,請(qǐng)?jiān)徫視?shū)讀得少。
對(duì)于裸機(jī)開(kāi)發(fā),我們提供有2部分視頻:
①環(huán)境搭建
第0課第1節(jié)_剛接觸開(kāi)發(fā)板之接口接線.wmv
第0課第2節(jié)_剛接觸開(kāi)發(fā)板之燒寫(xiě)裸板程序.wmv
第0課第3節(jié)_剛接觸開(kāi)發(fā)板之重?zé)麄€(gè)系統(tǒng).wmv
第0課第4節(jié)_剛接觸開(kāi)發(fā)板之使用vmwae和預(yù)先做好的ubuntu.wmv
第0課第5節(jié)_剛接觸開(kāi)發(fā)板之u-boot打補(bǔ)丁編譯使用及建sourceinsight工程.wmv
第0課第6節(jié)_剛接觸開(kāi)發(fā)板之內(nèi)核u-boot打補(bǔ)丁編譯使用及建sourceinsight工程.wmv
第0課第7節(jié)_剛接觸開(kāi)發(fā)板之制作根文件系統(tǒng)及初試驅(qū)動(dòng).wmv
第0課第8節(jié)_在TQ2440,MINI2440上搭建視頻所用系統(tǒng).wmv
第0課第9節(jié)_win7下不能使用dnw燒寫(xiě)的替代方法.wmv
……………..未完
原文鏈接:
網(wǎng)頁(yè)鏈接
相信你在網(wǎng)上也看了很多關(guān)于嵌入式這方面的資料,我也就不在網(wǎng)上ctrl+C,ctrl+v了嵌入式這個(gè)概念很寬泛,很多東西在學(xué)習(xí)中自然就慢慢明白了。你現(xiàn)在開(kāi)始學(xué)C語(yǔ)言,不知道數(shù)電,微機(jī)原理這些學(xué)了沒(méi)?如果沒(méi)學(xué)亮孫,也無(wú)所謂。直接用C語(yǔ)言寫(xiě)程序也行。單片機(jī)就選51的,畢竟是最經(jīng)典的,關(guān)于51資料多如牛毛,遇到問(wèn)題也好找答案。另外我想強(qiáng)調(diào)一點(diǎn),51是最簡(jiǎn)單的機(jī)型,也許現(xiàn)在在實(shí)際應(yīng)用中不如別的芯片。但是對(duì)于初學(xué)者是最容易入門(mén)的,所以不要聽(tīng)網(wǎng)上某些人單片機(jī)已經(jīng)過(guò)時(shí)了的言論。學(xué)習(xí)總是個(gè)積累的過(guò)程,特別是學(xué)這個(gè),涉及到的知識(shí)點(diǎn)很多,更需要點(diǎn)耐心,不要指望短時(shí)間內(nèi)就可以搞定,要堅(jiān)持!書(shū)就不用買(mǎi)了吧,但必須買(mǎi)塊51單片機(jī)的開(kāi)發(fā)板,也不貴我以前買(mǎi)的150塊錢(qián)左右,淘寶上很多你自己可以去搜。關(guān)于51的教材,網(wǎng)上的電子檔教很多,基本也都大同小異,買(mǎi)51單片機(jī)的開(kāi)發(fā)板的時(shí)候里面一般也都包含教程資料。個(gè)人建議你看下數(shù)電,和微機(jī)原理方面的書(shū)籍,基礎(chǔ)的東西還是要了解下。另外你可以在網(wǎng)上找下郭天祥51單片的視頻教程,這個(gè)教程非常好,認(rèn)真的看,邊看邊做!匯編的事情,怎么肆鍵含說(shuō)呢,個(gè)人認(rèn)為學(xué)習(xí)單片機(jī)對(duì)硬件結(jié)構(gòu)必須有細(xì)致的了解,匯編語(yǔ)言可以直接對(duì)硬件進(jìn)行控制,用匯編語(yǔ)言編程可以更加深入的去了解認(rèn)識(shí)硬件,個(gè)人認(rèn)為:搞硬件的不懂匯編只能算個(gè)門(mén)外漢!你現(xiàn)在才開(kāi)始學(xué),也有C語(yǔ)言的基礎(chǔ),那么還是跟著郭天祥的那個(gè)視頻用C語(yǔ)言邊做邊學(xué)。有一定基礎(chǔ)后也要慢慢嘗試用匯編寫(xiě)一點(diǎn)簡(jiǎn)單的程序。強(qiáng)調(diào)一點(diǎn):匯編很重要,特別是做控制方面的程序時(shí)。裂笑雖然不同類(lèi)型的芯片匯編都不一樣,接觸多了會(huì)發(fā)現(xiàn),那些其實(shí)也都相通的。哦還有不知道你學(xué)過(guò)CAD沒(méi),沒(méi)的話還是找本CAD方面的書(shū)看下:protel或者DXP都行,不然可能讀不懂電路圖最后說(shuō)一句:要有點(diǎn)耐心!呵呵有問(wèn)題直接Q我,ID就是我的Q號(hào),注明百度!學(xué)習(xí)愉快
一、學(xué)習(xí)嵌入式,你可以做什么?
學(xué)習(xí)嵌入式必須勤學(xué)苦練。華清遠(yuǎn)見(jiàn)老師講一講具體怎么來(lái)學(xué)習(xí)嵌入式。
學(xué)習(xí)嵌入式你可以做:
手機(jī)、PDA、MP3、MP4、遙控玩具、psp、相機(jī)、家電控制(洗衣機(jī)、電飯煲等)、汽車(chē)導(dǎo)航儀,只要稿陪跟電子控制相關(guān)的,
二、如何學(xué)習(xí)?
計(jì)算機(jī)這行都是偏向于實(shí)踐的課程,所以要注重動(dòng)手能力。
1&2、c\c++語(yǔ)言,這稿鏈?zhǔn)怯?jì)算機(jī)行業(yè)的必修課,必須找扎實(shí)實(shí)學(xué)好??梢园惭b turbo c編譯器為開(kāi)發(fā)環(huán)境,聯(lián)系C語(yǔ)言編程;
安裝vc++6.0學(xué)習(xí)C++編程。
在這至于,鍵敬蠢你可以學(xué)習(xí)一點(diǎn)匯編語(yǔ)言,知道可執(zhí)行文件到底是怎么執(zhí)行的。學(xué)習(xí)一點(diǎn)MFC編程,可以做相應(yīng)的窗口界面編程。
關(guān)于linuxlcd原理的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開(kāi)通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)。專(zhuān)業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
標(biāo)題名稱(chēng):深入淺出:解析Linux下LCD顯示原理(linuxlcd原理)
當(dāng)前路徑:http://m.fisionsoft.com.cn/article/dpijjdo.html


咨詢
建站咨詢
