此BSP非彼BSP

之前在寫(xiě)X86 Linux的時(shí)候提到了BSP基公,它的全稱(chēng)是Boot Strap Processor,是負(fù)責(zé)系統(tǒng)引導(dǎo)啟動(dòng)的處理器宋欺,其余的處理器叫做AP(application processor)轰豆。

其實(shí),另一個(gè)使用BSP最多的是嵌入式系統(tǒng)齿诞,特別是商業(yè)化的嵌入式實(shí)時(shí)操作系統(tǒng)RTOS環(huán)境下酸休。當(dāng)然部分特定的Linux也借用了這個(gè)名字。

在嵌入式系統(tǒng)里面BSP代表board support package祷杈,板級(jí)支持包斑司。雖然常說(shuō)“包治百病”,但是這里的“包”但汞,不一定是真正的package宿刮,而更可能是廠(chǎng)家提供給特定嵌入式平臺(tái)的一個(gè)文件集合,里面包含了針對(duì)特定平臺(tái)和RTOS接口的軟件代碼私蕾。

BSP的產(chǎn)生有著架構(gòu)和商業(yè)上的雙重需要僵缺。

在架構(gòu)上,RTOS把與平臺(tái)無(wú)關(guān)的代碼抽象出來(lái)作為公用的代碼部分踩叭,例如RTOS的內(nèi)核磕潮,網(wǎng)絡(luò)協(xié)議棧等等。而把與具體平臺(tái)相關(guān)的部分交給BSP及其接口來(lái)完成容贝。針對(duì)不同的硬件平臺(tái)自脯,公用部分代碼無(wú)須修改,只要做出不同的BSP就可以了斤富,否則商業(yè)版的RTOS沒(méi)法開(kāi)展業(yè)務(wù)膏潮。

在商業(yè)上,很多RTOS都是閉源的满力,嵌入式系統(tǒng)的硬件平臺(tái)又是數(shù)不勝數(shù)千差萬(wàn)別的戏罢,為了支持這些硬件,廠(chǎng)家只需要“提供”(需要花錢(qián)購(gòu)買(mǎi)的)特定硬件的BSP就可以了脚囊,而B(niǎo)SP是可以提供源代碼的龟糕。

這就好比一臺(tái)汽車(chē),為了適應(yīng)不同的路況悔耘,用戶(hù)可以采購(gòu)不同的輪胎讲岁,只要符合車(chē)輛對(duì)輪胎的規(guī)格要求(BSP接口)就可以了。

BSP主要的作用就是為復(fù)雜多樣的、定制化的嵌入式系統(tǒng)提供一個(gè)支持其硬件的軟件層次缓艳。RTOS的內(nèi)核往往是系統(tǒng)無(wú)關(guān)的校摩,那么針對(duì)特定的硬件,例如總線(xiàn)頻率阶淘,晶振頻率衙吩,串口,SPI ROM, I2C總線(xiàn)溪窒,MAC/PHY坤塞,LCD 控制器,PIO等等澈蚌,操作系統(tǒng)需要定義一套標(biāo)準(zhǔn)接口來(lái)操作這些硬件資源摹芙。而這套接口向下就是BSP的功能。

該軟件部分的首要功能是完成系統(tǒng)的硬件初始化宛瞄,例如浮禾,時(shí)鐘校準(zhǔn),POST份汗,DRAM初始化等等盈电。

另一個(gè)典型的初始化例子是,某ARM的SoC系統(tǒng)中杯活,ARM核的主頻是400MHz挣轨,晶振頻率32.768KHz。其中有2個(gè)UART控制器轩猩,UART1一個(gè)作為外接的串口卷扮,配置為115200 8n1。這個(gè)時(shí)候就需要在BSP當(dāng)中合理設(shè)置UART1控制器均践,使其工作在預(yù)期的模式下晤锹。如果同樣的SoC,但使用的晶振硬件頻率變?yōu)?0.003KHz彤委,那么原來(lái)的BSP代碼就可能導(dǎo)致串口輸出亂碼鞭铆,因?yàn)閁ART1的baud分頻數(shù)在新的晶振頻率下不能得到115200的baud rate。

