學習Android嵌入式需要做哪些準備?

大四了,曾經報班學習過Android開發

也自學過51單片機

現在想學習學習Android嵌入式開發

存在以下一些問題:

1.嵌入式開發對硬體要求高不高?(本人偏軟,大學學的是計算機,硬體課程比較少)

2.Android嵌入式開發需要購買一些硬體設備嗎?類似於單片機、或者ARM

3.Android嵌入式開發就業前景如何?

4.求推薦的開發板、圖書(最好配套)


謝邀。

來得晚。從百度搜索了兩張圖:

說幾句:

1. 第一張圖中有「基礎」和「高級」部分,大可不要在意。看看自己想走哪個層面的開發,或者想先從哪一部分入手,確定後,學習對應的知識即可,嗯,我說得很寬泛不具體。

2. 既然有培訓基礎,那麼應該對應用層很熟悉。

3. Android是OS,GUI/APP/庫/框架等的集合。因此,這方面和我們平常的Ubuntu/Windows沒有什麼區別,可以不懂硬體。底層的Kernel,和Android「沒有什麼關係」,就算做Linux驅動開發也不需要太多的硬體基礎,看得懂原理圖即可,大二大三學的數電模電和組成原理足夠了。做App的話,直接Android手機就足夠了。如果搞Linux 驅動開發,那麼用的最廣,資料最多的S3C2440晶元的開發板是第一推薦。


受邀。我不知道嵌入式裡面會不會再細分Android等類別,我下面針對嵌入式說個大概學習的框架吧。

首先嵌入式系統可以分為四個層次:硬體層、驅動層、系統層和應用層,其中每一個層次都會有一類專業的學生適合深入學習。硬體層就適合電子、通信、機電等學生,驅動層因為比較難,按我的理解都是需要從硬體層和應用層過渡。而應用層就很適合計算機專業的學生深入學習。系統層一般都是移植而不會自己開發。

我覺得Android開發算是嵌入式系統中的應用層了,所以題主你只是學習Android的話,也是可以進入嵌入式領域的。

如果題主想玩硬體層、驅動層或者系統層的話。下面我針對這三個層次說說自己的看法:

題主既然偏軟的話、如何做板子就不說了。(硬體層)

那就聊聊底層軟體方面的學習(驅動層或系統層)

51單片機和C語言是最基本的,所以一定要學好。

如果不想玩裸機而想上操作系統的話,學習路線可以這樣過渡:51單片機---&>STM32---&>ARM。

說實話我本來想從51單片機直接過渡到ARM的,但是由於自己的51知識掌握不夠好,又沒有STM32過渡,所以自學ARM的時候會非常的吃力。

要上操作系統那麼C語言的基本功一定要紮實,因為Linux里的內核代碼都是C語言寫的,我不知道Android是不是,但我知道Android和Linux都是類UNIX。

所以如果要玩操作系統的話,C語言一定要紮實。

如果想往上層應用方向發展的話,那對底層只需要針對性的了解一下API就行了。

而且,嵌入式開發有一個特點,就是硬體和軟體並行開發,也就是說開發硬體的時候是不會影響到應用層軟體的開發的。學習應用層的有關知識就請參考 @王超 的答案。

如果只是想找一份工作的話,那可以看看類似的招聘條件,針對性的學習就行了。


謝邀。

現在滿世界都亂傳嵌入式的概念了。一個手機用上嵌入式電路中常用的晶元就也被稱為嵌入式。其實跟IEEE定義的「嵌入式」沒半毛錢關係,所以,哥不會Android的所謂「嵌入式」開發。

純吐槽,摺疊了吧。


存在以下一些問題:
1.嵌入式開發對硬體要求高不高?(本人偏軟,大學學的是計算機,硬體課程比較少)
2.Android嵌入式開發需要購買一些硬體設備嗎?類似於單片機、或者ARM
3.Android嵌入式開發就業前景如何?


