導航:首頁 > 文檔加密 > 嵌入式設計師教程pdf

嵌入式設計師教程pdf

發布時間:2022-05-27 05:24:15

Ⅰ 嵌入式系統設計師教程的圖書目錄

第1章嵌入式系統基礎知識
1.1嵌入式系統的定義和組成
1.1.1嵌入式系統的定義
1.1.2嵌入式系統發展概述
1.1.3嵌入式系統的組成
1.1.4實時系統
1.2嵌入式微處理器體系結構
1.2.1馮·諾依曼與哈佛結構
1.2.2CISC與RISC
1.2.3流水線技術
1.2.4信息存儲的位元組順序
1.3嵌入式系統的硬體基礎
1.3.1組合邏輯電路基礎
1.3.2時序邏輯電路
1.3.3匯流排電路及信號驅動
1.3.4電平轉換電路
1.3.5可編程邏輯器件基礎
1.4嵌入式系統中信息表示與運算基礎
1.4.1進位計數制與轉換
1.4.2計算機中數的表示
1.4.3非數值數據編碼
1.4.4差錯控制編碼
1.5嵌入式系統的性能評價
1.5.1度量項目
1.5.2評價方法
1.5.3評估嵌入式系統處理器的主要指標
第2章嵌入式微處理器與介面知識
2.1嵌入式微處理器的結構和類型
2.1.1嵌入式微處理器的分類
2.1.2典型8位微處理器的結構和特點
2.1.3典型16位微處理器的結構和特點
2.1.4典型32位微處理器的結構和特點
2.1.5DSP處理器的結構和特點
2.1.6多核處理器的結構和特點
2.2嵌入式系統的存儲體系
2.2.1存儲器系統概述
2.2.2嵌入式系統存儲設備分類
2.2.3ROM的種類與選型
2.2.4Flash:Memory的種類與選型
2.2.5RAM的種類與選型
2.2.6外部存儲器的種類與選型
2.3嵌入式系統輸入輸出設備
2.3.1嵌入式系統常用輸入/輸出設備概述
2.3.2GPIO原理與結構
2.3.3A/D介面基本原理與結構
2.3.4D/A介面基本原理與結構
2.3.5鍵盤介面基本原理與結構
2.3.6顯示介面基本原理與結構
2.3.7觸摸屏介面基本原理與結構
2.3.8音頻介面基本原理與結構
2.4嵌入式系統匯流排介面
2.4.1串列介面基本原理與結構
2.4.2並行介面基本原理與結構
2.4.3PCI介面基本原理與結構
2.4.4USB介面基本原理與結構
2.4.5SPI介面基本原理與結構
2.4.6IIC介面基本原理與結構
2.4.7PCMCIA介面基本原理與結構
2.5嵌入式系統網路介面
2.5.1乙太網介面基本原理與結構
2.5.2CAN匯流排介面的基本原理與結構
2.5.3.XDSL介面基本原理與結構
2.5.4無線乙太網基本原理與結構
2.5.5藍牙介面基本原理與結構
2.5.61394介面基本原理與結構
2.6嵌入式系統電源
2.6.1電源介面技術
2.6.2電源管理技術
2.7電子電路設計基礎
2.7.1電路設計
2.7.2PCB電路設計
2.7.3電子設計
2.7.4電子電路測試
第3章嵌入式系統軟體及操作系統知識
3.1嵌入式軟體基礎
3.1.1嵌入式軟體概述
3.1.2嵌入式軟體分類
3.1.3嵌入式軟體的體系結構
3.1.4設備驅動層
3.1.5嵌入式中間件
3.2嵌入式操作系統概述
3.2.1嵌入式操作系統的概念
3.2.2嵌入式操作系統的分類
3.2.3常見的嵌入式操作系統
3.3任務管理
3.3.1多道程序技術
3.3.2進程、線程和任務
3.3.3任務的實現
3.3.4任務的調度
3.3.5實時系統調度
3.3.6任務間的同步與互斥
3.3.7任務間通信
3.4存儲管理
3.4.1存儲管理概述
3.4.2實模式與保護模式
3.4.3分區存儲管理
3.4.4地址映射
3.4.5頁式存儲管理
3.4.6虛擬存儲管理
3.5設備管理
3.5.1設備管理基礎
3.5.2I/O控制方式
3.5.3I/O軟體
3.6.1嵌入式文件系統概述
3.6.2文件和目錄
3.6.3文件系統的實現
第4章嵌入式軟體程序設計
4.1嵌入式軟體開發概述
4.1.1嵌入式應用開發過程
4.1.2嵌入式軟體開發的特點
4.1.3嵌入式軟體開發的挑戰
4.2嵌入式程序設計語言
4.2.1程序設計語言概述
4.2.2匯編語言
4.2.3面向過程的語言
4.2.4.面向對象的語言
4.2.5匯編、編譯與解釋程序的基本原理
4.3嵌入式軟體開發環境
4.3.1宿主機、目標機
4.3.2嵌入式軟體開發工具
4.3.3集成開發環境
4.4嵌入式軟體開發
4.4.1嵌入式平台選型
4.4.2軟體設計
4.4.3嵌入式程序設計
4.4.4編碼
4.4.5測試
4.4.6下載和運行
4.5嵌入式軟體移植
4.5.1無操作系統的軟體移植
4.5.2有操作系統的軟體移植
4.5.3應用軟體的移植
第5章嵌入式系統開發與維護知識
5.1系統開發過程及其項目管理
5.1.1系統開發生命周期各階段的目標和任務的劃分方法
5.1.2系統開發項目管理基礎知識及其常用管理工具使用方法
5.1.3系統開發工具與環境知識
5.2系統分析基礎知識
5.2.1系統分析的目的和任務
5.2.2用戶需求
5.2.3系統需求
5.2.4系統規格說明書的編寫方法
5.3系統設計知識
5.3.1傳統的系統設計方法
5.3.2實時系統分析與設計
5.3.3軟硬體協同設計方法
5.4系統實施知識
5.4.1系統架構設計
5.4.2系統詳細設計
5.4.3系統測試
5.5系統維護知識
5.5.1系統運行管理
5.5.2系統維護知識
5.5.3系統評價知識
第6章嵌入式系統設計
6.1嵌入式系統設計的特點
6.2嵌入式系統的設計流程
6.2.1產品定義
6.2.2嵌入式系統的軟硬體劃分
6.2.3嵌入式系統硬體設計
6.2.4嵌入式系統的軟體設計
6.2.5系統集成和測試
6.3設計示例:嵌入式數控系統
6.3.1數控系統簡介
6.3.2需求分析
6.3.3系統體系結構設計
6.3.4硬體設計
6.3.5軟體設計
6.3.6系統集成與測試

Ⅱ 介紹一下 嵌入式系統設計師 參考書目

嵌入式系統設計師考試大綱

