QNX BSP分析

QNX相關(guān)歷史文章:

這篇文章主要分析QNX BSP的大體框架檐蚜,并以R-Car的BSP包示例

1. 介紹

BSP,Board Support Packages摄悯,板級(jí)支持包谴蔑,是嵌入式系統(tǒng)中介于硬件平臺(tái)和操作系統(tǒng)之間的中間層軟件藕咏,主要目的是為了屏蔽底層硬件的多樣性智末,根據(jù)操作系統(tǒng)的要求完成對(duì)硬件的直接操作,向操作系統(tǒng)提供底層硬件信息并最終啟動(dòng)操作系統(tǒng)民宿。

QNX的BSP包粥谬,典型的包括以下幾個(gè)部分:

  • IPL, Initial Program Loader
    最低限度地配置硬件以創(chuàng)建允許啟動(dòng)程序以及微內(nèi)核運(yùn)行的環(huán)境肛根;
  • startup
    它的目的是復(fù)制和解壓縮映像,如有必要漏策,配置硬件派哲,確定系統(tǒng)配置,并啟動(dòng)內(nèi)核掺喻;
  • default buildfile
    指定鏡像中要包含的任何文件和命令芭届、可執(zhí)行文件的啟動(dòng)順序、文件和可執(zhí)行文件的加載選項(xiàng)巢寡、命令行參數(shù)和可執(zhí)行的環(huán)境變量等喉脖;
  • networking support
  • board-specific device drivers,system managers抑月,utilities树叽,etc

QNX BSP包以zip壓縮包的形式提供(soc_vendor-soc-board.zip),有兩種方式來(lái)使用:第一種谦絮,使用unzip來(lái)解壓縮题诵,以命令行的形式使用洁仗;第二種,import到IDE環(huán)境中性锭,在集成開(kāi)發(fā)環(huán)境中使用赠潦。

2. BSP結(jié)構(gòu)

當(dāng)解壓一個(gè)BSP壓縮包后,一個(gè)典型的代碼組織結(jié)構(gòu)如下圖:


  • /src
    該目錄放置所有的源代碼草冈,在該目錄下子目錄有:/hardware, /lib, /utils她奥,其中/hardware目錄中存放了各類(lèi)設(shè)備驅(qū)動(dòng)代碼、startup代碼怎棱。Build BSP時(shí)哩俭,會(huì)將該目錄下所有代碼進(jìn)行編譯。一般在src目錄中會(huì)包含一個(gè)或多個(gè)主構(gòu)建文件拳恋,通常是放在src/hardware/startup/boards/目錄下凡资,當(dāng)make install的時(shí)候,構(gòu)建文件會(huì)拷貝到install/target/boot目錄下谬运,target指的是處理器的類(lèi)型隙赁,比如aarch64。

  • /prebuilt
    該目錄放置了預(yù)構(gòu)建的二進(jìn)制文件及頭文件梆暖,當(dāng)BSP在build時(shí)伞访,會(huì)將/prebuilt目錄中的文件拷貝到/install目錄下,所有處理器特定的二進(jìn)制文件都位于以該處理器類(lèi)型命名的目錄下式廷,/prebuilt的路徑可能如下所示:


  • /install
    該目錄放置了從/prebuilt目錄拷貝過(guò)來(lái)的文件咐扭,此外還有編譯生成的文件,當(dāng)使用mkifs工具來(lái)構(gòu)建QNX鏡像文件系統(tǒng)時(shí)滑废,會(huì)首先使用這個(gè)目錄下的文件;

  • /image
    該目錄存放了最終的引導(dǎo)鏡像袜爪,這個(gè)目錄至少包含構(gòu)建鏡像所需的Makefile文件蠕趁,此外還可以放置其他文件,比如:1)custom buildfiles(for flash, etc.)辛馆;2)EFS buildfiles俺陋;3)IPL build scripts等;

上述講到的幾個(gè)文件夾在每個(gè)BSP的壓縮包中都有昙篙,至于文件夾中涉及到的子目錄及內(nèi)容腊状,則隨著SDP的版本迭代而存在一些變化,總體來(lái)說(shuō)苔可,大同小異缴挖。

