當前位置:首頁 » 網頁前端 » 嵌入式web開發教程
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

嵌入式web開發教程

發布時間: 2022-05-06 01:39:32

A. web前端開發小白快速入門的10個方法你知道嗎

10種方式助初學者更快入門web前端,以下是關於web前端方面的教程知識點。web前端是app開發、h5網頁等主流的程序語言,而且待遇報酬高,較其他計算機語言更加容易入門。
10種方式助初學者更快入門web前端:
1.與其他程序員聊天
這是最 好的靈感來源,因為,他們會有一些你想不到的點子。即使是一些程序員朋友、一個編程小組或甚至是一個會議都行。將所有這些想法混合起來肯定會給你一個新的視角。
2.和非程序員一起聊天
首先,在那些讓你覺得快樂或挑戰思維的人身邊,會讓人健康,無論他們是否會寫代碼。第二,他們可以從用戶的角度給你靈感。什麼會讓他們對計算機感到失望?你能想出解決方案嗎?
3.有一個專用的工作區
如果不可能有一個專門的空間,那麼至少確保工作時能夠安靜,以便於你可以專注於計算機,而不受干擾。讓這個地方成為你的「革命根據地」。確保椅子舒適,可以支撐背部。手邊備好水。不要一整天坐著不動——保持健康。
4.有良好的開發環境
上一個方法提示的軟體版本。不在乎你使用哪個編輯器,但確保你使用一個可以給你一些力量和靈活性的編輯器。總是使用源代碼控制——尤其我建議你學習git,因為它會教你概念。始終備份工作。所有這一切將防止你在你不使用它們時可能會遭遇的極度灰心喪氣,從而失去工作。
5.秉持開放的態度
閱讀你尊敬的程序員的Twitter Feed和博客。RSS閱讀器,例如Ruby Inside或者老式的Planets,都可以是很好的新聞來源,因為它們會添加突出的新程序員,而不必你去搜索。選擇一些你通常不會閱讀的主題的博客,並訂閱它們。
是的,這可以讓你陷入閱讀代碼而不寫代碼的陷阱,但進入更大的編碼生態系統對你是有益的,是激發思緒的源頭。
web前端開發小白快速入門的10個方法
6.閱讀優秀的代碼
想想你喜歡的一些軟體,然後看看軟體的源代碼。有什麼問題?你如何從中學習,或者更好的是,你可以怎麼改善這個軟體?有很多好代碼的源,但GitHub必然是最 好的之一。GitHub博客上的GitHub Rebase系列列出了一些值得注意的新項目,如果你想要了解更多細節的話。
7.學習一門新的語言
這是一個經常被提到的經典建議。我建議學習一些以下類別中提到的東西:
中級:C,C ++
面向對象:Ruby,Python,Java,C#
Functional:Scheme,Haskell,Erlang
Shell:Bash,Zsh,awk,sed
基於Set:SQL
你所知道的語言越多,你就越需要用任意的語言來思考問題。你能以更多的方式思考,你就越容易找到有趣的方法來解決問題,因此找到一個激動人心的項目。(當然,不要局限於這個列表。)
8.學習好的技巧
而不是一種特定的語言,從書中學習好的通用技術。
9.找一個娛樂項目
有一個娛樂項目是很令人愉快的,當你在其他項目上受到挫折時,你就可以轉而去搞搞娛樂項目。不管是什麼樣的娛樂項目,只要你有即可。不要感到被迫分享它或使它成為某種成功——它只是幫助你解決問題的玩意兒。
10.寫一個游戲
很多人認為編寫游戲是在浪費時間,因為很少有獨立游戲在商業上是可行的,但如果你是玩家,那麼還是寫一個吧。它是治療性的,有很多深刻的概念會在你在工作的時候自然而然地浮現在你腦中。我就寫了一些小游戲,幾乎所有都沒有發布過;它們是試驗,也是寶貴的經驗財富。

B. 嵌入式web伺服器如何燒寫到開發板 無OS