一、考試說明
1、考試要求:
(1)掌握科學基礎知識;
(2)掌握嵌入式系統的硬體、軟體知識;
(3)掌握嵌入式系統分析的方法;
(4)掌握嵌入式系統設計與開發的方法及步驟;
(5)掌握嵌入式系統實施的方法
(6)掌握嵌入式系統運行維護知識;
(7)了解信息化基礎知識、信息技術引用的基礎知識;
(8)了解信息技術標准、安全,以及有關法律的基本知識;
(9)了解嵌入式技術發展趨勢;
(10)正確閱讀和理解計算機及嵌入式領域的英文資料。
2、通過本考試的合格人員能根據項目管理和工程技術的實際要求,按照系統總體設計規格進行軟、硬體實際,編寫系統開發規格說明書等相應的文檔;組織和指導嵌入式系統靠法實施人員實施硬體電路、編寫和調試程序,並對嵌入式系統硬體設備和程序進行優化和集成測試,開發出符合系統總體設計要求的高質量嵌入式系統;具有工程師的實際工作能力和業務水平。
二、考試范圍
考試科目1:嵌入式系統基礎知識
1.計算機科學基礎
1.1數制及轉換
o 二進制、八進制、十進制和十六進制等常用數制及其相互轉換
1.2數據的表示
o 數的機內表示(原碼、反碼、補碼、移碼,定點和浮點,精度和溢出)
o 字元、漢字、聲音、圖像的編碼方式
o 校驗方法和校驗碼(奇偶驗碼、海明校驗碼、循環校驗碼)
1.3算術和邏輯運算
o 計算機中的二進制數運算方法
o 邏輯代數的基本運算和邏輯表達式的化簡
1.4計算機系統結構和重要部件的基本工作原理
o CPU和存儲器的組成、性能、基本工作原理
o 常用I/O設備、通信設備的性能,以及基本工作原理
o I/O介面的功能、類型和特點
o 虛擬存儲存儲基本工作原理,多級存儲體系
1.5安全性、可靠性與系統性能評測基礎知識
o 診斷與容錯
o 系統可靠性分析評價
o 計算機系統性能評測方法
2.嵌入式系統硬體知識
2.1數字電路和邏輯電路基礎
2.1.1組合電路和時序電路
2.1.2匯流排電路與電平轉換電路
2.1.3可編程邏輯器件
2.2嵌入式微處理器基礎
2.2.1嵌入式微處理器體系結構
o 馮.諾伊曼結構與哈佛結構
o CISC與RISC
o 流水線技術
o 信息存儲的位元組順序(大端存儲法和小端存儲法)
2.2.2嵌入式系統處理器的結構和類型
o 常用8位處理器的體系結構和類型
o 常用16位處理器的體系結構特點
o 常用32位處理器的體系結構特點
o 常用DSP處理器的體系結構特點
o 多核處理器的體系結構特點
2.2.3異常
o 同步異常(陷阱、故障、終止)
o 非同步異常(中斷)
o 可屏蔽中斷、不可屏蔽中斷
o 中斷優先順序、中斷嵌套
2.3 嵌入式系統的存儲體系
2.3.1存儲器系統
o 存儲器系統的層次結構
o 高速緩存(Cache)
o 內存管理單元(MMU)
2.3.2 ROM的種類與選型
o 常見ROM的種類
o PROM、EPROM、E2PROM型ROM的典型特徵和不同點
2.3.3 Flash Memory的種類與選型
o Flash Memory的種類
o NOR和NAND型Flash Memory的典型特徵和不同點
2.3.4 RAM的種類與選型
o 常見RAM的種類
o SRAM、DRAM、DDRAM、NVRAM的典型特徵和不同點
2.3.5 外存
o 常見外存的種類
o 磁碟、光碟、CF、SD等的典型特徵和不同點
2.4 嵌入式系統I/O介面
2.4.1 定時器和計數器基本原理與結構
2.4.2 GPIO、PWM介面基本原理與結構
2.4.3 A/D、D/A介面基本原理與結構
2.4.4鍵盤、顯示、觸摸屏介面基本與結構
2.4.5嵌入式系統音頻介面
2.5嵌入系統通信及網路介面
o PCI、USB、串口、紅外、並口、SPI、IIC、PCMCIA的基本原理與結構
o 乙太網、CAN、WLAN、藍牙、1394的基本原理與結構
2.6嵌入式系統電源分類及電源原理
2.7電子電路設計
2.7.1電子電路設計基礎知識
o 電子電路設計原理
o 電子電路設計方法及步驟
o 電子電路設計中的可靠知識
2.7.2 PCB設計基礎知識
o PCB設計原理
o PCB設計方法及步驟
o 多層PCB設計的注意事項及布線原則
o PCB設計中的可靠性知識
2.7.3電子電路測試基礎知識
o 電子電路測試原理與方法
o 硬體抗干擾測試
3. 嵌入式系統軟體知識
3.1嵌入式軟體基礎知識
3.1.1嵌入式軟體的分類(系統軟體、支撐軟體、應用軟體)
3.1.2無操作系統支持的嵌入式軟體體系結構(輪詢、中斷、前後台)
3.1.3有操作系統支持的嵌入式軟體體系結構
3.1.4板極支持包基礎知識(系統初始化、設備驅動程序)
3.1.5嵌入式中間件(GUI、資料庫)
3.2 嵌入式操作系統基礎知識
3.2.1嵌入式操作系統體系結構
o 單體結構、分層結構和微內核結構
3.2.2任務管理
o 多道程序技術
o 進程、線程、任務的概念
o 任務的實現(任務的層次結構、任務控制塊、任務的狀態及狀態轉換、任務隊列)
o 任務調度(調度演算法的性能指標、可搶占調度、不可搶占調度、先來先服務、短作業優先演算法、時間片輪轉演算法、優先順序演算法)
o 實時系統及任務調度(RMS、EDF演算法)
o 任務間通信(共享內存、消息、管道、信號)
o 同步與互斥(競爭條件、臨界區、互斥、信號量、死鎖)
3.2.3存儲管理
o Flat存儲管理方式
o 分區存儲管理(固定分區、可變分區)
o 地址重定位(邏輯地址、物理地址、地址映射)
o 頁式存儲管理
o 虛擬存儲技術(程序局部性原理、虛擬頁式存儲管理、頁面置換演算法、工作集模型)
3.2.4設備管理
o 設備無關性、I/O地址、I/O控制、中斷處理、緩沖技術、假離線技術)
3.2.5文件系統基礎知識
o 文件和目錄
o 文件的結構和組織
o 存取方法、存取控制
o 常見嵌入式文件系統(FAT、JFFS、YAFFS)
3.2.6操作系統移植基礎知識
3.3 嵌入式系統程序設計
3.3.1嵌入式軟體開發基礎知識
3.3.2嵌入式程序設計語言
o 匯編、編譯、解釋系統的基礎知識和基本工作原理
o 匯編語言
o 基於過程的語言(過程/函數、參數傳遞、全局變數、遞歸、動態內存分配、數據類型)
o 面向對象的語言(對象、數據抽象、繼承、多態、自動內存管理)
o 各類程序設計語言的主要特點和適用情況
3.3.3嵌入式軟體開發環境
o 宿主機、目標機
o 編輯器、編譯器、鏈接器、調試器、模擬器
o 常用嵌入式開發工具(編程器、硬體模擬器、邏輯分析儀、示波器)
o 集成開發環境
o 開發輔助工具
3.3.4嵌入式軟體開發
o 軟體設計(模塊結構設計、數據結構設計、內存布局、面向對象的分析與設計)
o 嵌入式引導程序的設計、設備驅動程序設計、內核設計、網路程序設計、應用軟體設計)
o 編碼(編程規范、代碼審查)
o 測試(測試環境、測試用例、測試方法、測試工具)
o 下載和運行
3.3.5嵌入式應用軟體移植
4.嵌入式系統的開發與維護知識
4.1系統開發過程及其項目管理
o 系統開發生命周期各階段的目標和任務的劃分方法
o 系統開發項目掛你基礎知識及其常用管理工具使用方法
o 主要的系統開發方法
o 系統開發工具與環境知識
4.2 系統分析基礎知識
o 系統分析的目的和任務
o 系統分析方法
o 系統規格說明書的編寫方法
4.3 系統設計知識
o 傳統系統設計方法
o 軟硬體協同設計方法
4.4 系統實施知識
o 系統架構設計
o 系統詳細設計
o 系統調試技術
o 系統測試
4.5 系統維護知識
o 系統運行管理知識
o 系統維護知識
o 系統評價知識
5.安全性知識
o 安全性基本概念
o 加密與解密機制
6.標准化知識
o 標准化的概念
o 國際標准、國家標准、行業標准、企業標准基本知識
o 代碼標准、文件格式標准、安全標准、軟體開發規范和文檔標准知識
o 標准化機構
o 嵌入式系統相關標准
7.信息化基礎知識
o 信息化和信息系統基本概念
o 有關的法律、法規
8.嵌入式技術發展趨勢
9.計算機專業英語
o 正確閱讀和理解相關領域的英文資料

