国产粉嫩无码不卡在线观看,酒店大战丝袜高跟鞋人妻,特级精品毛片免费观看,欧美亚洲日本国产综合在线

如何成為一個優(yōu)秀的嵌入式BSP工程師?(嵌入式bsp開發(fā))

文章下方附學(xué)習(xí)資源,自助領(lǐng)取

如何成為一個優(yōu)秀的嵌入式BSP工程師?(嵌入式bsp開發(fā))

摘要BSP,全稱Board Support Package,漢語意思即板級支持包。BSP工程師,顧名思義就是負(fù)責(zé)板級支持包的開發(fā)、調(diào)試和維護(hù)工作。那么什么是板級支持包呢?什么是BSP工程師呢?如何才能成為一個優(yōu)秀的的嵌入式BSP?

一、嵌入式系統(tǒng)

要明白什么是嵌入式軟件工程師,我們先從嵌入式系統(tǒng)(嵌入式設(shè)備)說起。維基百科上對嵌入式系統(tǒng)的定義如下:

嵌入式系統(tǒng)(Embedded System),是一種嵌入機械或電氣系統(tǒng)內(nèi)部、具有專一功能和實時計算性能的計算機系統(tǒng)。

通俗的講,嵌入式系統(tǒng)就是一種具有專一功能的計算機系統(tǒng)。我們身邊就有好多嵌入式設(shè)備,常見的比如智能手機,數(shù)碼相機等消費類的電子設(shè)備,再比如最近幾年興起的諸如智能音箱、智能電視、掃地機器人智能家居設(shè)備。當(dāng)然還包括汽車防抱死系統(tǒng)、各種醫(yī)療成像系統(tǒng)等設(shè)備。總之各行各業(yè)我們都有可能接觸到它,尤其隨著智能化時代的到來,很多非智能的設(shè)備也將逐步由嵌入式設(shè)備所替代,典型的如智能門鎖。

二、嵌入式工程師

隨著嵌入式設(shè)備應(yīng)用越來越廣泛,相關(guān)人才的需求也越來越大。那么相關(guān)的人才都有哪些呢?其中最主要的就是嵌入式工程師。嵌入式工程師分為兩種:嵌入式硬件工程師和嵌入式軟件工程師。

  • 嵌入式硬件工程師主要職責(zé)是負(fù)責(zé)設(shè)計嵌入式系統(tǒng)的硬件原理圖,使用相應(yīng)的工具畫出PCB圖,后期配合嵌入式軟件工程師調(diào)試系統(tǒng)。
  • 嵌入式軟件工程師從系統(tǒng)軟件上又可以分為兩種:BSP工程師和嵌入式應(yīng)用軟件工程師嵌入式應(yīng)用軟件工程師主要是負(fù)責(zé)編寫基于嵌入式系統(tǒng)的應(yīng)用軟件。類似于基于windows上的QQ, word。由于我本人是做BSP的,因此這里我們著重討論BSP工程師。

如何成為一個優(yōu)秀的嵌入式BSP工程師?(嵌入式bsp開發(fā))

嵌入式物聯(lián)網(wǎng)需要學(xué)的東西真的非常多,千萬不要學(xué)錯了路線和內(nèi)容,導(dǎo)致工資要不上去!

無償分享大家一個資料包,差不多150多G。里面學(xué)習(xí)內(nèi)容、面經(jīng)、項目都比較新也比較全!某魚上買估計至少要好幾十。

點擊這里找小助理0元領(lǐng)?。?a class="pgc-link" data-content="mp" data-source="outerLink" rel="noopener noreferrer noopener noreferrer" target="_blank">嵌入式物聯(lián)網(wǎng)學(xué)習(xí)資料(頭條)

如何成為一個優(yōu)秀的嵌入式BSP工程師?(嵌入式bsp開發(fā))如何成為一個優(yōu)秀的嵌入式BSP工程師?(嵌入式bsp開發(fā))

嵌入式工程師分類

三、BSP工程師

BSP,全稱Board Support Package,漢語意思即板級支持包。BSP工程師,顧名思義就是負(fù)責(zé)板級支持包的開發(fā)、調(diào)試和維護(hù)工作。那么什么是板級支持包呢?前面我們講過,嵌入式硬件工程師負(fù)責(zé)設(shè)計硬件,畫出PCB圖,工廠會根據(jù)PCB圖生產(chǎn)出對應(yīng)的電路板。一個嵌入式系統(tǒng)光有電路板是不夠的,還要有對應(yīng)的軟件支持,軟件開發(fā)的前提是首先使板子正常穩(wěn)定的工作,然后再在其上編寫對應(yīng)的應(yīng)用軟件以實現(xiàn)其特有的功能。其中使板子正常穩(wěn)定的工作的代碼就屬于板級支持包。