硬燒啊,那你要有晶元或開發板的手冊才可以哦
1.通過BDM或者JTAG介面的調試器或者Flash燒寫器。
2.燒寫的具體地址就要看你的硬體了,把你的手冊拿出來,找到開發板的說名以及晶元的datasheet文件,還要找到燒寫的物理地址
3.原始的Flash設備並不具備如文件系統一樣的結構,也不包含任何文件形式的文件頭,所以你的二進制文件必須要包含文件頭。
4.然後就是燒寫了,有Xshell,超級終端。。。。。
具體的就自己想辦法吧

C. 嵌入式開發入門教程

http://www.youku.com/playlist_show/id_2133325.html
這個是下載地址,不過迅雷下載不了,你得安裝「狂雷視頻下載」(
www.raydown.com
),只要把上面的網址復制一下就可以下載了,速度很快的~

D. 嵌入式開發入門--系統學習方案

嵌入式系統開發學習--從入門到精通

很多新手學習嵌入式系統,不清楚那麼多方向舵知識和參考書,該從哪裡開始學習。入手了,卻又在該先學習什麼後學習什麼上失去方向。這里有你想要的答案,幫你指點迷經。

這是我在ITjob培訓網上找到的課程大綱,覺得作為嵌入式系統開發的學習步驟,按部就班地去施行和學習,到不失為一種好的學習方法:)就算是作為參考也是有很好的價值的!

隨著現代社會信息化進程的加快,嵌入式系統被廣泛的地應用於軍事、家用、工業、商業、辦公、醫療等社會各個方面,表現出很強的投資價值。從國際范圍來看,作為數字化電子信息產品核心的嵌入式系統目前其硬體和軟體開發工具市場已經突破2000億美元,嵌入式系統帶來的全球工業年產值更是達到了一萬億美元,隨著全球經濟的持續增長以及信息化的加速發展,嵌入式系統市場必將進一步增長。
本課程是為了適應目前發展迅速的嵌入式Linux需求而設計,課程目標是讓學員達到適應嵌入式應用軟體開發、嵌入式系統開發或嵌入式驅動開發的基本素質。課程循序漸進的帶領您嵌入式開發的世界,採用了目前應用最廣泛的軟硬體開發平台(Linux和Arm),可以保證您盡量貼近目前企業需求。

學習步驟如下:(一步步來哦:)

1、Linux 基礎

安裝Linux操作系統
Linux文件系統
Linux常用命令
Linux啟動過程詳解
熟悉Linux服務能夠獨立安裝Linux操作系統
能夠熟練使用Linux系統的基本命令
認識Linux系統的常用服務安裝Linux操作系統
Linux基本命令實踐
設置Linux環境變數
定製Linux的服務 Shell 編程基礎使用vi編輯文件
使用Emacs編輯文件
使用其他編輯器

2、Shell 編程基礎

Shell簡介
認識後台程序
Bash編程熟悉Linux系統下的編輯環境
熟悉Linux下的各種Shell
熟練進行shell編程熟悉vi基本操作
熟悉Emacs的基本操作

比較不同shell的區別
編寫一個測試伺服器是否連通的shell腳本程序
編寫一個查看進程是否存在的shell腳本程序
編寫一個帶有循環語句的shell腳本程序

3、Linux 下的 C 編程基礎

linux C語言環境概述
Gcc使用方法
Gdb調試技術
Autoconf
Automake
Makefile
代碼優化 熟悉Linux系統下的開發環境
熟悉Gcc編譯器
熟悉Makefile規則編寫Hello,World程序
使用 make命令編譯程序
編寫帶有一個循環的程序
調試一個有問題的程序

4、嵌入式系統開發基礎

嵌入式系統概述
交叉編譯
配置TFTP服務
配置NFS服務
下載Bootloader和內核
嵌入式Linux應用軟體開發流程
熟悉嵌入式系統概念以及開發流程
建立嵌入式系統開發環境製作cross_gcc工具鏈
編譯並下載U-boot
編譯並下載Linux內核
編譯並下載Linux應用程序

5、嵌入式系統移植

Linux內核代碼
平台相關代碼分析
ARM平台介紹
平台移植的關鍵技術
移植Linux內核到 ARM平台 了解移植的概念
能夠移植Linux內核移植Linux2.6內核到 ARM9開發板

6、嵌入式 Linux 下串口通信