考試科目2:嵌入式系統設計應用技術
1.嵌入式系統開發過程
1.1系統需求分析方法與步驟
1.2系統設計
o 系統硬體配置
o 系統功能組成分配
o 軟硬體功能的分配
o 可行性驗證及設計審查
o 系統規格
o 周期,成本及工作量估計
o 開發計劃
1.3軟硬體協同設計
1.4硬體設計
1.5軟體設計
o 軟體結構
o 設計評審
o 軟體詳細設計
1.6系統測試
o 測試環境
o 測試計劃(內容、方法、標准、過程、檢驗)
o 硬體測試
o 軟體測試(單元測試、集成測試)
o 軟硬體聯合測試
o 實施測試
1.7系統評估
1.8 軟體維護
2.嵌入式系統硬體設計
2.1嵌入式系統硬體基本結構
2.1.1嵌入式微處理結構與應用
2.1.2 異常及中斷處理技術
2.1.3 DMA技術
2.1.4 多處理系統
o 多處理器系統特點
o 多處理器系統構建技術
2.1.5 匯流排架構
o 應用系統中的匯流排配置
2.1.6 內存種類及架構
o 存儲器系統介面設計
2.1.7數字電路和邏輯電路
o 專用集成電路
o 可編程邏輯控制器件
2.2輸入/輸出介面設計
2.2.1 輸入/輸出介面
o 介面信號電平轉換
o 介面驅動電路設計
2.2.2輸入/輸出介面應用技術
o 外圍設備
o 串口通信
o 並口通信
o 模擬介面
o 通信介面設備
o 通信標准和協議
o 數據傳輸方式
2.3外圍設備介面應用技術
2.3.1 外圍存儲設備
o 存儲卡,記憶棒,IC卡,MMC卡,SD卡
o DVD 、CD-R 、CD-RW
2.3.2外圍輸入/輸出設備
o 鍵盤,滑鼠,觸摸屏
o 液晶板、LED、7段數碼管、蜂鳴器
2.3.3電源設計技術
2.4可靠性與安全性設計技術
2.4.1 錯誤檢測與隔離技術
2.4.2 冗餘設計
2.4.3 系統恢復設計
2.4.4 診斷技術
2.4.5常用安全標准
2.4.6 抗干擾設計
2.4.7電磁兼容設計
2.4.8系統加密
3.嵌入式系統軟體設計
3.1嵌入式系統軟體結構設計
3.2嵌入式操作系統應用技術
3.2.1 時間管理
o 系統時間
o 時鍾中斷
3.2.2內存管理
o 靜態內存管理
o 動態內存管理
3.2.3任務管理和任務間的通信
o 任務間的通信機制
o 信號量
o 郵箱
o 消息隊列
3.2.4異常處理
o 異常處理方法
o 中斷優先順序處理方法
o 系統調用
3.2.5嵌入式文件系統應用技術
3.2.6嵌入式系統圖形用戶介面(GUI)應用技術
3.2.7嵌入式系統資料庫應用技術
3.3嵌入式軟體設計技術
3.3.1匯編語言設計
o 數據類型
o 匯編語言程序結構
o 匯編語言程序設計及優化
o 子程序調用
3.3.2嵌入式C語言設計
o ANSI-C的數據類型
o C程序結構
o C語言程序設計及優化
o 程序的編譯與鏈接
3.3.3面向對象程序設計與開發
o 面向對象的分析與設計方法UML
o 面向對象的編程語言
o 使用C++進行嵌入式系統開發
o 使用Java進行嵌入式系統開發
3.4 系統級軟體設計技術
o 嵌入式系統固件與系統初始化設計
o 設備驅動程序設計
o 硬體抽象層、板級支持包設計
o 嵌入式軟體的移植技術
4.嵌入式系統開發技術
4.1系統開發環境
4.1.1開發工具
o 文本編輯器
o 匯編、編譯和連接程序
o ICE和ICE監控器
o 配置管理工具
o 逆工程工具
4.1.2平台
o 操作系統
o 分布式開發環境
4.1.3開發環境創建方法及評估
o 開發工作分析
o 開發環境的建立
o 維護、管理、使用開發環境的方法
o 開發環境的評測
4.2實時系統的分析技術
4.2.1實時系統的分析技術
o 結構化分析方法
o 面向對象分析方法
4.2.2實時系統的設計技術
o 結構化分析方法
o 面向對象分析方法
4.3硬體設計環境
4.3.1硬體描述語言
o 硬體開發設計過程
o 硬體描述語言的種類與特點
4.3.2模擬技術
o 邏輯模擬方法
o 邏輯模擬工具
4.3.3大規模集成電路系統的開發方法
o ASIC開發方法
o FPGA設計方法
o IP(intellectual property)
4.4協同設計
o 軟硬體任務工和切調
o 設計評審
4.5嵌入式系統低功耗設計技術
o 低功耗系統工作機制
o 低功耗系統模型結構
o 低功耗的硬體設計技術
o 低功耗的軟體設計技術
4.6分布式嵌入系統設計
o 分布式系統設計原理
o 分布式系統的通信技術
o 分布式系統設計應用
5.嵌入式系統應用
5.1嵌入式系統在控制領域中的應用
5.2嵌入式系統在手持設備中的應用
5.3嵌入式系統在模式識別中的應用

三、題型舉例
1、選擇題
若嵌入式系統中採用I/O地址統一編址模式,訪問內存單元和I/O設備是通過 (1) 來區分的。
(1) A.數據匯流排上輸出的數據
B.不同的地址代碼
C.不同的地址總路線
D.不同的指令