可見(jiàn)焦影,BSP主要針對(duì)的就是硬件平臺(tái)的特定性规个。

BSP還提供接口使RTOS知道當(dāng)前系統(tǒng)的內(nèi)存資源位置和大小铆农,還包括其他設(shè)備的驅(qū)動(dòng)程序,例如I2C,SPI舒憾,Ethernet等等控轿。例如叶雹,ethtool的底層操作最后都是落在了BSP的驅(qū)動(dòng)代碼里面解阅。

由此可見(jiàn)柄瑰,嵌入式系統(tǒng)中的BSP既類(lèi)似于PC/服務(wù)器里面的BIOS/EFI,完成系統(tǒng)的上電引導(dǎo)初始化工作剪况。同時(shí)BSP又相當(dāng)于OS內(nèi)核驅(qū)動(dòng)程序的底層部分教沾,針對(duì)特定硬件的驅(qū)動(dòng)部分。

BSP工程師的要求是“系統(tǒng)”译断,不光懂CPU授翻,還要懂外設(shè),還要懂軟件孙咪。

BSP是學(xué)習(xí)計(jì)算系統(tǒng)知識(shí)的起點(diǎn)堪唐,通過(guò)它可以了解完整計(jì)算機(jī)系統(tǒng)的主要方面,例如:C語(yǔ)言的堆棧初始化该贾,全局變量,靜態(tài)變量的差異和設(shè)置捌臊,main函數(shù)是如何啟動(dòng)的杨蛋,等等。這里是一個(gè)寶庫(kù)理澎,只要肯挖逞力,總能挖出很多驚喜出來(lái)。

我曾經(jīng)利用BSP里面學(xué)習(xí)到的知識(shí)去面試候選人糠爬,很多候選人對(duì)于main函數(shù)是如何啟動(dòng)的不甚了了寇荧,確實(shí)很遺憾。

嵌入式的BSP先介紹到這里执隧,有空講講嵌入式系統(tǒng)和其中架構(gòu)設(shè)計(jì)揩抡。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市镀琉,隨后出現(xiàn)的幾起案子峦嗤,更是在濱河造成了極大的恐慌,老刑警劉巖屋摔,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烁设,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡钓试,警方通過(guò)查閱死者的電腦和手機(jī)装黑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)弓熏,“玉大人恋谭,你說(shuō)我怎么就攤上這事⊥炀希” “怎么了箕别?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵铜幽,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我串稀,道長(zhǎng)除抛,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任母截,我火速辦了婚禮到忽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘清寇。我一直安慰自己喘漏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布华烟。 她就那樣靜靜地躺著翩迈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪盔夜。 梳的紋絲不亂的頭發(fā)上负饲,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音喂链,去河邊找鬼返十。 笑死,一個(gè)胖子當(dāng)著我的面吹牛椭微,可吹牛的內(nèi)容都是我干的洞坑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蝇率,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼迟杂!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起本慕,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤逢慌,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后间狂,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體攻泼,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年鉴象,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了忙菠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡纺弊,死狀恐怖牛欢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情淆游,我是刑警寧澤傍睹,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布隔盛,位于F島的核電站,受9級(jí)特大地震影響拾稳,放射性物質(zhì)發(fā)生泄漏吮炕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一访得、第九天 我趴在偏房一處隱蔽的房頂上張望龙亲。 院中可真熱鬧,春花似錦悍抑、人聲如沸鳄炉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拂盯。三九已至,卻和暖如春记靡,著一層夾襖步出監(jiān)牢的瞬間谈竿,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工簸呈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留榕订,地道東北人店茶。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓蜕便,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親贩幻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子轿腺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354