串列I/O的基本概念
嵌入式Linux應用軟體開發流程
Linux系統的文件和設備
與文件相關的系統調用
配置超級終端和MiniCOM 能夠熟悉進行串口通信
熟悉文件I/O 編寫串口通信程序
編寫多串口通信程序

7、嵌入式系統中多進程程序設計

Linux系統進程概述
嵌入式系統的進程特點
進程操作
守護進程
相關的系統調用了解Linux系統中進程的概念
能夠編寫多進程程序編寫多進程程序
編寫一個守護進程程序
sleep系統調用任務管理、同步與通信 Linux任務概述
任務調度
管道
信號
共享內存
任務管理 API 了解Linux系統任務管理機制
熟悉進程間通信的幾種方式
熟悉嵌入式Linux中的任務間同步與通信
編寫一個簡單的管道程序實現文件傳輸
編寫一個使用共享內存的程序

8、嵌入式系統中多線程程序設計

線程的基礎知識
多線程編程方法
線程應用中的同步問題了解線程的概念
能夠編寫簡單的多線程程序編寫一個多線程程序

9、嵌入式 Linux 網路編程

網路基礎知識
嵌入式Linux中TCP/IP網路結構
socket 編程
常用 API函數
分析Ping命令的實現
基本UDP套介面編程
許可證管理
PPP協議
GPRS 了解嵌入式Linux網路體系結構
能夠進行嵌入式Linux環境下的socket 編程
熟悉UDP協議、PPP協議
熟悉GPRS 使用socket 編寫代理伺服器
使用socket 編寫路由器
編寫許可證伺服器
指出TCP和UDP的優缺點
編寫一個web伺服器
編寫一個運行在 ARM平台的網路播放器

10、GUI 程序開發

GUI基礎
嵌入式系統GUI類型
編譯QT
進行QT開發熟悉嵌入式系統常用的GUI
能夠進行QT編程使用QT編寫「Hello,World」程序
調試一個加入信號/槽的實例
通過重載QWidget 類方法處理事件

11、Linux 字元設備驅動程序

設備驅動程序基礎知識
Linux系統的模塊
字元設備驅動分析
fs_operation結構
載入驅動程序了解設備驅動程序的概念
了解Linux字元設備驅動程序結構
能夠編寫字元設備驅動程序編寫Skull驅動
編寫鍵盤驅動
編寫I/O驅動
分析一個看門狗驅動程序
對比Linux2.6內核與2.4內核中字元設備驅動的不同
Linux 塊設備驅動程序塊設備驅動程序工作原理
典型的塊設備驅動程序分析
塊設備的讀寫請求隊列了解Linux塊設備驅動程序結構
能夠編寫簡單的塊設備驅動程序比較字元設備與塊設備的異同
編寫MMC卡驅動程序
分析一個文件系統
對比Linux2.6內核與2.4內核中塊設備驅動的不同

12、文件系統

虛擬文件系統
文件系統的建立
ramfs內存文件系統
proc文件系統
devfs 文件系統
MTD技術簡介
MTD塊設備初始化
MTD塊設備的讀寫操作了解Linux系統的文件系統
了解嵌入式Linux的文件系統
了解MTD技術
能夠編寫簡單的文件系統為 ARM9開發板添加 MTD支持
移植JFFS2文件系統
通過proc文件系統修改操作系統參數
分析romfs 文件系統源代碼
創建一個cramfs 文件系統

E. 嵌入式編程需要懂哪些

嵌入式編程需要懂C語言,Linux,還有ARM的知識。

關於如何學習嵌入式,我剛才看到一篇很不錯的文章,是一個專科生介紹自己如何自學嵌入式,並找到嵌入式的工作,裡面介紹了他的學習方法和學習過程,希望對你有幫助。

專科生學嵌入式到找到工作的前前後後--學習的榜樣

先做個自我介紹,我07年考上一所很爛專科民辦的學校,學的是生物專業,具體的學校名稱我就不說出來獻丑了。09年我就輟學了,我在那樣的學校,一年學費要1萬多,但是根本沒有人學習,我實在看不到希望,我就退學了。

