日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
深入淺出:解析Linux下LCD顯示原理(linuxlcd原理)

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

目前創(chuàng)新互聯(lián)已為近千家的企業(yè)提供了網(wǎng)站建設、域名、虛擬空間、網(wǎng)站托管、服務器租用、企業(yè)網(wǎng)站設計、寶應網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

一、LCD顯示原理

1.1 LCD的結(jié)構(gòu)

可以把LCD看作是基礎的液晶顯示器技術。在LCD中,液晶分子被放置在由透明電極造成的夾層之間。這些電極可以被激活,在液晶分子的電流下改變液晶的方向,從而改變光的偏振。這使得液晶分子有助于創(chuàng)造一個具有亮度和顏色變化的圖像。

1.2 LCD的工作原理

LCD顯示器通過控制后臺加熱和反向極性之間的電壓差來控制液晶分子的方向,從而通過添加和混合顏色來創(chuàng)造新圖像。電壓和電流通過二極管和集成電路控制,從而通過改變各像素的電場來改變每個像素的狀態(tài)。

二、Linux下LCD驅(qū)動程序

Linux提供了許多LCD驅(qū)動程序,使得Linux可以支持大多數(shù)顯示器的驅(qū)動。我們可以通過C程序或shell執(zhí)行命令來調(diào)用驅(qū)動程序并完成對LCD的控制。

2.1 安裝驅(qū)動程序

Linux內(nèi)核支持MCU和DSP掃描控制器芯片,可以在相關設備驅(qū)動中添加LCD驅(qū)動程序。如果所使用的驅(qū)動程序沒有內(nèi)置在內(nèi)核中,那么Linux也支持外部驅(qū)動程序的編譯和安裝。在編譯內(nèi)核時,我們可以將LCD驅(qū)動程序作為外部內(nèi)核模塊進行編譯。

2.2 驅(qū)動程序原理

當LCD顯示時,我們需要發(fā)送命令和數(shù)據(jù)到LCD。發(fā)送給LCD的數(shù)據(jù)由CPU提供,通過DMA傳輸?shù)絃CD內(nèi)部的顯存。通過控制寫保護線、LCD復位線等信號,LCD控制器芯片可以將這些數(shù)據(jù)完成正確的顯示。在Linux下,可以通過內(nèi)核驅(qū)動提供的IOCTL命令來控制LCD的行為。

2.3 驅(qū)動程序架構(gòu)

驅(qū)動程序大致分為兩部分:上半部分用于初始化,下半部分用于數(shù)據(jù)傳輸。在初始化過程中,LCD驅(qū)動程序啟動LCD控制器、設置各種寄存器和寄存器位、設置DMA傳輸參數(shù)等。在數(shù)據(jù)傳輸過程中,將要顯示的數(shù)據(jù)通過操控內(nèi)存映射區(qū)域傳輸?shù)斤@存,并發(fā)送命令與數(shù)據(jù)控制LCD對應的行和列顯示圖像。

三、LCD調(diào)試

在使用Linux下的LCD顯示時,很有可能出現(xiàn)一些問題,這些問題很可能由不同之處引起的一些簡單錯誤,導致顯示器顯示圖像不正常。此時我們需要進行調(diào)試。

3.1 調(diào)整液晶顯示器的分辨率

如果分辨率設置不正確,會導致LCD顯示模糊或沒有顯示的現(xiàn)象。調(diào)整分辨率的更好方式是在xorg.conf文件中編輯Linux的顯示參數(shù)。

3.2 檢查LCD屏幕特性

LCD屏幕特性包括顯示器電源穩(wěn)定、顯示屏幕雙向通訊判斷、顯示屏幕順序、入式LVDS信號等。能夠準確判斷LCD屏幕的特性,則效果更好,問題也會更容易解決。

四、

Linux支持大多數(shù)液晶顯示屏類型,Linux下的LCD驅(qū)動程序也經(jīng)過多年的發(fā)展和完善。掌握Linux下LCD顯示原理,可以幫助我們正確地配置Linux,更好地使用LCD顯示器。同時,如果出現(xiàn)LCD顯示不正常等問題,我們也能根據(jù)所學知識進行調(diào)試,從而更好地排除故障。

相關問題拓展閱讀:

  • 學習嵌入式,要如何學好嵌入式

學習嵌入式,要如何學好嵌入式

學習嵌入式linux之前必須要做好心理準備:

之一,要明白學好嵌入式linux不是一件一蹴而就的事,一定要能堅持使用它,特別是在使用初期,由于在linux中,用戶權(quán)限很大,做任何事情都很自由,所以,你往往需要知道你做的每一步在干什么,系統(tǒng)做了些什么,這需要時間去掌握,(背命令不是一件好的學習方法,相信我你一定會在你背完之前全部忘光),盡量掌握常用命令;

第二,在學習初期,你一定會遇到很多困難,或者說各種困難,所以你更好先將悔皮讓你linux中的重要內(nèi)容備份,因為,在你學習碧局的過程中,很可能將系統(tǒng)搞廢(eg:源混亂等);

