嵌入式學習之路

目標:達到適應嵌入式應用軟件開發、嵌入式系統開發或嵌入式驅動開發的基本素質。

 

採用了目前應用最廣泛的軟硬件開發平臺(Linux和Arm)。

 

學習步驟如下:

1、Linux 基礎

安裝Linux操作系統

Linux文件系統 (windows的文件共享)

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應用程序

嵌入式系統移植

Linux內核代碼

平臺相關代碼分析

ARM平臺介紹

平臺移植的關鍵技術

移植Linux內核到 ARM平臺 瞭解移植的概念

能夠移植Linux內核移植Linux2.6內核到 ARM9開發板

【1 配置編譯Linux內核

1.1 Linux內核源代碼結構

1.2 Linux內核編譯選項解析

1.3 Linux內核編譯鏈接

2.0 Linux啓動過程源代碼分析

3.0 Linux內核移植平臺相關代碼分析】

5、嵌入式 Linux 下串口通信

串行I/O的基本概念

嵌入式Linux應用軟件開發流程

Linux系統的文件和設備

與文件相關的系統調用

配置超級終端和MiniCOM 能夠熟悉進行串口通信

熟悉文件I/O 編寫串口通信程序

編寫多串口通信程序

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

Linux系統進程概述

嵌入式系統的進程特點

進程操作

守護進程

相關的系統調用瞭解Linux系統中進程的概念

能夠編寫多進程程序編寫多進程程序

編寫一個守護進程程序

sleep系統調用任務管理、同步與通信 Linux任務概述

任務調度

管道

信號

共享內存

任務管理 API 瞭解Linux系統任務管理機制

熟悉進程間通信的幾種方式

熟悉嵌入式Linux中的任務間同步與通信

編寫一個簡單的管道程序實現文件傳輸

編寫一個使用共享內存的程序

【主要包括系統編程(信號/系統調用/管道/FIFO/消息隊列/共享內存等),文件I/O編程(文件描述符/文件讀寫接口/原子操作/阻塞與非阻塞IO等,多任務和多線程編程(進程標識/ 用戶標識/fork與vfork/多線程概念/線程同步等),網絡編程(網絡基本概念/套接口編程/網絡字節次序/Client/Server結構/UDP編程);掌握Linux下Socket編程的開發流程,熟悉網絡編程的調用接口函數和相關數據結構,

內容包括文件I/O編程,多線程編程,網絡編程和項目文檔編寫】

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

線程的基礎知識

多線程編程方法

線程應用中的同步問題了解線程的概念

能夠編寫簡單的多線程程序編寫一個多線程程序

8、嵌入式 Linux 網絡編程

網絡基礎知識

嵌入式Linux中TCP/IP網絡結構

socket 編程

常用 API函數

分析Ping命令的實現

基本UDP套接口編程

許可證管理

PPP協議

GPRS 瞭解嵌入式Linux網絡體系結構

能夠進行嵌入式Linux環境下的socket 編程

熟悉UDP協議、PPP協議

熟悉GPRS 使用socket 編寫代理服務器

使用socket 編寫路由器

編寫許可證服務器

指出TCP和UDP的優缺點

編寫一個web服務器

編寫一個運行在 ARM平臺的網絡播放器

9、GUI 程序開發

GUI基礎

嵌入式系統GUI類型

編譯QT

進行QT開發熟悉嵌入式系統常用的GUI

能夠進行QT編程使用QT編寫“Hello,World”程序

調試一個加入信號/槽的實例

通過重載QWidget 類方法處理事件

10、Linux 字符設備驅動程序

設備驅動程序基礎知識

Linux系統的模塊

字符設備驅動分析

fs_operation結構

加載驅動程序瞭解設備驅動程序的概念

瞭解Linux字符設備驅動程序結構

能夠編寫字符設備驅動程序編寫Skull驅動

編寫鍵盤驅動

編寫I/O驅動

分析一個看門狗驅動程序

對比Linux2.6內核與2.4內核中字符設備驅動的不同

Linux 塊設備驅動程序塊設備驅動程序工作原理

典型的塊設備驅動程序分析

塊設備的讀寫請求隊列了解Linux塊設備驅動程序結構

能夠編寫簡單的塊設備驅動程序比較字符設備與塊設備的異同

編寫MMC卡驅動程序

分析一個文件系統

對比Linux2.6內核與2.4內核中塊設備驅動的不同

11、文件系統

虛擬文件系統

文件系統的建立

ramfs內存文件系統

proc文件系統

devfs 文件系統

MTD技術簡介

MTD塊設備初始化

MTD塊設備的讀寫操作了解Linux系統的文件系統

瞭解嵌入式Linux的文件系統

瞭解MTD技術

能夠編寫簡單的文件系統爲 ARM9開發板添加 MTD支持

移植JFFS2文件系統

通過proc文件系統修改操作系統參數

分析romfs 文件系統源代碼

創建一個cramfs 文件系統

 

嵌入式處理器體系結構及編程實踐    

主要介紹ARM體系結構及其基本編程知識,包括指令分類,尋址方式、指令集、存儲系統、異常中斷處理、彙編語言以及C/C++和彙編語言的混合編程等知識。同時結合ARM嵌入式開發板硬件設計原理和基本硬件設計流程,分析各種外設的工作原理和驅動機制,並自己動手實踐完成一個ARM開發板上的編程大作業。

嵌入式Linux開發基礎及高級應用    

主要介紹嵌入式Linux開發應用程序的基本流程和知識,包括嵌入式Linux基本概念和開發流程、Bootloader工作原理、內核裁減配置和交叉編譯、根文件系統製作、網絡編程以及圖形界面和數據庫開發等知識。同時獨立完成一個基於嵌入式Linux GUI的應用編程大作業。

嵌入式 Linux驅動理論及驅動程序開發實踐    

主要介紹嵌入式Linux上驅動程序開發規範,包括設備驅動程序概念、字符設備驅動程序、塊設備與網絡設備、網卡驅動以及常用嵌入式設備驅動開發等知識。同時獨立實現兩種嵌入式設備驅動程序的編寫,包括驅動模塊的調試和加載以及完整的項目開發文檔的編寫。

嵌入式Linux項目團隊開發實踐鍛鍊    

主要包括設計並實現一個真實和完整的嵌入式項目的開發流程,涉及到數據採集、網絡通訊、圖形用戶界面顯示以及嵌入式數據庫存儲系統等多種嵌入式Linux編程技術。要求學員建立起團隊開發和協同工作的企業項目開發模式的概念和流程,強化學員對編寫項目概要設計文檔和詳細設計文檔的理解,爲就業前的職業技能和素質訓練做好充分準備。

❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤

最重要的是:手頭要有一塊嵌入式板子進行實踐。

❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤ 

 

圖書


C語言

《C Primer Plus,5th Edition》【美】Stephen Prata著

The C programming language《C程序設計語言》

Pointers on C《C和指針》

C traps and pitfalls《C陷阱與缺陷》

 Expert C Lanuage《專家C編程》

 Writing Clean Code-----Microsoft Techiniques for Developing Bug-free C Programs

《編程精粹--Microsoft 編寫優質無錯C程序祕訣》

 Programming Embedded Systems in C and C++《嵌入式系統編程》

《C語言嵌入式系統編程修煉》

《高質量C++/C編程指南》林銳

Linux基礎

1、《Linux與Unix Shell 編程指南》

2、《鳥哥的 Linux 私房菜 基礎學習篇(第二版)》

3、《Linux程序設計.第3版》

3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)