2、問答題
在某個嵌入式操作系統中,任務的狀態轉換圖(不完整)如下,請閱讀該圖以及下列說明,回答問題1至問題4,將解答填入答題紙的對應欄內。
〔說明〕
任務總共有五個狀態:休眠狀態、就緒狀態、運行狀態、中斷服務狀態和等待狀態,在任何時候,一個任務只會處於其中的某一個狀態。
〔問題1〕(3分)
在單個CPU的系統中,處於運行狀態的任務最多有多少個?
〔問題2〕(3分)
對於運行狀態、就緒狀態和等待狀態這間的相互轉換,圖中並沒有畫出來,請補充。用文字處理的形式來進行描述,格式形如"運行狀態→中斷服務狀態"。
〔問題3〕6分)
從運行狀態可以直接變為等待狀態嗎?如果不能為什麼?如果能什麼時候會發生這種轉換?舉例說明。
〔問題4〕(3分)
從就緒狀態可以直接變為等待狀態嗎?如果不能,為什麼?如果能,什麼時候會發生這種轉換?舉例說明。

Ⅲ 《arm9嵌入式系統設計基礎教程》(第二版)-黃智偉、鄧月明、王彥的pdf

有課件要不

Ⅳ 誰有最新的 嵌入式系統設計師教程 pdf

可以到嵌入式學習網上下載,有嵌入式系統超多的教程
網址是http://www..com/s?bs=%C7%B6%C8%EB%CA%BD%D1%A7%CF%B0%CD%F8+%C7%B6%C8%EB%CA%BD%D1%A7%CF%B0%CD%F8+-+EmbedStudy&f=8&wd=%C7%B6%C8%EB%CA%BD%D1%A7%CF%B0%CD%F8++EmbedStudy

Ⅳ 嵌入式系統設計師教程 魏洪興 電子書下載

請注意版權。 版權維護,人人有責。
不要罵我,這是對作者的尊重。

Ⅵ 求《嵌入式系統設計師教程》全文免費下載百度網盤資源,謝謝~

《嵌入式系統設計師教程》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1nYcyZL7GANb0Res-E1QtIg

?pwd=gjef 提取碼:gjef
簡介:本書按照人事部、信息產業部全國計算機技術與軟體專業技術資格(水平)考試要求編寫,內容緊扣《嵌入式系統設計師考試大綱》。


Ⅶ 嵌入式新手入門最佳視頻教程

原文鏈接:網頁鏈接

我是1999年上的大學,物理專業。在大一時,我們班裡普遍彌漫著對未來的不安,不知道學習了物理後出去能做什麼。你當下的經歷、當下的學習,在未來的一天肯定會影響到你。畢業後我們也各自找到了自己的職業:出國深造轉行做金融、留校任教做科研、設計晶元、寫程序、創辦公司等等,這一切都離不開在校時學到的基礎技能(數學、IT、電子電路)、受過煅煉的自學能力。

所以,各位正在迷茫的在校生,各位正在嘗試轉行的程序員,未來一定有你的位置,是好是壞取決於你當下的努力與積累。

我不能預言幾年後什麼行業會熱門,也不能保證你照著本文學習可以發財。我只是一個有十幾年經驗的程序員,給對編程有興趣的你,提供一些建議。

1.程序員的三大方向

程序員的方向,一般可以分為3類:專業領域、業務領域、操作系統領域。你了解它們後,按興趣選擇吧。

對於專業領域,我提供不了建議。

業務,也就是應用程序,它跟操作系統並不是截然分開的:

①開發實體產品時,應用程序寫得好的人,有時候需要操作系統的知識,比如調度優先順序的設置、知道某些函數可能會令進程休眠。

②寫應用程序的人進階為系統工程師時,他需要從上到下都了解,這時候就需要有操作系統領域的知識了,否則,你怎麼設計整個系統的方案呢?

③做應用程序的人,需要了解行業的需求,理解業務的邏輯。所以,當領導的人,多是做應用的。一旦鑽入了某個行業,很難換行業。

④而操作系統領域,做好了這是通殺各行業:他只負責底層系統,在上面開發什麼業務跟他沒關系。這行很多是技術宅,行業專家。

⑤操作系統和業務之間並沒有一個界線。有操作系統經驗,再去做應用,你會對系統知根知底,碰到問題時都有解決思路。有了業務經驗,你再了解一下操作系統,很快就可以組成一個團隊自立門戶,至少做個CTO沒問題。

1.1 專業領域

它又可以分為下面2類。

1.1.1 學術研究

比如語音、圖像處理、人工智慧,這類工作需要你有比較強的理論知識,我傾向於認為這類人是「科學家」,他們鑽研多年,很多時候是在做學術研究。

在嵌入式領域,需要把他們的成果用某種演算法表達出來,針對某種晶元進行優化,這部分工作也許有專人來做。

1.1.2 工程實現

也有這樣一類人,他們懂得這些專業領域的概念,但是沒有深入鑽研。可以使用各類開源資料實現某個目標,做出產品。比如圖像處理,他懂得用opencv里幾百個復雜函數來實現頭像識別。有時候還可以根據具體晶元來優化這些函數。

「專業領域」不是我的菜,如果你要做這一塊,我想最好的入門方法是在學校學習研究生、博士課程。

1.2 業務領域

換句話說,就是應用程序,這又可以分為下面2類。

1.2.1 界面顯示

做產品當然需要好的界面,但是,不是說它不重要,是沒什麼發展後勁。

現在的熱門詞是Android APP和IOS APP開發。你不要被Android、IOS兩個詞騙了,它們跟以前的VC、VB是同一路貨色,只是、僅僅是一套GUI控制項的實現。

希望沒有冒犯到你,我有理由。

一個程序需要有GUI界面,但是程序的內在邏輯才是核心。Android、IOS的開發工具給我們簡化了GUI的開發,並提供了這些控制項的交互機制,封裝並提供了一些服務(比如網路傳輸)。但是程序內部的業務邏輯、對視頻圖像聲音的處理等等,這才是核心。另外別忘了伺服器那邊的後台程序:怎樣更安全地保存數據、保護客戶的隱私,怎樣處理成千上萬上百萬的並發訪問,等等,這也是核心。

但是,從Android、IOS APP入門入行,這很快!如果你是大四,急於找到一份工作,那麼花上1、2個月去學習Android或IOS,應該容易找到工作,畢竟APP的需求永遠是最大的,現在這兩門技術還算熱門。在2011、2012年左右,Android程序員的起薪挺高,然後開始下滑。Android APP的入門基本只要1個月,所以懂的人也越來越多。2013、2014年,IOS開發的工資明顯比Android高了,於是各類IOS培訓也火曝起來。中華大地向來不缺速成人才,估計再過一陣子IOS工程師也是白菜價了。

會Android、IOS只是基本要求,不信去51job搜搜Android或IOS,職位要求里肯定其他要求。

1.2.2 業務邏輯

舉個簡單例子,做一個打卡軟體,你需要考慮這些東西:

①正常流程是上班下班時都要打卡

②有人忘記了怎麼辦?作為異常記錄在案,推送給管理員

③請假時怎麼處理?

④加班怎麼處理?

對於更復雜的例子,視頻會議系統里,各個模塊怎麼對接,各類協議怎麼兼容,你不深入這個行業,你根本搞不清楚。

應用開發的職位永遠是最多的,入門門檻也低。基本上只要你會C語言,面試時表現比較得體,一般公司都會給你機會。因為:

①你進公司後,還需要重新培訓你:熟悉它們的業務邏輯。

②你要做的,基本也就是一個個模塊,框架都有人給你定好了,你去填代碼就可以了。

說點讓你高興的事:軟體公司里,做領導的基本都是寫應用程序的(當然還有做市場的)。寫應用程序的人,對外可以研究市場接待客戶,對內可以管理程序員完成開發,不讓他做領導讓誰做?