第三,如果你想在以后的生涯中在軟件行業(yè)工作的話,學習linux是一項基本技能,所以打從你打算學習linux那天起,放棄windows吧!因為它除了能給你帶來片刻的娛樂,別無其他;

第四,如果你只是想應付一下操作系統(tǒng)的課程,勸你更好別學,或者說不要指望能用的怎么樣,原因我說了,這很耗時間,而且如果你學不好的話,你在linux中開發(fā)的機會就很少,或者說幾乎沒有,它的優(yōu)勢就消失了,然后隨著時間的流逝,你就會全部忘記她。要深入學習,就到華清的星創(chuàng)客高端班,項目實戰(zhàn)豐富+職場老鳥帶領。

要學好嵌入式linux需要做些什么:

之一,要多google,因為我不可能,也不可以給你解答所有內(nèi)容,我只能告訴你一些關鍵點,甚至我會故意隱瞞答案,因為在尋找答案的過程中,你會學到更多的知識,學習linux,更要學習一種geek的精神,python之禪中也說過:以總結(jié)分享為榮,以跪*求其解為恥;

第二,要多動手,不要怕什么搞壞了怎么辦,你不搞壞,不去動手,就永遠不會有收獲,既然你在linux中是自由的,那就發(fā)揮自己的權(quán)利;

第三,學習linux,就意味著更快的開發(fā)效率,等更多關于軟件本身或者說操作系統(tǒng)本身的理解,(給你裝的系統(tǒng)里為ubuntu12.04,它已經(jīng)封裝的很臃腫了,但是考慮到你沒有很多時間投入其中,所以給你裝了它),但是怎么用它提高開發(fā)效率,需要你在學習握攔的過程中不斷總結(jié)。

原文鏈接:

網(wǎng)頁鏈接

嵌入式Linux學習路線圖

我是1999年上的大學,物理專業(yè)。在大一時,我們班里普遍彌漫著對未來的不安,不知道學習了物塌辯理后出去能做什么。你當下的經(jīng)歷、當下的學習,在未來的一天肯定會影響到你。畢業(yè)后我們也各自找到了自己的職業(yè):出國深造轉(zhuǎn)行做金融、留校任教做科研、設計芯片、寫程序、創(chuàng)辦公司等等,這一切都離不開在校時學到的基礎技能(數(shù)學、IT、電子電路)、受過煅煉的自學能力。

所以,各位正在迷茫的在校生,各位正在嘗試轉(zhuǎn)行的程序員,未來一定有你的位置,是好是壞取決于你當下的努力與積累。

我不能預言幾年后什么行業(yè)會熱門,也不能保證你照著本文學習可以發(fā)財。我只是一個有十幾年經(jīng)驗的程序員,給對編程有興趣的你,提供一些建議。

1.程序員的三大方向

程序員的方向,一般可以分為3類:專業(yè)領域、業(yè)務領域、操作系統(tǒng)領域。你了解它們后,按興趣選擇吧。

對于專業(yè)領域,我提供不了建議。

業(yè)務,也就是應用程序,它跟操作系統(tǒng)并不是截然分開的:

①開發(fā)實體產(chǎn)品時,應用程序?qū)懙煤玫娜?,有時候需要操作系統(tǒng)的知識,比如調(diào)度優(yōu)先級的設置、知道某些函數(shù)可能會令進程休眠。

②寫應用程序的人進階為系統(tǒng)工程師時,他需要從上到下都了解,這時候就需要有操作系統(tǒng)領域的知識了,否則,你怎么設計整個系統(tǒng)的方案呢?

③做應用程序的人,需要了解行業(yè)的需求,理解業(yè)務的邏輯。所以,當領導的人,多是做應用的。一旦鉆入了某個行業(yè),很難換行業(yè)。

④而操作系統(tǒng)領域,做好了這是通殺各行業(yè):他只負責底層系統(tǒng),在上面開發(fā)什么業(yè)務跟他沒關系。這行很多是技術宅,行業(yè)專家。

⑤操作系統(tǒng)和業(yè)務之間并沒有一個界線。有操作系統(tǒng)經(jīng)驗,再去做應用,你會對系統(tǒng)知根知底,碰到問題時都有解決思路。有了業(yè)務經(jīng)驗,你再了解一下操作系統(tǒng),很快就可以組成一個團隊自立門戶,至少做個CTO沒問題。

1.1 專業(yè)領域

它又可以分為下面2類。

1.1.1 學術研究

比如語音、圖像處理、人工智能,這類工作需要你有比較強的理論知識,我傾向于認為這類人是“科學家”,他們鉆研多年,很多時候是在做學術研孫李究。

在嵌入式領域,需要把他們的成果用某種算法表達出來,針對某種芯片進行優(yōu)化,這部分工作也許有專人來做。

1.1.2 工程實現(xiàn)

