嵌入式高手之路
嵌入式高手之路
宗旨:技術的學習是有限的,分享的精神是無限的。
第一部分:LINUX平臺搭建與環境熟悉??
 了解Linux系統;區分各種版本的Linux系統,以便于拓展 Linux視野。
 1、Linux 簡介;
 2、Linux 系統的主要特點;
 3、Linux 的組成;
 4、主要的 Linux 版本;
 5、嵌入式 Linux簡介與發展
 第二部分虛擬機安裝和LINUX系統安裝??
 1、虛擬機安裝;
 2、Linux系統的安裝;
 3、Linux系統的常用軟件的安裝;
 4、Linux快速入門
 5、?熟悉運用 Linux環境下,常用命令的操作與系統設置,如常用的 Shell;掌握基本的 Shell 應用
 第三部分:嵌入式LINUX環境搭建??
 1、? 建立嵌入式 Linux開發環境
 2、? 熟悉嵌入式開發平臺
 3、? 嵌入式 Linux開發工具
 4、? ?Linux下的調試技巧
 5、? MAKE工程管理器
 6、? 硬件環境的搭建;arm-linux-gcc與 gcc安裝配置
 第四部分: U-Boot:?了解?U-Boot?的作用及工作流程;了解Bootloader?的代碼結構、編譯過程;移植U-Boot;掌握常用的U-Boot命令。??
 1、? Bootloader介紹
 2、? u-boot工程介紹
 3、? u-boot的編譯使用
 4、? u-boot源碼分析
 5、? u-boot資源分配
 6、? 配置編譯u-boot
 7、? u-boot移植過程
 8、? u-boot常用命令操作
 9、? 添加u-boot新命令
 10、設置u-boot環境變量
 11、?u-boot驅動添加如網卡:DM9000
 第五部分:LINUX內核移植:熟悉內核的原碼結構和kbuild Makefile語法;掌握和內核、驅動模塊編譯相關的原理及方法。?
 1、Linux內核介紹
 2、Linux內核特點