退學後我也迷茫,大專都沒有畢業,我真的不知道我能幹什麼,我在糾結著我能做什麼。所以輟學後我一段時間,我想去找工作,因為我比較沉默寡言,不是很會說話,我不適合去應聘做業務。我想應聘做技術的,可是處處碰壁。

一次偶然的機會,我才聽到嵌入式這個行業。那天我去新華書店,在計算機分類那邊想找本書學習。後來有個女孩子走過來,問我是不是讀計算機的,有沒有興趣學習嵌入式,然後給我介紹了一下嵌入式現在的火熱情況,告訴我學嵌入式多麼的有前景,給我了一份傳單,嵌入式培訓的廣告。聽了她的介紹,我心裡癢癢的,確實我很想去學會一門自己的技術,靠自己的雙手吃飯。

回家後,我就上網查了下嵌入式,確實是當今比較熱門的行業,也是比較好找工作的,工資也是相對比較高。我就下決心想學嵌入式了。於是我去找嵌入式培訓的相關信息,說真的,我也很迷茫,我不知道培訓是否真的能像他們宣傳的那樣好,所以我就想了解一段時間再做打算。

後來,我在網路知道看到一篇讓我很鼓舞的文章《如何學習嵌入式》,是一個嵌入式高手介紹沒有基礎的朋友怎麼自學入門學嵌入式,文章寫的很好,包含了如何學習,該怎麼學習。他提到一個方法就是看視頻,因為看書實在太枯燥和費解的,很多我們也看不懂。這點我真的很認同,我自己看書往往看不了幾頁。

我在想,為什麼別人都能自學成才,我也可以的!我要相信自己,所以我就想自學,如果實在學不會我再去培訓。

主意一定,我就去搜索嵌入式的視頻,雖然零星找到一些嵌入式的視頻,但是都不系統,我是想找一個能夠告訴我該怎麼學的視頻,一套從入門到精通的視頻,一個比較完整的資料,最好能有老師教,不懂可以請教的。

後來我又找到一份很好的視頻,是在嵌入式學習網推出的一份視頻《嵌入式視頻教程--零基礎手把手教你學嵌入式》,裡面的教程還不錯,很完整,可以讓我從基礎的開始學起。視頻不便宜啊,但是我也忍了,畢竟買幾本書都要幾百了,何況他們還有半年的技術咨詢和服務,算值了。

======這里我就不給出他們的網址,如果你也想要嵌入式視頻的話,那就自己去網路搜索:零基礎手把手教你學嵌入式。

下面介紹下我的學習流程,希望對和我一樣完全沒有基礎的朋友有所幫助。

收到他們寄過來的光碟後,我就開始學習了,由於我沒有什麼基礎,我就從最簡單的C語言視頻教程學起,話說簡單,其實我還是很多不懂的,我只好請教他們,他們還是很熱心的,都幫我解決了。C語言我差不多學了一個禮拜,接下來我就學了linux的基本命令,我在他們提供linux虛擬機上都有做練習,敲linux的基本命令,寫簡單的C語言代碼,差不多也就三個禮拜。我每天都在不停的寫一些簡單的代碼,這樣一月後我基本掌握了C和linux的基本操作。

接下來我就去學習了人家的視頻的培訓教程,是整套的,和去參加培訓沒有多大的區別,這一看就是兩個月,學習了ARM的基本原理,學習嵌入式系統的概念,也掌握了嵌入式的環境的一些搭建,對linux也有更深層次的理解了,明白了嵌入式應用到底是怎麼做的,但是驅動我只是有一點點的了解,這個相對難一點,我想以後再慢慢啃。

這兩個月,除了吃飯睡覺,我幾乎都在學習。因為我知道幾乎沒有基礎,比別人差勁,我只能堅持努力著,我不能放棄,我必要要靠自己來養活自己,必須學好這門技術,同時我不懂的就問,這里真的很感謝他們的技術客服對我的任何問題都是耐心的解答,每天都我幾乎都有好幾個問題問他們,然後我就把不懂的問題總結記下來,這樣慢慢積累了一段時間,我發現自己真的有點入門了。