首先對於嵌入式來說是屬於軟體與硬體的相結合,最基礎的編程語言是C語言,所以說一定要學好C語言,嵌入式說實話學習的比較廣泛,Android開發肯定要買一些硬體,開發板什麼的,嵌入式學習入門是需要精通C語言的 嵌入式首先確保自己的C語言過關,還可以在群里20103091多交流,然後可以從系統編程入手,在深入到裸機開發、系統移植、驅動開發 等。這是大致的學習方向。嵌入式是屬於今年開始火爆起來, 嵌入式需要懂得的一些基本有,Linux,C語言,數據結構,文件IO,並發程序設計,進程間通信,網路編程,資料庫開發,在線詞典,ARM-4412,系統移植,驅動開發,Android系統開發。等你理解這麼些關鍵詞的時候,那麼你嵌入式相對也是懂得了差不多的地步。嵌入式目前比較用的最多的就是智能小車的領域。深入人們的生活。以後也是一種朝陽的行業。 下面是學習的步驟。大致如下。

嵌入式基礎課程 26課時140小時2分

L1 9天輕鬆掌握C語言

D1 必備Linux命令和C語言基礎

D2 數據類型、常量、變數及運算符

D3 C語言輸入輸出專題

D4 C語言控制語句

D5 C語言數組和字元串

D6 指針專題一

D7 指針專題二

D8 函數專題1

D9 函數專題2

L2 Linux 及C語言高級開發

D1 軟體包管理及shell命令

D2 Linux shell命令

D3 Linux shell腳本編程

D4 Linux C語言高級編程

D5 Makefile

L3 數據結構全攻略

D1 數據結構順序表

D2 單鏈表上

D3 單鏈表下

D4 循環鏈表及線性表的應用

D5 棧及其實現

D6 隊列實現及應用舉例上

D7 隊列實現及應用舉例下

D8 樹和二叉樹上

D9 樹和二叉樹下

D10 查找上

D11 查找下

D12 排序

嵌入式應用層核心課程 25課時86小時3分

L4 嵌入式Linux下文件I/O精講

D1 標準I/O上

D2 標準I/O下

D3 Linux下文件I/O

D4 庫的製作及使用

L5 Linux並發程序設計你該這麼學

D1 進程編程及守護進程

D2 進程編程及守護進程2

D3 線程專題

D4 Unix進程間通信方式上

D5 Unix進程間通信方式下

D6 System V IPC對象上

D7 System V IPC對象下

L6 Linux網路編程必修篇

D1 網路基礎上

D2 網路基礎下

D3 TCP編程

D4 並發伺服器

D5 UDP編程

D6 IO多路復用

D7 TCP、IP協議原理

D8 網路編程擴展上

D9 網路編程擴展下

L7 嵌入式資料庫之sqlite3

D1 嵌入式資料庫之sqlite3上

D2 嵌入式資料庫之sqlite3下

L8 在線詞典綜合實戰

D1 在線詞典項目介紹及框架搭建

D2 在線詞典項目註冊登錄的實現

D3 在線詞典項目功能實現

嵌入式底層核心課程 39課時208小時31分

L9 精通ARM體系結構及介面技術(基於4412開發板)

D1 ARM基礎(基於4412開發板)

D2 ARM指令(基於4412開發板)

D3 ARM異常處理

D4 ARM裸機開發

D5 ARM通訊介面

D6 ARM中斷機制

D7 ARM波形控制

L10 全面掌握嵌入式系統移植

D1 系統移植概述及環境搭建上

D2 系統移植概述及環境搭建下

D3 Bootloader移植上

D4 Bootloader移植下

D5 Linux內核分析

D6 Linux內核移植及網卡移植

D7 第三方驅動移植

D8 根文件系統製作

L11 嵌入式內核及驅動開發初級

D1 設備驅動環境搭建

D2 驅動模塊開發上

D3 驅動模塊開發下

D4 字元設備驅動基礎上

D5 字元設備驅動基礎中

D6 字元設備驅動基礎下

D7 中斷編程1

D8 中斷編程2

D9 中斷編程3

D10 中斷編程5

D11 中斷編程4

D12 平台匯流排專題1