也有這樣一類人,他們懂得這些專業(yè)領域的概念,但是沒有深入鉆研。可以使用各類開源資料實現(xiàn)某個目標,做出產(chǎn)品。比如圖像處理,他懂得用opencv里幾百個復雜函數(shù)來實現(xiàn)頭像識別。有時候還可以根據(jù)具體芯片來優(yōu)化這些函數(shù)。

“專業(yè)領域”不是我的菜,如果你要做這一塊,我想更好的入門方法是在學校學習研究生、博士課程。

1.2 業(yè)務領域

換句話說,就是應用程序,這又可以分為下面2類。

1.2.1 界面顯示

做產(chǎn)品當然需要好的界面,但是,不是說它不重要,是沒什么發(fā)展后勁。

現(xiàn)在的熱門詞是Android APP和IOS APP開發(fā)。你不要被Android、IOS兩個詞騙了,它們跟以前的VC、VB是同一路貨色,只是、僅僅是一套GUI控件的實現(xiàn)。

希望沒有冒犯則衫遲到你,我有理由。

一個程序需要有GUI界面,但是程序的內(nèi)在邏輯才是核心。Android、IOS的開發(fā)工具給我們簡化了GUI的開發(fā),并提供了這些控件的交互機制,封裝并提供了一些服務(比如網(wǎng)絡傳輸)。但是程序內(nèi)部的業(yè)務邏輯、對視頻圖像聲音的處理等等,這才是核心。另外別忘了服務器那邊的后臺程序:怎樣更安全地保存數(shù)據(jù)、保護客戶的隱私,怎樣處理成千上萬上百萬的并發(fā)訪問,等等,這也是核心。

但是,從Android、IOS APP入門入行,這很快!如果你是大四,急于找到一份工作,那么花上1、2個月去學習Android或IOS,應該容易找到工作,畢竟APP的需求永遠是更大的,現(xiàn)在這兩門技術還算熱門。在2023、2023年左右,Android程序員的起薪挺高,然后開始下滑。Android APP的入門基本只要1個月,所以懂的人也越來越多。2023、2023年,IOS開發(fā)的工資明顯比Android高了,于是各類IOS培訓也火曝起來。中華大地向來不缺速成人才,估計再過一陣子IOS工程師也是白菜價了。

會Android、IOS只是基本要求,不信去51job搜搜Android或IOS,職位要求里肯定其他要求。

1.2.2 業(yè)務邏輯

舉個簡單例子,做一個打卡軟件,你需要考慮這些東西:

①正常流程是上班下班時都要打卡

②有人忘記了怎么辦?作為異常記錄在案,推送給管理員

③請假時怎么處理?

④加班怎么處理?

對于更復雜的例子,視頻會議系統(tǒng)里,各個模塊怎么對接,各類協(xié)議怎么兼容,你不深入這個行業(yè),你根本搞不清楚。

應用開發(fā)的職位永遠是最多的,入門門檻也低。基本上只要你會C語言,面試時表現(xiàn)比較得體,一般公司都會給你機會。因為:

①你進公司后,還需要重新培訓你:熟悉它們的業(yè)務邏輯。

②你要做的,基本也就是一個個模塊,框架都有人給你定好了,你去填代碼就可以了。

說點讓你高興的事:軟件公司里,做領導的基本都是寫應用程序的(當然還有做市場的)。寫應用程序的人,對外可以研究市場接待客戶,對內(nèi)可以管理程序員完成開發(fā),不讓他做領導讓誰做?

如果你的志向是寫應用程序,那么我建議你先練好基本功:數(shù)據(jù)結(jié)構(gòu)、算法是必備,然后憑興趣選擇數(shù)據(jù)庫、網(wǎng)絡編程等等進行深入鉆研。

最后,選擇你看好的、感興趣的行業(yè)深耕個10年吧。做應用開發(fā)的人選擇了某個行業(yè),后面是很難換行業(yè)的,選行很重要!

1.3 操作系統(tǒng)領域

UCOS太簡單,VxWorks太貴太專業(yè),Windows不玩嵌入式了,IOS不開源,所以對于操作系統(tǒng)領域我們也只能玩Linux了。

在嵌入式領域Linux一家獨大!

Android呢?Android跟QT一樣,都是一套GUI系統(tǒng)。只是Google的實力太強了,現(xiàn)在Android無處不在,所以很多時候Linux+Android成了標配。注意,在這里我們關心的是Android的整個系統(tǒng)、里面的機制,而不是學習幾個API然后開發(fā)界面程序。操作系統(tǒng)領域所包含的內(nèi)容,簡單地說,就是制作出一臺裝好系統(tǒng)的專用“電腦”,可以分為:

①為產(chǎn)品規(guī)劃硬件:

按需求、性能、成本選擇主芯片,搭配周邊外設,交由硬件開發(fā)人員設計。

②給單板制作、安裝操作系統(tǒng)、編寫驅(qū)動

③定制維護、升級等系統(tǒng)方案

④還可能要配置、安裝Android等GUI系統(tǒng):

⑤為應用開發(fā)人員配置開發(fā)環(huán)境

⑥從系統(tǒng)角度解決疑難問題