那么BSP工程師的具體工作有哪些呢

我們首先從嵌入式設(shè)備談起,前面我們談到了很多的嵌入式設(shè)備,從系統(tǒng)角度來講這些設(shè)備有些是跑操作系統(tǒng)的,有些沒有跑。對于不跑操作系統(tǒng)的設(shè)備來講,其功能相對簡單一點,使用的主控芯片一般也比較簡單,比如風(fēng)靡一時的51系列單片機、stm系列的單片機。對于這些簡單系統(tǒng)來講,它對軟件開發(fā)人員要求相對比較低,當(dāng)然也就沒有我前面所說的分工那么詳細(xì),有時候甚至從畫板、點亮、開發(fā)都是由一個人來完成的。對于跑操作系統(tǒng)來講的設(shè)備,就不一樣了。一般來講,跑操作系統(tǒng)的設(shè)備其軟件開發(fā)分三個階段:

1. 點亮板子

第一批板子出廠時是不包含任何軟件的。BSP工程師需要結(jié)合硬件原理圖修改從芯片廠商拿到的參考代碼,調(diào)試板子,使板子上的操作系統(tǒng)能夠正常穩(wěn)定工作,從而提供一個穩(wěn)定的開發(fā)調(diào)試環(huán)境,這個過程叫做點亮板子,行話叫做Bringup。這屬于BSP工程師最具有價值含量的工作之一,因為它對BSP工程師所掌握的知識的廣度和深度都有一定要求。其中會涉及到計算機原理、操作系統(tǒng),處理器架構(gòu)等,還包括硬件方面的一些知識。綜合起來其最核心的工作就是對內(nèi)核的移植、裁剪。

2. 使能板子上所有設(shè)備

上個階段中,板子的CPU和基本的器件已經(jīng)能正常工作,這個階段中將使能所有的外設(shè),并為后面要開發(fā)的應(yīng)用程序提供對應(yīng)的軟件控制接口。這個過程的實質(zhì)是對應(yīng)的操作系統(tǒng)下驅(qū)動開發(fā)的過程,需要掌握硬件工作的原理,操作系統(tǒng)的相關(guān)知識。

3. 為板子開發(fā)應(yīng)用程序

如前文所述,嵌入式系統(tǒng)是一個具有專一功能的系統(tǒng),其上所有的硬件,軟件都應(yīng)該為這一功能服務(wù)。第二個階段結(jié)束的時候,板子上所有的設(shè)備都已經(jīng)可以正常使用了。這個階段的任務(wù)就是開發(fā)應(yīng)用程序來實現(xiàn)某種特定的功能,應(yīng)用程序中會使用第二階段提供的軟件接口控制板子上的設(shè)備來完成這一功能。

四、BSP工程師應(yīng)具備的能力

上述前兩個階段屬于BSP開發(fā)的內(nèi)容,第三個階段屬于嵌入式應(yīng)用軟件開發(fā)的過程。綜上所述,BSP工程師主要應(yīng)該具備的能力主要有:

  • 掌握計算機原理方面的知識;
  • 掌握操作系統(tǒng)的相關(guān)知識,深入研究某種操作系統(tǒng),目前來講,研究linux操作系統(tǒng)應(yīng)該是大部分人的選擇;
  • 基本的linux(開發(fā)環(huán)境)操作
  • 精湛的C語言功底和一定的C /匯編的知識。
  • 掌握一定的硬件和電路原理方面的知識;
  • 熟悉常見的接口協(xié)議,如I2C, SPI, UART, USB等。

當(dāng)然作為一個軟件開發(fā)人員也必須掌握一些通用的軟件,比如:

  • 代碼管理軟件,常見的如git等;
  • 代碼閱讀軟件,這個就因個人喜好而不同了,比如:opengrok,source insight,vim下ctags/cscope插件組合等。

簡單來講,作為一名嵌入式BSP工程師,既要和懂硬件工作原理,還要能編寫對應(yīng)的軟件使之正常工作。其學(xué)習(xí)和開發(fā)難度就不言而喻了。那么,究竟學(xué)習(xí)哪些知識,怎么學(xué)習(xí)才能成為一名合格的嵌入式BSP工程師呢?

簡單來講,作為一名嵌入式BSP工程師,既要和懂硬件工作原理,還要能編寫對應(yīng)的軟件使之正常工作。其學(xué)習(xí)和開發(fā)難度就不言而喻了。那么,究竟學(xué)習(xí)哪些知識,怎么學(xué)習(xí)才能成為一名合格的嵌入式BSP工程師呢?

五、專業(yè)背景