D13 平台匯流排專題2

D14 平台匯流排專題3

D15 平台匯流排專題4

L12 嵌入式內核及驅動開發高級

D1 高級驅動學習方法

D2 輸入子系統1

D3 輸入子系統2

D4 輸入子系統3

D5 輸入子系統4

D6 I2C子系統上

D7 I2C子系統下

D8 設備樹(上)

D9 設備樹(下)

Android系統開發 6課時21小時7分

L13 一起學Android系統開發

D1 Android系統開發之系統概述及開發環境搭建

D2 Android系統開發之系統編譯過程詳解

D3 Android系統開發之模塊編程及fastboot使用

D4 Android系統啟動流程分析上

D5 Android系統啟動流程分析下

D6 Android系統開發之HAL硬體抽象層的開發

嵌入式項目實戰 16課時58小時18分

L14 嵌入式項目

D1 ARM概述(基於210開發板)

D2 彙編指令集及MDK環境安裝

D3 GCC開發環境搭建

D4 異常處理機制

D5 中斷處理實現

D6 時鐘系統

D7 ARM GPIO編程

D8 ARM串口編程

D9 ARM nand flash編程

D10 從0編寫Bootloader從0編寫Bootloader(上)

D11 從0編寫Bootloader從0編寫Bootloader(下)

D12 四軸飛行器開發技術解析

D13 小米體重秤技術開發解析

D14 智能WiFi小車開發技術大揭秘

D15 小米手環軟硬體開發技術解析


謝邀

不熟悉Android嵌入式


推薦你學習老夫子老師的《零基礎Android手機嵌入式開發實戰課程(網吧計費系統、多功能播放器、驅動開發)》

本套課程從最礎的C語言和數據結構起步,一步步學習ARM裸機開發、Linux應用開發、Linux系統移植、Linux設備驅動開發、Android應用開發、Android系統移植、Android設備驅動開發。

本課程包括了ARM9和Cortex A8兩種硬體平台、Linux 2.6和3.0兩種內核、Android1.5和4.x兩種系統。通過全套課程的學生,學生完全可以從入門到精通,進入到「錢途」無限的Android嵌入式開發。包括應用開發和驅動開發,都足以勝任。

本套課程融合了國內Andriod培訓和嵌入式培訓的精華課程,並加入最新的Android4.x驅動開發,是國內首創的全套Android應用和驅動開發課程,成為國內大學生學習Andriod嵌入式開發的入門首選!

本課程總共分為八部分,零基礎起步,由淺入深,全面系統的介紹了Android系統從應用開發、系統移植、再到設備驅動開發的全過程,總課時預計174講!

適合人群:

1 希望往嵌入式底層學習的工程師

2 熟悉Android應用和框架開發,希望從上到下走通Android系統的工程師

3 不希望局限在上層,希望做驅動,做系統移植的工程師

4 基礎良好的在讀研究生或者即將畢業的應屆畢業生

5 有手機硬體維修基礎,希望走向軟體開發的特殊愛好者

課程目標:

了解操作系統原理,編譯原理,數據結構,電路基礎,數控模電相關知識

熟練掌握Linux操作系統使用,包括命令,Shell,系統配置

熟練進行Linux下應用編程及系統調用

掌握ARM體系結構以及基礎裸板開發,Bootloader開發,掌握Android應用開發

掌握Linux內核原理,熟悉Linux系統開發,內核裁減,調試

掌握Linux常用介面驅動開發及系統移植和Android常用驅動開發及系統移植

課程職業目標:

具備Android應用開發的能力,可以從事Android應用開發

學完後具備相當於1-2年Linux及Android底層開發的經驗

Linux及Android驅動開發工程師

Linux及Android系統工程師

課程價值所在:

1. 史上最全的嵌入式即涉及Android應用又側重於手機驅動開發課程,零基礎入門

2. 課程使用的項目案經典,有代表性,稍加改造就可以用到自己的項目,實用性超強.

3. 絕大多數代碼手工敲入,授課深入淺出,杜絕理論,絕對實戰