最後的一個月,我就去看關於實踐部分的內容,了解嵌入式項目具體的開發流程,需要什麼樣的知識,我就開始准備這方面的知識,也就是學習這方面的視頻,同時他們建議我去找了找一些嵌入式面試的題目,為自己以後找工作做准備。我就到網上找了很多嵌入式的題目,把他們理解的記下來,這樣差不多准備了20天左右

我覺得自己差不多入門了,會做一些簡單的東西了。我就想去找工作看看,於是我就到51job瘋狂的投簡歷,因為我學歷的問題,專科沒有畢業,說真的,大公司沒有人會要我,所以我投的都是民營的小公司,我希望自己的努力有所回報。沒有想過幾天過後,就有面試了,但是第一次面試我失敗了,雖然我自認為筆試很好,因為我之前做了准備,但是他們的要求比較嚴格,需要有一年的項目經驗,所以我沒有被選中。

後來陸續面試了幾家公司,終於功夫不負有心人。我終於面試上的,是在閔行的一家民營的企業,公司規模比較小,我的職務是嵌入式linux應用開發,做安防產品的應用的。我想我也比較幸運,經理很看重我的努力,就決定錄用我,開的工資是3500一個月,雖然我知道在上海3500隻能過溫飽的生活,但是我想我足夠了。我至少不用每天都要靠父母養,我自己也能養活自己的。我想只要我繼續努力,我工資一定會翻倍的。

把本文寫出來,希望能讓和我一樣的沒有基礎的朋友有信心,其實我們沒有必要自卑,我們不比別人笨,只要我們肯努力,我們一樣會成功。

最後祝願所有想學嵌入式的朋友更早的入門!

-----------------------------------------------------------
希望我的回答能幫到你吧

F. 請求嵌入式開發視頻教程