4、《嵌入式Linux應用程序開發詳解》

Linux內核

1、《深入理解Linux內核》(第三版)

2、《Linux內核源代碼情景分析》毛德操 胡希明著

研發方向

1、《UNIX Network Programming》(UNP)

2、《TCP/IP詳解》

3、《Linux內核編程》

4、《Linux設備驅動開發》(LDD)

硬件基礎

計算機組成原理

1、《ARM體系結構與編程》杜春雷著

英語基礎

1、《計算機與通信專業英語》

系統教程

1、《嵌入式系統――體系結構、編程與設計》

2、《嵌入式系統――採用公開源代碼和StrongARM/Xscale處理器》毛德操 胡希明著

3、《Building Embedded Linux Systems》

理論基礎

1、《算法導論》

2、《數據結構(C語言版)》

3、《計算機組織與體系結構?性能分析》

4、《深入理解計算機系統》【美】Randal E. Bryant David O'Hallaron著

5、《操作系統:精髓與設計原理》

6、《編譯原理》

7、《數據通信與計算機網絡》

8、《數據壓縮原理與應用》

《unix環境高級編程》

Stevens先生的《unix環境高級編程》

如果對網絡編程有興趣的,可以學習一下Stevens先生的《UNIX網絡編程》兩卷

可以再看看《TCP/IP詳解》三卷)。

《計算機編程藝術》對算法有興趣得可以研究一下。

 

《linux設備驅動程序》《深入理解Linux內核》

Linux上的應用編程:《APUE》和《UNP》,前者鍛鍊基本功,後者學習網絡編程。

《Linux Device Driver》--《Linux設備驅動程序》

《UNP》是《UNIX Network Programming》--《Unix網絡編程》這本書的簡稱。作者是:W.Richard Stevens,他是unix與網絡方面的專家,他寫了幾本書,都是unix和網絡方面的經典:

第一卷是關於Unix 網絡方面的API詳細描述,BSD Socket網絡編程接口和另外一種網絡編程接口的,不過現在一般都用BSDSocket;

第二卷寫的是IPC,就是interprocess communication(進程間通信)。是關於Unix網絡編程方面的經典。第二卷沒有設計到網絡的東西,主要講進程間通訊和Posix線程。

《APUE》一卷,《AdvancedProgramming in the UNIX Environment》

中文稱爲《UNIX環境高級編程-(第2版)》。是一本詳細描述unix類系統調用的書,unix的C編程中的經典。

(3). 《TCP/IP詳解》三卷,第一卷寫的是TCP/IP協議,第二卷寫TCP/IP協議在BSD中的C實現,第三卷寫事務和HTTP協議等。

《TCP/IP祥解》一共三卷,卷一講協議,卷二講實現,卷三講編程應用。

 《UNIX編程藝術》--《The Art of Unix Programming》

 

❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤

不管做什麼,學什麼,一要心態好,二要態度好。

所謂心態好就是不要着急、不用擔心;所謂態度好是多分享、多討論、學出自己的心得。

學習靠自己,不要期望別人教你什麼,學習要主動;

不管水平高低,不要看不起自己,也不能看不起別人,學習要心態好;

不能不思進取,也不用讓自己爲技術所累,給自己多一點技術之外的時間;

耐心,刻苦,嘗試,失敗。

學習的過程可能會是飽受挫折和孤獨的。

要知道爲什麼學?要知道學的是什麼?要知道怎麼學?要知道學瞭如何用?最後還要知道用的時候出了問題該如何解決?

What                How                Why

❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤

 

獨自遠行...

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/zhangheng0624/archive/2010/05/17/5602038.aspx

發佈了33 篇原創文章 · 獲贊 1 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章