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調試技術 Autoconf Automake 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 文件系統
無論選擇哪一方向,基本的linux的知識是需要具備的,其他還需要掌握的知識有ARM(最常用的一款嵌入式處理器)和C語言編程,每一方面知識的掌握熟練程度都最終決定了個人進行嵌入式linux開發的綜合能力。
更多詳情來源:《華清遠見嵌入式學院》
㈡ Linux和嵌入式Linux有什麼區別
1. 硬體平台:
嵌入式Linux一般是Mips, ARM平台,
桌面Linux一般是x86平台。
2. 根文件系統
嵌入式Linux一般用UBIFS, yaffs2, jffs2.
桌面Linux一般用ext3。
3. shell不一樣
嵌入式Linux一般用busybox.
桌面Linux一般用bash.
㈢ Linux用作嵌入式操作系統
Linux as an Embedded Operating System Linux有用作嵌入式操作系統的潛力嗎?本文討論了Linux的特點 健壯 性 局限以及最重要的一點 它的實時特性 近年來 PC硬體使用的增加是高端嵌入式系統最重要的發展之一 這種 趨勢造成高端系統硬體造價的大大跌落 從而使那些以前由於使用非P C結構的嵌入式硬體價格過高而不能做的項目成為可行的 但是嵌入式 PC平台上可選擇的軟體並不像硬體那樣有誘惑力 你可以選擇DOS 有 眾所周知的局限性 微軟Windows 缺乏實時性能 或者某種高端實時 操作系統 昂貴 專用 大多是不可移植的 Linux操作系統提供了另 外的有吸引力的選擇 並且沒有上面那些缺陷 Linux先前只是狂熱的 Unix迷們閑時專門在台式電腦上使用 後來發展成為必須認真對待的高 級的 穩定的操作系統 最近的發展之一是引入了實時性能 從而使L inux完成了重要的轉變 即從愛好者的玩具成為適合嵌入式系統設計者 的有價值的工具 當然 其實時性能還沒有那些高端RTOS那麼高級 並 且Linux永遠不會適合需要最小化RAM和ROM的系統 但是 對很多應用 來說 Linux的優勢勝過了不足 現在 大家都知道在嵌入式系統中使用PC硬體的好處 與很多專為嵌入 式市場設計的硬體比較 PC硬體是大規模生產的 容易獲得並且便宜 為VME匯流排設計的介面板價格是PC匯流排的兩倍多 比如模擬和數字I/O板 網路介面 圖像採集與處理板等 隨著高性能PCI匯流排應用的增加 吞吐量不再是影響使用PC平台的問題 但是操作系統功能上已經發生革命性的變化 在要求硬體價格降低的同 時 高端嵌入式系統要求更多高級的功能 如圖形用戶界面和網路支持 很多高端RTOS供應商已經提供了這些功能 一般是作為花更高價錢才 能得到的可選件 微軟Windows也有這些功能 卻不具備大多數嵌入式 系統要求的實時性能 也許有人想以DOS為基礎用單獨的第三方工具拼 湊一個系統 但這種努力將是白費並且不存在對這種系統的技術支持 現在需要的是一個便宜 成熟並且提供高端嵌入式系統所必須特性的操 作系統 因此 Linux操作系統近來開始吸引大家的注意 許多台式PC用戶被它 的特點和健壯性所吸引 並且獲得它只需支付通過FTP下載的網路費用 Linux帶有Unix用戶熟悉的完善的開發工具 幾乎所有的Unix系統和 應用軟體都已移植到了Linux上 Linux還提供了TCP/IP網路協議以及I nternet客戶和伺服器軟體 還有可選擇多種窗口管理器的X Windows C C++ Java和其他語言的編譯器也可得到 用戶會發現這些比Windo ws提供的更成熟 更完善 更易於使用 許多公司至少會有一位Linux 的熱衷者 當出現用Windows解決不了的問題時(比如設置一台PC為撥 號伺服器)會說 瞧 我們要是用Linux 現在 討論Bill Gates是否有所擔心是有些雜志的一個話題 重要的是 不屬於任何一家公司的Linux開始被台式電腦用戶接受 其中許多人並 不能被認為是電腦迷 這一方面是因為Linux的成熟 另一方面也因為 這幾年Internet的盛行 Linux用戶遇到問題時可以通過Internet新聞 組和郵件列表向網上成千上萬的在線用戶請教 你遇到的問題別人以前 肯定碰到過 一般他們都樂於幫忙 根據我的經驗 通常使用網路資源 能比依賴RTOS技術支持部門更快地解決問題 你可能需要從十幾條新聞 組其他成員回答的相關信息中搜尋 但至少有一個回答應該是有用的 相比較而言 你從技術支持部門僅得到一個回答 如果是錯的 你不得 不重新開始整個過程 另外 致力於提供Linux支持的公司也已經出現 給那些覺得傳統的技術支持手段更舒服的用戶一個選擇 並且所有L inux是提供源代碼的 這使最困難的問題也有辦法解決 某些嵌入式系統設計者會發現Linux本來的樣子就很有用 對於沒有實 時要求的應用 或者有實時要求但可以用一定的硬體或協處理器滿足的 應用 Linux提供了Windows和DOS之外的選擇 但是那樣的應用幾乎沒 有 因此 用Linux實現一個實時操作系統才是真正需要的 並且為了 用它實現高端嵌入式應用已經做了充分的工作 總的來說 有兩條途徑 來實現實時Linux 在此稱之為POSIX路線和低層路線 POSIX和Linux POSIX是標准化類Unix操作系統必須具有的特徵和介面的運動 POSIX的 思想是為了促進為Unix編寫的軟體的可移植性 使Unix程序員的工作更 容易 有些實時性的擴展 象POSIX b或IEEE b已經加入到標准 中 這些擴展中包括一些工具 比如信號燈 內存鎖定 時鍾和計數器 消息隊列以及優先順序搶先調度 以POSIX為基礎來標准化實時操作系統已經受到指責 這個標准又大又 笨 包含了許多適合台式Unix工作站但無助於嵌入式系統的特徵 因而 顯得很臃腫 標准制定群體被工作站製造商控制 他們不願對RTOS供應 商和用戶讓步 還有 POSIX系統調用反映了Unix系統調用的復雜和笨 重 在VxWorks或pSOS+中僅需一兩個調用即可完成的操作可能需要十幾 個POSIX調用 Unix程序員已經習慣了這種麻煩事 但是嵌入式系統程 序員卻覺得很難受 許多Linux開發者正在為了在Linux中實現POSIX b的特徵工作 這個活 動已經初見成效並且仍在繼續 POSIX內存鎖定工具和決定調度演算法的 函數已經實現 另外 計數器函數和POSIX b信號仍未完成 也許最糟 糕的是 對任何真正的RTOS都至關重要的信號燈和消息隊列也未實現 定義於POSIX c(或IEEE C)中的POSIX線程保證會為POSIX路線 的Linux開發實現 一個進程內可以有多個線程 共享相同的地址空間 這很符合我們熟悉的嵌入式系統中任務的概念 Linux已經部分實現 了POSIX線程 雖然POSIX路線對實現一個實時Linux做了保證 當前和可預見的將來只 有 軟 實時的應用能用POSIX b函數來實現 移植POSIX b函數到L inux上時要面對的根本問題是Linux的內核是不可搶先的 因此 要想 不對內核大動干戈而實現 硬 實時特性恐怕是不可能的 通向實時Linux的低層路線 Low level Approach to Real time Linux 比POSIX路線更有意思的是實現硬實時Linux的努力 其中最有前途的要 數新墨西哥技術學院的實時Linux(RT Linux)項目 注意到Linux是一 個為台式電腦用戶設計的操作系統 研究者們斷定 要想把實時功能移 植到為分時設計的OS上是不會有好結果的 取而代之的是 他們在操作 系統的下面實現了一個簡單的實時內核 而Linux本身也僅作為那個內 核上的一個任務來運行 Linux運行的優先順序最低 隨時可以被更高優 先級的任務搶先 RT Linux的設計理念是 對Linux作最小的改動 僅提供為了實現實時 應用必不可少的東西 這樣就使RT Linux比較容易移植到新版本的Lin ux上 同時 RT Linux依賴於Linux來提供所需的幾乎所有服務 而RT Linux僅提供低層任務創建 安裝中斷服務常式 並為低層任務 ISR 和Linux進程之間的通信排隊 這種設計的結果之一是 一個RT Linux應用可以看作有兩個域 實時和 非實時 放在實時域的函數能滿足其實時要求 但是它們必須比較簡單 因為可用資源很受限制 另一方面 非實時功能可以利用整個Linux 資源 但不能有任何實時要求 兩個域之間的通信工具已提供 但是使 用RT Linux之前 嵌入式系統設計者必須確保所有需要實現的功能適合 兩個域之一 使用RT Linux並不能變戲法似的使已經存在的Linux功能 具有實時性 例如 假設設計者有一個串口的Linux驅動程序 當串口 接收一個位元組序列之後 在一個固定時間內 由實時任務打開並口輸出 一行 這個驅動程序不能用 因為在非實時域內你不知道什麼時候串口 驅動程序會喚醒實時任務驅動並口完成工作 因此 串口和並口驅動都 必須在實時域內 這就要求重新設計串口驅動程序 RT Linux的任務處理工具是基本的 rt_task_init()用來創建並開始一 個任務 能指定堆棧的大小和優先順序 Linux本身以一個最低優先順序的 實時任務運行 rt_task_make_periodic()以一定間隔周期性地設置任 務運行 rt_task_wait()阻塞任務 使用簡單的搶先調度運行任務 實時任務與Linux進程之間通信的主要方法是FIFO rtf_create()創建 一個一定大小的FIFO 用rtf_put()將數據送入FIFO 如果FIFO滿則返 回一個錯誤 類似地 rtf_get()從FIFO中取出數據 如果FIFO空則返 回一個錯誤 FIFO最顯著的應用是數據流 例如 在一個數據採集應用中 可以用r t_task_init()和rt_task_make_periodic()設置實時任務使其以固定的 間隔從I/O板采樣 這個任務用rtf_put()將數據發送到Linux進程 該 Linux進程應該是一個循環 不斷從FIFO讀出數據 也許還要寫數據到 磁碟 或者通過網路發送 或者顯示在一個X窗口中 FIFO象一個緩沖 因此Linux進程不必非有實時性不可 實現數據流系統看起來成為RT Linux設計者的主要動機 但是FIFO機制 提供了一個實現信號燈的很好方法 兩態信號燈可以通過創建一個大小 為 的FIFO來實現 V操作即為rtf_put() 數據內容無所謂 同時忽略 返回的錯誤 P操作為rtf_get() 計數信號燈可以通過創建大小足夠容 納所期望V操作個數的FIFO簡單地實現 由此可見 FIFO機制提供了實 時應用中任務同步所需的大部分功能 當前的實現在RTOS用戶習慣的某 些功能上仍有欠缺 比如優先順序禁止(防止優先順序反轉)和任務安全刪 除 但是仔細設計幾乎總能避免這些問題 此外 雖然FIFO操作可以在 沒有數據(讀FIFO)或沒有空間(寫FIFO)時阻塞 語法卻相當復雜 阻塞能力看來不是設計的重點 然而 至少有一個提供FIFO阻塞操作簡 單語法的努力正在進行 同時還實現了阻塞超時 這是許多嵌入式應用 的重要特徵 RT Linux簡單 開放的設計允許用戶相當容易地實現類似 的附加功能 RT Linux的一個有趣的方面是設計者使Linux內核 lishixin/Article/program/Oracle/201311/17916
㈣ 嵌入式操作系統的分類
第一類、傳統的經典RTOS:
最主要的便是Vxworks操作系統,以及其Tornado開發平台。Vxworks因出現稍早,實時性很強(據說可在1ms內響應外部事件請求),並且內核可極微(據說最小可8K),可靠性較高等,所以在北美,Vxworks占據了嵌入式系統的多半疆山。特別是在通信設備等實時性要求較高的系統中,幾乎非Vxworks莫屬。Vxworks的很多概念和技術都和Linux很類似,主要是C語言開發。像Bell-alcatel、Lucent、華為等通信企業在開發產品時,Vxworks用得很多。但Vxworks因價格很高,所以一些小公司或小產品中往往用不起。目前很多公司都在往嵌入式Linux轉(聽說華為目前正在這樣轉)。但無論如何,Vxworks在一段長時間內仍是不可動搖的。與Vxworks類似的稍有名的實時操作系統還有pSOS、QNX、Nucleus等RTOS。
第二類、嵌入式Linux操作系統:
Linux的前途除作為伺服器操作系統外,最成功的便是在嵌入式領域的應用,原因當然是免費、開源、支持軟體多、呼擁者眾,這樣嵌入式產品成本會低。Linux本身不是一個為嵌入式設計的操作系統,不是微內核的,並且實時性不強。目前應用在嵌入式領域的Linux系統主要有兩類:一類是專為嵌入式設計的已被裁減過的Linux系統,最常用的是uClinux(不帶MMU功能),目前占較大應用份額,可在ARM7上跑;另一類是跑在ARM9上的,一般是將Linux2.4.18內核移植在其上,可使用更多的Linux功能(當然uClinux更可跑在ARM9上)。很多人預測,嵌入式Linux預計將占嵌入式操作系統的50%以上份額,非常重要。缺點是熟悉Linux的人太少,開發難度稍大。目前很多教材和很多大學都以ucOS/II為教學用實時操作系統,這主要是由於ucOS/II較簡單,且開源,非常適合入門者學習實時操作系統原理,但ucOS/II的缺點是功能有限,實用用得較少,所以要學習就應學直接實用的,比如uClinux就很實用。況且熟悉了Linux開發,不僅在嵌入式領域有用,對開發Linux應用軟體,對加深操作系統的認識也有幫助,可謂一舉多得。據說,目前Intel、Philip都在大搞ARM+LINUX的嵌入式開發,Fujitum則是在自己的處理器上大搞Linux開發。目前在嵌入式Linux領域,以下幾個方面的人特別難找,一是能將Linux移植到某個新型號的開發版上;二是能寫Linux驅動程序的人;三是熟悉Linux內核裁減和優化的人。
第三類、WindowsCE嵌入式操作系統:
Microsoft也看準了嵌入式的巨大市場,WinCE出來只有幾年時間,但目前已佔據了很大市場份額,特別是在PDA、手機、顯示儀表等界面要求較高或者要求快速開發的場合,WinCE目前已很流行(據說有一家賣工控機的公司板子賣得太好,以至來不及為客戶裁減WinCE)。WinCE目前主要為4.2版(.NET),開發平台主要為WinCEPlatformBuilder,有時也用EVC環境開發一些較上層的應用,由於WinCE開發都是大家熟悉的VC++環境,所以學習Windows程序設計課程不會有多大難度,這也是WinCE容易被人們接受的原因,開發環境方便快速,微軟的強大技術支持,WinCE開發難度遠低於嵌入式Linux。對於急於完成,不想拿嵌入式Linux冒險的開發場合,WinCE是最合適了(找嵌入式Linux的人可沒那麼好找的),畢竟公司不能像學生學習那樣試試看,保證開發成功更重要。根據不同的側重點,WinCE還有兩個特殊版本,一個是MSPocketPC操作系統專用於PDA上(掌上電腦),另一個是MSSmartPhone操作系統用於智能手機上(帶PDA功能的手機),兩者也都屬於WinCE平台。在PDA和手機市場上,除WinCE外,著名的PDA嵌入式操作系統還有PalmOS(因出現很早,很有名)、Symbian等,但在WinCE的強勁沖擊下,Palm和Symbian來日還能有多長?據觀察,目前在嵌入式平台上,LINUX是叫得最響,但還是WinCE實際用得更多。嵌入式LINUX可能更多地是一些有長遠產品計劃的公司,為降低成本而進行長遠考慮。WinCE和多媒體(如MPEG技術)是微軟亞洲工程院目前做得較多的項目領域之一,他們很需要精通WinCE的人。
目前我國已推出一些應用比較成功的EOS產品系列。隨著Internet技術的發展、信息家電的普及應用及EOS的微型化和專業化,EOS開始從單一的弱功能向高專業化的強功能方向發展。嵌人式操作系統在系統實時高效性、硬體的相關依賴性、軟體固態化以及應用的專用性等方面具有較為突出的特點。EOS是相對於一般操作系統而言的,它除了是具備了一般的操作系統最基本的功能,比如:任務調度、同步機制、中斷處理、文件功能之外的話,它還含有以下的特針:
(1)可裝卸性:開放性、可伸縮性的體系結構。
(2)強實時性:EOS實時性一般較強,可用於各種設備控制當中。
(3)統一的介面:提供各種設備驅動接入。
(4)操作方便、簡單、提供友好的圖形GUI,圖形界面,追求易學易用。
(5)提供強大的網路功能,支持TCP/IP協議及其它協議,提供TCP/UDP/IP/PPP協議支持及統一的MAC訪問層介面,為各種移動計算設備預留介面。
(6)強穩定性,弱交互性:嵌入式系統一旦開始運行就不需要用戶過多的干預,這就要負責系統管理的EOS臭有較強的穩定性。嵌入式操作系統的用戶接日一般不提供操作命令,它通過系統調用命令向用戶程序提供服務。
(7)固化代碼:在嵌入系統中,嵌入式操作系統和應用軟體被固化在嵌入式系統計算機的ROM中。輔助存儲器在嵌入式系統中很少使用,因此,嵌入式操作系統的文件管理功能應該能夠很容易地拆卸,而用各種內存文件系統。
(8)更好的硬體適應性,也就是良好的移植性。
國際上用於信息電器的嵌入式操作系統有40種左右。現在,市場上非常流行的EOS產品,包括3Corn公司下屬子公司的PalmOS,全球佔有份額達50%,Microsoft公司的WindowsCE不過29%。在美國市場,PalmOS更以80%的佔有率遠超WindowsCE.開放源代碼的Linux很適於做信息家電的開發。
然而我們常見的嵌入式系統有:Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX、Rtems、QNX、INTEGRITY、OSE、CExecutive.嵌入式操作系統的發展也必將帶動新一輪的科技競爭。
常見的嵌入式系統有這么多:
Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX、Rtems、QNX、INTEGRITY、OSE、CExecutive、autosar......
什麼是嵌入式操作系統?
嵌入式操作系統是一種支持嵌入式系統應用的操作系統軟體,它是嵌入式系統的重要組成部分。嵌入時操作系統具有通用操作系統的基本特點,能夠有效管理復雜的系統資源,並且把硬體虛擬化。
從應用角度可分為通用型嵌入式操作系統和專用型嵌入式操作系統。常見的通用型嵌入式操作系統有Linux、VxWorks、WindowsCE.net等。常用的專用型嵌入式操作系統有SmartPhone、PocketPC、Symbian等。
按實時性可分為兩類:
實時嵌入式操作系統主要面向控制、通信等領域。如WindRiver公司的VxWorks、ISI的pSOS、QNX系統軟體公司的QNX、ATI的Nucleus,很多汽車電子行業都是利用實時性很強的操作系統等。
非實時嵌入式操作系統主要面向消費類電子產品。這類產品包括PDA、行動電話、機頂盒、電子書、WebPhone等。如微軟面向手機應用的SmartPhone操作系統。
嵌入式系統的設計和實現而言,基本上需要四種不同的工作:系統設計工作,硬體設計工作,驅動程序和操作系統移植工作和應用程序設計開發工作。
1、 系統設計工作
在系統的設計階段,系統分析師將根據需求確定系統的硬體的基本構成,根據系統的需求選擇使用那種處理器,使用哪種操作系統,使用那些軟體開發工具。系統分析師往往是較為完整的參與過嵌入式系統設計的全過程,對於系統應用的行業較為了解,對於嵌入式系統本身的開發流程十分清楚的人。
2、硬體設計工作
系統硬體設計人員需要根據系統分析師的設計結果,進行硬體原理圖的設計。通常需要硬體設計人員熟悉嵌入式系統的硬體構成。硬體設計人員需要了解常用的嵌入式系統處理器,存儲器(Flash,SDRAM),乙太網MAC晶元,音頻/視頻編解碼晶元,電源管理晶元,匯流排介面電路(USB,PCI),液晶顯示模塊,可編程邏輯器件(FPGA/CPLD),無線網路通信模塊(Bluetooth,WLAN,GPRS)等硬體電路構成元素的基本工作原理,連接使用方法,使用注意事項,基本調試方法等內容。在網路上能找到很多公司的評估板的原理圖,對於這些原理圖要仔細研究,摸清處理器同存儲器,網卡,液晶模塊等器件的連接方法和原因。通過對這些電路的研究,能夠較快地了解整個嵌入式系統的構成,這些電路同實際產品中的電路雖有一定差別的,特別是對於手持設備,但這些差別不影響初學者學習嵌入式系統的硬體設計基本構成。
1)學習Linux系統安裝、常用命令、應用程序安裝。
2)學習Linux下的C編程、這本書必學《UNIX環境高級編程》、《UNIX網路編程》,RechardStevens寫的,C高手大都學習過《C和指針》、《C缺陷與陷阱》、《高質量C/C++編程指南》、《C專家編程》、《TheCprogrammingLanguage》
3)程序員大都要學:數據結構,嵌入式程序員數據結構必學!
4)底層開發人員大都要學:微機原理、計算機體系結構,嵌入式開發人員必學!
5)單片機可以讓一個從事軟體開發的人了解和如何操作硬體,有必要學,因為一開始就從ARM入手,不太現實!
6)ARM體系結構,其中有匯編。
7)數字電路有必要學習,不然你在做底層開發時真的會不知道怎麼看原理圖,起碼也得懂與或門吧。
8)ARM+Linux應用程序開發。(前提是要有開發板)
9)要做底層開發,就必須知道軟硬體之間是如何銜接和配合工作的,那麼電子技術應該要好好學習了,很多時候會用到模擬電路知識,這是區別好手與菜鳥的不同之處之一。
10)Linux下的匯編要學,這樣你才能真正了解你寫的程序是如何在一個特定的硬體上跑的。這是區別好手與菜鳥的不同之處之二。
11)TCP/IP協議棧要學,所有的嵌入式高手都得掌握的東西,這是區別好手與菜鳥的不同之處之三。
12)有了這些東西,拿下Linux驅動已經不再話下,需要你去學習Linux內核源代碼和Linux驅動程序設計,這是一個技術升華。
13)音頻、視頻的解碼解碼技術你得學。
14)各種IC,各種bootloader你能夠參與其開發設計。
15)自行設計開發新產品,新技術。
學到這個地步差不多要花個3年的時間吧。但是後面的路該怎麼走呢?嵌入式系統性的東西搞了一個產品之後,基本上一些套路都摸清楚了。
不同的行業,對於系統的要求是不一樣的,比如汽車行業,航空航天行業等一些高精度,高安全的需要對實時性要求非常之高,對於安全性和可靠性的要求非常嚴格。而有些行業比如消費類產品,娛樂類的,生活用具方面的對於用戶體驗是不一樣的,數碼產品對於一些圖像聲音的處理,要求更高,需要高清,高品質的。而對於一些通信設備類對於網路的應答數據傳輸要求就非常嚴格,等等。這些根據不同的要求,選擇符合自己的操作系統,能對開發工作有更大的幫助。
DOS
微軟一開始選用了派特森的Q-DOS「QUICKANDDISKOPERATINGSYSTEM」為基礎然後再擴充功能而成MS-DOS,主要是採用由IBM提供的使用8088微處理器的計算機作開發平台,它是以16位元組單人單工操作系統,特別適合一些功能簡單裝置使用。
WindowsCE
雖然微軟Windows系統已經稱霸了PCDesktop環境。但是對於嵌入式系統這塊大餅,微軟也是垂涎已久,桌上型的Windows桌業系統對於嵌入式系統來說自然是太過於肥大的產物,於是微軟推出精簡版的WindowsCE作為進攻嵌入式系統的主力。目前主要應用於PDA上頭,但是跟微軟一系列Windows系統一般,WindowsCE也承襲了原有的缺點:耗系統資源、不穩定、效率不佳等等。毛病實在太多,後來將整個架構重新改寫後推出WindowsCE3.0版,或稱為PocketPC。改版之後的確改進了不少缺點。
WindowsCE可應用於PDA、WebPAD、ThinClient等等。是採用WindowsCE為操作系統的SIMPad(西門子公司所有)。
Palm
由PalmComputing公司的嵌入式操作系統,目前最大的應用在PDA,是市場佔有率最高的PDA操作系統,Palm操作系統架構非常簡潔,因為少去了很多功能,如內存管理、多任務等等,使得Palm可以非常不耗系統資源,硬體需求低,連帶的整體耗電量便可壓縮到非常低,因此採用Palm操作系統的PDA都有待機時間長的優點。
EPOC
由英國手持裝置大廠Psion所開發,常用於PDA與手機結合的場合。最有名的例子Nokia9110系列手機,它就是採用EPOC系統。
著名的嵌入式實時系統
實時系統是嵌入式系統里頭非常重要的一環,很多人都誤以為實時系統執行速度非常快的系統,事實上不然,所謂實時代表的意義是『實時反應』,一般多人多任務操作系統如:Windows、UNIX,在上面執行的軟體都一起分享CPU,因為CPU速度快,所以我們感覺好象可以同時執行多支軟體,其實在系統內部的同一時間內都只有一個程序在執行,每個軟體都必須排隊,而且規定只能用一小段時間後就要換下一位,但是因為CPU速度夠快,很快又可以被執行到,所以人們感覺並不會很明顯軟體是一段一段在執行。這是一般所謂的非實時性的操作系統運作模式,而實時操作系統具有立即反應而且不能讓出資源的特性,例如汽車的ABS煞車系統,如果不採用能夠立即反應的實時系統,後果可就不堪設想。而這類的應用多半多屬體積小、功能簡單的地方,所以也算是嵌入式系統。QNX的QNXOS、WindRiver的VxWorks、Microware的OS9、pSOS等等,都是有名的嵌入式實時系統公司。
Linux
Linux不是都用來做伺服器嗎?不然就是Cluster,怎麼會跟嵌入式系統扯上關系?不要懷疑,Linux除了對伺服工作應付自如外,嵌入式系統也難不倒Linux。
那麼究竟Linux有怎樣獨特的能耐,可以想變大就變大想縮小就縮小?又用Linux來發展嵌入式系統有什麼優點?請看底下介紹。
開放原始碼、模塊化設計
Linux採用GPL授權,除了把原始碼公開以外,任何人都可以自由使用、修改、散布,而Linux核心本身采模塊化設計,讓人很容易增減功能,例如我的平台並不需要藍芽的功能,我只要不把這項功能加入,有需要就加入,不需要就刪除,由於這樣的高的彈性,我們可以調校出最適合我們硬體平台的核心出來。
相較於Linux,Windows是走封閉原始碼路線,所以我們完全無法得知或修改它的核心部份。另外因為是採用GPL授權自然就沒有什麼權利金或保密協議的約束。
穩定性夠
Linux不屬於任何一家公司,但是它的開發人員卻是全世界最多的,每天在全球都有無數的人參與LinuxKernel的改進、除錯、測試,這樣嚴苛的條件造就了穩定度高的Linux。
就因為如此,Linux雖不是商業的產物但是品質卻不遜於商業產品。
網路功能強大
Linux的架構是參造UNIX系統而來,因此Linux也承襲了UNIX強大的網路功能。在這個每樣事情都講求網路的時代下,只能說是Linux大放異彩的年代。未來可能家裡的電冰箱、冷氣、電視機都會連上網路,如何增加這些家電的網路功能,Linux可以替他們辦到。
跨平台
Linux一開始是基於Intel386機器而設計,但是隨著網路的散布,各式各樣的需求涌現,因此就有許多工程師致力於各式平台的移植,造成了Linux可以在x86、MIPS、ARM/StrongARM、PowerPC、Motorola68k、HitachiSH3/SH4、Transmeta..等等平台上運作的盛況。這些平台幾乎涵蓋了所有嵌入式系統所需的CPU,因此選擇Linux就可以把更多的`硬體平台納入考量的范圍。
嵌入式環境不如x86PC那樣單純,嵌入式環境所採用的CPU架構之多,使用Linux作開發,就等於有更多硬體的選擇,硬體成本是商業公司考量的一大重點,選擇多自然可以找到最合適的硬體,對於公司的競爭力是有極大的幫助。
應用軟體眾多
自由軟體世界裡有個很大的特色就是軟體超級多,而且幾乎都是符合GPL標准,換句話說,大家都可以自由取用,因為這些軟體多半是由工程師業余空暇時間所發展,而且不以營利為性質,所以並不能擔保這些軟體完全沒有BUG,但是仍舊有許多殺手級的軟體出現,大家熟知的KDE與GNOME便是很好的證明,當然與嵌入式系統較為相關如:gcc編譯器、Kdevelop整合式開發環境等等。
通常我們都會先在PC端造出模擬出嵌入式的環境,並直接在上頭開發,因此用的工具也都與開發一般Desktop軟體類似,良好的工具能夠增加開發的速度。
選擇多樣
如果公司有能力可以自己實作Linux嵌入式系統,因為程序代碼全部都開放在那裡,您可以隨心所欲的設計出自己想要的EmbeddedLinux系統,但是有更多的公司的業務重點不在於此,這時候您也可以選擇購買商業版的EmbeddedLinux系統,像是有名的Redhat公司、Lineo、MontaVista..等等,這些都是商業的Linux公司,購買他們的產品就可以得到完整的服務。因此商業或非商業全都在於您的需求。
自行開發系統
當然您也可以自行開發系統,嚴格控制硬體,但是相對的必須投注更大的成本在於研發系統上,原則上如果目標簡單明確只是一些基本的I/O控制,例如:跑馬燈。便適合自己開發,但是如果系統過於復雜則必須審慎評估自行研發的難度與時程的控管。
進程的同步(直接制約):synchronism
指系統中一些進程需要相互合作,共同完成一項任務。具體說,一個進程運行到某一點時要求另一夥伴進程為它提供消息,在未獲得消息之前,該進程處於等待狀態,獲得消息後被喚醒進入就緒態。同步是指在互斥的基礎上(大多數情況),通過其它機制實現訪問者對資源的有序訪問。在大多數情況下,同步已經實現了互斥,特別是所有寫入資源的情況必定是互斥的。少數情況是指可以允許多個訪問者同時訪問資源。
進程的互斥(間接制約)mutualexclusion
由於各進程要求共享資源,而有些資源需要互斥使用,因此各進程間競爭使用這些資源,進程的這種關系為進程的互斥。某一資源同時只允許一個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。
相關概念:
互斥:指多個進程不能同時使用同一個資源;
死鎖:指多個進程互不相讓,都得不到足夠的資源;
飢餓:指一個進程一直得不到資源(其他進程可能輪流佔用資源)
臨界資源:系統中某些資源一次只允許一個進程使用,稱這樣的資源為臨界資源或互斥資源或共享變數
臨界區:進程中訪問臨界資源的一段代碼。
臨界區問題
臨界區(criticalsection):進程中訪問臨界資源的一段代碼。
進入區(entrysection):在進入臨界區之前,檢查可否進入臨界區的一段代碼。如果可以進入臨界區,通常設置相應"正在訪問臨界區"標志
退出區(exitsection):用於將"正在訪問臨界區"標志清除。
剩餘區(remaindersection):代碼中的其餘部分。
使用臨界區應遵循的准則
有空讓進:當無進程在臨界區時,任何有權使用臨界區的進程可進入
無空等待:不允許兩個以上的進程同時進入臨界區
多中擇一:當沒有進程在臨界區,而同時有多個進程要求進入臨界區,只能讓其中之一進入臨界區,其他進程必須等待
有限等待:任何進入臨界區的要求應在有限的時間內得到滿足
讓權等待:處於等待狀態的進程應放棄佔用CPU
平等競爭:任何進程無權停止其它進程的運行進程之間相對運行速度無硬性規定
Linux下的進程包含以下幾個關鍵要素:
有一段可執行程序;
有專用的系統堆棧空間;
內核中有它的控制塊(進程式控制制塊),描述進程所佔用的資源,這樣,進程才能接受內核的調度;
具有獨立的存儲空間
進程和線程有時候並不完全區分,而往往根據上下文理解其含義。
1、緒論
電控機械式自動變速器(,AMT)具有傳動效率高、成本低、操作容易、駕駛舒適等優點,已成為車輛自動變速器發展的一個重要方向。AMT的核心部件是電控單元(TCU),實時採集和檢測輸入信號(發動機轉速、輸入軸轉速和車速,油門踏板位置、節氣門開度、變速箱油溫等以及各種狀態信號)並進行調理、存儲,同時,TCU根據這些運行參數進行工況判斷並發出控制信號,完成車輛的平穩起步或自動換擋,從而使車輛獲得優良的舒適性、燃油經濟性與動力性能。較之傳統的控制器,TCU有更多的感測器,執行器以及更為復雜的控制演算法,若TCU設計不合理,難以滿足實時性與可靠性的要求,同時,如果換擋規律不合理,汽車難以獲得較好的燃油經濟性和動力性。本文從TCU硬體和軟體設計做了相應的介紹。
2、TCU軟體設計
TCU軟體部分的核心是控制策略,其主要部分是最佳換擋規律。本控制器採用兩種換擋控制策略,即經濟性換擋規律,綜合性換規律,通過模式選擇開關進行切換,使用Simulink搭建的換擋控制策略。
Simulink模型無法直接燒寫到單片機中運行,編寫好的程序通過Simulink提供的RTW工具生成可用的C代碼,編寫介面嵌入到軟體系統中。生成的C代碼是上層核心演算法程序,只提供與底層程序的介面,而底層程序則須自己編寫並留出對應介面和上層代碼對應介面進行連接[3]。然後把相應的C代碼添加到CCS中的工程文件中,並編寫代碼的介面,實現軟體三部分的無縫連接;其中驅動程序包括信號輸入通道設置與信號處理驅動程序、輸出通道設置與輸出處理、通信設置與數據轉換。
3、TCU硬體設計
根據TCU的功能需求,把硬體電路劃分以下幾個部分:信號採集輸入調理電路、執行器控制電路以及主控電路。
(1)主控電路:TCU的硬體電路選擇了TMS320F2812主控晶元,兩個16位通用定時器,以負責離合器轉速信號、車速信號等脈沖信號的採集;8個16位的脈寬調制(PWM)通道、可以實現對離合器電磁閥、換擋電磁閥的控制;16通道A/D轉換器,在採集節氣門位置、離合器位置等感測器輸入的多路模擬信號的應用中,可以簡化硬體,提高系統可靠性;擁有改進的區域網絡(eCAN)支持CAN2.0B協議,以實現串列信號的輸入輸出以及與汽車發動機ECU的信息交換,實現ECU之間的CAN通信。
(2)輸入電路:對於主控晶元TMS320F2812晶元上帶有AD轉換模塊的處理晶元,其輸入的模擬信號需要經過簡單的濾波、放大後才可接入DSP。開關量信號採用光電隔離來實現信號的轉換,數字信號調理部分的作用是將仿正弦信號經過處理後,變成電平范圍在DSP允許范圍內的方波信號。數字信號調理部分的設計採用先濾波後整形,最後光電隔離的辦法。
(3)TMS320F2812主控晶元EV外設提供的PWM外設功能,對電路進行控制,但,由控制器輸出的PWM波的峰值電壓只有5V,不足以驅動電磁閥,這就需要電磁閥驅動電路將PWM控制信號的功率進行放大,從而控制電磁閥正常工作。
4、結論
自行設計了TCU軟硬體,對設計的TCU做了相應的硬體在環試驗,利用RealTimeWorkshop實現控制模型向C代碼的轉化,優化後下載到TCU,進行了硬體在環模擬實驗,篇幅有限,本文不做具體說明。試驗結果表明,設計的該TCU,能按照控制策略實時、准確、可靠的控制AMT的換擋過程,同時,同時獲得了較好的經濟性以及動力性能。為AMT控制器的開發提供了參考。
㈤ linux與嵌入式系統的關系
linux和嵌入式系統是相互於相互交叉使用的。
嵌入式系統的定義就是軟硬體可裁剪,在實際項目中,對產品的功耗、存儲等要求嚴格,所以就會涉及將完整的Linux系統進行精簡瘦身,節約存儲提高效率,這就是所謂的系統移植、裁剪。此工作需要對Linux內核極其熟悉。
Linux驅動開發:嵌入式產品上面的各種外設的驅動開發,不僅要懂軟體、還需要熟悉Linux內核代碼、了解硬體相關知識。
嵌入式應用開發:調用Linux的系統調用介面,進行基於Linux系統的應用開發,只需要有LinuxC語言知識的積累即可完成。
(5)linux嵌入式設計擴展閱讀
嵌入式linux的特點
1、嵌入式linux既繼承了Internet上無限的開放源代碼資源,又具有嵌入式操作系統的特性。
2、嵌入式Linux的特點是版權費免費;購買費用媒介成本技術支持全世界的自由軟體開發者提供支持網路特性免費。
3、一些嵌入式系統設計成具有附加的功能,如存儲在非易失性存儲器中的程序,並且具有運行可以完成原始設計范圍之外的任務的多任務操作系統的能力。
㈥ 嵌入式linux和linux有什麼不同linux的作用是什麼
Linux作為開源免費操作系統,以其作為系統的應用可以較方便的進行系統功能的裁剪和跨體系結構移植。
在不同的目標體系結構下(x86,ARM,PowerPC etc.),由於匯編指令集的不同,同一段代碼利用不同的編譯器和庫文件生成的可執行代碼是不同的。不同體系的Linux其開發工具是不同的。
嵌入式linux屬於高度裁剪過的Linux,他將桌面Linux所具有的大部分應用功能(如GUI 工具,計算器,電子郵件 etc.)和部分系統功能省略,但集成了開發者希望嵌入式產品所具有的特殊應用功能(比如 一款以Linux為系統的觸摸式海事導航儀可以根據功能需要去除不需要的功能塊,但加入GPS定位,航速航向計算,航線規劃,觸摸檢測和對應功能實現等功能)。
嵌入式系統往往是指系統的資源(如DRAM/FLASH ROM,功耗,工作頻率 etc.)有較大限制且系統的工作環境相對多變和惡劣(如溫濕度變化大,酸鹼度腐蝕,外部撞擊和振動,外部電磁干擾,靜電導致的高壓損壞電路 etc.)。這也就需要開發人員更多的發現和假想可能的突發情況並採取相應預防措施。大部分嵌入式系統對響應的時間限制和正確性也有極高的要求。
㈦ 想學linux嵌入式開發培訓,去哪個培訓機構
想學linux嵌入式開發培訓,推薦粵嵌IT培訓,國內嵌入式學習知名品牌!十餘年開發經驗的雙師型老師(工程師型導師)親自教學,豐富的育人與研發經驗,17年教育與技術沉澱為嵌入式技術學習提供強大教學質量保障!科學的學習管理模式,最大化提升學習效率。師資力量強大,口碑極佳。㈧ 嵌入式linux課程設計
Ⅰ 跪求 ARM嵌入式linux系統開發詳解(珍藏版)pdf
珍藏版啊。。
Ⅱ 學嵌入式linux需要先學什麼
剛入門的時候,淘寶買一塊cortex m3開發板即可入手,通過項目,你需要了解:任務調度、進程間通信、內存管理、設備驅動、文件系統、TCP/IP協議棧、同步非同步、中斷、軟體架構插件化等等基本原理,這些對你後面轉Linux應用開發,安卓開發,後台開發大有好處。
到這一步,就看自己職業方向想往哪裡發展,如果是想深入IOT物聯網做端雲連接,那麼可以把幾種基本匯流排驅動,I2C、SPI、USART理解透,如果是想擁抱互聯網轉入應用開發,那麼可以把基礎組件,如協議棧、文件系統吃透,BAT面試不是很難,問的都是這些基礎。
順便說一下,學東西就要學對市場有用的,不要過於學習屠龍之術,炫技給個人帶來不了財富,公司需要的是能幹活的人。
不準備講過於偏硬體的知識如Cortex-M3的多種中斷模式,操作寄存器組,晶元降噪等內容,而是專注於操作系統基本知識和項目經驗,這些對於開發者後面接觸Linux系統大有脾益,這些軟體開發經驗也是去互聯網公司看重的能力。如有需要學習Linux命令請如下查找:
Ⅲ 基於linux嵌入式平台井字棋課程設計
基於linux嵌入式平台井字棋課程
這么肯定還好的
確
Ⅳ 跪求一份完整的嵌入式Linux方面的C項目實例
怎樣的人適合學習嵌入式?
學習嵌入式需要有一定的基礎,這些基礎大概包括下面兩點:
學過c語言,匯編;
對微控制器有一定了解。
一般理工類(計算機,自動化,電子類專業)的學生大三學比較合適。因為到了大三,一般學過了c語言及匯編,雖然大部分學生沒有獨立寫過一個程序,但至少上過這門課,自己也看過相關知識點;而且上過8051等微控制器原理的課程,也看過類似的教課書。
具備以上基礎的人,也不是誰都可以學。因為嵌入式學習門檻比較高,難度比較大,不但要有一定的毅力,而且要觸類旁通,如果太死板也很難學會。
概括的說學習嵌入式還必備下列性格:
熱愛研發!
切忌浮躁!
執著,頑強,自信!
舉一反三!
如果你符合以上條件,完全可以經過努力把嵌入式學好,我了解到的在華清遠見學習的一個同學,之前基本上什麼基礎都沒有,寫一個「hello world」程序都為難,編譯了幾次才通過,但是經過四個月的努力,在華清遠見專業老師和同學們的熱心幫助下,從一個完全的菜鳥變成了入門級別的linux工程師了,找到了一份做應用開發的工作,工資大概有四千吧,還算不錯。
LZ要自學的話,可以多到華清遠見的網站上看看他們的課程設置,就知道自己該學些什麼,還有很多學習資料和視頻可以下載,另外華清遠見出版的40多本嵌入式專業暢銷書,外面各大書店和圖書館都有,你都可以去翻翻看看。
祝你早日學有所成!
請參考,希望能幫到你。
Ⅳ 做嵌入式原理課程設計 linux內核精簡 是什麼意思,該怎麼做
OK 我發給你 .
Ⅵ 求嵌入式linux開發詳細流程(步驟)
建立以Linux系統為基礎的開發環境;
配置開發主機(MINICOM調試嵌入式開發板、NFS網路文件系統,防火牆);
建立引導裝載程序BOOTLOADER(公開源代碼的BOOTLOADER,如U-BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等);
下載別人已經移植好的Linux操作系統(如μCLinux、ARM-Linux、PPC-Linux等);
建立根文件系統(包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等);
建立應用程序的Flash磁碟分區,一般使用JFFS2或YAFFS文件系統;
開發應用程序,應用程序可以放入根文件系統中,也可以放入YAFFS、JFFS2文件系統中;
燒寫內核、根文件系統、應用程序、發布產品。
Ⅶ 嵌入式Linux課程設計源代碼
Linux課程體系了解一來下:
Linux雲計源算網路管理實戰
Linux系統管理及服務配置實戰
Linux Shell自動化運維編程實戰
Linux雲計算網路管理實戰
大型網站高並發架構及自動化運維項目
網站安全滲透測試及性能調優項目實戰
公有雲運維技術項目實戰
企業私有雲架構及運維實戰
Python自動化運維開發基礎
Python自動化運維開發項目實戰
Ⅷ 嵌入式ARM/LINUX畢業設計
有辦法的話找個附近的嵌入式公司選他們的板子在上面做個小擴展性開發。最好選嵌入式教授采購實驗設備的代理 之類的,甚至可以「開發」一款他們已有的功能,抄一下寫個論文即可。
Ⅸ 學習嵌入式linux流程
嵌入式學習是一個循序漸進的過程,有C語言基礎還是比較好的,C++的話不搞上層應用就用不上,如果是希望向嵌入式Linux方向發展的話,關於這個方向,我認為大概分3個階段:
1、嵌入式linux上層應用,包括QT的GUI開發
2、嵌入式linux系統開發
3、嵌入式linux驅動開發
嵌入式目前主要面向的幾個操作系統是,LINUX,WINCE、VxWorks等等
Linux是開源免費的,而且其源代碼是開放的,更加適合我們學習嵌入式。
你可以嘗試以下路線:
(1) C語言是所有編程語言中的強者,單片機、DSP、類似ARM的種種晶元的編程都可以用C語言搞定),因此必須非常熟練的掌握。
推薦書籍:《The C Programming Language》 這本經典的教材是老外寫的,也有中譯版本。
(2) 操作系統原理,是必需的,如果你是計算機專業畢業那也就無所謂了,如果是非計算機專業的就必須找一本比較淺顯的計算機原理書籍看一看,把啥叫「進程」「線程」「系統調度」等等基本問題搞清楚。
(3)Linux操作系統就是用C語言編寫的,所以你也應該先學習下Linux方面的編程,只有你會應用了,才能近一步去了解其內核的精髓。
推薦書籍:《UNIX環境高級編程》(第2版)
(4) 了解ARM的架構,原理,以及其匯編指令,我們在嵌入式開發中,一般很少去寫匯編,但是最起碼的要求是能夠看懂arm匯編。
(5) 系統移植的時候,就需要你從最下層的bootloader開始,然後內核移植,文件系統移植等。而移植這部分對硬體的依賴是非常大的,其配置步驟也相對復雜,也沒有太多詳細資料。
(6) 驅動開發
linux驅動程序設計既是個極富有挑戰性的領域,又是一個博大精深的內容。
linux驅動程序設計本質是屬於linux內核編程范疇的,因而是對linux內核和內核編程是有要求的。在學習前你要想了解linux內核的組成,因為每一部分要詳細研究的話足夠可以擴展成一本厚書。
以上只不過是大概的框架,在實際的開發中還會涉及很多東西,比如:交叉編譯、makefile、shell腳本等等,所以說學習嵌入式的周期較長,門檻較高,自學的話更是需要較強的學習能力和專業功底。只要能堅持下來一定會取得成功!
其實LZ可以到一些嵌入式培訓機構的網站上看一下他們的課程設置,就會在腦子里有個清晰的思路,比如華清遠見的官方網站,上面的嵌入式內容很豐富,嵌入式方面的信息更新也很迅速,沒事可以去轉轉。
Ⅹ 求嵌入式Linux 課程設計,隨便什麼題目,用C或C++寫的!要有完整的源代碼,有實驗報告就更好了!
網上很多啊,自己去搜一個就好了,但是要改動一下,不然會重復的...弱弱的問一下,你是南京某高校的么?
㈨ linux系統與嵌入式linux有什麼區別和關系
二者是同根生哦,聯系:都屬於linux,都必須符合通用的語法和結構;區別:前者屬於大的通用的,後者屬於適合嵌入式系統應用的,前者包含後者。比喻:前者相當於西瓜,後者相當於無籽西瓜
㈩ 嵌入式架構設計,什麼是嵌入式架構設計
1.1嵌入式Linux系統硬體環境
圖4.1開發環境硬體連接
通常基於嵌入式linux系統的開發環境一般由目標機、開發板、交叉編譯工具鏈、遠程調試工具和下載機制組成。本課題的工作是在裝有linux操作系統(RedHat 9.0)的目標機和基於S3C2410a的目標板上進行的。
設置串列介面
串列介面主要是用來目標板發送命令並監測目標板在程序運行過程中的輸出信息。
要講開發板COM1口與PC機的COM口分別用串口線連接好,而在主機端,用minicom與armsys2410用串口線連接好後進行通訊。
首先,設置minicom。用鍵盤在命令行輸入minicom,輸入後選定Serial port setup然後按設置健A健設置Serial Device,接著輸入PC上接入的串列介面號,如果這個系統與串口1相接,相應寫入/dev/ttyS0。接著需要設置傳輸速率,我們需要設置的傳輸速率為11520,按下E鍵,設置波特率為11520,設置完成後,沒有奇偶校驗,沒有軟體控制流和硬體控制流。設置完成後,選擇為默認設置並保存退出。
設置完成後講開發板復位,這時系統就會顯示系統啟動列印的信息。
1.2 嵌入式linux系統軟體環境
筆者的研究方向主要著重點在於嵌入式linux系統的軟體開發層面。嵌入式linux系統可以開發的上層軟體多種多樣,如果從從軟體分析的角度來看大致可以分為四個層次:
一、 操作系統的引導。操作系統中要有引入載入程序,主要包括固件(firmware)和Bootloader(引導載入程序)兩部分。
二、 系統的管控內核。為了更好的分配系統資源,必須要對特定的硬體平台和實際應用移植操作系統linux,這是進程管理的一個重要的部分,這里主要包含了定製內核以及控制內核引導系統的參數。
三、 系統文件的引導建立。文件的建立是指文件存在的物理空間,linxu系統中每一個分區都是一個文件系統,都包含自己的目錄層次結構,這其中也包括根文件系統(RamDisk)和建立於Flash之上的文件系統。一個系統的操作離不開文的操作,因此要有而且要維護自己的文件系統。
四、 軟體上的程序用戶。經過多年的積累和開發,在自由軟體中不斷努力的人們為開放源碼領域貢獻了許多優秀的軟體。針對客戶的不同需求,為客戶量身打造,甚至可以加入圖形界面,可以更方便用戶的使用。但是嵌入式linux系統不管如何構建,都離不開以下幾點:
1)在嵌入的目標機裝上交叉編譯工具。
2)Bootloader是依賴於開發板硬體而實現編寫的。
3)根據客戶需求編譯嵌入式Linux內核和裁剪冗餘。
4)根據客戶需要和系統運行的需要來編寫設備驅動程序和嵌入式linux應用程序。
5)最後也是最重要的一個部分構建系統文件的目錄。