我們首先從專業(yè)背景談起。經(jīng)過我的了解,從事嵌入式BSP開發(fā)的人員主要來源于計算機專業(yè)和電子信息專業(yè)。這兩個專業(yè)是和嵌入式BSP最相關(guān)的專業(yè)了。當(dāng)然也有一些同事是從其他專業(yè)轉(zhuǎn)過來的(比如我,熟悉我的朋友知道我大學(xué)學(xué)的是物理專業(yè),這相對來講是比較偏的一個專業(yè)了)。

所以,如果你是計算機或者電子信息專業(yè)的,你的基礎(chǔ)已經(jīng)足夠好了。因為結(jié)合上篇文章我們知道,對于BSP工程師來講,主要的工作就是使硬件及其上的操作系統(tǒng)穩(wěn)定的工作,所以理解硬件原理、計算機原理和操作系統(tǒng)是最基本的要求,而這兩個專業(yè)都會學(xué)習(xí)到像模擬電路,數(shù)字電路之類的硬件原理基礎(chǔ),計算機原理和一門高級語言也是這兩個專業(yè)的必修課,這些已經(jīng)基本構(gòu)成了BSP工程師的必需的知識面。當(dāng)然,不是這兩個專業(yè)的同學(xué)也不用灰心喪氣,畢竟大學(xué)里學(xué)的課程大家能掌握到說明程度都懂的,所以即便沒有經(jīng)歷過系統(tǒng)的學(xué)習(xí),只要興趣足夠,再加上一定的自制力,完全自學(xué)也不是不可能的。

六、推薦書籍

言歸正傳,我們結(jié)合上篇文章里BSP工程師必備的知識來介紹一下如何學(xué)習(xí)。

1. 計算機原理

前面我們談到過,跑操作系統(tǒng)的嵌入式系統(tǒng)也屬于典型的計算機系統(tǒng),既然我們要把操作系統(tǒng)移植到計算機上,那么了解計算機運行原理的細(xì)節(jié)對于開發(fā)來講是必不可少的。在處理一些疑難雜癥時,這些知識尤其能凸顯其作用來。這里推薦一本計算機原理的經(jīng)典書籍——《Computer Systems: A Programmer’s Perspective》(中文譯作:《深入理解計算機系統(tǒng)》),本書從這本書從程序員的視角系統(tǒng)的講述了計算機程序的存儲,運行的基本原理,并結(jié)合實例分析了如何優(yōu)化計算機程序,第二部分結(jié)合計算機原理引出了操作系統(tǒng)中一些重要的概念,并對這些概念從程序運行的角度做了詳細(xì)的闡述和詮釋。

從2010年至今,個人已經(jīng)反復(fù)研讀了幾遍,每次重讀依然感覺有很多收獲。因此,在本博客中,我專門新建了一個主題,從一個“程序員編寫出來的C文件到編譯生成可執(zhí)行文件,最終到程序運行的過程”的角度來總結(jié)我對本書部分知識的理解和收獲。本書從出版至今已經(jīng)推出了三版,我自己收藏了第二版英文版和最新版第三版高清掃描的中文電子書(文件大小501M)。

2. 基本的Linux操作

多數(shù)嵌入式開發(fā)都是在Linux操作環(huán)境進(jìn)行開發(fā)的,因為在其上存在很多優(yōu)秀的開源開發(fā)工具,可以方便快速的搭建編譯環(huán)境,有很方便的debug工具可供使用。很多同學(xué)可能壓根就沒有接觸過Linux系統(tǒng),開機之后一片茫然,甚至連文件都找不知道。這并不是問題,畢竟它的設(shè)計思想和我們熟知的Windows完全不一樣,對于程序員來講,當(dāng)你適應(yīng)了Linux系統(tǒng)之后,你可能甚至都不愿意再用回Windows。關(guān)于學(xué)習(xí)Linux基礎(chǔ)操作的書,我推薦《鳥哥的linux私房菜》,里面由淺入深的介紹了Linux系統(tǒng),不僅涉及Linux的基礎(chǔ)操作,還包括如何重裝Linux系統(tǒng),Linux的文件管理,shell腳本等知識,其實這本書主要是面向Linux系統(tǒng)管理員的,但是它前面13章的內(nèi)容對于入門Linux系統(tǒng)來講是一個絕佳之選。

3. C語言基礎(chǔ)

前面我們說過BSP工程師主要是和底層硬件、系統(tǒng)打交道,所以C語言是最主要的編程語言。學(xué)習(xí)C語言,我強烈推薦“C語言之父”Dennis Ritchie的著作——《The C Programming Language》。這本書僅僅有200多頁,去掉附錄才100多頁,但是字字珠璣,甚至連文中的示例程序都直接是libc庫里面的函數(shù),比國內(nèi)某著名C教材里面的計算器例子不知要經(jīng)典多少倍!

