學習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--單鏈表112)數據結構2--單鏈表213)數據結構3--循環鏈表和雙向鏈表14)數據結構4--棧15)數據結構5--隊列16)數據結構6--查找17)數據結構7--排序18)綜合項目:網吧計費系統119)綜合項目:網吧計費系統220)綜合項目:網吧計費系統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實驗158) IIS實驗259) ARM裸機開發綜合項目:多功能播放器160) ARM裸機開發綜合項目:多功能播放器261) ARM裸機開發綜合項目:多功能播放器362) ARM裸機開發綜合項目:多功能播放器463) ARM裸機開發綜合項目:多功能播放器5第三部分 Linux應用開發 (28講)
64) 課程介紹、VMware及Linux安裝65) Linux配置及vi使用66) Linux shell命令及Shell腳本67) Linux編程基礎:gcc、g++、gdb、Makefile68) 標準文件操作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應用開發綜合項目:即時通信系統190) Linux應用開發綜合項目:即時通信系統291) 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 Providor128) Android新特性1 Fragment129) Android新特性2 Action Bar130) Android通知Notifycation131) Android服務Service132) 項目5:EyeSaver視力保護程序133) Android多媒體:MediaPlayer與SurfaceView134) 項目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) 嵌入式資料庫SQLite144) 綜合項目10:管家婆1—需求分析與界面原型設計145) 綜合項目10:管家婆2—資料庫設計與DAO層代碼實現146) 綜合項目10:管家婆3—實現收入記賬模塊147) 綜合項目10:管家婆4—實現支出記賬模塊148) 綜合項目10:管家婆5—系統設置、項目整合與測試第七部分 Android系統移植 (11講)
149) Android系統移植概述150) Android 1.5 到Mini2440的移植1151) Android 1.5 到Mini2440的移植2152) Android 1.5 到Mini2440的移植3153) Android 1.5 到Mini2440的移植4154) Android 1.5 到Mini2440的移植5155) Android4.x 到tiny210的移植1156) Android4.x 到tiny210的移植2157) Android4.x 到tiny210的移植3158) Android4.x 到tiny210的移植4159) Android4.x 到tiny210的移植5第八部分 Android設備驅動 (14講)
160) Android設備驅動概述161) Android設備驅動開發環境搭建,162) JNI開發,163) NDK開發164) SystemServer165) ServiceManager,166) android Binder通訊機制167) android電源管理,168) android調試方法,169) Android設備驅動開發實例:LED170) 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嵌入式系統開發設計的東西就比較多。
- u-boot:和Linux的可以復用;
- Linux Driver:Android基於Linux,其實就是Linux系統移植相關的知識;
- Android Framework:Android的整個啟動過程及常見的服務框架;
- 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開發入門 | 嵌入式設計 |