需要完整的嵌入式視頻教程的話我個人推薦IT學習聯盟網站推出的《零基礎嵌入式就業班》(喜歡《零基礎嵌入式就業班》的可以復制 sina.lt/qKh 粘貼瀏覽器地址欄按回車鍵即打開)。他就是一套完整的嵌入式教程,而且他也是從零基礎開始教起的,如果你完全沒有基礎也可以學習這套教程。是一套從零基礎到就業水平的完整嵌入式教程。
..................................................................
給你看一篇文章是有關一位專科生自學嵌入式並找到工作的過程。
先做個自我介紹,我07年考上一所很爛專科民辦的學校,學的是生物專業,具體的學校名稱我就不說出來獻丑了。09年我就輟學了,我在那樣的學校,一年學費要1萬多,但是根本沒有人學習,我實在看不到希望,我就退學了。
退學後我也迷茫,大專都沒有畢業,我真的不知道我能幹什麼,我在糾結著我能做什麼。所以輟學後我一段時間,我想去找工作,因為我比較沉默寡言,不是很會說話,我不適合去應聘做業務。我想應聘做技術的,可是處處碰壁。
一次偶然的機會,我才聽到嵌入式這個行業。那天我去新華書店,在計算機分類那邊想找本書學習。後來有個女孩子走過來,問我是不是讀計算機的,有沒有興趣學習嵌入式,然後給我介紹了一下嵌入式現在的火熱情況,告訴我學嵌入式多麼的有前景,給我了一份傳單,嵌入式培訓的廣告。聽了她的介紹,我心裡癢癢的,確實我很想去學會一門自己的技術,靠自己的雙手吃飯。
回家後,我就上網查了下嵌入式,確實是當今比較熱門的行業,也是比較好找工作的,工資也是相對比較高。我就下決心想學嵌入式了。於是我去找嵌入式培訓的相關信息,說真的,我也很迷茫,我不知道培訓是否真的能像他們宣傳的那樣好,所以我就想了解一段時間再做打算。
後來,我在網路知道看到一篇讓我很鼓舞的文章,是一個嵌入式高手介紹沒有基礎的朋友怎麼自學入門學嵌入式,文章寫的很好,包含了如何學習,該怎麼學習。他提到一個方法就是看視頻,因為看書實在太枯燥和費解的,很多我們也看不懂。這點我真的很認同,我自己看書往往看不了幾頁。
我在想,為什麼別人都能自學成才,我也可以的!我要相信自己,所以我就想自學,如果實在學不會我再去培訓。
主意一定,我就去搜索嵌入式的視頻,雖然零星找到一些嵌入式的視頻,但是都不系統,我是想找一個能夠告訴我該怎麼學的視頻,一套從入門到精通的視頻,一個比較完整的資料,最好能有老師教,不懂可以請教的。
後來我又找到一份很好的視頻,是在IT學習聯盟網站推出的一份視頻《零基礎嵌入式就業班》(喜歡《零基礎嵌入式就業班》的可以復制 sina.lt/qKh 粘貼瀏覽器地址欄按回車鍵即打開)。裡面的教程還不錯,很完整,可以讓我從基礎的開始學起。視頻比較便宜。
下面介紹下我的學習流程,希望對和我一樣完全沒有基礎的朋友有所幫助。
收到他們寄過來的光碟後,我就開始學習了,由於我沒有什麼基礎,我就從最簡單的C語言視頻教程學起,話說簡單,其實我還是很多不懂的,我只好請教他們,他們還是很熱心的,都幫我解決了。C語言我差不多學了一個禮拜,接下來我就學了linux的基本命令,我在他們提供linux虛擬機上都有做練習,敲linux的基本命令,寫簡單的C語言代碼,差不多也就三個禮拜。我每天都在不停的寫一些簡單的代碼,這樣一月後我基本掌握了C和linux的基本操作。
接下來我就去學習了人家的視頻的培訓教程,是整套的,和去參加培訓沒有多大的區別,這一看就是兩個月,學習了ARM的基本原理,學習嵌入式系統的概念,也掌握了嵌入式的環境的一些搭建,對linux也有更深層次的理解了,明白了嵌入式應用到底是怎麼做的,但是驅動我只是有一點點的了解,這個相對難一點,我想以後再慢慢啃。
這兩個月,除了吃飯睡覺,我幾乎都在學習。因為我知道幾乎沒有基礎,比別人差勁,我只能堅持努力著,我不能放棄,我必要要靠自己來養活自己,必須學好這門技術,然後我就把不懂的問題總結記下來,這樣慢慢積累了一段時間,我發現自己真的有點入門了。
最後的一個月,我就去看關於實踐部分的內容,了解嵌入式項目具體的開發流程,需要什麼樣的知識,我就開始准備這方面的知識,也就是學習這方面的視頻,同時他們建議我去找了找一些嵌入式面試的題目,為自己以後找工作做准備。我就到網上找了很多嵌入式的題目,把他們理解的記下來,這樣差不多准備了20天左右
我覺得自己差不多入門了,會做一些簡單的東西了。我就想去找工作看看,於是我就到51job瘋狂的投簡歷,因為我學歷的問題,專科沒有畢業,說真的,大公司沒有人會要我,所以我投的都是民營的小公司,我希望自己的努力有所回報。沒有想過幾天過後,就有面試了,但是第一次面試我失敗了,雖然我自認為筆試很好,因為我之前做了准備,但是他們的要求比較嚴格,需要有一年的項目經驗,所以我沒有被選中。
後來陸續面試了幾家公司,終於功夫不負有心人。我終於面試上的,是在閔行的一家民營的企業,公司規模比較小,我的職務是嵌入式linux應用開發,做安防產品的應用的。我想我也比較幸運,經理很看重我的努力,就決定錄用我,開的工資是3500一個月,雖然我知道在上海3500隻能過溫飽的生活,但是我想我足夠了。我至少不用每天都要靠父母養,我自己也能養活自己的。我想只要我繼續努力,我工資一定會翻倍的。
把本文寫出來,希望能讓和我一樣的沒有基礎的朋友有信心,其實我們沒有必要自卑,我們不比別人笨,只要我們肯努力,我們一樣會成功。

只要肯努力加上正確的方法一定能成功。

………………………………………………………………………………

G. 嵌入式開發 WEB B/S架構

就像路由器那樣的嘛,通過瀏覽器設置參數,移植linux系統就好做很多,不上系統,那就看你的要求了,復雜的話,移植linux系統,完了再板子上移植一個thttpd+php,板子開機啟動thttpd,把你的網頁放到指定目錄,就可以通過瀏覽器訪問了,我下個星期就辭職去西安找工作了;