如果你的志向是寫應用程序,那麼我建議你先練好基本功:數據結構、演算法是必備,然後憑興趣選擇資料庫、網路編程等等進行深入鑽研。

最後,選擇你看好的、感興趣的行業深耕個10年吧。做應用開發的人選擇了某個行業,後面是很難換行業的,選行很重要!

1.3 操作系統領域

UCOS太簡單,VxWorks太貴太專業,Windows不玩嵌入式了,IOS不開源,所以對於操作系統領域我們也只能玩linux了。

在嵌入式領域Linux一家獨大!

Android呢?Android跟QT一樣,都是一套GUI系統。只是Google的實力太強了,現在Android無處不在,所以很多時候Linux+Android成了標配。注意,在這里我們關心的是Android的整個系統、裡面的機制,而不是學習幾個API然後開發界面程序。操作系統領域所包含的內容,簡單地說,就是製作出一台裝好系統的專用「電腦」,可以分為:

①為產品規劃硬體:

按需求、性能、成本選擇主晶元,搭配周邊外設,交由硬體開發人員設計。

②給單板製作、安裝操作系統、編寫驅動

③定製維護、升級等系統方案

④還可能要配置、安裝Android等GUI系統:

⑤為應用開發人員配置開發環境

⑥從系統角度解決疑難問題


這個領域,通常被稱為「底層系統」或是「驅動開發」。

先解決2個常見誤區:

①這份工作是寫驅動程序嗎?

看看上面羅列的6點,應該說,它包含驅動開發,但遠遠不只有驅動開發。

②我們還需要寫驅動嗎?不是有原廠嗎?或者只需要改改就可以?

經常有人說,晶元原廠都做好驅動了,拿過來改改就可以了。如果,你的硬體跟原廠的公板完全一樣,原廠源碼毫無BUG,不想優化性能、削減成本,不想做一些有特色的產品,那這話是正確的。


但是在這個不創新就是找死的年代,可能嗎?!原因有二:

①即使只是修改代碼,能修改的前提是能理解;能理解的最好煅煉方法是從零寫出若干驅動程序。

②很多時候,需要你深度定製系統。


以前做聯發科手機只需要改改界面就可以出貨了,現在山寨廠一批批倒下。大家都使用原廠的方案而不加修改時,最後只能拼成本。

舉個例子,深圳有2家做交通攝像頭、監控攝像頭的廠家,他們曾經找我做過4個項目:

①改進廠家給的SD卡驅動性能,使用DMA。

②換了Flash型號後,系統經常出問題,需要修改驅動BUG。

③觸摸屏點擊不準,找原因,後來發現是旁路電容導致的。

④裁減成本,把4片DDR換為2片DDR,需要改bootloader對DDR的初始化。

這些項目都很急,搞不定就無法出貨,這時候找原廠?除非你是中興華為等大客戶,否則誰理你?


我在中興公司上班時,寫驅動的時間其實是很少的,大部分時間是調試:系統調優,上幫APP工程師、下幫硬體工程師查找問題。我們從廠家、網上得到的源碼,很多都是標準的,當然可以直接用。但是在你的產品上也許優化一下更好。比如我們可以把攝像頭驅動和DMA驅動揉合起來,讓攝像頭的數據直接通過DMA發到DSP去。我們可以在軟體和硬體之間起橋梁作用,對於實體產品,有可能是軟體出問題也可能是硬體出問題,一般是底層系統工程師比較容易找出問題。


當硬體、軟體應用出現問題,他們解決不了時,從底層軟體角度給他們出主意,給他們提供工具。再比如方案選擇:晶元性能能否達標、可用的BSP是否完善等等,這只能由負責整個方案的人來考慮,他必須懂底層。


在操作系統領域,對知識的要求很多:

①懂硬體知識才能看懂電路圖

②英文好會看晶元手冊

③有編寫、移植驅動程序的能力

④對操作系統本身有一定的理解,才能解決各類疑難問題

⑤理解Android內部機制

⑥懂匯編、C語言、C++、JAVA


它絕對是一個大坑,沒有興趣、沒有毅力的人慎選。

①這行的入門,絕對需要半年以上,即使全天學習也要半年。

②它的職位,絕對比APP的職位少

③並且你沒有1、2年經驗,招你到公司後一開始你做的還是APP。


優點就是:

①學好後,行業通殺,想換行就換行;想自己做產品就自己做產品。

②相比做應用程序的人,不會被經常變動的需求搞得天天加班。

③門檻高,當然薪水相對就高。


操作系統領域,我認為適合於這些人:

①硬體工程師想轉軟體工程師,從底層軟體入門會比較好

單片機工程師,想升級一下。會Linux底層的人肯定會單片機,會單片機的人不一定會Linux。

③時間充足的學生:如果你正讀大二大三,那麼花上半年學習嵌入式Linux底層多有益處。

④想掌握整個系統的人,比如你正在公司里寫APP,但是想升為系統工程師,那麼底層不得不學。

⑤想自己創業做實體產品的工程師,你有錢的話什麼技術都不用學,但是如果沒錢又想做產品,那麼Linux底層不得不學。

⑥做Linux APP的人,沒錯,他們也要學習。

這部分人不需要深入,了解個大概就可以:bootloader是用來啟動內核,Linux的文件系統(第1個程序是什麼、做什麼、各目錄幹嘛用)、APP跟驅動程序的調用關系、工具鏈,有這些概念就可以了

本文中,就把操作系統默認為Linux,講講怎麼學習嵌入式Linux+Android系統。


1.4 嵌入式Linux+Android系統包含哪些內容

嵌入式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、內核、驅動程序、根文件系統、應用程序這5大塊。而應用程序,我們又可以分為:C/C++、Android。

所以,嵌入式Linux+Android系統包含以下6部分內容:

①bootloader

②Linux內核

③驅動程序

④使用C/C++編寫的應用程序

⑤Android系統本身

⑥Android應用程序


Android跟Linux的聯系實在太大了,它的應用是如此廣泛,學習了Linux之後沒有理由停下來不學習Android。在大多數智能設備中,運行的是Linux操作系統;它上面要麼安裝有Android,要麼可以跟Android手機互聯。現在,Linux+Android已成標配。


2. 怎麼學習嵌入式Linux操作系統

本文假設您是零基礎,以實用為主,用最快的時間讓你入門;後面也會附上想深入學習時可以參考的資料。


在實際工作中,我們從事的是「操作系統」周邊的開發,並不會太深入學習、修改操作系統本身。

①操作系統具有進程管理、存儲管理、文件管理和設備管理等功能,這些核心功能非常穩定可靠,基本上不需要我們修改代碼。我們只需要針對自己的硬體完善驅動程序

②學習驅動時必定會涉及其他知識,比如存儲管理、進程調度。當你深入理解了驅動程序後,也會加深對操作系統其他部分的理解

③Linux內核中大部分代碼都是設備驅動程序,可以認為Linux內核由各類驅動構成


但是,要成為該領域的高手,一定要深入理解Linux操作系統本身,要去研讀它的源代碼。

在忙完工作,閑暇之餘,可以看看這些書:

①趙炯的《linux內核完全注釋》,這本比較薄,推薦這本。他後來又出了《Linux 內核完全剖析》,太厚了,搞不好看了後面就忘記前面了。