這個領域,通常被稱為“底層系統(tǒng)”或是“驅(qū)動開發(fā)”。

先解決2個常見誤區(qū):

①這份工作是寫驅(qū)動程序嗎?

看看上面羅列的6點,應該說,它包含驅(qū)動開發(fā),但遠遠不只有驅(qū)動開發(fā)。

②我們還需要寫驅(qū)動嗎?不是有原廠嗎?或者只需要改改就可以?

經(jīng)常有人說,芯片原廠都做好驅(qū)動了,拿過來改改就可以了。如果,你的硬件跟原廠的公板完全一樣,原廠源碼毫無BUG,不想優(yōu)化性能、削減成本,不想做一些有特色的產(chǎn)品,那這話是正確的。

但是在這個不創(chuàng)新就是找死的年代,可能嗎?!原因有二:

①即使只是修改代碼,能修改的前提是能理解;能理解的更好煅煉方法是從零寫出若干驅(qū)動程序。

②很多時候,需要你深度定制系統(tǒng)。

以前做聯(lián)發(fā)科手機只需要改改界面就可以出貨了,現(xiàn)在山寨廠一批批倒下。大家都使用原廠的方案而不加修改時,最后只能拼成本。

舉個例子,深圳有2家做交通攝像頭、監(jiān)控攝像頭的廠家,他們曾經(jīng)找我做過4個項目:

①改進廠家給的SD卡驅(qū)動性能,使用DMA。

②換了Flash型號后,系統(tǒng)經(jīng)常出問題,需要修改驅(qū)動BUG。

③觸摸屏點擊不準,找原因,后來發(fā)現(xiàn)是旁路電容導致的。

④裁減成本,把4片DDR換為2片DDR,需要改bootloader對DDR的初始化。

這些項目都很急,搞不定就無法出貨,這時候找原廠?除非你是中興華為等大客戶,否則誰理你?

我在中興公司上班時,寫驅(qū)動的時間其實是很少的,大部分時間是調(diào)試:系統(tǒng)調(diào)優(yōu),上幫APP工程師、下幫硬件工程師查找問題。我們從廠家、網(wǎng)上得到的源碼,很多都是標準的,當然可以直接用。但是在你的產(chǎn)品上也許優(yōu)化一下更好。比如我們可以把攝像頭驅(qū)動和DMA驅(qū)動揉合起來,讓攝像頭的數(shù)據(jù)直接通過DMA發(fā)到DSP去。我們可以在軟件和硬件之間起橋梁作用,對于實體產(chǎn)品,有可能是軟件出問題也可能是硬件出問題,一般是底層系統(tǒng)工程師比較容易找出問題。

當硬件、軟件應用出現(xiàn)問題,他們解決不了時,從底層軟件角度給他們出主意,給他們提供工具。再比如方案選擇:芯片性能能否達標、可用的BSP是否完善等等,這只能由負責整個方案的人來考慮,他必須懂底層。

在操作系統(tǒng)領域,對知識的要求很多:

①懂硬件知識才能看懂電路圖

②英文好會看芯片手冊

③有編寫、移植驅(qū)動程序的能力

④對操作系統(tǒng)本身有一定的理解,才能解決各類疑難問題

⑤理解Android內(nèi)部機制

⑥懂匯編、C語言、C++、JAVA

它絕對是一個大坑,沒有興趣、沒有毅力的人慎選。

①這行的入門,絕對需要半年以上,即使全天學習也要半年。

②它的職位,絕對比APP的職位少

③并且你沒有1、2年經(jīng)驗,招你到公司后一開始你做的還是APP。

優(yōu)點就是:

①學好后,行業(yè)通殺,想換行就換行;想自己做產(chǎn)品就自己做產(chǎn)品。

②相比做應用程序的人,不會被經(jīng)常變動的需求搞得天天加班。

③門檻高,當然薪水相對就高。

操作系統(tǒng)領域,我認為適合于這些人:

①硬件工程師想轉(zhuǎn)軟件工程師,從底層軟件入門會比較好

②單片機工程師,想升級一下。會Linux底層的人肯定會單片機,會單片機的人不一定會Linux。

③時間充足的學生:如果你正讀大二大三,那么花上半年學習嵌入式Linux底層多有益處。

④想掌握整個系統(tǒng)的人,比如你正在公司里寫APP,但是想升為系統(tǒng)工程師,那么底層不得不學。

⑤想自己創(chuàng)業(yè)做實體產(chǎn)品的工程師,你有錢的話什么技術都不用學,但是如果沒錢又想做產(chǎn)品,那么Linux底層不得不學。

⑥做Linux APP的人,沒錯,他們也要學習。

這部分人不需要深入,了解個大概就可以:bootloader是用來啟動內(nèi)核,Linux的文件系統(tǒng)(第1個程序是什么、做什么、各目錄干嘛用)、APP跟驅(qū)動程序的調(diào)用關系、工具鏈,有這些概念就可以了

