亚洲熟妇av一区二区三区,久久久久久精品观看sss,免费观看四虎精品国产永久,国产成人精品一区二三区熟女,天堂网在线最新版www资源网

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

文章下方附學習資源,自助領取

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

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

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

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

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

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

二、嵌入式工程師

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

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

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

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

無償分享大家一個資料包,差不多150多G。里面學習內容、面經、項目都比較新也比較全!某魚上買估計至少要好幾十。

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

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

嵌入式工程師分類

三、BSP工程師

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

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

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

1. 點亮板子

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

2. 使能板子上所有設備

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

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

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

四、BSP工程師應具備的能力

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

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

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

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

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

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

五、專業(yè)背景

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

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

六、推薦書籍

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

1. 計算機原理

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

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

2. 基本的Linux操作

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

3. C語言基礎

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

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

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

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

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

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

七、閱讀建議

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

本文來源于?果果小師弟

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

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

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