比如,在SDP 6.6.0版本中焚辅,各個(gè)子目錄下內(nèi)容如下表所示映屋,其中{BSP_ROOT_DIR}指的是壓縮包解壓后的根目錄苟鸯,{CPU_VARIANT}指的是CPU的架構(gòu),比如在R-Car中使用的是aarch64.


此外棚点,文件名字約定如下早处,其中board_name指的是板子名字


3. 編譯

解壓后BSP zip壓縮包后,進(jìn)入該壓縮包的根目錄瘫析,可以使用make命令來(lái)進(jìn)行編譯:

  • make all
    進(jìn)行所有的操作砌梆,包括install、links贬循,還有編譯鏈接目標(biāo)image么库;
  • make prebuilt
    將/prebuilt目錄下的文件內(nèi)容,拷貝到/install目錄下甘有;
  • make install
    執(zhí)行該命令后诉儒,首先觸發(fā)make prebuilt操作,然后進(jìn)入/src目錄亏掀,再執(zhí)行兩步:1)make hinstall忱反,將/src目錄中的公共頭文件拷貝到/install目錄下;2)make install去把/src目錄中的文件進(jìn)行編譯滤愕,并將編譯后的結(jié)果放置到/install目錄中温算,此外也會(huì)拷貝src/hardware/startup/boards/下的構(gòu)建文件,并重命名為board.build间影,board指的是開(kāi)發(fā)板注竿;
  • make links
    從install/cpu/boot/build/board.build到images/board.build創(chuàng)建符號(hào)鏈接,其中cpu指的是處理器類(lèi)型魂贬,board指開(kāi)發(fā)板巩割;
  • make images
    進(jìn)入images目錄中,并執(zhí)行該路徑中的Makefile文件付燥,根據(jù)make links目標(biāo)期間的構(gòu)建文件生成一個(gè)IFS(Image File System)文件宣谈;
  • 直接執(zhí)行make的話,相當(dāng)于make all键科。

4. 部署

當(dāng)完成編譯后闻丑,可以將生成好的Image部署到開(kāi)發(fā)板中運(yùn)行,有以下幾種方法來(lái)load:


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末勋颖,一起剝皮案震驚了整個(gè)濱河市嗦嗡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌饭玲,老刑警劉巖侥祭,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡卑硫,警方通過(guò)查閱死者的電腦和手機(jī)徒恋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)欢伏,“玉大人入挣,你說(shuō)我怎么就攤上這事∠跖。” “怎么了径筏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)障陶。 經(jīng)常有香客問(wèn)我滋恬,道長(zhǎng),這世上最難降的妖魔是什么抱究? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任恢氯,我火速辦了婚禮,結(jié)果婚禮上鼓寺,老公的妹妹穿的比我還像新娘勋拟。我一直安慰自己,他們只是感情好妈候,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布敢靡。 她就那樣靜靜地躺著,像睡著了一般苦银。 火紅的嫁衣襯著肌膚如雪啸胧。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,274評(píng)論 1 300
  • 那天幔虏,我揣著相機(jī)與錄音纺念,去河邊找鬼。 笑死所计,一個(gè)胖子當(dāng)著我的面吹牛柠辞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播主胧,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼习勤!你這毒婦竟也來(lái)了踪栋?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤图毕,失蹤者是張志新(化名)和其女友劉穎夷都,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體予颤,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡囤官,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年冬阳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片党饮。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡肝陪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出刑顺,到底是詐尸還是另有隱情氯窍,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布蹲堂,位于F島的核電站狼讨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏柒竞。R本人自食惡果不足惜政供,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望朽基。 院中可真熱鬧布隔,春花似錦、人聲如沸踩晶。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)渡蜻。三九已至术吝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間茸苇,已是汗流浹背排苍。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留学密,地道東北人淘衙。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像腻暮,于是被迫代替她去往敵國(guó)和親彤守。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容