本文中,就把操作系統(tǒng)默認為Linux,講講怎么學習嵌入式Linux+Android系統(tǒng)。

1.4 嵌入式Linux+Android系統(tǒng)包含哪些內(nèi)容

嵌入式Linux系統(tǒng)包含哪些東西?不要急,舉一個例子你就知道了。

①電腦一開機,那些界面是誰顯示的?

是BIOS,它做什么?一些自檢,然后從硬盤上讀入windows,并啟動它。

類似的,這個BIOS對應于嵌入式Linux里的bootloader。這個bootloader要去Flash上讀入Linux內(nèi)核,并啟動它。

②啟動windows的目的是什么?

當然運行應用程序以便上網(wǎng)、聊天什么的了。

這些上網(wǎng)程序、聊天程序在哪?

在C盤、D盤上。

所以,windows要先識別出C盤、D盤。在Linux下我們稱之為根文件系統(tǒng)。

③windows能識別出C盤、D盤,那么肯定有讀寫硬盤的能力。

這個能力我們稱之為驅(qū)動程序。當然不僅僅是操作硬盤,還有網(wǎng)卡、USB等等其他硬件。嵌入式Linux能從Flash上讀出并執(zhí)行應用程序,肯定也得有Flash的驅(qū)動程序啊,當然也不僅僅是Flash。

簡單地說,嵌入式LINUX系統(tǒng)里含有bootloader、內(nèi)核、驅(qū)動程序、根文件系統(tǒng)、應用程序這5大塊。而應用程序,我們又可以分為:C/C++、Android。

所以,嵌入式Linux+Android系統(tǒng)包含以下6部分內(nèi)容:

①bootloader

②Linux內(nèi)核

③驅(qū)動程序

④使用C/C++編寫的應用程序

⑤Android系統(tǒng)本身

⑥Android應用程序

Android跟Linux的聯(lián)系實在太大了,它的應用是如此廣泛,學習了Linux之后沒有理由停下來不學習Android。在大多數(shù)智能設備中,運行的是Linux操作系統(tǒng);它上面要么安裝有Android,要么可以跟Android手機互聯(lián)?,F(xiàn)在,Linux+Android已成標配。

2. 怎么學習嵌入式Linux操作系統(tǒng)

本文假設您是零基礎,以實用為主,用最快的時間讓你入門;后面也會附上想深入學習時可以參考的資料。

在實際工作中,我們從事的是“操作系統(tǒng)”周邊的開發(fā),并不會太深入學習、修改操作系統(tǒng)本身。

①操作系統(tǒng)具有進程管理、存儲管理、文件管理和設備管理等功能,這些核心功能非常穩(wěn)定可靠,基本上不需要我們修改代碼。我們只需要針對自己的硬件完善驅(qū)動程序

②學習驅(qū)動時必定會涉及其他知識,比如存儲管理、進程調(diào)度。當你深入理解了驅(qū)動程序后,也會加深對操作系統(tǒng)其他部分的理解

③Linux內(nèi)核中大部分代碼都是設備驅(qū)動程序,可以認為Linux內(nèi)核由各類驅(qū)動構(gòu)成

但是,要成為該領域的高手,一定要深入理解Linux操作系統(tǒng)本身,要去研讀它的源代碼。

在忙完工作,閑暇之余,可以看看這些書:

①趙炯的《linux內(nèi)核完全注釋》,這本比較薄,推薦這本。他后來又出了《Linux 內(nèi)核完全剖析》,太厚了,搞不好看了后面就忘記前面了。

②毛德操、胡希明的《LINUX核心源代碼情景分析》,此書分上下冊,巨厚無比。當作字典看即可:想深入理解某方面的知識,就去看某章節(jié)。

③其他好書還有很多,我沒怎么看,沒有更多建議

基于快速入門,上手工作的目的,您先不用看上面的書,先按本文學習。

2.1 入門路線圖

假設您是零基礎,我們規(guī)劃了如下入門路線圖。前面的知識,是后面知識的基礎,建議按順序?qū)W習。每一部分,不一定需要學得很深入透徹,下面分章節(jié)描述。

2.2 學習驅(qū)動程序之前的基礎知識

2.2.1 C語言

只要是理工科專業(yè)的,似乎都會教C語言。我見過很多C語言考試90、100分的,一上機就傻了,我懷疑他們都沒在電腦上寫過程序。

理論再好,沒有實踐不能干活的話,公司招你去干嘛?

反過來,實踐出真知,學習C語言,必須練練練、寫寫寫!

當你掌握基本語法后,就可以在電腦上練習一些C語言習題了;

當你寫過幾個C程序后,就可以進入下一階段的裸機開發(fā)了。

①不需要太深入

作為快速入門,只要你會編寫“Hello, world!”,會寫冒泡排序,會一些基礎的語法操作,暫時就夠了。

指針操作是重點,多練習;