3、Linux內核源代碼結構
 4、Linux內核選項解析
 5、Linux內核編譯鏈接
 6、內核模塊編譯、使用方法
 第六部分:LINUX根文件系統?
 1、busybox 包移植、編譯
 2、Linux跟文件系統制作過程
 3、根文件系統介紹
 4. nfs文件服務器系統搭建
 第七部分:LINUX驅動開發
 驅動開發是嵌入式Linux開發難度最高的內容,也是目前嵌入式行業最緊缺的人才之一。本課程介紹嵌入式Linux驅動開發相關概念及開發流程,了解驅動開發的關鍵技術點,重點講解嵌入式Linux下常用接口驅動的編寫方法,包括
 1、字符型LED驅動開發(GPIO口驅動)
 2、按鍵驅動開發(中斷驅動,在驅動中中斷程序的編寫,消息隊列的應用
 3、ADC驅動開發
 4、網卡驅動開發
 5、串口驅動開發
 6、液晶屏(TFT彩屏驅動開發
 7、觸摸屏驅動+tslib(中間插件移植與設置),
 8、USB驅動開發+USB無線網卡移植
 9、IIS驅動開發+maplay移植與應用(mp3播放)+mplayer移植與應用(視頻播放Mp4/廣告機等播放)
 10、SD驅動開發
 11、RTC驅動開發
 12、電源管理方法
 第八部分:LINUX應用學習
 ? ? ? ? 嵌入式Linux應用開發和系統開發是嵌入式Linux中最重要的一部分,也是企業人才需求最廣的一部分。主要目標是精通嵌入式Linux下的程序設計,熟練掌握嵌入式Linux的開發環境、系統編程以及網絡編程,熟悉C++、QT編程并且深刻體會整個嵌入式Linux項目開發流程,強化學員對Linux應用開發的能力.
 1、Linux系統中的進程的概念,在應用程序中線程與父子進程的創建與應用
 2、線程之間、進程之間的通信
 3、進程間通信基本概念
 4、管道(PIPE)
 5、信號(SIGNAL)
 6、內存映射(MAPPED MEMORY)
 7、消息隊列(MESSAGE QUEUE)
 8、信號量(SEMAPHORE)
 9、共享內存(SHARE MEMORY)@
 10、tcPip協議在應用程序中的編程開發(SOCKET套接字編程開發)
 10.1. ISO/OSI七層協議模型與IP網絡四層模式
 10.2.TCP/IP協議簇
 10.3. 基于嵌入式Linux的TCP/IP網絡結構
 10.4. 基于嵌入式Linux的SOCKET編程
 10..5.UDP與TCP的區別
 10.6. UDP SERVER-CLIENT關系程
 11、文件讀寫與存儲
 第九部分:QT移植與開發
 ? ? ? ? 了解嵌入式Linux下的幾種常見GUI及其特點,重點能掌握QT的有關內容,具備QT程序設計能力。了解嵌入式數據庫的配置與開發
 1 、嵌入式Linux GUI介紹
2、嵌入式QT開發包移植
 3、QT介紹及其信號插槽機制
 4、 QT圖形界面編程技術
5、QT應用程序與Linux驅動的銜接
 6、 QT在實際項目中具體應用
 第十部分:無線通訊應用
 1、無線wifi模塊應用
 2、3G模塊應用
 第十一分布:嵌入式系統應用程序,驅動程序調試
 1、Linux基本工具調試使用。GDB,insight調試等
 2、Linux應用程序的編程
 3、嵌入式產品程序打包與發布
 第十二部分:嵌入式項目綜合調試,產品發布
 ? ? ? ? 了解真實項目的開發流程,掌握如何將所學知識應用到項目開發中。將模擬真實項目的管理過程,培養學員項目團隊協同開發能力,項目文檔編寫能力和新知識的學習能力,為下一步就業做好知識上和心理上的充分準備
?
?
嵌入式LININX開發第一學習階段,主要打好基礎,學好C編程,Linux系統編程。
1、C語言編程基礎
2、嵌入式開發基礎:Linux概述安裝,shell命令,vim編輯器,GCC,GDB,Makefile,交叉開發環境構建
3、嵌入式Linux系統編程:shell編程,文件編程,串口編程,進程編程,線程編程,網絡編程
4、嵌入式項目開發:數據采集控制系統,串口服務器
?
嵌入式LININX開發第二學習階段,掌握ARM匯編程序設計,驅動程序設計。
1、ARM體系結構:ARM體系,ARM指令,Thumb指令,匯編程序設計,邏輯程序開發
2、Linux內核移植:bootloader,內核配置,文件系統
3、驅動程序開發:驅動架構模型,字符設備驅動,塊設備驅動,網絡驅動
4、嵌入式項目開發:智能家居系統,視頻監控系統
?
嵌入式LININX開發第三學習階段,掌握C++面向對象程序設計,Qt編程。
1、C++語言編程基礎
2、QT編程開發:QT開發基礎,QT布局與控件,QT繪圖,QT事件,QT網絡通信,QT數據庫,QT移植
3、嵌入式項目開發:車載監控管理系統,工業能源管理系統
?
嵌入式設計應具備的基本技能
?
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調試技術?AutoconfAutomake 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?文件系統
?
簡單地總結一下硬件開發的基本過程:
 ??? 1、明確硬件總體需求情況,如CPU處理能力、存儲容量及速度、I/O端口的分配、接口要求、電平要求、特殊電路要求等等。
 ??? 2、根據需求分析制定硬件總體方案,尋求關鍵器件及相關技術資料、技術途徑和技術支持,充分考慮技術可行性、可靠性和成本控制,并對開發調試工具提出明確要求。關鍵器件可試著去索取樣品。
 ??? 3、總體方案確定后,做硬件和軟件的詳細設計,包括繪制硬件原理圖、軟件功能框圖、PCB設計、同時完成開發元器件清單。
 ??? 4、做好PCB板后,對原理設計中的各個功能單元進行焊接調試,必要時修改原理圖并作記錄。
 ??? 5、軟硬件系統聯調。一般情況下,經過調試后原理及PCB設計上有所調整,需要二次投板。
 ??? 6、可靠性測試、穩定性測試,通過驗收,項目完成!??
硬件工程師應具備的基本技能:
 ????(1)由需求分析至總體方案、詳細設計的規劃創造能力;
 ????(2)熟練運用設計工具,設計原理圖、PCB板的能力;
 ????(3)熟練運用單片機、DSP、PLD、FPGA等進行軟硬件開發調試的能力;
 ????(4)熟練運用仿真工具、示波器、信號發生器、邏輯分析儀等調測硬件的能力;
 ????(5)掌握常用的標準電路的設計能力,如復位電路、常用濾波器電路、功放電路、高速信號傳輸線的匹配電路等;
 ????(6)故障定位、解決問題的能力;
 ????(7)設計文檔的組織編寫技能。??
?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
 
                            
                        - 上一篇: 深度学习-孪生网络
- 下一篇: Cortex M3存储器映射
