久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1643|回復: 0
打印 上一主題 下一主題
收起左側

嵌入式學習基礎

[復制鏈接]
跳轉到指定樓層
樓主
ID:183246 發表于 2017-3-30 17:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
微機原理:理解ARM微處理器的工作原理
操作系統原理:理解Linux操作系統的工作原理
電子技術基礎:理解基于ARM的嵌入式設備的電路原理圖,編寫Linux驅動程序的基礎
匯編語言:閱讀、編寫Bootloader和Linux內核源代碼(包括驅動程序)
C語言:閱讀、編寫Bootloader和Linux內核源代碼(包括驅動程序),閱讀、編寫Linux應用程序
C++語言:閱讀、編寫Linux圖形應用程序
Java語言:Android編程

設計一個ARM+Linux設備,分為硬件設計和軟件設計。硬件設計不用多說,軟件設計是我們討論的重點;贏RM的嵌入式設備,實際上就是一種簡化版的電腦加上特定功能的硬件。通用的PC在開機啟動時,首先會運行主板上的BIOS,然后才啟動操作系統;對應于ARM設備,開機時首先啟動 Bootloader,初始化硬件,然后Bootloader將Linux內核(2MBytes左右)搬到內存中,然后Linux在內存中運行,接管整個設備的管理運行。所以學習嵌入式Linux,首先要學習Bootloader。

Linux用的Bootloader種類比較多,都是開放源代碼的,現在比較流行用u-boot。Bootloader的源代碼是用匯編語言和C語言編寫的,所以要有匯編語言和C語言基礎,匯編語言代碼在全部代碼中僅占1%的比例,絕大部分代碼是C語言代碼。Bootloader代碼經過編譯器編譯成ARM可執行的映像文件,大小在幾十kBytes至幾百kBytes。這個映像文件通過專用的接口(JTAG)和專用的軟件燒寫到ARM的 FlashROM上。在網上可以下載Bootloader源代碼,因為每一種嵌入式設備的硬件不盡相同,所以下載來的源代碼不一定完全適用于當前的硬件,要根據硬件的配置對Bootloader源代碼進行一些修改,這一步叫做Bootloader的移植。

學完Bootloader移植,下一步就是Linux內核的移植和驅動程序的編寫。與Bootloader類似,Linux內核的移植也是根據硬件情況對Linux內核源代碼進行修改,讓Linux內核能在硬件開發板上運行起來。Linux內核源代碼可到相關網站下載,移植的過程主要是針對核心硬件(MPU、內存、FlashROM)修改Linux內核源代碼,讓Linux內核能在開發板上運行起來。Linux內核源代碼修改完成后,經過編譯生成 Linux內核映像文件,可在開發板的內存中運行;Linux內核映像文件并不大,一般在2MBytes左右。Linux內核移植完成后,雖然Linux 已可在硬件上運行,但是很多外圍硬件(如LCD、鍵盤、鼠標等)并沒有被驅動起來,所以下一步就是外圍硬件的驅動程序編寫。與PC上常用的Windows 操作系統不同,Linux的驅動程序是在內核里面的,不能像Windows那樣方便地安裝硬件驅動程序。Linux硬件驅動程序代碼寫好后,放在內核源代碼中,再重新編譯Linux內核,重新運行內核后才能在Linux上操作對應硬件。

Linux的文件系統與Windows也不相同。Windows的內核和文件系統是一體的,在WIndows的資源管理器中可查看全部內核文件和應用程序文件。Linux內核是一個單獨的文件,而所有應用程序卻都放在一個稱為文件系統的文件包內,這樣做的好處是內核和應用程序是分割開的,利于內核的穩定,即使應用程序崩潰了,也不會影響到內核,在文件系統中處理應用文件時也不會誤刪除內核,所以Linux比Windows穩定得多。類似于 Windows中的磁盤分區,Linux內核映像占一個單獨分區,文件系統必須在別的分區上。Linux內核運行以后,會尋找文件系統對應的那個包(分區),并掛載這個包,稱作文件系統掛載。文件系統掛載上以后,可以用與Windows資源管理器類似的方法管理應用程序,但管理不了內核的任何細節。文件系統里的所有文件都是通過目錄和文件方式管理的。

再下來就是應用程序的編寫了。Linux的應用程序分有圖形顯示的應用程序和無圖形顯示的應用程序。無圖形顯示的應用程序運行起來就像在 Windows的“命令提示符”界面中運行,不需要在顯示屏上顯示任何內容,或僅需要顯示一些簡單字符,這類程序在嵌入式領域用途廣泛,因為很多嵌入式設備是沒有LCD顯示屏的。有圖形顯示的應用程序是在有LCD顯示屏的嵌入式設備上運行的,例如手機。

無圖形顯示的應用程序主要用C語言編寫,直接利用Linux內核提供的編程接口完成各種功能。C語言程序可以實現很多功能,就算是多線程、多進程也都可輕松搞定。Linux內核提供的編程接口都是C語言可直接調用的函數,實際上Linux這種操作系統編程就是C語言編程。

有圖形的應用程序編寫相對復雜一些。Linux本身的編程是基于C語言的,要想讓Linux有圖形顯示,必須給Linux加上一個圖形用戶界面(GUI),Linux的GUI現在有很多,桌面Linux用的有Gnome、KDE等,嵌入式Linux用Qt、MiniGUI等。這些GUI實際上都是在內核提供的C編程接口的基礎上封裝一些圖形接口,然后做成圖形庫供應用程序調用。Linux的GUI多是開放源代碼的,也有一些商用GUI不開放源代碼。我們可以下載GUI的源代碼,然后用編譯器編譯成庫文件,然后將這些庫文件放到文件系統的特定目錄下。GUI實際上是應用程序的一部分,而不屬于 Linux內核。GUI提供的編程接口多為C/C++接口,所以圖形應用程序常用C語言或C++語言編寫。也有特殊的如Android,提供的是Java 編程接口。所以圖形應用程序編寫需要掌握C/C++編程語言(Java語言)。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕成人av | 亚洲视频www | 国产清纯白嫩初高生视频在线观看 | 亚洲免费成人 | 91资源在线 | 国产精品视频久久 | 性欧美hd | 久久久成人网 | 日本三级线观看 视频 | 超碰导航 | 91电影在线播放 | 欧美午夜在线 | 亚洲欧美国产精品久久 | 精品国产91久久久久久 | 中文字幕一区二区不卡 | 一区二区精品电影 | 91精品国产欧美一区二区成人 | 男人天堂久久 | 午夜伦理影院 | 午夜成人免费视频 | 久久男人 | 四虎最新地址 | www.欧美.com| 国产成人a亚洲精品 | 国产视频欧美 | 欧美一区二区综合 | 青娱乐av| 一区二区久久电影 | 久久精彩视频 | 成年人的视频免费观看 | 毛片视频免费 | 四虎精品在线 | 国产一级片精品 | 亚洲一区二区久久 | 秋霞国产 | 91热在线 | 午夜爽爽爽男女免费观看影院 | 超碰成人免费 | 亚洲一区二区久久 | 免费国产一区二区 | 综合九九 |