②毛德操、胡希明的《LINUX核心源代碼情景分析》,此書分上下冊,巨厚無比。當作字典看即可:想深入理解某方面的知識,就去看某章節。

③其他好書還有很多,我沒怎麼看,沒有更多建議


基於快速入門,上手工作的目的,您先不用看上面的書,先按本文學習。


2.1 入門路線圖

假設您是零基礎,我們規劃了如下入門路線圖。前面的知識,是後面知識的基礎,建議按順序學習。每一部分,不一定需要學得很深入透徹,下面分章節描述。

2.2 學習驅動程序之前的基礎知識

2.2.1 C語言

只要是理工科專業的,似乎都會教C語言。我見過很多C語言考試90、100分的,一上機就傻了,我懷疑他們都沒在電腦上寫過程序。

理論再好,沒有實踐不能幹活的話,公司招你去幹嘛?

反過來,實踐出真知,學習C語言,必須練練練、寫寫寫!

當你掌握基本語法後,就可以在電腦上練習一些C語言習題了;

當你寫過幾個C程序後,就可以進入下一階段的裸機開發了。


①不需要太深入

作為快速入門,只要你會編寫「Hello, world!」,會寫冒泡排序,會一些基礎的語法操作,暫時就夠了。

指針操作是重點,多練習;

不需要去學習過多的數據結構知識,只需要掌握鏈表操作,其他不用學習,比如:隊列、二叉樹等等都不用學;不需要去學習任何的函數使用,比如文件操作、多線程編程、網路編程等等;這些知識,在編寫Linux應用程序時會用,但是在操作系統特別是驅動學習時,用不著!

永往直前吧,以後碰到不懂的C語言問題,我們再回過頭來學習。

在後續的「裸機開發」中,會讓你繼續練習C語言,那會更實戰化。

C語言是在寫代碼中精進的。


②可以在Visual Studio下學習,也可以在Linux下學習,後者需要掌握一些編譯命令,我們暫時沒有提供C語言的教程,找一本C語言書,網上找找免費的C語言視頻(主要看怎麼搭建環境),就可以自學了。


2.2.2 PC Linux基本操作:

對於PC Linux,我們推薦使用Ubuntu,在它上面安裝軟體非常簡便。

我們的工作模式通常是這樣:在Windows下閱讀、編寫代碼,然後把代碼上傳到PC Linux去編譯。實際上,Ubuntu的桌面系統已經很好用了,我們拿到各種智能機可以很快上手,相信Ubuntu的桌面系統也可以讓你很快上手。為了提高工作效率,我們通常使用命令行來操作Ubuntu。


不用擔心,你前期只需要掌握這幾條命令就可以了,它們是如此簡單,我乾脆列出它們:

①cd : Change Directory(改變目錄)

cd 目錄名 // 進入某個目錄cd .. // cd 「兩個點」:返回上一級目錄cd - // cd 「短橫」:返回上一次所在目錄

②pwd : Print Work Directory(列印當前目錄 顯示出當前工作目錄的絕對路徑)

③mkdir : Make Directory(創建目錄)

mkdir abc // 創建文件夾abc
mkdir -p a/b/c // 創建文件夾a,再a下創建文件夾b,再在b下創建文件夾c

④rm : Remove(刪除目錄或文件)

rm file // 刪除名為file的文件
rm -rf dir // 刪除名為dir的目錄

⑤ls : List(列出目錄內容)

⑥mount : 掛載

mount -t nfs -o nolock,vers=2 192.168.1.123:/work/nfs_root /mnt
mount -t yaffs /dev/mtdblock3 /mnt

⑦chown : Change owner(改變文件的屬主,即擁有者)

chown book:book /work -R //對/work目錄及其下所有內容,屬主改為book用戶,組改為book

⑧chmod : Change mode(改變許可權),下面的例子很簡單粗暴

chmod 777 /work -R // 對/work目錄及其下所有內容,許可權改為可讀、可寫、可執行

⑨vi : Linux下最常用的編輯命令,使用稍微復雜,請自己搜索用法。


要練習這些命令,你可以進入Ubuntu桌面系統後,打開終端輸入那些命令;或是用SecureCRT、putty等工具遠程登錄Ubuntu後練習。


2.2.3 硬體知識

我們學習硬體知識的目的在於能看懂原理圖,看懂通信協議,看懂晶元手冊;不求能設計原理圖,更不求能設計電路板。

對於正統的方法,你應該這樣學習:

①學習《微機原理》,理解一個計算機的組成及各個部件的交互原理。

②學習《數字電路》,理解各種門電路的原理及使用,還可以掌握一些邏輯運算(與、或等)。

③《模擬電路》?好吧,這個不用學,至少我在工作中基本用不到它,現在全忘光了。


就我個人經驗來說,這些課程是有用的,但是:

①原理有用,實戰性不強。

比如《微機原理》是基於x86系統,跟ARM板子有很大差別,當然原理相通。

我是在接觸嵌入式編程後,才理解了這些課程。

②每本書都那麼厚,內容都很多,學習時間過長,自學有難度。


針對這些校園教材的不足,並結合實際開發過程中要用到的知識點,我們推出了《學前班_怎麼看原理圖》的系列視頻:

學前班第1課第1節___怎麼看原理圖之GPIO和門電路.wmv

學前班第1課第2.1節_怎麼看原理圖之協議類介面之UART.wmv

學前班第1課第2.2節_怎麼看原理圖之協議類介面之I2C.wmv

學前班第1課第2.3節_怎麼看原理圖之協議類介面之SPI.wmv

學前班第1課第2.4節_怎麼看原理圖之協議類介面之NAND Flash.wmv

學前班第1課第2.5節_怎麼看原理圖之協議類介面之LCD.wmv

學前班第1課第3節___怎麼看原理圖之內存類介面.wmv

學前班第1課第4.1節_怎麼看原理圖之分析S3C2410開發板.wmv

學前班第1課第4.2節_怎麼看原理圖之分析S3C2440開發板.wmv

學前班第1課第4.3節_怎麼看原理圖之分析S3C6410開發板.wmv


即使你只具備初中物理課的電路知識,我也希望能通過這些視頻,讓你可以看懂原理圖,理解一些常見的通信協議;如果你想掌握更多的硬體知識,這些視頻也可以起個索引作用,讓你知道缺乏什麼知識。


這些視頻所講到的硬體知識,將在《裸板開發》系列視頻中用到,到時可以相互對照著看,加深理解。


2.2.4 要不要專門學習Windows下的單片機開發

很多學校都開通了單片機的課程,很多人都是從51單片機、AVR單片機,現在比較新的STM32單片機開始接觸嵌入式領域,並且使用Windows下的開發軟體,比如keil、MDK等。

問題來了,要不要專門學習Windows下的單片機開發?

①如果這是你們專業的必修課,那就學吧

②如果你的專業跟單片機密切相關,比如機械控制等,那就學吧

③如果你只是想從單片機入門,然後學習更廣闊的嵌入式Linux,那麼放棄在Windows下學習單片機吧!


理由如下:

①Windows下的單片機學習,深度不夠

Windows下有很好的圖形界面單片機開發軟體,比如keil、MDK等。

它們封裝了很多技術細節,比如:

你只會從main函數開始編寫代碼,卻不知道上電後第1條代碼是怎麼執行的;

