回覆列表
  • 1 # 夢醒時分top

    先學習Linux基礎,對於Linux有了基本認識了,比如ubuntu PC版本,在轉入學習,同時實際操作,就可以達到事半功倍的效果

  • 2 # 黃金影視音樂

    學習嵌入式,需要具備什麼基本的知識

    首先C語言,這個是毋庸置疑的,不管是做嵌入式軟體還是硬體開發的人員,對C語言的掌握這個是必需的,特別是對於以後致力於嵌入式

    軟體開發

    的人,現在絕大部分都是用C語言,你說不掌握它可以嗎?至於如何學習C語言,我想這些基礎的知識每個人都有自己的方法,關鍵要去學習,看書也好,網上找些影片看也好。很多人會問,

    C語言

    要學到怎麼樣,我覺得這沒有標準的答案。我想至少你在明白了一些基礎的概念後,就該寫程式碼了,動手才是最重要的,當你動手了,遇到問題了,再反過來學習,反過來查查課本,那時的收穫就不是你死看書能得到的。

    其次,應該對作業系統有所瞭解,這對你對硬體和軟體的理解,絕對有很大的幫助。在西嵌教育學習的時候,學習嵌入式最好硬體軟體兩手抓兩手都要硬。應該把系統的管理理解一下,比如程序、執行緒,系統如何來分配資源的,

    系統

    如何來管理硬體的,當然,不是看書就能把這些理解透,如果不是一時能理解,沒關係,多看看,結合以後的專案經驗,會有更好的理解的。

  • 3 # 程式設計帝

    學嵌入式Linux要先學以下幾點:

    1.C語言。要有C語言的基礎,當然越熟練越好,不熟也沒關係,具備基本技能就可以:比如寫一個數組排序、輸入數字求和什麼的。C語言的學習就是多些多練。這裡我分享一個自學的,學完有一定的基礎,對於學習Linux有幫助哦。C++入門基礎:http://pan.baidu.com/s/1hs5VrA8

    2.Linux基礎

    Linux作業系統的概念、安裝方法,詳細瞭解Linux下的目錄結構、基本命令、編輯器VI ,編譯器GCC,偵錯程式GDB和 Make 專案管理工具, Shell、 Makefile指令碼編寫等知識,嵌入式開發環境的搭建。

    Linux基礎程式設計:http://pan.baidu.com/s/1eS4DVrW

    3.Linux系統程式設計

    重點學習標準I/O庫,Linux多工程式設計中的多程序和多執行緒,以及程序間通訊(pipe、FIFO、訊息佇列、共享記憶體、signal、訊號量等),同步與互斥對共享資源訪問控制等重要知識,主要提升對Linux應用開發的理解和程式碼除錯的能力。

    Linux系統程式設計:http://pan.baidu.com/s/1slPWrgx

    4.Linux網路程式設計

    計算機網路在嵌入式Linux系統應用開發過程中使用非常廣泛,透過Linux網路發展、TCP/IP協議、socket程式設計、TCP網路程式設計、UDP網路程式設計、Web程式設計開發等方面入手,全面瞭解Linux網路應用程式開發。重點學習網路程式設計相關API,熟練掌握TCP協議伺服器的程式設計方法和併發伺服器的實現,瞭解HTTP協議及其實現方法,熟悉UDP廣播、多播的原理及程式設計方法,掌握混合C/S架構網路通訊系統的設計,熟悉HTML,Javascript等Web程式設計技術及實現方法。

    Linux網路程式設計:http://pan.baidu.com/s/1pLgFm0F

    5.資料結構與演算法

    資料結構及演算法在嵌入式底層驅動、通訊協議、及各種引擎開發中會得到大量應用,對其掌握的好壞直接影響程式的效率、簡潔及健壯性。此階段

    的學習要重點理解資料結構與演算法的基礎內容,包括順序表、連結串列、佇列、棧、樹、圖、雜湊表、各種查詢排序演算法等應用及其C語言實現過程。

    6.Cortex A8 、Linux 平臺開發

    透過基於ARM Cortex-A8處理s5pv210瞭解晶片手冊的基本閱讀技巧,掌握s5pv210系統資源、時鐘控制器、電源管理、異常中斷控制器、nand flash

    控制器等模組,為底層平臺搭建做好準備。Linux平臺包括核心裁減、核心移植、交叉編譯、GNU工具使用、核心除錯、Bootloader介紹、製作與原理

    分析、根檔案系統製作以及向核心中新增自己的模組,並在s5pv210實驗平臺上執行自己製作的Linux系統,整合部署Linux系統整個流程。同時瞭解

    Android作業系統開發流程。Android系統是基於Linux平臺的開源作業系統,該平臺由作業系統、中介軟體、使用者介面和應用軟體組成,是首個為移動

    終端打造的真正開放和完整的移動軟體,目前它的應用不再侷限於移動終端,還包括資料電視、機頂盒、PDA等消費類電子產品。

    7.驅動開發

    驅動程式設計是嵌入式Linux開發工作中重要的一部分,也是比較困難的一部分。本階段的學習要熟悉Linux的核心機制、驅動程式與使用者級

    應用程式的介面,掌握系統對裝置的併發操作。熟悉所開發硬體的工作原理,具備ARM硬體介面的基礎知識,熟悉ARM Cortex-A8處理器s5pv210各

    資源、掌握Linux裝置驅動原理框架,熟悉工程中常見Linux高階字元裝置、塊裝置、網路裝置、USB裝置等驅動開發,在工作中能獨立勝任底層驅動

    開發。

  • 4 # 韋東山嵌入式Linux

    在學習嵌入式Linux之前,肯定要有C語言基礎。彙編基礎有沒有無所謂(就那麼幾條彙編指令,用到了一看就會)。C語言要學到什麼程度呢?越熟當然越好,不熟的話也要具備基本技能。比如寫一個數組排序、輸入數字求和什麼的。學C語言唯一的方法是多寫程式多練習,編譯出錯沒關係,自己去解決;執行出錯沒關係,自己去分析。以前我是用VC來練習C語言的,經常去嘗試著寫一些C語言競賽的題目。它們是純C、純數學、純邏輯的題目,不涉及介面這些東西,很適合煅煉你的程式設計能力。

    回到主題,首先我們要明白你的目的是什麼,大概來說所謂嵌入式Linux可以分為兩部分:底層系統、應用開發。如果你是想做應用開發,那麼你去把C語言、資料結構、JAVA什麼的學好吧。嵌入式應用開發和PC上的應用開發並沒有什麼特別要注意的。也許你說在嵌入式上要做些最佳化,是的,要最佳化,但是未經最佳化的程式和PC上的程式開發沒什麼差別。另外,當你有能力去最佳化時,你已經不用來問這個問題了。具體到某個例子,比如說開發介面,在PC上我們用VC;在嵌入式Linux裡也許我們用QT也許用Android,這個時候你應該去學學QT、Android的程式設計。但是基礎還是C或JAVA,在此基礎上去熟悉它們的介面。你學過VC的話,也是要花時間去了解那些類、控制元件的。

    如果你的目的是想學習底層系統,這是我的專長,倒是可以說一點。在回答這個問題之前,我先回答:不少人問我,到底是學驅動還是學應用?

    我只能說憑興趣,並且驅動和應用並不是截然分開的

    我們說的驅動,其實並不侷限於硬體的操作,還有作業系統的原理、程序的休眠喚醒排程等概念。 想寫出一個好的應用,想比較好的解決應用碰到的問題,這些知識你應該懂 。做應用門檻低,特別是現在的ANDROID,純JAVA。做應用的發展路徑個人認為就是業務純熟。比如在通訊行業、IPTV行業、手機行業,你瞭解行業的需求。所以,當領導的人,多是做應用的。做驅動,其實我不想稱為“做驅動”,而是想稱為“做底層系統”,做好了這是通殺各行業。我工作幾年,做過手機、IPTV、會議電視,但是這些產品對我毫無差別,因為我只做底層。他們的業務跟我沒關係。當應用出現問題,他們解決不了時,我就會從核心角度給他們出主意,給他們提供工具。 最底層的發展方向,個人認為是技術專家。其實,做底層還是做應用,之間並沒有一個界線,有底層經驗,再去做應用,你會感覺很踏實。有了業務經驗,你再瞭解一下底層,很快就可以組成一個團隊。

    回到怎麼學的問題上。嵌入式Linux底層系統包含哪些東西?不要急,舉一個例子你就知道了。

    電腦一開機,那些介面是誰顯示的?是BIOS,它做什麼?一些自檢,然後從硬碟上讀入windows,並啟動它。類似的,這個BIOS對應於嵌入式Linux裡的bootloader。這個bootloader要去Flash上讀入Linux核心,並啟動它。啟動windows的目的是什麼?當然是上網聊天什麼的了。這些上網、聊天工具在哪?在C盤、D盤上。所以, windows要先識別出C盤、D盤。在Linux下我們稱為根檔案系統。windows能識別出C盤、D盤,那麼肯定能讀寫硬碟才行。這涉及的東西稱為驅動程式。當然不僅僅是硬碟,還有網絡卡、USB等等。

    嵌入式Linux能從Flash上讀出並執行應用程式,肯定也得有Flash的驅動程式啊,當然也不僅僅是Flash。

    先說到這裡吧,嵌入式LINUX裡含有bootloader, 核心, 驅動程式、根檔案系統這4大塊。

    這裡可以參考韋東山CSDN部落格

    總結一下:

    1. 硬體方面的書: 微機原理、數位電路,高校裡的教材。畢業多年,忘名了。

    2. Linux方面的書:

    <ARM體系架構與程式設計>

    <嵌入式Linux應用開發完全手冊>

    <Linux裝置驅動>,老外寫的那本

    <linux裝置驅動開發詳解>

    <linux核心完全註釋>

    <Linux核心情景分析>

    3. 影片:

    韋東山Linux影片第1期(基於S3C2440錄製): ARM實驗,u-boot,檔案系統,初級驅動

    韋東山Linux影片第1期(基於S3C6410錄製): 裸板程式韋東山Linux影片第2期: 高階驅動

    韋東山Linux影片第3期:專案實戰

    韋東山Linux影片第4期:Android驅動

  • 5 # 千鋒頭號粉絲

    Linux 是一個開源、免費的作業系統,主要應用於伺服器(網站伺服器、雲計算叢集、DNS 等)和嵌入式,同時也被很多程式設計師用作個人作業系統。Linux 使用 GPL 許可證,允許任何人以任何形式傳播其原始碼。GPL 許可證的內涵很簡單:你隨意使用我的程式碼,只要標明這是我的程式碼就可以了。想學會linux?那麼這份嵌入式linux學習路線分享給大家。

    1、嵌入式高階C語言

    Linux系統

    Linux Ubuntu作業系統安裝、使用、Linux常用命令、samba伺服器、SSH遠端登入GCC編譯器、GDB偵錯程式、VI編輯器

    1、嵌入式C語言高階程式設計

    1、C資料型別、控制語句

    2、C程式結構設計、陣列、函式、預處理:

    3、指標及字串操作

    4、結構體、共用體、宏、列舉

    5、檔案I/O操作

    資料結構及演算法

    1、資料結構之單向連結串列、雙向連結串列

    2、資料結構之佇列、棧

    3、資料結構之樹、圖

    4、演算法之各種排序(選擇法、冒泡法、插入法等)

    5、遞迴

    6、演算法之二分查詢

    2、嵌入式裝置及GUI開發

    嵌入式環境配置與開發工具學習

    1、Linux下專案管理工具Make以及Makefile工作原理及其編寫

    2、Linux下shell指令碼相關知識及其編寫

    3、嵌入式開發環境的基本概念及其搭建

    4、A53開發板介紹、裝置使用、A53開發板與電腦通訊、交叉編譯

    GUI圖形介面開發

    1、常用控制元件——button、label、text edit等

    2、常用佈局方式——水平佈局、垂直佈局、固定佈局、網格佈局、相對佈局等

    3、常用事件及訊號處理技術——資訊回撥、滑鼠、鍵盤事件等

    4、時間程式設計、資料儲存、繪圖機制、定時器處理、多工處理等

    3、嵌入式Linux高階程式設計

    嵌入式Linux系統程式設計

    1、Linux系統呼叫概念

    2、程序相關概念、多程序實現多工開發

    3、程序間通訊:無名管道、命名管道、訊號、訊息佇列、共享記憶體等

    4、多執行緒實現多工開發

    5、多工的同步互斥開發:互斥鎖、訊號量

    4、Linux高階網路程式設計

    Linux高階網路程式設計

    1、網路相關概念及網路發展

    2、TCP/IP協議

    3、socket程式設計、TCP網路程式設計、UDP網路程式設計、Web程式設計開發等

    4、Linux網路應用程式開發,Linux網路程式設計相關API

    5、TCP協議伺服器的程式設計方法和併發伺服器的實現

    6、HTTP協議及其實現方法,熟悉UDP廣播、多播的原理及程式設計方法,掌握混合C/S架構網路通訊系統的設計

    7、IPv6與IPv4協議,及其程式設計介面

    8、網路資料通訊過程

    9、網路原始套接字概念及程式設計介面

    學習完後,你可以瞭解到Linux作業系統的基礎知識,進行簡單的Linux命令操作。另外,學習時,建議配合實踐進行鞏固練習,以便能更好的理解記憶。

  • 6 # 華清遠見成都中心

    嵌入式發展如此的快,可以說是現在最熱的IT技術之一了,很多人加入嵌入式的行業,但是對於剛進入嵌入式或者剛接觸嵌入式的人來說,學習嵌入式還是有一定的難度的,我跟前就有很多這樣的人,下定決心想要去學嵌入式,但是不知道從何學起,今天我這隻老鳥就分享一些嵌入式學習方法,快快搬小板凳來聽。

    對於嵌入式新手來說,知道一點嵌入式,知道嵌入式大概是做什麼的,不是很懂,所以要熟悉掌握嵌入式的概念。我們可以看到網上或者書上很多解釋:嵌入式系統是針對某個應用,軟硬體可裁減的,對體積,功耗,成本等等有嚴格要求的一個計算機系統。看起來是很複雜的,其實我們來總結一下就是兩點:

    第一,嵌入式系統是一個計算機系統

    第二,嵌入式系統是針對某個應用的,也就是通常所說的“專用的”。

    其實再說的通俗易懂點就是針對某個應用的計算機系統!這樣的話就很好理解了。

    那麼重點來了,那就是要學什麼,對於嵌入式來說,不要覺得他學很多東西,你就會沒有目的的學這學那的,這樣只會讓自己更加迷茫,不知道要學哪個了,你要知道,嵌入式也就是軟體,硬體,程式設計這些方面的,最基礎的也就是C語言了,那剛開始接觸,你就需要先從C語言入手。

    1、C語言,關於C語言要知道基本的語法,什麼是結構體,什麼是共同體,有的東西也不用一定要記憶,因為在實際中很少用到;

    2、嵌入式最核心的作業系統,所以作業系統原理也應該是要有所瞭解的,比如時間片、任務調動等等;

    3、Linux基本命令的使用(vi編輯器必須會用,因為在終端改檔案的時候只能用這個),現在很多的人對滑鼠早是情有獨鍾了,很少用到命令,在學習嵌入式Linux可要改改這個習慣了,Linux用命令操作具有效率高、功能強大的特點,這個是圖形介面無法取代的,其實平時的圖形介面操作都要轉化為命令傳輸給硬體的。

    4、Linux裝置驅動的架構要了解,結合原理圖和Linux裝置驅動相關書籍把每一行程式碼分析清楚。

    上面只是一些簡單的嵌入式學習要點,你要先掌握這些,才能再繼續後面的,在這裡要切記你不要心急,心急吃不了熱豆腐,不要希望看什麼或者學什麼一次就能會,而且記住要理解,不要死記硬背,要理論與實踐相結合,實踐的多了,那自然而然也就會弄了。還有,不要直接閱讀Linux核心原始碼,看一些自己撞破頭也想不明白的東西只能是浪費時間,要循序漸進。

    對於初學者,還有一點小建議,我們拿到一個開發板,很興奮也很激動,想法自然也很多,想用開發板實現自己的這個想法,實現那個想法,然後又不知道從何下手,然後就去論壇中發一個貼,“那個什麼什麼怎麼實現啊,哪位大俠能詳細說一下啊,跪求!!”然後等著別人去回覆。見沒人回覆就抱怨。有想法是好的,我們要實現自己的想法也是有前提的,首先,我們對這部分知識瞭解嗎?如果不瞭解就去google一下(最好別用百度,不太好用),瞭解了一些,也就大概知道要怎麼做了。如果再遇到問題,再去發貼問,這樣也顯得咱們有水平。比如自己連串列埠是什麼都不太清楚呢,就問串列埠通訊怎麼做啊,就是人家把程式碼給咱,咱也不明白是怎麼回事啊。

    記住每個人都有每個人的方法,就是要勤於練習,不要懶惰,你可以根據我上面的學習方式來進行學習,這個方法就是我在我學習工作中總結的,還是很受用的,希望你和我一樣從新手到老鳥,這是一個困難的過程,好好努力最重要。

  • 中秋節和大豐收的關聯?
  • 所謂高情商是什麼樣子的?