4. Linux操作系統(tǒng)

這里所說的Linux系統(tǒng)和上面的Linux操作完全不一回事。上面講的Linux操作指的是你的工作電腦是linux系統(tǒng),你需要在上面下載、修改、編譯和調(diào)試代碼,而這里的Linux系統(tǒng)指的是你的目標(biāo)開發(fā)板上跑的Linux系統(tǒng)。如果是BSP工程師,你需要了解系統(tǒng)從硬件上電開始,到Linux系統(tǒng)初始化完成,init進(jìn)程起來的整個流程,當(dāng)然這個涉及的知識非常之多,所以我建議新手從Linux驅(qū)動程序開始入手。

所謂的驅(qū)動程序,簡單來講就是Linux系統(tǒng)中的一些模塊,這些模塊有統(tǒng)一的框架,開發(fā)人員只需要在其中填入控制對應(yīng)硬件的C程序代碼就可以了。通過學(xué)習(xí)Linux驅(qū)動,逐步了解驅(qū)動程序的框架,并發(fā)訪問的原理,Linux分離分層的思想,這樣在擴展到Linux系統(tǒng)的其他模塊、甚至整個Linux系統(tǒng)的學(xué)習(xí)時就非常容易了。對于Linux設(shè)備驅(qū)動的修惡習(xí),我首推《Linux device driver》(中文譯做《Linux設(shè)備驅(qū)動》),這本書大部分例子是取一小段內(nèi)存來模擬一個Linux設(shè)備,然后實現(xiàn)了對應(yīng)的字符設(shè)備驅(qū)動,并以此為例闡述了設(shè)備驅(qū)動中常見的知識點。

在掌握了Linux設(shè)備驅(qū)動之后,這時對Linux操作系統(tǒng)應(yīng)該有一個初步的認(rèn)識和輪廓了,后面就應(yīng)該要系統(tǒng)的認(rèn)識一下Linux了。當(dāng)然,這個時候如果你有強大的毅力,那么直接去讀Linux源碼也是一個選擇。但是,我認(rèn)為更重要的是結(jié)合之前我們從驅(qū)動程序中提取出來的Linux思想,從整體上認(rèn)識一下Linux系統(tǒng),這就不得不談到又一本經(jīng)典的書籍了——《Linux Kernel Development》(中文譯做《Linux內(nèi)核設(shè)計與實現(xiàn)》),這本書省略了大量的細(xì)節(jié),通篇很少列舉大段的代碼,而是提綱挈領(lǐng)的闡述了linux設(shè)計和實現(xiàn)的原理。

從整體上掌握了原理之后,我們還缺少Linux實現(xiàn)的具體細(xì)節(jié),《Professional Linux Kernel Architecture》(中文譯做《深入Linux內(nèi)核架構(gòu)》)是一個不錯的選擇,單從頁數(shù)上就能體現(xiàn)出來。原版1337頁,中文版1055頁。

七、閱讀建議

  • 在閱讀上述書籍的時候,建議務(wù)必坐在電腦前面,書上提到的任何操作,都照著做一遍,看看是否和書上的結(jié)果一致,這樣不僅可以深化理解,還可以加深印象。
  • 上面的書籍除了《鳥哥的linux私房菜》之外,基本都是英文書籍,而且我也給出了中文版,如果有能力,建議大家閱讀原版書籍,因為很多時候,中文版并沒有準(zhǔn)確的翻譯出作者的意思。如果實在困難,可以閱讀中文版,但建議在遇到疑問或者難以理解的時候,及時對照原版書籍,或許你會發(fā)現(xiàn)你理解不了并非你的問題,而是翻譯的問題。
  • 上述給出的書籍都是經(jīng)典的書籍,如果某些知識點理解不了,沒有關(guān)系,先跳過去,過段時間重新再讀,你會發(fā)現(xiàn)很多問題自然而然就明白了。學(xué)習(xí)的過程也是一個螺旋上升的過程,經(jīng)典書籍需要反復(fù)閱讀咀嚼,才能真正掌握其精髓。

本文來源于?果果小師弟

本文轉(zhuǎn)載自“???果果小師弟”,如有侵權(quán),請聯(lián)系刪除
原文鏈接:如何成為一個優(yōu)秀的嵌入式BSP工程師?

版權(quán)聲明:本文來源網(wǎng)絡(luò),免費傳達(dá)知識,版權(quán)歸原作者所有。如涉及作品版權(quán)問題,請聯(lián)系我進(jìn)行刪除。

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。