FMUSER更輕鬆地傳輸視頻和音頻!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org ->荷蘭語
sq.fmuser.org ->阿爾巴尼亞人
ar.fmuser.org ->阿拉伯語
hy.fmuser.org - >亞美尼亞
az.fmuser.org ->阿塞拜疆
eu.fmuser.org ->巴斯克
be.fmuser.org ->白俄羅斯語
bg.fmuser.org - >保加利亞
ca.fmuser.org ->加泰羅尼亞語
zh-CN.fmuser.org ->中文(簡體)
zh-TW.fmuser.org - >中國(繁體)
hr.fmuser.org ->克羅地亞語
cs.fmuser.org ->捷克
da.fmuser.org ->丹麥語
nl.fmuser.org - >荷蘭
et.fmuser.org ->愛沙尼亞語
tl.fmuser.org ->菲律賓
fi.fmuser.org ->芬蘭語
fr.fmuser.org - >法國
gl.fmuser.org ->加利西亞語
ka.fmuser.org ->喬治亞
de.fmuser.org ->德語
el.fmuser.org - >希臘
ht.fmuser.org ->海地克里奧爾語
iw.fmuser.org ->希伯來語
hi.fmuser.org ->印地語
hu.fmuser.org - >匈牙利
is.fmuser.org ->冰島語
id.fmuser.org ->印尼語
ga.fmuser.org ->愛爾蘭
it.fmuser.org - >意大利
ja.fmuser.org ->日語
ko.fmuser.org ->韓文
lv.fmuser.org ->拉脫維亞
lt.fmuser.org - >立陶宛
mk.fmuser.org ->馬其頓語
ms.fmuser.org ->馬來語
mt.fmuser.org ->馬耳他語
no.fmuser.org - >挪威
fa.fmuser.org ->波斯語
pl.fmuser.org ->波蘭語
pt.fmuser.org ->葡萄牙語
ro.fmuser.org - >羅馬尼亞
ru.fmuser.org ->俄語
sr.fmuser.org ->塞爾維亞語
sk.fmuser.org ->斯洛伐克
sl.fmuser.org - >斯洛文尼亞
es.fmuser.org ->西班牙語
sw.fmuser.org ->斯瓦希里語
sv.fmuser.org ->瑞典語
th.fmuser.org - >泰國
tr.fmuser.org ->土耳其語
uk.fmuser.org ->烏克蘭語
ur.fmuser.org ->烏爾都語
vi.fmuser.org - >越南
cy.fmuser.org ->威爾士語
yi.fmuser.org - >意第緒語
對於應用程序開發:需要很好地學習C語言,數據結構,JAVA等。 在嵌入式應用程序開發和PC上的應用程序開發中,沒有什麼特別需要注意的。 也許您說您需要優化嵌入式系統,是的,您需要優化,但是未優化的程序與PC上的程序開發沒有什麼不同。 另外,當您具有優化能力時,您將不再習慣問這個問題。 對於一個特定的例子,例如開發接口,我們在PC上使用VC;在開發環境中,我們使用VC。 在嵌入式Linux中,我們可能會使用QT和Android。 這時,您應該學習QT和Android編程。 但是基礎仍然是C或JAVA,並在此基礎上熟悉它們的接口。 如果您學習過VC,則需要花費一些時間來理解這些類和控件。
如果您想學習底層系統,這是我的專長,但是我可以說一點。
在回答這個問題之前,讓我先回答:很多人問我,是學習駕駛還是學會申請? 我只能說這是基於興趣的,並且驅動程序和應用程序不是完全分開的。
1.我們所討論的驅動程序不僅限於硬件操作,還包括諸如操作系統原理以及進程睡眠和喚醒調度之類的概念。 如果您想編寫一個好的應用程序,並且想要更好地解決該應用程序遇到的問題,則應該了解此知識。
2.較低的應用障礙,尤其是當前的ANDROID純JAVA。 我個人認為應用程序開發路徑精通業務。 例如,在通信行業,IPTV行業和移動電話行業中,您了解該行業的需求。 因此,領導者主要是應用程序。
3.被驅動。 實際上,我不想將其稱為“成為驅動程序”,但我想將其稱為“成為底層系統”。 一旦完成,這將殺死所有行業。 我已經工作了幾年,已經製造了手機,IPTV和會議電視,但是這些產品對我來說沒有什麼區別,因為我只做底層工作。 他們的事與我無關。 當應用程序出現問題並且他們無法解決時,我將從內核的角度為他們提供一個想法,並為他們提供工具。 我個人認為我是底層開發方向的技術專家。
4.實際上,在執行底層或執行應用程序之間沒有界限。 如果您有底層的經驗,那麼在執行應用程序時會感到很自在。 憑藉業務經驗,您可以了解底層知識,並且很快就可以組建團隊。
回到如何學習的問題。 嵌入式Linux底層系統包含什麼? 不用擔心,通過舉一個例子您會知道的。
1.打開計算機電源後,誰會顯示這些界面? 它是BIOS,它有什麼作用? 進行一些自檢,然後從硬盤讀取窗口並啟動它。 同樣,此BIOS對應於嵌入式Linux中的引導程序。 該引導程序需要讀取Flash上的Linux內核並啟動它。
2.啟動Windows的目的是什麼? 當然是在線聊天之類的。 這些互聯網和聊天工具在哪裡? 在C驅動器和D驅動器上。 因此,Windows必須首先識別C驅動器和D驅動器。 我們稱其為Linux下的根文件系統。
3. Windows可以識別C驅動器和D驅動器,因此它必須能夠讀寫硬盤驅動器。 所涉及的事物稱為驅動程序。 當然,它不僅是硬盤,而且是網卡,USB等。 嵌入式Linux可以從Flash讀取和執行應用程序,並且還必須具有Flash驅動程序。 當然,不只是Flash。
首先讓我們談談它,嵌入式LINUX包含四個主要部分:引導加載程序,內核,驅動程序和根文件系統。
一,引導程序
這是一個稍微複雜的裸板程序。 但是,要理解和編寫此裸板程序並不容易。 Windows下有用的工具削弱了我們的編程能力。
許多人在玩嵌入式遊戲時會立即使用ADS和KEIL。 你能回答這些問題嗎?
1.上電後,CPU在哪裡取指令執行?
答:通常,指令來自Flash。
2.但是Flash只能讀取,不能直接寫入。 如果我使用全局變量,這些全局變量在哪裡?
答:全局變量應該在內存中
3.那麼誰將全局變量存儲在內存中呢?
答:您能回答長期使用ADS和KEIL的朋友嗎? 這需要“重定位”。 在ADS或KEIL中,重定位代碼由製造這些工具的公司為您編寫。 你讀過嗎?
4.內存太大,如何知道將“最初存儲在Flash中的內容”讀取到內存的地址?
答:此地址由“鏈接腳本”確定,ADS中有分散文件,KEIL中有類似文件。 但是,您研究過嗎?
5.您說的重定位是將程序從Flash複製到內存中,以便該程序可以讀取Flash? 答:是的,您需要能夠操作Flash。 當然,不僅這些,而且還設置時鐘以使系統運行更快等等。 首先讓我們在這裡提問和回答,引導加載程序是一個裸板程序,實際上具有三個要點:
1.硬件操作
2.了解ARM系統處理器
3.程序的基本概念:重定位,堆棧,代碼段,數據段,BSS段等。
對於硬件的操作,您需要查看原理圖和芯片手冊。 這需要一定數量的硬件知識。 它並不需要您能夠設計硬件,但至少需要了解它。 它不需要能夠理解模擬電路,而能夠理解數字電路。 我在學校學習了這種能力。 兩本書(我忘了這本書的書名)就足夠了。 但是我懷疑您是否有足夠的耐心來完成這兩本書的閱讀。 我不知道現在是否有更快的書。 如果您想使其快速運行,請先放開它,如果您不明白,只需詢問Google並發布即可。
另外,必須閱讀芯片手冊,不要看中文,只看英文。 剛開始時非常痛苦,但是後來,一旦熟悉了語法和詞彙,就很容易閱讀任何芯片手冊。
要了解ARM系統處理器,請參閱Du Chunlei。 它討論彙編指令,異常模式,MMU等。僅這三部分內容需要您理解。
該程序的基本概念,當然是王者,要看彙編的原理。 不幸的是,這種類型的書絕對是天堂般的書。 我建議您不要看,除非您是超級天才。 只是看還有我寫的第一個視頻,不用擔心,不要花錢。 在觀看視頻並進行與硬件相關的實驗之後,這些概念將變得清晰。 我還沒有找到關於這些概念的第二本書或視頻集,這讓我盲目自誇。 對於引導加載程序,我在學習時首先觀看了它,然後我自己編寫了程序,並在各種硬件(例如GPIO,時鐘,SDRAM,UART和NAND)上進行了所有實驗。 如果您將它們弄清楚,則將它們組合在一起很容易理解u-boot。 綜上所述,要了解硬件原理圖和芯片手冊,您需要自己查找信息。 其餘的,只需按照以及要學習的視頻的第一階段。
二,內核
想要入門的人應該先跳過內核學習,然後學習如何直接編寫驅動程序。
要成為高手,內核必須具有深刻的理解。 請注意,我在談論理解,我並不希望編寫內核。
了解內部的調度機制,內存管理機制,文件管理機制等。
推薦兩本書:
1.通讀,請仔細閱讀本書(浮動社會強調速度)
2.選擇閱讀,想知道哪個部分閱讀哪個部分
三,開車
驅動程序由兩部分組成:硬件本身的操作和驅動程序的框架。
再次是硬件。 仍然有必要了解原理圖和芯片手冊。 多加練習。 說到驅動程序框架,有一些書籍對其進行了介紹。 LDD3是一本由外國人寫的書,介紹了許多概念,值得一讀。 但是,其作用僅限於引入概念。 我基本上是用它來熟悉入門之前的概念的,然後在開始使用後將其丟棄。
關於驅動程序的更全面的介紹應該是宋寶華的。 老實說,我只閱讀目錄。 很多人說是的,我在這裡推薦。
如果您想深入了解某個領域,絕對是超五星級的推薦。 您不希望閱讀它,超過5頁,上下兩冊。 當我不確定某個區域時,我會仔細檢查一下。 本書的任何部分都可以涵蓋兩三百頁,這非常詳細。 並帶您分析具有特定目標的內核源代碼。 它以linux 1,800為例,但原理相同,也適用於其他版本的linux。 還有其他介紹嗎? 當然,還有第二期魏東山Linux視頻。 “嵌入式Linux應用程序開發的完整手冊”對驅動程序的討論不多,並且不夠深入。
嘗試為開發板中涉及的所有硬件編寫驅動程序。 如果您有問題,應該首先“痛苦地思考”。 在思考的過程中,您將連接很多不相關的知識,並最終將其理解。
四,根文件系統
您是否考慮過以下兩個問題:
1.對於Linux生產的產品,有些用於監視,有些用作手機,有些用作平板電腦。 那麼,在啟動內核之後,在掛載根文件系統之後,應該啟動哪個應用程序?
答:內核不知道或不在乎應該啟動哪個用戶程序。 它僅啟動與/ sbin / init對應的init應用程序。
顯然,此應用程序必須讀取配置文件並根據配置文件啟動用戶程序(監視,手動界面,平板電腦界面等)。 這個問題提醒我們文件系統的內容具有某些約定,例如/ sbin / init,因此需要一個配置文件。
2.您是否考慮過誰實現了您編寫的hello和world程序中使用的printf?
答:該功能不是由您實現的,而是由庫函數實現的。 當它運行時,它必須找到該庫。
這個問題提醒我們文件系統中仍然存在庫。 這是一個簡單的問題和答案。 如果您想了解更多信息,可以查看busybox的init.c來了解init進程的作用。 當然,您也可以在。
我的學習經歷
1.在學校的時候,我主修物理和電子學。 實際上,我沒有在本課程中教過如何設計電路,而只是教了一些有關電子電路的知識。 PCB的設計由我自己在實驗室裡教過。 我只設計了一個2層板,現在我幾乎忘了它。 但是它保留了讀取原理圖和芯片手冊的能力。
2.我獲得了軟件學位,並且對軟件設計非常感興趣,但是我只學習C語言和數據庫。 我很感興趣地做了很多比賽問題。 我不能參加比賽,但是我有紮實的C語言練習。
3.在第一家公司的實驗室中,我設計了一些簡單的PCI卡並編寫了Windows驅動程序
4.在第二家公司中,使用51單片機作為車載電話,開始走上純軟件之路。
5.我開始感到單片機的缺點。 我辭職了半年,秘密學習Linux,從如何操作紅帽開始。 首先要看一下它,然後編寫裸板程序來操作硬件,然後分析u-boot。 同時,我對LINUX框架有了一些了解。
在編寫裸板時,建議您加深對中斷的理解。 內核使用中斷來完成各種功能。
6.分析u-boot之後,開始簡單的驅動程序編程。 這時候,能力還是很弱的。
7.開始在中興通訊工作,工作了2年,編寫了各種驅動程序,解決了各種問題(駕駛問題,幫助定位應用程序問題),並且能力得到了鍛煉。
|
輸入電子郵件以獲取驚喜
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org ->荷蘭語
sq.fmuser.org ->阿爾巴尼亞人
ar.fmuser.org ->阿拉伯語
hy.fmuser.org - >亞美尼亞
az.fmuser.org ->阿塞拜疆
eu.fmuser.org ->巴斯克
be.fmuser.org ->白俄羅斯語
bg.fmuser.org - >保加利亞
ca.fmuser.org ->加泰羅尼亞語
zh-CN.fmuser.org ->中文(簡體)
zh-TW.fmuser.org - >中國(繁體)
hr.fmuser.org ->克羅地亞語
cs.fmuser.org ->捷克
da.fmuser.org ->丹麥語
nl.fmuser.org - >荷蘭
et.fmuser.org ->愛沙尼亞語
tl.fmuser.org ->菲律賓
fi.fmuser.org ->芬蘭語
fr.fmuser.org - >法國
gl.fmuser.org ->加利西亞語
ka.fmuser.org ->喬治亞
de.fmuser.org ->德語
el.fmuser.org - >希臘
ht.fmuser.org ->海地克里奧爾語
iw.fmuser.org ->希伯來語
hi.fmuser.org ->印地語
hu.fmuser.org - >匈牙利
is.fmuser.org ->冰島語
id.fmuser.org ->印尼語
ga.fmuser.org ->愛爾蘭
it.fmuser.org - >意大利
ja.fmuser.org ->日語
ko.fmuser.org ->韓文
lv.fmuser.org ->拉脫維亞
lt.fmuser.org - >立陶宛
mk.fmuser.org ->馬其頓語
ms.fmuser.org ->馬來語
mt.fmuser.org ->馬耳他語
no.fmuser.org - >挪威
fa.fmuser.org ->波斯語
pl.fmuser.org ->波蘭語
pt.fmuser.org ->葡萄牙語
ro.fmuser.org - >羅馬尼亞
ru.fmuser.org ->俄語
sr.fmuser.org ->塞爾維亞語
sk.fmuser.org ->斯洛伐克
sl.fmuser.org - >斯洛文尼亞
es.fmuser.org ->西班牙語
sw.fmuser.org ->斯瓦希里語
sv.fmuser.org ->瑞典語
th.fmuser.org - >泰國
tr.fmuser.org ->土耳其語
uk.fmuser.org ->烏克蘭語
ur.fmuser.org ->烏爾都語
vi.fmuser.org - >越南
cy.fmuser.org ->威爾士語
yi.fmuser.org - >意第緒語
FMUSER更輕鬆地傳輸視頻和音頻!
聯絡我們
分類
電子通訊