你可以編寫中斷處理函數,但是卻不知道它是怎麼被調用的;

你不知道程序怎麼從Flash上被讀入內存;

也不知道內存是怎麼劃分使用的,不知道棧在哪、堆在哪;

當你想裁剪程序降低對Flash、內存的使用時,你無從下手;

當你新建一個文件時,它被自動加入到工程里,但是其中的機理你完全不懂;

等等等。


②基於ARM+Linux裸機學習,可以學得更深,並且更貼合後續的Linux學習。實際上它就是Linux下的單片機學習,只是一切更加原始:所有的代碼需要你自己來編寫;哪些文件加入工程,需要你自己來管理。

在工作中,我們當然傾向於使用Windows下更便利的工具,但是在學習階段,我們更想學習到程序的本質。


一切從零編寫代碼、管理代碼,可以讓我們學習到更多知識:

你需要了解晶元的上電啟動過程,知道第1條代碼如何運行;

你需要掌握怎麼把程序從Flash上讀入內存;

需要理解內存怎麼規劃使用,比如棧在哪,堆在哪;

需要理解代碼重定位;

需要知道中斷發生後,軟硬體怎麼保護現場、跳到中斷入口、調用中斷程序、恢復現場;

你會知道,main函數不是我們編寫的第1個函數;

你會知道,晶元從上電開始,程序是怎麼被搬運執行的;

你會知道,函數調用過程中,參數是如何傳遞的;

你會知道,中斷發生時,每一個寄存器的值都要小心對待;

等等等。


你掌握了ARM+Linux的裸機開發,再回去看Windows下的單片機開發,會驚呼:怎麼那麼簡單!並且你會完全明白這些工具沒有向你展示的技術細節。


驅動程序=Linux驅動程序軟體框架+ARM開發板硬體操作,我們可以從簡單的裸機開發入手,先掌握硬體操作,並且還可以:

①掌握如何在PC Linux下編譯程序、把程序燒錄到板子上並運行它

②為學習bootloader打基礎:掌握了各種硬體操作後,後面一組合就是一個bootloader


2.2.5 為什麼選擇ARM9 S3C2440開發板,而不是其他性能更好的?

有一個錯誤的概念:S3C2440過時了、ARM9過時了。

這是不對的,如果你是軟體工程師,無論是ARM9、ARM11、A8還是A9,對我們來說是沒有差別的。

一款晶元,上面有CPU,還有眾多的片上設備(比如UART、USB、LCD控制器)。我們寫程序時,並不涉及CPU,只是去操作那些片上設備。

所以:差別在於片上設備,不在於CPU核;差別在於寄存器操作不一樣。

因為我們寫驅動並不涉及CPU的核心,只是操作CPU之外的設備,只是讀寫這些設備的寄存器。

之所以推薦S3C2440,是因為它的Linux學習資料最豐富,並有配套的第1、2期視頻。


2.2.6 怎麼學習ARM+Linux的裸機開發

學習裸機開發的目的有兩個:

①掌握裸機程序的結構,為後續的u-boot作準備

②練習硬體知識,即:怎麼看原理圖、晶元手冊,怎麼寫代碼來操作硬體


後面的u-boot可以認為是裸機程序的集合,我們在裸機開發中逐個掌握各個部件,再集合起來就可以得到一個u-boot了。

後續的驅動開發,也涉及硬體操作,你可以在裸機開發中學習硬體知識。


注意:如果你並不關心裸機的程序結構,不關心bootloader的實現,這部分是可以先略過的。在後面的驅動視頻中,我們也會重新講解所涉及的硬體知識。


推薦兩本書:杜春蕾的《ARM體系結構與編程》,韋東山的《嵌入式Linux應用開發完全手冊》。後者也許是國內第1本涉及在PC Linux環境下開發的ARM裸機程序的書,如果我說錯了,請原諒我書讀得少。


對於裸機開發,我們提供有2部分視頻:

①環境搭建

第0課第1節_剛接觸開發板之介面接線.wmv

第0課第2節_剛接觸開發板之燒寫裸板程序.wmv

第0課第3節_剛接觸開發板之重燒整個系統.wmv

第0課第4節_剛接觸開發板之使用vmwae和預先做好的ubuntu.wmv

第0課第5節_剛接觸開發板之u-boot打補丁編譯使用及建sourceinsight工程.wmv

第0課第6節_剛接觸開發板之內核u-boot打補丁編譯使用及建sourceinsight工程.wmv

第0課第7節_剛接觸開發板之製作根文件系統及初試驅動.wmv

第0課第8節_在TQ2440,MINI2440上搭建視頻所用系統.wmv

第0課第9節_win7下不能使用dnw燒寫的替代方法.wmv


.................

原文鏈接:網頁鏈接

Ⅷ 嵌入式系統設計師教程的清華大學出版社

清華大學出版社成立於1980年6月,是由教育部主管、清華大學主辦的綜合出版單位。植根於「清華」這座久負盛名的高等學府,秉承清華人「自強不息,厚德載物」的人文精神,清華大學出版社在短短二十多年的時間里,迅速成長起來。清華大學出版社始終堅持弘揚科技文化產業、服務科教興國戰略的出版方向,把出版高等學校教學用書和科技圖書作為主要任務,並為促進學術交流、繁榮出版事業設立了多項出版基金,逐漸形成了以出版高水平的教材和學術專著為主的鮮明特色,在教育出版領域樹立了強勢品牌。

Ⅸ 《嵌入式系統設計師教程》pdf下載在線閱讀全文,求百度網盤雲資源

《嵌入式系統設計師教程》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1nYcyZL7GANb0Res-E1QtIg

?pwd=gjef 提取碼:gjef
簡介:本書按照人事部、信息產業部全國計算機技術與軟體專業技術資格(水平)考試要求編寫,內容緊扣《嵌入式系統設計師考試大綱》

Ⅹ 誰有嵌入式學習的資料給我發點吧,給我說說我該怎麼學吧

【提要】

這里將以我的經驗介紹我的嵌入式學習資料,對我已閱的目前主要的嵌入式參考
書進行簡單的和個人的評論,作為我自己的一個學習小結,也給大家一個參考。

【內容】

回想兩個月來,
決定了研究生專業方向從嵌入式系統入手後,
熱情持高,
我一口氣讀完了五
六本厚厚的嵌入式書籍,
都是自己買的,
因為圖書館的藏書實在太有限了,
而嵌入式技術的
參考資料在書城卻每個星期都有大量的更新。

現在,我對嵌入式系統和
linux
都算有了個清晰的認識,其實,兜轉下來,各套資料取長補
短,我覺得我的基礎理論還是打得非常扎實的。當然非常希望能盡早自己配置一套開發板,
進行實際的操作。
開發板也作過一番細致考察的了,
現在只等錢到位,
在這之前我覺得還是
需要很系統地讀透兩本理論書的。

有朋友看我老在
「潛入式」

笑話說:
「不用看啦,
沒什麼的,
直接去實驗室做就可以了„„」

呵呵,實話說,無論是驅動還是上層軟體的開發,都已經存在很多非常成熟的模塊和代碼,
包括各種不同應用領域的嵌入式系統。
我們在應用中,
實際要作的動作還是非常簡單的,