不需要去學習過多的數(shù)據(jù)結(jié)構(gòu)知識,只需要掌握鏈表操作,其他不用學習,比如:隊列、二叉樹等等都不用學;不需要去學習任何的函數(shù)使用,比如文件操作、多線程編程、網(wǎng)絡編程等等;這些知識,在編寫Linux應用程序時會用,但是在操作系統(tǒng)特別是驅(qū)動學習時,用不著!

永往直前吧,以后碰到不懂的C語言問題,我們再回過頭來學習。

在后續(xù)的“裸機開發(fā)”中,會讓你繼續(xù)練習C語言,那會更實戰(zhàn)化。

C語言是在寫代碼中精進的。

②可以在Visual Studio下學習,也可以在Linux下學習,后者需要掌握一些編譯命令,我們暫時沒有提供C語言的教程,找一本C語言書,網(wǎng)上找找免費的C語言視頻(主要看怎么搭建環(huán)境),就可以自學了。

2.2.2 PC Linux基本操作:

對于PC Linux,我們推薦使用Ubuntu,在它上面安裝軟件非常簡便。

我們的工作模式通常是這樣:在Windows下閱讀、編寫代碼,然后把代碼上傳到PC Linux去編譯。實際上,Ubuntu的桌面系統(tǒng)已經(jīng)很好用了,我們拿到各種智能機可以很快上手,相信Ubuntu的桌面系統(tǒng)也可以讓你很快上手。為了提高工作效率,我們通常使用命令行來操作Ubuntu。

不用擔心,你前期只需要掌握這幾條命令就可以了,它們是如此簡單,脆列出它們:

①cd : Change Directory(改變目錄)

cd 目錄名// 進入某個目錄cd ..// cd “兩個點”:返回上一級目錄cd // cd “短橫”:返回上一次所在目錄

②pwd : Print Work Directory(打印當前目錄 顯示出當前工作目錄的絕對路徑)

③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  //對/work目錄及其下所有內(nèi)容,屬主改為book用戶,組改為book

⑧chmod : Change mode(改變權(quán)限),下面的例子很簡單粗暴

chmod 777 /work -R  // 對/work目錄及其下所有內(nèi)容,權(quán)限改為可讀、可寫、可執(zhí)行

⑨vi : Linux下最常用的編輯命令,使用稍微復雜,請自己搜索用法。

要練習這些命令,你可以進入Ubuntu桌面系統(tǒng)后,打開終端輸入那些命令;或是用SecureCRT、putty等工具遠程登錄Ubuntu后練習。

2.2.3 硬件知識

我們學習硬件知識的目的在于能看懂原理圖,看懂通信協(xié)議,看懂芯片手冊;不求能設計原理圖,更不求能設計電路板。

對于正統(tǒng)的方法,你應該這樣學習:

①學習《微機原理》,理解一個計算機的組成及各個部件的交互原理。

②學習《數(shù)字電路》,理解各種門電路的原理及使用,還可以掌握一些邏輯運算(與、或等)。

③《模擬電路》?好吧,這個不用學,至少我在工作中基本用不到它,現(xiàn)在全忘光了。

就我個人經(jīng)驗來說,這些課程是有用的,但是:

①原理有用,實戰(zhàn)性不強。

比如《微機原理》是基于x86系統(tǒng),跟ARM板子有很大差別,當然原理相通。

我是在接觸嵌入式編程后,才理解了這些課程。

②每本書都那么厚,內(nèi)容都很多,學習時間過長,自學有難度。

針對這些校園教材的不足,并結(jié)合實際開發(fā)過程中要用到的知識點,我們推出了《學前班_怎么看原理圖》的系列視頻:

學前班第1課第1節(jié)___怎么看原理圖之GPIO和門電路.wmv

學前班第1課第2.1節(jié)_怎么看原理圖之協(xié)議類接口之UART.wmv

學前班第1課第2.2節(jié)_怎么看原理圖之協(xié)議類接口之I2C.wmv

學前班第1課第2.3節(jié)_怎么看原理圖之協(xié)議類接口之SPI.wmv

學前班第1課第2.4節(jié)_怎么看原理圖之協(xié)議類接口之NAND Flash.wmv

學前班第1課第2.5節(jié)_怎么看原理圖之協(xié)議類接口之LCD.wmv

學前班第1課第3節(jié)___怎么看原理圖之內(nèi)存類接口.wmv

學前班第1課第4.1節(jié)_怎么看原理圖之分析S3C2410開發(fā)板.wmv

學前班第1課第4.2節(jié)_怎么看原理圖之分析S3C2440開發(fā)板.wmv

學前班第1課第4.3節(jié)_怎么看原理圖之分析S3C6410開發(fā)板.wmv

即使你只具備初中物理課的電路知識,我也希望能通過這些視頻,讓你可以看懂原理圖,理解一些常見的通信協(xié)議;如果你想掌握更多的硬件知識,這些視頻也可以起個索引作用,讓你知道缺乏什么知識。

這些視頻所講到的硬件知識,將在《裸板開發(fā)》系列視頻中用到,到時可以相互對照著看,加深理解。

2.2.4 要不要專門學習Windows下的單片機開發(fā)