H. 嵌入式需要學什麼嵌入式需要學哪些課程和內容

1.1 有哪些設備使用單片機或Linux

所有的電子產品,所用技術都可以認為要麼是單片機,要麼是Linux;GUI方面主要是QT/Android,它們都是運行於Linux之上的。我們說的單片機不使用操作系統,但是使用單片機設備肯定遠遠超過Linux。很多人也是先學習單片機,從單片機進入電子工程師行業,日常生活中,有哪些產品使用單片機、Linux呢?下面舉一些例子:

  • 下面我們用類比和邏輯推導出嵌入式Linux系統的組成,沒錯,「推導」。
    從上圖可以知道:

  • 組成:嵌入式Linux系統= bootloader + linux內核 + 根文件系統(裡面含有APP)。

  • bootloader:它的目的是啟動內核,去哪等讀內核?讀到哪裡?去Flash等外設讀內核,存到內存里去。所以需要有Flash里外設的驅動能力,為了調試方便還會有網路功能。所以,可以認為 booloader = 裸機集合,它就是一個復雜的單片機程序。

  • Linux內核:Linux內核的最主要目的是去啟動APP,APP保存在哪裡?保存在「根文件系統」里。「根文件系統」又保存在哪裡?在Flash、SD卡等設備里,甚至可能在網路上。所以Linux內核要有這些Flash、SD卡里設備的驅動能力。

  • 不僅如此,Linux內核還有進程調度能力、內存管理等功能。

  • 所以:Linux內核 = 驅動集合 + 進程調度 + 內存管理等。

  • 2.3 要學習bootloader嗎

  • Bootloader有很多種,常用的叫u-boot。

  • 在實際工作中,對於u-boot基本上是修修改改,甚至不改。但是u-boot本身是很復雜的,比如為了便於調試,它支持網路功能;有些內核是保存在FAT32分區里,於是它要能解析FAT32分區,讀FAT32分區的文件。

  • 花那麼多精力去學習u-boot,但是工作中基本用不到,這對初學者很不友善。

  • 所以,對於初學者,我建議:理解u-boot的作用、會使用u-boot的命令,這就可以了。

  • 如果你的工作就是修改、完善bootloader,那麼再去研究它吧。

  • 2.4 要學習Linux內核、要學習驅動程序嗎

  • 之前我們說過Linux內核 = 驅動集合 + 進程調度 + 內存管理等,如果要學習Linux內核,從驅動程序入手是一個好辦法。

  • 但是人人都要學習Linux內核、人人都要學習Linux驅動嗎?顯然不是。

  • 作為初學者,懂幾個簡單的驅動程序,有利於工作交流;理解中斷、進程、線程的概念,無論是對驅動開發、應用程序開發,都是很有好處的。

  • 所以對於初學者,建議前期只學習這幾個驅動:LED、按鍵、中斷。

  • LED驅動程序:這是最簡單的驅動程序。

  • 按鍵驅動程序:它也比較簡單,從它引入「中斷」。

  • 中斷:從「中斷」它可以引入:休眠-喚醒、進程/線程、POLL機制、非同步通知等概念。這些概念無論是對驅動開發,還是對應用開發,都很重要。

  • 所以,對於初學者,我建議必須學習這幾個驅動:LED、按鍵、中斷。

  • 入門之後,如果你想從事內核開發、驅動開發,那麼可以去鑽研幾個驅動程序(輸入系統、I2C匯流排、SPI匯流排等),掌握若干個大型驅動程序後,你對內核的套路就有所了解了,再去研究其他部分(比如進程管理、文件系統)時你會發現套路是如此通用。

  • 攝像頭(VL42)、音效卡ALSA驅動是Linux中比較復雜的2類驅動,它們是很難的,如果工作與此相關再去研究。

  • 2.5,要學習Linux應用程序嗎?先學一些基礎技能

  • 要學,即使以後你只想研究內核,一些基本的應用開發編寫能力也是需要的:

  • 基本設備的訪問,比如LCD、輸入設備

  • 進程、線程、進程通信、線程同步與互斥

  • 休眠-喚醒、POLL機制、信號

  • 網路編程

  • ①②③部分的知識,跟驅動有密切的關系,它們是相輔相承的。

  • 掌握了基本驅動開發能力、基本應用開發能力之後,在工作中你就可以跟別人友好溝通了,不至於一臉懵逼。

  • 2.6,應用程序是怎麼啟動的?要了解一下根文件系統

  • 你辛辛苦苦寫出了應用程序,怎麼把它放到板子上,讓它開機就自動啟動?

  • 你寫的程序,它依賴於哪些庫,這些庫放到板子上哪個目錄?

  • 怎麼做一個可升級的系統?即使升級中途斷電了,也要保證程序至少還可以運行老的版本?

  • 這些都需要我們了解一下根文件系統。

  • 先了解一下init進程:它要讀取配置文件,根據配置文件啟動各個APP。

  • 了解了init進程,你就了解了根文件系統的組成,就可以隨心所欲裁剪系統,為你的項目製作出最精簡的系統。

  • 第3章 學習方法

    3.1 先不要打破砂鍋問到底

  • 嵌入式涉及的東西太多太雜了,如果心裡沒有主線,碰到什麼都要去研究個透徹,最終反而忘記自己要學什麼了。

  • 嵌入式涉及硬體知識、軟體知識,軟體里涉及匯編、ARM架構、C語言、Makefile、Shell;又分為bootloader、內核、驅動、基本的APP、GUI。

  • 比如我們會用到Makefile,了解它的基本規則,會用我們提供的Makefile就可以。

  • 不需要深入研究那些make函數,因為在工作中都有現成的Makefile給你使用,不需要自己去編寫一套Makefile。何必花上好幾天去深入研究它呢?

  • 比如我們會用到bootloader,難道又要花上幾個月來深入研究u-boot嗎?工作中基本不需要改u-boot,會用那幾個命令就可以。

  • 甚至有些學員先去買本shell的書來學習shell命令,何必?我們在視頻中用到什麼命令,你不懂時再去網路一下這些命令就可以了。

  • 不要脫離初學者的主線:應用基礎、驅動基礎。有了這2個基礎後,你想深入研究某部分時,再去花時間吧。

  • 3.2 思路要清晰,不怕抄代碼

  • 視頻里的代碼,請你一定要自己去寫一次、寫多次。為什麼我現在寫驅動那麼熟?我2009年在華清遠見上課時,

  • 每次上課我都要給學生寫一次那些驅動,十幾次下來閉著眼睛都知道內核的套路了。

  • 記不住那些函數?我也記不住,我都是去參考同類的驅動程序,這又不是閉卷考試。

  • 但是要理清楚思路,你寫這個程序要完成什麼功能、怎麼實現這些功能?這個要弄清楚。

  • 有了思路後再寫代碼,不知道怎麼寫?沒關系,看看視頻,看看示例,然後關閉視頻看看能否自己寫出來。

  • 3.3 對自己的方向很了解,我只能帶你到這里了

  • 我的專長是操作系統,是快速地帶領大家掌握一些項目開發的基礎知識。

  • 如果你決定深入研究某方面時,我並不能帶你多久。你要去看源碼,去看這方面的專業書籍。

  • 比如想深入鑽研內核的內存管理時,它有頁表映射(你需要閱讀ARM架構的手冊)、SLAB分配器、vmalloc/malloc實現、mmap實現、缺頁中斷、父進程子進程之間的頁面管理等等,內容非常多。有時候連書籍都沒有,你需要直接啃代碼。

  • 當你想從事某個行業時,就需要深入研究行業相關的知識。

  • 比如CAN匯流排,它可以寫成一本書:CAN協議、CAN報文、Socket CAN、車身網路拓撲結構,CAN應用報文,CAN網路管理報文,CAN診斷報文。

  • 想做物聯網網關,需要深入研究MQTT,MQTT協議相對簡單,但是MQTT英文原版協議有130多頁,中文版有近100頁,是一本小書了。

  • 每個行業都有自己的業務邏輯,在掌握基本的編程能力之一,你需要結合具體的業務去深入學習。