4. 課程首次採用ARM9面向初學者教學,同時採用較新的Cortex A8面向工程師生產,如此組合,國內首部

5. 講師曾擔任過技術總監與教學總監,講師本著深入淺出,剖析原理的風格 ,不僅僅講操作,更側重於理解與自我創新

以下是課程大綱:

第一部分 嵌入式C與數據結構篇 (20講)

1)課程概述、變數與數據類型

2)運算符與嵌入式位運算

3)分支結構

4)循環結構

5)數組

6)指針

7)函數

8)字元串

9)結構體

10)文件

11)數據結構1--單鏈表1

12)數據結構2--單鏈表2

13)數據結構3--循環鏈表和雙向鏈表

14)數據結構4--棧

15)數據結構5--隊列

16)數據結構6--查找

17)數據結構7--排序

18)綜合項目:網吧計費系統1

19)綜合項目:網吧計費系統2

20)綜合項目:網吧計費系統3

第二部分ARM裸機開發篇 (43講)

21) 嵌入式系統概述

22) ARM硬體開發平台介紹

23) ARM體系結構

24) ARM工作狀態、工作模式

25) ARM工作寄存器、異常處理

26) ARM指令集

27) ARM偽指令

28) ATPCS規則

29) ARM啟動代碼分析

30) GPIO原理

31) 流水燈實驗

32) 按鍵實驗

33) 蜂鳴器實驗

34) 中斷原理

35) 中斷實驗

36) 串口原理

37) 串口實驗

38) PWM原理

39) PWM實驗

40) RTC原理

41) RTC實驗

42) ADC原理

43) ADC實驗

44) 觸摸屏原理

45) 觸摸屏實驗

46) LCD原理

47) Sony X35 LCD晶元規格書解讀

48) LCD實驗1、顯示圖像

49) LCD實驗2、圖像特效及顯示文字

50) IIC原理

51) AT24c08晶元規格書解讀

52) IIC實驗

53) DMA原理

54) DMA實驗

55) IIS原理

56) UDA1341晶元規格書解讀

57) IIS實驗1

58) IIS實驗2

59) ARM裸機開發綜合項目:多功能播放器1

60) ARM裸機開發綜合項目:多功能播放器2

61) ARM裸機開發綜合項目:多功能播放器3

62) ARM裸機開發綜合項目:多功能播放器4

63) ARM裸機開發綜合項目:多功能播放器5

第三部分 Linux應用開發 (28講)

64) 課程介紹、VMware及Linux安裝

65) Linux配置及vi使用

66) Linux shell命令及Shell腳本

67) Linux編程基礎:gcc、g++、gdb、Makefile

68) 標準文件操作

69) 不帶緩存IO操作

70) fcntl與select

71) Linux進程原理

72) Linux進程系統調用

73) 守護進程

74) 進程間通信IPC原理

75) 管道通信

76) 信號

77) 共享內存

78) 信息隊列

79) Linux多線程原理

80) 線程同步與互斥鎖

81) 線程同步與信號量

82) 生產者消費者模型

83) Linux網路編程原理

84) TCP網路通信

85) Linux並發網路伺服器

86) UDP網路通信

87) Linux下MySQL資料庫配置使用

88) Linux下C語言資料庫操作

89) Linux應用開發綜合項目:即時通信系統1

90) Linux應用開發綜合項目:即時通信系統2

91) Linux應用開發綜合項目:即時通信系統3

第四部分 Linux系統移植 (5講)

92) 系統移植概述

93) UBoot移植

94) UBoot源碼導讀

95) 內核移植

96) 根文件系統移植

第五部分 Linux設備驅動 (13講)

97) Linux設備驅動開發概述

98) 設備驅動開發的基本框架

99) 同步、互斥

100) 阻塞、睡眠機制

101) Poll和select操作

102) 非同步通知機制

103) 中斷處理程序編寫

104) 驅動程序上/下半部處理與延緩執行機制

105) 內核定時器與延遲機制

106) 內核內存管理機制

107) 字元設備驅動實例