很多學校都開通了單片機的課程,很多人都是從51單片機、AVR單片機,現(xiàn)在比較新的STM32單片機開始接觸嵌入式領域,并且使用Windows下的開發(fā)軟件,比如keil、MDK等。

問題來了,要不要專門學習Windows下的單片機開發(fā)?

①如果這是你們專業(yè)的必修課,那就學吧

②如果你的專業(yè)跟單片機密切相關,比如機械控制等,那就學吧

③如果你只是想從單片機入門,然后學習更廣闊的嵌入式Linux,那么放棄在Windows下學習單片機吧!

理由如下:

①Windows下的單片機學習,深度不夠

Windows下有很好的圖形界面單片機開發(fā)軟件,比如keil、MDK等。

它們封裝了很多技術細節(jié),比如:

你只會從main函數(shù)開始編寫代碼,卻不知道上電后第1條代碼是怎么執(zhí)行的;

你可以編寫中斷處理函數(shù),但是卻不知道它是怎么被調(diào)用的;

你不知道程序怎么從Flash上被讀入內(nèi)存;

也不知道內(nèi)存是怎么劃分使用的,不知道棧在哪、堆在哪;

當你想裁剪程序降低對Flash、內(nèi)存的使用時,你無從下手;

當你新建一個文件時,它被自動加入到工程里,但是其中的機理你完全不懂;

等等等。

②基于ARM+Linux裸機學習,可以學得更深,并且更貼合后續(xù)的Linux學習。實際上它就是Linux下的單片機學習,只是一切更加原始:所有的代碼需要你自己來編寫;哪些文件加入工程,需要你自己來管理。

在工作中,我們當然傾向于使用Windows下更便利的工具,但是在學習階段,我們更想學習到程序的本質(zhì)。

一切從零編寫代碼、管理代碼,可以讓我們學習到更多知識:

你需要了解芯片的上電啟動過程,知道第1條代碼如何運行;

你需要掌握怎么把程序從Flash上讀入內(nèi)存;

需要理解內(nèi)存怎么規(guī)劃使用,比如棧在哪,堆在哪;

需要理解代碼重定位;

需要知道中斷發(fā)生后,軟硬件怎么保護現(xiàn)場、跳到中斷入口、調(diào)用中斷程序、恢復現(xiàn)場;

你會知道,main函數(shù)不是我們編寫的第1個函數(shù);

你會知道,芯片從上電開始,程序是怎么被搬運執(zhí)行的;

你會知道,函數(shù)調(diào)用過程中,參數(shù)是如何傳遞的;

你會知道,中斷發(fā)生時,每一個寄存器的值都要小心對待;

等等等。

你掌握了ARM+Linux的裸機開發(fā),再回去看Windows下的單片機開發(fā),會驚呼:怎么那么簡單!并且你會完全明白這些工具沒有向你展示的技術細節(jié)。

驅(qū)動程序=Linux驅(qū)動程序軟件框架+ARM開發(fā)板硬件操作,我們可以從簡單的裸機開發(fā)入手,先掌握硬件操作,并且還可以:

①掌握如何在PC Linux下編譯程序、把程序燒錄到板子上并運行它

②為學習bootloader打基礎:掌握了各種硬件操作后,后面一組合就是一個bootloader

2.2.5 為什么選擇ARM9 S3C2440開發(fā)板,而不是其他性能更好的?

有一個錯誤的概念:S3C2440過時了、ARM9過時了。

這是不對的,如果你是軟件工程師,無論是ARM9、ARM11、A8還是A9,對我們來說是沒有差別的。

一款芯片,上面有CPU,還有眾多的片上設備(比如UART、USB、LCD控制器)。我們寫程序時,并不涉及CPU,只是去操作那些片上設備。

所以:差別在于片上設備,不在于CPU核;差別在于寄存器操作不一樣。

因為我們寫驅(qū)動并不涉及CPU的核心,只是操作CPU之外的設備,只是讀寫這些設備的寄存器。

之所以推薦S3C2440,是因為它的Linux學習資料最豐富,并有配套的第1、2期視頻。

2.2.6 怎么學習ARM+Linux的裸機開發(fā)

學習裸機開發(fā)的目的有兩個:

①掌握裸機程序的結(jié)構(gòu),為后續(xù)的u-boot作準備

②練習硬件知識,即:怎么看原理圖、芯片手冊,怎么寫代碼來操作硬件

后面的u-boot可以認為是裸機程序的,我們在裸機開發(fā)中逐個掌握各個部件,再起來就可以得到一個u-boot了。

后續(xù)的驅(qū)動開發(fā),也涉及硬件操作,你可以在裸機開發(fā)中學習硬件知識。

注意:如果你并不關心裸機的程序結(jié)構(gòu),不關心bootloader的實現(xiàn),這部分是可以先略過的。在后面的驅(qū)動視頻中,我們也會重新講解所涉及的硬件知識。