般的讀現成程序,修改,試驗就
OK
了,並不涉及很深入的原理。而我們過早捲入太膚淺的
應用,
也會打消這份學習的熱情,甚至可能在不停的項目忙碌中得意起來,
輕視基礎。
對於
初學者來說,我覺得這是非常不好的影響。

越是對系統原理和體系深入了解,
我越對嵌入式敬畏,
這是門很新的綜合性的應用學科,

是門非常深奧的學問,
絕不是簡單編譯個系統,
移植到某個目標板就是已經學明了、
精通了。

尚未全面在開發板上展開實驗前,
我對自己打下的基礎還是比較滿意的。
還有個目標,
明年
五月順便去考考嵌入式系統設計師——今年十一月國家才第一次設立的嵌入式技術認證考
試。

我手頭上已經看了的,包括兩本還在看的書有:

《嵌入式系統——體系結構、編程與設計》
(印度)
Raj Kamal
編著,陳曙輝

等譯,清華大
學出版社

這是本國外教材,
是我九月份的時候最早自己買來看的。
還保持很高的熱情看完了三分之二。
後來發現其中的思路和內容都很不如意,
就擱下來了。
畢竟是國外的書籍,
外國人似乎喜歡
一種慢悠悠的,
很發散的學習和思考,
我以前讀過的幾本書都是這樣。
實際上還是中國人自
己編的書精簡些,邏輯也比較強,所以我的經驗:
建議大家不要看國外教材,即使看也應該

在有了比較全面的了解後才拿來作為參考。像
Thinking in C++
這樣的書,其實也是不適合作
為入門讀物的。

《嵌入式系統設計與應用開發》鄭靈翔

等編著,北京航空航天大學出版社

這本書是廈門大學嵌入式系統課程教學講稿整理編寫成的。基於
intel Xscale PXA255
的開發
板,
2.6
內核的嵌入式
linux

講解的內容還是非常全面到位的。
包括
arm

xscale
體系結構,
操作系統基礎,
linux
操作,
liunx
內核驅動原理及程序開發,以及常見的硬體介面設計及其
驅動程序的設計等。
這是第一本讓我真正了解什麼是嵌入式的書,
我看得津津有味,
大概一
個星期就看完了,
後來還花了一個星期時間進行總結和筆記,
以及上機實驗。
要說這本書的
不足就是它囊括太廣內容了,從處理器到操作系統原理,到
linux
操作,幾乎什麼都涉及,
自然都不深入,
所以,作為入門學習還是可以的,
但若要足夠了解以實際應用,還是感覺缺
了條腿。
應該對當中的各個方面都逐步展開更深入的學習,
特別是
arm

thumb
指令體系,
linux
編程方面。

《嵌入式系統開發與應用教程》田澤

編著,北京航空航天大學出版社

這是我還在看鄭靈翔那本書的時候,
發現同學圖書館借到的而且我發現正是我非常需要補充
知識的書。這本書編寫非常條理,而且很集中,不會面面具到,側重在
arm
體系以及指令
系統方面,作了很深入全面的介紹。這正是在了解嵌入式系統總體概念後應該深入的方面。
於是我借同學的書過來,頭熱著花四天左右讀完了,而且還作了很詳細的筆記和疑問記錄。
後來去書店,忍不住又自己買了本回來,包括下面這本實驗教材。

《嵌入式系統開發與應用實驗教程(第
2
版)
》田澤

編著,北京航空航天大學出版社

這本書跟上面介紹的那本是配套的,主要講解怎樣配置開發環境和怎樣著手進行程序的編
譯。這也正是我非常急切想學的東西。因為已經掌握了系統基本知識,而且還掌握了
arm
體系
CUP
具體指令和編程規范,偽指令、宏指令等知識後,正是非常想實際動手去做做東
西的。
這本實驗教材系統介紹了開發嵌入式程序所需要的工具、環境,
和配置方法,還附帶
了很系統的實驗常式。它是基於一塊
s3c44b0
處理器的,我暫時還沒板,但還是很老實基本
讀完了此書。


Red Hat Linux9
編程開發與網路管理》冉林倉

編著,電子工業出版社

因為我主要想做的是基於
arm7

arm9
的嵌入式
linux
系統開發,所以對
linux
還是需要一
本專門的書讀讀。這本書還很不錯!圖書館很多關於
linux
使用、配置的書,很多挺膚淺的,
而這本書側重於命令行操作,以及網路系統的開發編程,很符合嵌入式
linux
開發的需要。
我選讀了其中命令操作的部分,
剩下網路管理、
編程的留待接觸到自己的開發板後再認真去
看。

《嵌入式系統設計師教程》清華大學出版社

全國計算機技術與軟體專業技術資格(水平)
考試指定用書

應該說在兩個月不到的時間內看這么多書,
雖然各本各有側重,
我總算是很全面很具體打了
個基礎了。
但所學的東西有嫌零碎。
在得知國家剛設立了嵌入式系統設計師考試後,
我立即
買了這本書,
並著手認認真真看了,
不為了考試,
而是為了好好組織下這段時間學到的知識,
查漏補缺,
並在這個教程的指導下很系統地學習下相關的理論。
我發現有了之前的知識准備
和實踐經驗,再來看這個考試教程,感覺很輕松,而且很條理,很實在!全沒有考試教條的
感覺,
書中每一個章節都是我非常需要系統了解的東西,
非常實用。
這本書也在很高的熱情
之下基本讀完了,現在還剩下五分之一。

圖書館借的書:

《構建嵌入式
linux
系統》
Karim
Yagbmour


O'Reilly
Taiwan
公司譯

韓存兵

龔波

改編


國電力出版社

據說很好的一本書,我也從圖書館借了,但還沒看„„

總得來說,
我讀書的選擇還是挺合理的,
我覺得無論有沒開發板的條件,
都應該好好地這樣
打個堅實的基礎。其實我們實驗室有四塊
s3c2410
的板,都有項目在,但我始終堅持不過早
捲入有點相關卻不大實質的項目,
像我這樣比較遲入門的初學者,
全面和扎實的理論知識顯
得非常重要,否則一接觸事情,這個不知道,那個也不清楚,就很被動。還有我覺得初學嵌
入式應該很好意識到網路的作用,好好利用網上的資源,包括相關的人的文章、經驗談等。
多寫寫筆記,多跟人交流

閱讀全文

與嵌入式設計師教程pdf相關的資料

熱點內容
卡爾曼濾波演算法書籍 瀏覽:761
安卓手機怎麼用愛思助手傳文件進蘋果手機上 瀏覽:837
安卓怎麼下載60秒生存 瀏覽:795
外向式文件夾 瀏覽:228
dospdf 瀏覽:424
怎麼修改騰訊雲伺服器ip 瀏覽:380
pdftoeps 瀏覽:485
為什麼鴻蒙那麼像安卓 瀏覽:730
安卓手機怎麼拍自媒體視頻 瀏覽:180
單片機各個中斷的初始化 瀏覽:716
python怎麼集合元素 瀏覽:475
python逐條解讀 瀏覽:825
基於單片機的濕度控制 瀏覽:492
ios如何使用安卓的帳號 瀏覽:877
程序員公園采訪 瀏覽:805
程序員實戰教程要多長時間 瀏覽:968
企業數據加密技巧 瀏覽:128
租雲伺服器開發 瀏覽:807
程序員告白媽媽不同意 瀏覽:330
攻城掠地怎麼查看伺服器 瀏覽:595