108) 塊設備驅動實例

109) 網路設備驅動實例

第六部分 Android應用開發 (38講)

110) 基於Android4.x高級應用開發概述

111) Android4應用開發課程概述及環境搭建

112) JAVA語法快速串講1:類與對象

113) JAVA語法快速串講2:繼承

114) JAVA語法快速串講3:異常

115) Android程序結構與界面布局

116) Activity與事件處理

117) Activity生命周期與參數傳遞

118) 項目1:GuessNumber猜數字遊戲

119) 常用GUI組件

120) 項目2、fingerWinner划拳遊戲

121) Android菜單

122) Android繪圖

123) 項目3:MyScrawl我的塗鴉

124) Android動畫

125) 項目4:RunnigPig奔跑的野豬

126) Android對話框

127) Content Providor

128) Android新特性1 Fragment

129) Android新特性2 Action Bar

130) Android通知Notifycation

131) Android服務Service

132) 項目5:EyeSaver視力保護程序

133) Android多媒體:MediaPlayer與SurfaceView

134) 項目6:MyPMP我的媒體播放器1(音頻播放)

135) 項目6:MyPMP我的媒體播放器2(視頻播放)

136) 多線程與Handler消息傳遞機制

137) 項目7:打地鼠遊戲

138) Android硬體感測器介面

139) 項目8:MyCamera我的照相機

140) Android HTTP網路編程

141) Android解析JSON數據格式

142) 項目9:MyWeather我的天氣預報

143) 嵌入式資料庫SQLite

144) 綜合項目10:管家婆1—需求分析與界面原型設計

145) 綜合項目10:管家婆2—資料庫設計與DAO層代碼實現

146) 綜合項目10:管家婆3—實現收入記賬模塊

147) 綜合項目10:管家婆4—實現支出記賬模塊

148) 綜合項目10:管家婆5—系統設置、項目整合與測試

第七部分 Android系統移植 (11講)

149) Android系統移植概述

150) Android 1.5 到Mini2440的移植1

151) Android 1.5 到Mini2440的移植2

152) Android 1.5 到Mini2440的移植3

153) Android 1.5 到Mini2440的移植4

154) Android 1.5 到Mini2440的移植5

155) Android4.x 到tiny210的移植1

156) Android4.x 到tiny210的移植2

157) Android4.x 到tiny210的移植3

158) Android4.x 到tiny210的移植4

159) Android4.x 到tiny210的移植5

第八部分 Android設備驅動 (14講)

160) Android設備驅動概述

161) Android設備驅動開發環境搭建,

162) JNI開發,

163) NDK開發

164) SystemServer

165) ServiceManager,

166) android Binder通訊機制

167) android電源管理,

168) android調試方法,

169) Android設備驅動開發實例:LED

170) Android設備驅動開發實例:按鍵

171) Android設備驅動開發實例:蜂鳴器

172) Android設備驅動開發實例:串口

173) Android設備驅動綜合項目

下載地址:360雲盤 - 零基礎Android手機嵌入式開發實戰教程免費高速下載-360雲盤分享 (訪問密碼:3944)

也可以加我一起探討 1364314410


既然已經有了安卓開發基礎

這2本了解安卓運行過程,內部作用:

Android系統源代碼情景分析(附CD光碟1張)/羅昇陽

Embedded Android: Porting, Extending, and Customizing/Karim Yaghmour-圖書

還有要了解linux驅動開發:

精通Linux驅動程序開發(英文版)/Sreekrishnan Venkateswaran-圖書

當然要掌握某個系列的cpu使用,比如樹莓派上的:

http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf


兩年Android BSP開發,無意忽悠你。

1.嵌入式開發對硬體要求高不高?

看你如何理解嵌入式,在招聘網站上搜索"嵌入式軟體工程師",得到的大多數其實就是MCU工程師。So...

2.Android嵌入式開發需要購買一些硬體設備嗎?類似於單片機、或者ARM

