色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

嵌入式Linux的入門,開發嵌入式需要大量輔助軟件

Q4MP_gh_c472c21 ? 來源:未知 ? 作者:龔婷 ? 2018-03-20 11:37 ? 次閱讀

熟練掌握C/C++,熟悉Linux/Windows操作系統,對于OS的軟、硬件資源的分配、任務調度,控制、協調并發活動有較深的研究。熟悉TCP/IP及無線網絡ZigbeeWi-Fi藍牙、2/3/4G)協議,熟悉TCP/IP、USB、串口、SPI協議的處理;行業的需求帶動人才的發展,越來越多的人選擇嵌入式技術,今天我們來談談嵌入式Linux的入門。

一、系統環境

1、環境搭建

開發嵌入式需要大量輔助軟件,一般來說,我們是在電腦上開發好程序,然后通過某些方式將程序下載到開發板上運行。按這個順序列出一些我認為必須的:

Linux系統:主要作為程序開發的系統,選擇多人使用并資源豐富的版本,建議ubuntu或fedora,目前我使用ubuntu。可以使用在虛擬機或物理機上。

虛擬機:有條件的推薦使用物理機安裝,但一般經常使用vmware這類虛擬機軟件,通過這個軟件安裝ubuntu系統,然后設置共享。然后在這個系統上交叉編譯。

共享方式:有的人喜歡用vmware自帶共享功能,有的人喜歡用samba共享。個人建議在ubuntu中設置samba共享,這樣可以在windows上將ubuntu共享目錄映射成為其中一個盤符,這樣做,就可以在windows下操作linux系統的目錄、文件了,不過前提是需要網絡性能良好。另一種常見的共享方式是nfs,多用于主機和開發板之間的文件傳輸。

開發IDE:有的人建議在linux系統中用vim或emacs,但作為初學者入門,不要如此,使用vim、emacs學習成本高,而會打擊積極性。在samba共享情況下,建議使用Notepad++、source insight進行代碼編譯。

交叉編譯:交叉編譯是嵌入式一個很重要的概念。由于我們編譯的程序是在開發板(開發板又稱目標板)上運行的,但開發板又沒有環境進行編譯,所以帶出“交叉編譯”概念。即在一臺linux主機系統上使用交叉編譯器對代碼進行編譯,但編譯得到的二進制文件無法在該主機運行,只能在開發板上運行。不同的板子使用的交叉編譯器不同。一般使用商家自帶的交叉編譯器。

下載手段:根據應用場合,可以用jtag燒錄器下載程序(適用如u-boot開發)。可以使用tftp方式下載程序(適用kernel開發)。在開發板系統啟動后且網絡正常情況下,可以使用tftp下載、nfs拷貝等方式進行調試(適用于應用層程序開發)。

另外對于USB轉串口線、網絡這類的東西,就不一一詳細說明了。

掌握程度:不同人使用的開發環境不盡相同。原則上只要是自己熟悉的環境就可以了,以提高開發效率為準則。

推薦軟件:vmware、notepad++、source insight、tftpd32(均為windows系統軟件)。

2、系統使用

工欲善其事,必先利其器。系統環境使用熟悉程度越高,越能提高開發速度。舉個例了,曾經遇到過別人在設備上調試應用程序,步驟是:編碼、編譯、制作軟件包、用工具升級軟件包到設備上,設備上電看效果。這一系列步驟中,制作包、升級軟件包耗時很長,對于調試十分不利。如果使用NFS,時間能省至少三分之二。所以說,環境的熟悉是十分重要和必要的。

這里主要針對Linux系統,對于入門者而言,Linux系統的使用是一個大坎。但要知道,嵌入式開發是離不開linux系統的,是必須學的。目前網絡資料十分廣泛,幾乎遇到的問題都在找到答案,但質量往往良莠不齊,有些甚至會誤導人。因此,建議一邊學一邊做筆記,把自己的疑問、心得、步驟都記錄下來(比如,記錄第1小節提到的nfs、samba服務安裝的步驟)。

如果時間允許,最好找書本來學習,邊看書邊敲命令。因為書籍介紹比較系統,有利于了解全貌,再逐個知識點深入,做到胸有成竹。下面列一下需要學習的知識點。

1、掌握常用命令。必須要學的命令不多,像查看文件、拷貝文件、創建文件、查找文件、顯示日期、查看/修改IP,等等。這些常用命令只要使用次數多了,就能熟練掌握。具體的自行搜索。

2、掌握軟件安裝步驟。一般linux系統發行版自帶有安裝工具,如unbutu,在聯網情況下直接輸入命令apt-get install tool-name,就能安裝了。