推薦兩本書:杜春蕾的《ARM體系結(jié)構(gòu)與編程》,韋東山的《嵌入式Linux應用開發(fā)完全手冊》。后者也許是國內(nèi)第1本涉及在PC Linux環(huán)境下開發(fā)的ARM裸機程序的書,如果我說錯了,請原諒我書讀得少。

對于裸機開發(fā),我們提供有2部分視頻:

①環(huán)境搭建

第0課第1節(jié)_剛接觸開發(fā)板之接口接線.wmv

第0課第2節(jié)_剛接觸開發(fā)板之燒寫裸板程序.wmv

第0課第3節(jié)_剛接觸開發(fā)板之重燒整個系統(tǒng).wmv

第0課第4節(jié)_剛接觸開發(fā)板之使用vmwae和預先做好的ubuntu.wmv

第0課第5節(jié)_剛接觸開發(fā)板之u-boot打補丁編譯使用及建sourceinsight工程.wmv

第0課第6節(jié)_剛接觸開發(fā)板之內(nèi)核u-boot打補丁編譯使用及建sourceinsight工程.wmv

第0課第7節(jié)_剛接觸開發(fā)板之制作根文件系統(tǒng)及初試驅(qū)動.wmv

第0課第8節(jié)_在TQ2440,MINI2440上搭建視頻所用系統(tǒng).wmv

第0課第9節(jié)_win7下不能使用dnw燒寫的替代方法.wmv

……………..未完

原文鏈接:

網(wǎng)頁鏈接

相信你在網(wǎng)上也看了很多關于嵌入式這方面的資料,我也就不在網(wǎng)上ctrl+C,ctrl+v了嵌入式這個概念很寬泛,很多東西在學習中自然就慢慢明白了。你現(xiàn)在開始學C語言,不知道數(shù)電,微機原理這些學了沒?如果沒學亮孫,也無所謂。直接用C語言寫程序也行。單片機就選51的,畢竟是最經(jīng)典的,關于51資料多如牛毛,遇到問題也好找答案。另外我想強調(diào)一點,51是最簡單的機型,也許現(xiàn)在在實際應用中不如別的芯片。但是對于初學者是最容易入門的,所以不要聽網(wǎng)上某些人單片機已經(jīng)過時了的言論。學習總是個積累的過程,特別是學這個,涉及到的知識點很多,更需要點耐心,不要指望短時間內(nèi)就可以搞定,要堅持!書就不用買了吧,但必須買塊51單片機的開發(fā)板,也不貴我以前買的150塊錢左右,淘寶上很多你自己可以去搜。關于51的教材,網(wǎng)上的電子檔教很多,基本也都大同小異,買51單片機的開發(fā)板的時候里面一般也都包含教程資料。個人建議你看下數(shù)電,和微機原理方面的書籍,基礎的東西還是要了解下。另外你可以在網(wǎng)上找下郭天祥51單片的視頻教程,這個教程非常好,認真的看,邊看邊做!匯編的事情,怎么肆鍵含說呢,個人認為學習單片機對硬件結(jié)構(gòu)必須有細致的了解,匯編語言可以直接對硬件進行控制,用匯編語言編程可以更加深入的去了解認識硬件,個人認為:搞硬件的不懂匯編只能算個門外漢!你現(xiàn)在才開始學,也有C語言的基礎,那么還是跟著郭天祥的那個視頻用C語言邊做邊學。有一定基礎后也要慢慢嘗試用匯編寫一點簡單的程序。強調(diào)一點:匯編很重要,特別是做控制方面的程序時。裂笑雖然不同類型的芯片匯編都不一樣,接觸多了會發(fā)現(xiàn),那些其實也都相通的。哦還有不知道你學過CAD沒,沒的話還是找本CAD方面的書看下:protel或者DXP都行,不然可能讀不懂電路圖最后說一句:要有點耐心!呵呵有問題直接Q我,ID就是我的Q號,注明百度!學習愉快

一、學習嵌入式,你可以做什么?

學習嵌入式必須勤學苦練。華清遠見老師講一講具體怎么來學習嵌入式。

學習嵌入式你可以做:

手機、PDA、MP3、MP4、遙控玩具、psp、相機、家電控制(洗衣機、電飯煲等)、汽車導航儀,只要稿陪跟電子控制相關的,

二、如何學習?

計算機這行都是偏向于實踐的課程,所以要注重動手能力。

1&2、c\c++語言,這稿鏈是計算機行業(yè)的必修課,必須找扎實實學好。可以安裝 turbo c編譯器為開發(fā)環(huán)境,聯(lián)系C語言編程;

安裝vc++6.0學習C++編程。

在這至于,鍵敬蠢你可以學習一點匯編語言,知道可執(zhí)行文件到底是怎么執(zhí)行的。學習一點MFC編程,可以做相應的窗口界面編程。

關于linuxlcd原理的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。

香港服務器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務提供商,擁有超過10年的服務器租用、服務器托管、云服務器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。


分享標題:深入淺出:解析Linux下LCD顯示原理(linuxlcd原理)
鏈接地址:http://www.dlmjj.cn/article/dpijjdo.html