做嵌入式沒有硬體恐怕不行吧。單片機是別指望了,至少是ARM。你應該考慮的是什麼樣的ARM學習板能夠滿足需求,現在市場上能夠買到的ARM學習板基本都是支持Android系統的。

3.Android嵌入式開發就業前景如何?

不論前景先說理解。Android嵌入式開發應該是分為Android嵌入式應用開發和Android嵌入式系統開發。

嵌入式應用的話,和普通Android應用開發沒有什麼區別,最多就是涉及NDK開發。

Android嵌入式系統開發設計的東西就比較多。

  1. u-boot:和Linux的可以復用;

  2. Linux Driver:Android基於Linux,其實就是Linux系統移植相關的知識;

  3. Android Framework:Android的整個啟動過程及常見的服務框架;

  4. Android Application:不解釋

在做Android系統開發的時候,前兩個部分和嵌入式Linux開發幾乎相同,對於初學者來說,前兩項就夠研究大半年了,並且學到的只是皮毛。剩下的就是Android框架層,至少得理解Android啟動的整個過程,以及在Android源碼中添加一個新設備的方式,下一步就是理解常見的各個服務框架以及對於一些硬體功能,HAL層該怎樣改動。Android大廠的工程師任務分的比較明確,比如一個人專門負責無線部分,另外一個負責音視頻部分。而大多數廠商都是一個人要負責很多部分,工作內容也大多數是在晶元廠商的BSP上修修改改。Is life always this hard, or is it just when you"re a kid? Always like this.

4.求推薦的開發板、圖書(最好配套)

開發板推薦樹莓派或者BeagleBone Black,相對來說,樹莓派玩的人更多一些,使用全志A20晶元,Beaglebone Black是TI出的開源硬體,使用TI的AM335X處理器。我建議使用BeagleBone Black,因為在將來的工作中,不可避免會使用到TI的處理器,玩BBB可以熟悉TI的BSP結構,同時TI的官方wiki也很詳細,可以從驅動層到系統層有一個全面的了解,玩樹莓派的大多都比較極客,不會深究於驅動層,而做嵌入式Linux的難點就在驅動層。

書的話,看Linux驅動吧,網上看推薦。


Android嵌入式不太清楚,就本人所做的Linux嵌入式而言的話(不知道這兩個是不是一回事)

首先要對操作系統中的概念有一個清晰的認識,尤其是線程通信部分。

Linux,C語言是基礎。

Linux入門的話,看鳥哥的兩本書就夠了。

1.不太高,看懂電路圖就夠了。

2.最好買個板子,自己動手,編程這種東西,光看書不實踐等於沒學

3.雖然現在互聯網很好,但下一個爆發點還是在物聯網上,現在看谷歌和蘋果的收購就能看出來,嵌入式前景非常看好。需要說明的是,嵌入式行業如果要做好,2-3年只是個起步階段,相比較其他軟體行業的快速上手,嵌入式的學習門檻較高,做好心理準備。

4. 自己看過鳥哥的書,然後就是著名的Linux驅動開發, Unix內核。全名記不清了,很著名的,搜一下就有了。

以上


嵌入式開發的方向也是多了去了,智能硬體、手機平板、電視盒子、工業控制、物聯網、涉及到不同的操作系統和晶元平台,關鍵是你要找到自己的興趣點和切入點,入門,剩下的就是時間的問題了,給你推薦一個網站碼農導航 - IT領域專業網站導航,收集嵌入式各個方向的網站,多看看,說不定就知道該怎麼做了。


我也是來學習的


推薦閱讀:

自動控制原理那本書研究穩定性的各種方法是否還有必要?
請問學習非線性系統觀測器經典教材或者論文有哪些?
全響應、穩態響應、暫態響應、零狀態響應、零輸入響應、受迫響應、自然響應 之間存在哪些隱含的關係?
在控制、自動化領域,用到的最高深最先進的數學理論工具是什麼?控制是否是工科里用到數學最多最深的領域?
如何評價 R.E. Kalman?

TAG:嵌入式系統 | 自動控制 | 嵌入式開發 | Android開發入門 | 嵌入式設計 |