3、編譯源碼方式安裝軟件。有些工具提供源碼需要自己進行編譯(比如要在開發板上運行的程序,則無法通過apt-get來安裝,需要交叉編譯)。linux編譯一般有三個步驟:

l配置:./configure

l編譯:make

l安裝:make install。

這個知識點請大家自行百度吧,這里由于篇幅原因就不細說了。

4、了解linux文件系統、目錄結構、設備文件。如根目錄名稱是“/”,配置文件一般位于/etc目錄,運行程序一般位于/bin、/sbin、/usr/bin、/usr/sbin,等等。因為嵌入式涉及到根文件系統概念,因而需要對linux目錄結構有了解。如果感興趣,可以去搜索一下LFS。

5、學習IO重定向、管道概念,學習并會寫簡單shell腳本。

6、學習編輯器vi的簡單使用(因為有些情況下只有這個編輯器可用)、編譯器gcc用法、Makefile知識、gdb調試。(此項針對開發而言)

學習建議:

1、看書、網絡搜索

2、學會man命令(這是linux內置的幫助命令,比如要了解cp命令的用法,則輸入man cp)

3、記錄筆記

二、應用層

1、C/C++語言

C/C++語言本身與具體平臺相關不大,但必須結合具體環境平臺才能展現其作用。比如,MFC使用C/C++,QT也使用C/C++,Linux內核中使用C,單片機使用C,等等。環境不同,其側重點不同。在學校里學習C/C++語法,考完試,卻沒有結合實際項目編程,就有人糾結學了C/C++不懂能做什么。只有真正在某一領域使用了C語言,它才是一個可以看得見、摸得著的東西,而不再是抽象的。

這里結合Linux系統,列舉出一些要掌握、學習的知識點。

1、linux系統編程基本概念:Makefile、gcc、gdb。

2、文件IO操作。

3、進程控制、進程間通信、多線程操作

4、信號處理

5、網絡編程

6、串口編程

另外也列舉C/C++語言的學習點:

1、標準庫

輸入輸出(fprintf、sscanf)、文件操作(fopen、fclose)、字符類操作(isalpha、islower)、字符串操作(strcpy、strcmp、memcpy)、信號處理(signal)、日期時間(mktime、ctime)

2、C++ STL

向量vector、隊列queue、棧stack、列表list。

推薦網站:http://www.cplusplus.com/reference/

下面列出一些我認為較好的書籍。每種類型的書籍應用場合不同,按需求學習。——不僅嵌入式Linux領域,其它很多領域同時需要C,因而要提高C技能。

入門篇:

《Linux C 編程一站式學習》

《Linux C從入門到精通》

《Linux C編程從初學到精通》

《Linux C編程實戰》

《嵌入式linux應用開發完全手冊》 (該書對嵌入式Linux開發整體都有講述,一書以看窺全貌,入門適用)

學習路線:

環境:安裝虛擬機linux,配置好samba,有windows下用notepad++編寫代碼,然后在命令行使用gcc編譯并運行。像ubuntu安裝必要開發工具sudo apt-get install build-essential 這類的知識點本文就不涉及了。

實踐:首先了解linux下gcc編譯基本概念,然后逐個知識點學習。以上每點均是一個知識塊,需要手動寫代碼。建議在github上建立倉庫,形成自己的代碼庫,方便日后使用。

2、版本控制

版本控制可以提高開發效率,目前很多公司使用svn或git進行代碼管理,很多開源項目——包括kernel,都使用git來管理。對于不涉密的代碼,推薦使用github托管,而不便公開的代碼,可以在bitbucket上托管。養成保存代碼的習慣很重要。筆者很多年前沒有代碼托管意識,一次電腦被偷,導致很多代碼消失了,如今想找也想不回來了。

版本控制學習成本不大,無非創建倉庫、提交代碼這些過程,結合日常編碼練習,慢慢熟悉掌握即可。

3、腳本

Linux系統的腳本語言有很多,使用場合也不同,主要目的是提高開發效率。比如:在shell腳本中完成代碼的編譯并拷貝到nfs共享目錄(或tftp服務目錄)。這樣只需要執行腳本就完成多項工作,節省很多時間。

4、界面開發

界面開發不是筆者強項,就寫一寫筆者的經歷。筆者接觸過的界面開發有QT、SDL、MFC。這些都是作為工具而存在的,不是專門研究,都是工作需要時再去學習,邊學習邊實踐。

比如,做一個視頻采集的軟件,使用了SDL進行顯示。

比如,為了顯示YUV格式的文件,使用MFC編寫一個播放器。

5、其它書籍推薦

內功修煉篇:

程序員的自我修養——鏈接、裝載與庫》(偏底層的人建議看看)

《高效程序員的45個習慣敏捷開發修煉之道》

《高質量程序設計指南》(建議看看,工作中編寫代碼一定要注意編碼規范,否則維護難度太大)

《Linux開發工具箱:項目開發的最有效途徑》(對應英文版本《The Linux Programmer's Toolbox》,網絡有資源)

(注:入門級別書籍不建議購買,通過網絡資源或去圖書館借書等手段來學習就行了。當然經濟條件允許的除外)

三、底層

這里說的底層包括三大方面,這三大方面缺一不可。

bootloader:作為上電運行的第一個程序,負責最原始的初始化操作,初始化芯片、初始化內存、初始化IO復用,讀取內核代碼并將控制權移交到內核,從而完成使命。

kernel:提供基本的運行環境,提供外設操作控制接口

rootfs:向用詞(應用層)提供基本操作環境,包括命令行、程序庫等。

1、bootloader(啟動裝載程序)

嵌入式Linux常見的bootloader是u-boot,而X86領域中一般稱為BIOS。u-boot的學習沒有捷徑,最好是在有ARM開發板情況下進行研究,通過打印信息的方法跟蹤其流程。但是,看懂u-boot代碼需要電路基本知識、芯片手冊知識等等。這些知識,同樣適用于內核驅動的開發。

首先要建立的是整體概念和認識。建議先把廠商提供的u-boot源碼編譯通過,并下載到開發板上看到正常結果后,再用串口打印信息搜索代碼,以了解u-boot的代碼流程。然后再慢慢研究。如果bootloader不是學習重點,在有一定概念前提下就可以跳過到內核驅動層了,不過就筆者經驗來看,bootloader和內核關系十分密切且部分代碼是相通的。

一般初始化的代碼是匯編代碼,對于入門者而言,初學階段不用追究,等有一定基礎后再回頭研究也不晚。

2、kernel(內核)

內核是比較大的一塊,涉及內容十分多。作為入門者,與u-boot類似,首先要建立的整體概念。先把廠商提供的內核源碼編譯通過,并下載到開發板上,串口會打印很多啟動信息,這些啟動信息能幫助我們學習內核,自己也可以在內核中打印語句,以了解其流程。

每一個平臺芯片不同,外設不同,內核均不同,需要進行移植。所謂的“移植”,就是找到合適的驅動,修改適應到該平臺的過程。比如,某平臺使用2個LCD屏,一個是3.5寸的,另一個是4.3寸的,這需要對內核進行修改。比如,這個平臺使用nand flash是1GB的,另一個平臺使用的是512MB的,也需要修改內核。其它如EEPROM電源芯片、網卡,等等,均如此。

內核知識點分2部分,一是kernel本身的知識點,如內存管理機制(MMU)、時間管理、同步機制,等等。二是外設驅動,如LED燈、GPIO、按鍵。

初學者建議學習:

1、了解內核編譯的過程:配置內核、編譯uImage。

2、了解platform驅動模型(筆者文章有現成的模板,已經應用于很多個平臺上)。

3、了解一般外設驅動模型。建議從簡單的LED、GPIO入門。

高階知識點:

1、學習各種子系統,如MTD、USB、IIC、SPI、RTC、WDT。

2、學習內核知識,如延時隊列、時間管理,同步機制,等等。

3、rootfs(根文件系統)

一般情況下,開發板廠商會提供根文件系統,如果沒有,則可以自己編譯制作。一般嵌入式Linux使用busybox制作文件系統必要的程序、庫、配置文件。因為busybox編譯出來的內容體積小,節省空間,所以很多ARM開發板上都是用busybox的。另外還涉及到文件系統格式,像Yaffs2、ramfs、ext4、UBI,等等。

掌握程度:

1、知道系統啟動過程涉及到哪些腳本。知道上電啟動時如何添加自己程序啟動。

2、了解各目錄功能、存儲哪些文件(如改IP在哪個配置文件,動態庫在哪些目錄)。

四、其他知識

1、電路原理圖、datasheet

作為底層開發人員來說,能看懂硬件原理圖和datasheet是必要的一項技能。

看懂硬件原理圖,就可以知道這個系統上有什么器件,哪些器件有什么功能,如何連接(使用什么協議),提供什么接口。有了這些認知后,才會對系統有一個全局整體的認識掌握。對于開發人員來說絕對是有利的。

看懂datasheet,才能知道如何訪問器件,如何操作器件,了解其時序。

另外,對于嵌入式經常接觸到的如I2C協議,SPI協議等等的協議也要掌握。

掌握程度:不需要像硬件專業同學那樣學習數電、模電課程。但起碼掌握上升沿、下降沿的概念,知道高電平、低電平概念,懂得看I2C協議的時序圖。懂得如何找到datasheet中關鍵信息(寄存器說明、時序圖)。

學習路線:碎片時間多的人,建議在遇到不懂知識點時上網搜索學習。有條件的建議借書或買來學習。

五、入門路線

這里以偏重嵌入式Linux(ARM)驅動開發為例,給出一條入門的路線。

1、買一款使用廣泛、資料多的ARM開發板。因為使用的人多,你遇到的問題別人可能早就遇到并解決了,這樣能省很多時間,并且提高自信心。可以到某寶上看看板子。因為是學習使用,最好便宜又適用的。

2、使用vmware安裝一個ubuntu系統。在vmware軟件中設置物理橋接方式上網。在ubuntu設置好samba服務、nfs服務、tftp服務。

3、首先自己動手親自編譯u-boot、kernel,燒寫到板子上(注:有可能rootfs不提供源碼,而是提供img鏡像文件)。

4、自己修改kernel,并編譯busybox,燒寫到板子,在板子掛載NFS,在虛擬機交叉編譯一個Helloworld程序,并在板子上運行。

5、根據興趣,開始搗鼓:u-boot、kernel、應用層開發、QT開發。

5、選擇自己重點關注方面,繼續研究。

這個路線不一定要嚴格遵守時間軸。

六、補充

以上這些項,因不同人的基礎而異。像硬件專業的同學,數電、模電和電路圖已經掌握,就要加強C和Linux系統的學習。反之,計算機軟件專業的同學,就要去學習硬件知識。等等。

對于書籍,有的可能一下子無法理解,那是因為功力不到。有的可能覺得沒有用處,那是因為還沒有涉及此方面。比如,非計算專業的人看《編譯原理》,《操作系統原理》,《計算機體系結構》,肯定是看不懂的,而且初學者也不必要看。又比如,嵌入式有的領域使用到H264編碼、MPEG編碼,802.11、CDMA,如果不是進入有關行業的,也不必學習。另外網上很多人寫的嵌入式入門文章提到0.11內核版本、2.4內核版本的書,還有離散數字、算法導論的書,并不是都適用所有人。所以大家一定要量體裁衣,有多大胃口吃多少飯,有多大頭戴多大帽,根據自己已有的知識和所處的階段進行選擇。

另外要說明的是,很多知識點是密不可分的,且界線是很模糊的。比如應用層和底層。因為有時出現問題,并不知道具體哪里的問題,這就需要站在比較高的層面(系統視野)看問題,才會快速定位并解決問題。建議以某一方面為核心點,另一方面做了解掌握。如果有能力,最好都學。

一般情況下,嵌入式Linux沒有速成。但可以達到入門速成,根據個人能力,我認為大約半個月~2個月即可,不過入門后就要不斷學習和積累了,——這個積累,需要精力、時間的投入。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5090

    文章

    19176

    瀏覽量

    307003
  • Linux
    +關注

    關注

    87

    文章

    11342

    瀏覽量

    210182
  • 操作系統
    +關注

    關注

    37

    文章

    6889

    瀏覽量

    123625

原文標題:一位嵌入式er總結分享一些嵌入式Linux入門的步驟和經驗

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入式軟件開發需要學習什么?

    嵌入式軟件開發需要學習什么? 嵌入式軟件開發,一個發展迅速的行業,不少學者入門的第一個問題肯定是
    發表于 01-31 14:45

    嵌入式Linux嵌入式Linux開發環境

    嵌入式Linux開發 圖1是一個典型的嵌入式Linux開發環境它包括主機工作站或者PC 支持G
    發表于 09-10 10:22 ?119次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>和<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>開發</b>環境

    嵌入式linux開發入門

    嵌入式linux開發入門適用于對嵌入式系統沒有概念和經驗,渴望進入嵌入式系統
    發表于 09-10 10:29 ?80次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b><b class='flag-5'>開發</b><b class='flag-5'>入門</b>

    嵌入式linux 入門教材

    嵌入式linux 入門教材 1、什么是嵌入式Linux   嵌入式
    發表于 03-02 16:03 ?127次下載

    嵌入式Linux開發入門v3.0.pdf

    嵌入式Linux開發入門v3.0 1、嵌入式系統必須以實踐入門,所以要學習必須購買
    發表于 03-31 15:08 ?84次下載

    嵌入式LINUX開發基礎知識

    嵌入式LINUX簡介,嵌入式LINUX開發平臺簡介,嵌入式L
    發表于 07-31 21:34 ?261次下載

    嵌入式Linux應用開發

    linux開發的隊伍非常龐大,網上有大量嵌入式linux開發資料和源代碼,很多你
    發表于 10-10 16:16 ?708次閱讀

    嵌入式LINUX的Qt開發入門教程

    嵌入式LINUX的Qt開發入門教程(最好的嵌入式開發板)-該文檔為嵌入式
    發表于 08-04 11:01 ?30次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>LINUX</b>的Qt<b class='flag-5'>開發</b><b class='flag-5'>入門</b>教程

    嵌入式】基于ARM的嵌入式Linux開發總結

    前言嵌入式知識點復習一嵌入式知識點復習二 --體系結構嵌入式知識點復習三 --ARM-LINUX嵌入式開發環境
    發表于 10-19 18:32 ?26次下載
    【<b class='flag-5'>嵌入式</b>】基于ARM的<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>開發</b>總結

    視頻教程-嵌入式Linux驅動開發-嵌入式

    嵌入式Linux驅動開發 10年以上嵌入式軟件
    發表于 11-02 11:36 ?13次下載
    視頻教程-<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>驅動<b class='flag-5'>開發</b>-<b class='flag-5'>嵌入式</b>

    嵌入式Linux路線

    嵌入式數據庫或圖形軟件開發有興趣,可以進一步學習嵌入式linux數據庫開發或基于 QT的嵌入式
    發表于 11-02 11:51 ?18次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>路線

    視頻教程-嵌入式Linux開發基礎-嵌入式

    嵌入式Linux開發基礎 嵌入式工程師、嵌入式
    發表于 11-02 13:21 ?30次下載
    視頻教程-<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>開發</b>基礎-<b class='flag-5'>嵌入式</b>

    視頻教程-嵌入式Linux系統基礎入門-Linux

    嵌入式Linux系統基礎入門 嵌入式開發工程師,有超過8年的
    發表于 11-02 14:21 ?14次下載
    視頻教程-<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>系統基礎<b class='flag-5'>入門</b>-<b class='flag-5'>Linux</b>

    linux嵌入式系統開發小知識分享,嵌入式開發教程哪家好?

    嵌入式入門你知多少?對于一些初入門的初學者而言,對嵌入式入門的一些知識有助于后期的學習,從嵌入式
    發表于 11-02 20:51 ?13次下載
    <b class='flag-5'>linux</b><b class='flag-5'>嵌入式</b>系統<b class='flag-5'>開發</b>小知識分享,<b class='flag-5'>嵌入式開發</b>教程哪家好?

    嵌入式開發教程哪家好?linux嵌入式系統開發

    嵌入式入門你知多少?對于一些初入門的初學者而言,對嵌入式入門的一些知識有助于后期的學習,從嵌入式
    發表于 11-03 09:51 ?17次下載
    <b class='flag-5'>嵌入式開發</b>教程哪家好?<b class='flag-5'>linux</b><b class='flag-5'>嵌入式</b>系統<b class='flag-5'>開發</b>
    主站蜘蛛池模板: 欧美成人国产 | 成年免费大片黄在线观看岛国 | 久久亚洲精品AV无码四区 | jizz日本黄色 | 国产高清美女一级毛片久久 | 亚洲偷自拍精品视频在线观看 | 午夜国产精品影院在线观看 | 日韩伦理电影秋霞影院 | 蜜桃人妻无码AV天堂三区 | 老师破女学生特级毛片 | 色综合 亚洲 自拍 欧洲 | 亚洲无遮挡无码A片在线 | 女性性纵欲派对 | 草民电影网午夜伦理电影网 | 樱桃视频影院在线播放 | 日韩一卡二卡三卡四卡免费观在线 | 偷窥wc美女毛茸茸视频 | 青春草国产成人精品久久 | 精品AV亚洲乱码一区二区 | 伊人久久天堂 | 欧美亚洲日韩在线在线影院 | 久久综合狠狠综合狠狠 | 久久久精品免费视频 | 古风一女N男到处做高H | 国产性色AV内射白浆肛交后入 | 欧洲精品一区二区不卡观看 | 漂亮的保姆3集电影免费观看中文 | 久久re视频这里精品青 | 久久re6热在线视频精品 | 末成年美女黄网站色大片连接 | 好看的电影网站亚洲一区 | 九九99国产香蕉视频 | 国产成年网站v片在线观看 国产成年人在线观看 | 涩涩电影网 | 777黄色片 | 色综合伊人色综合网站 | 久久免费黄色 | 国内精品久久久久久久999下 | 欧美成人猛片aaaaaaa | 俄罗斯搜索引擎Yandex推广入口 | 视频一区视频二区在线观看 |