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

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

3天內不再提示

開放源代碼ROM監(jiān)控器RedBoot的功能特點及調試技巧分析

牽手一起夢 ? 來源:電子工程網 ? 作者:佚名 ? 2020-10-04 13:37 ? 次閱讀

開放源代碼ROM監(jiān)控器RedBoot的功能特點以及配置方法,它可以提供一種下載調試環(huán)境,且體積非常小巧。RedBoot也稱作紅帽(Red Hat)嵌入式調試引導程序,是一種用于嵌入式系統(tǒng)的獨立開放源代碼引導/裝載器,任何人都可以從互聯(lián)網上下載具有紅帽eCos公共許可證的RedBoot源代碼。雖然RedBoot使用的是源于eCos實時操作系統(tǒng)RTOS)的軟件模塊,并且常用于嵌入式Linux系統(tǒng),但它與這兩種操作系統(tǒng)完全無關,RedBoot能夠用于任何操作系統(tǒng)或RTOS,甚至沒有操作系統(tǒng)也行。

RedBoot自帶一個GDB“存根進程(stub)”,可提供目標端通信軟件,允許用戶通過標準GDB協(xié)議命令進行遠端調試,這樣設計師就能利用RedBoot與運行GNU調試器的主機通過串口或網絡連接起來調試設計的嵌入式軟件。RedBoot支持多種處理器架構和硬件平臺,包括ARM、日立SHx、MIPS、PowerPC、SPARC以及x86等。

結構配置

RedBoot可以在多種不同配置下運行,但一般都是從目標平臺的閃存引導區(qū)或引導ROM啟動。RedBoot設計為系統(tǒng)上電啟動,能提供完整的處理器初始化和設備設置,使設計人員能夠迅速開始與系統(tǒng)通信。

RedBoot可設為用串口或以太網口(通過Telnet)進行通信,當從某個端口收到第一條命令后,那么隨后所有的RedBoot通信都將從那個端口進行,直到系統(tǒng)重新啟動。

利用以太網口與RedBoot通信時,一定要清楚目標平臺是如何得到其IP地址的。設置目標平臺IP地址有兩種方法,分別是動態(tài)法和靜態(tài)法。在靜態(tài)方式下,目標平臺的IP地址在編譯RedBoot映像前設置(后文還會詳細討論這方面內容),也可通過串口命令設置。

RedBoot還可以采用BOOTP協(xié)議動態(tài)分配IP地址,BOOTP協(xié)議是目前許多網絡廣泛支持的動態(tài)主機配置協(xié)議(DHCP)的一個子集,與靜態(tài)法一樣,可在編譯時或通過串口命令,使目標平臺使用動態(tài)網絡配置。當然,為了取得IP地址,目標設備必須連到能夠訪問BOOTP或DHCP服務器的網絡上。

當裝載的應用軟件本身需要IP地址時,切記RedBoot映像不能使用動態(tài)IP地址,否則會在以太網端口的IP地址配置中引起沖突,從而造成與RedBoot或應用軟件通信錯誤。在這種情況下,最好給不在動態(tài)網絡配置協(xié)議范圍內的RedBoot設置靜態(tài)IP地址。

RedBoot還能根據與BOOTP響應一起收到的配置信息,用一般文件傳輸協(xié)議(TFTP)自動下載應用軟件代碼,此時在主機上同樣需要TFTP服務器以提供軟件映像訪問。

命令行語句

RedBoot通過命令行接口(CLI)輸入命令,在最小模式下,RedBoot命令行接口建立在目標平臺硬件串口上,當有多個串口時,RedBoot可以用其中任何一個建立通信。RedBoot還能利用Telnet協(xié)議在以太網端口建立CLI(默認情況下RedBoot將端口9000用于Telnet,不過可以用下面講到的fconfig命令改變端口號)。

CLI輸出的RedBoot初始化信息如圖1所示,這些信息提供了有關RedBoot映像的信息,包括映像建立日期、目標硬件平臺以及可供RedBoot使用的資源等。當顯示出提示符:RedBoot> 后,就表明CLI已經準備好,用戶可以開始輸入命令。

開放源代碼ROM監(jiān)控器RedBoot的功能特點及調試技巧分析

圖1CLI輸出的RedBoot初始化信息

RedBoot命令的基本格式是:

命令 [-選項1] [-選項2 參數(shù)值] 操作符

命令格式中的選項1和選項2代表可以加到某些命令中的可選參數(shù),用于指示一些特定動作或附加信息,在選項2中還包括一個數(shù)值。操作符定義了某些特殊命令所需的附加信息。命令也可以縮寫成最短的無歧義字符串,如dump、dum、du和d都是dump命令的有效寫法。

RedBoot用load命令下載應用軟件映像,映像可以用TFTP協(xié)議、X/Y調制解調器協(xié)議或直接從目標硬件下載。映像成功下載到目標平臺后,就可以用go命令運行軟件。

在RedBoot提示符下可鍵入help命令顯示所有可用命令列表,并不是所有命令都能用于各種RedBoot映像,命令是否可用取決于目標平臺的資源狀況,例如有些命令就不適合用于沒有閃存的硬件平臺。

首字符是“$”的命令代表執(zhí)行后會在RedBoot映像中調用GDB stub,一旦進入GDB模式,RedBoot就會一直保持這種模式直到系統(tǒng)重新啟動。

有幾條RedBoot命令需要在這里重點提一下。首先是閃存映像系統(tǒng)(fis)命令,當硬件平臺上配有閃存時,RedBoot提供fis命令作為基本文件系統(tǒng),這些命令主要用來管理文件系統(tǒng)映像。

另一個有用的命令是基于閃存的配置和控制命令fconfig。圖2給出了用fconfig命令查詢的輸出信息,從中可以看出,配置命令可以設置RedBoot啟動順序。啟動配置包括是否在初始化期間運行引導腳本、是否用BOOTP協(xié)議獲取IP地址以及是否用GDB telnet端口進行調試等。

圖2 用fconfig命令查詢

RedBoot也支持引導腳本,因此允許用戶在上電過程完成后執(zhí)行所需命令。在產品測試階段采用RedBoot裝載應用軟件映像時引導腳本很有好處,用戶還可以設置超時參數(shù),在引導腳本執(zhí)行前按下Ctrl+C中斷執(zhí)行。引導腳本可用fconfig命令進行設置。

構建RedBoot

能夠自己重新構建RedBoot對用戶來說非常重要,因為隨時都可能需要進行代碼更新和缺陷更正;如果用戶希望定制RedBoot,那么也需要重建RedBoot,比如增加自己的命令或與它的接口。

重建RedBoot映像的第一步是建立主機開發(fā)環(huán)境,建立RedBoot映像的工具要能運行在Windows或Linux主機平臺上。主機開發(fā)工具包括GNU二進制應用程序(常稱為binutils)、C/C++編譯器和調試器。安裝完GNU工具后,接著就是確定配置工具,用戶可以采用圖形化配置工具或命令行工具配置建立RedBoot映像。本文重點講述圖形化配置工具。

配置工具允許進行源代碼級設置,從而確保RedBoot映像是專為各個用戶應用而開發(fā)的,整個源代碼知識庫和配置工具用元件定義語言(CDL)描述庫中的元件及建立軟件映像規(guī)則。配置工具利用先前設立的GNU工具建立適合特定處理器結構的RedBoot映像,有關配置工具的更多信息可以從網上得到,也可以從幫助菜單中獲得。

下面的例子使用的是configtool-2.08-setup.exe,它是目前最新版配置工具,在安裝之前最好閱讀一下readme.txt文件,一起下載的changes.txt文件則列出了不同版本的變動情況。接下來就是下載RedBoot源代碼,RedBoot源代碼包含在匿名CVS庫中,可以用免費的客戶軟件訪問。連上庫以后,最好將包括eCos文件在內的所有源代碼都下載,因為RedBoot會使用設備驅動器之類的eCos源文件。在確定建立自己RedBoot映像所需所有文件后,可以刪掉其它不必要文件。RedBoot軟件結構主要軟件模塊方框圖如圖3所示。

圖3 主要軟件模塊方框圖

RedBoot軟件結構采用分層方法,這樣可以裝入新的功能和軟件組件,RedBoot的基礎是eCos硬件抽象層(HAL)和設備驅動器。

讓我們看一下RedBoot的源代碼目錄結構。從匿名CVS庫中下載的源代碼文件都放在packages子目錄下,這個主目錄下面是redboot子目錄,里面存放全部RedBoot文件。由于所有文件都是從匿名CVS庫下載的,因此都位于current子目錄下。在redboot子目錄下有個名為ChangeLog的文件,它記錄了RedBoot源文件的所有修改情況。

配置工具能夠非常方便地用圖形化方式配置RedBoot映像建立所必需的組件,通過選中或不選中某個特定組件選擇框,可以激活或去除相應的配置選項,設置值可在窗口右邊的方格中加入。

創(chuàng)建新RedBoot配置有兩種方法。第一種方法是在配置工具的Build菜單下選擇模板,這時會彈出模板對話框,然后從中選擇硬件平臺和模板數(shù)據包,這里我們的模板數(shù)據包選擇redboot。這種方法為建立默認配置RedBoot映像提供了一個基本方式,選擇菜單Build->Packages,在彈出的Packages對話框中可以添加或刪除其它數(shù)據包。

第二種創(chuàng)建RedBoot新配置的方法是導入eCos最小配置文件(.ecm)。RedBoot支持的每個硬件平臺都包含這樣的最小配置文件,這些配置文件一般位于硬件抽象層目錄hal下對應于每個結構的misc子目錄中。

最小配置文件包含特定硬件平臺基本配置信息,將.ecm文件作為出發(fā)點,我們就有了作為基礎的硬件平臺工作配置文件,可改變配置選項支持RedBoot映像所需要的任何修改。

最小配置文件同樣使用CDL。圖4是一個eCos最小配置文件實例,源自redboot_ROM.ecm文件,適合那些采用PowerPC的Motorola MBX開發(fā)板。從圖中可以看到,.ecm文件列出了cdl_configuration命令的數(shù)據包清單,需要包含在RedBoot配置中。cdl_option命令用來為特定選項設置選項值。

圖4 eCos最小配置文件實例

大多數(shù)支持平臺都包含一個可以導入的ROM和RAM RedBoot.ecm文件作為配置起點,ROM和RAM表明RedBoot映像在目標硬件上的存放位置。一般情況下,RAM配置在最初調試硬件時使用,而ROM配置則在映像調試完成后準備存放進閃存時使用。RAM映像還可用于更新駐留閃存的RedBoot映像。i386 PC目標平臺還包含了一個RedBoot FLOPPY配置文件,可供軟盤啟動RedBoot時使用。

為了導入最小配置文件,需要選擇配置工具菜單中的File->Import命令,然后瀏覽相應的.ecm文件并選中,配置工具利用.ecm文件裝載相應數(shù)據包并設置對應選項。如果發(fā)生因配置選項設置引起的沖突,配置工具會顯示一個沖突解決對話框,選擇繼續(xù)按鈕就可解決該沖突。

由于RedBoot還依賴其它軟件模塊如HAL,因此并不是所有的配置選項都包含在RedBoot ROM監(jiān)控數(shù)據包內。在eCos HAL包中就有底層硬件配置選項,其它可能需要配置的數(shù)據包還有設備驅動器,例如在包括網絡支持的平臺上,以太網設備驅動器選項就包含在通用以太網支持包內。

如果想要網絡通信,還需要建立RedBoot網絡配置選項,這樣可以設定目標硬件的默認IP地址,或BOOTP初始化期間使用的配置。

完成RedBoot配置后,最好把最小配置文件保存下來,這一步可以通過選擇File->Export并輸入文件名完成。

創(chuàng)建RedBoot映像

接下來需要保存當前的配置。為了將當前配置保存為eCos當前配置文件(.ecc),需要選擇File菜單中的Save As命令,不妨把文件存為redboot_rom.ecc。這步操作將生成正在創(chuàng)建的RedBoot映像的工作目錄結構,所有目錄都將以剛才創(chuàng)建的.ecc文件名開頭。在本例中,目錄名以redboot開始。

正確設置好配置以后,下面就可以開始創(chuàng)建RedBoot映像了。為了執(zhí)行創(chuàng)建過程,需要采用Build->Library命令,此時配置工具輸出窗口將顯示相關創(chuàng)建信息。創(chuàng)建過程完成后,生成的RedBoot映像存放在redboot_install\bin子目錄中,本例中新的RedBoot映像取名為redboot_rom.bin。

更新目標平臺

將RedBoot映像裝進非易失性存儲器根據目標不同有很多方法,一般情況下,映像必須用軟件編進閃存或用設備編程器編入ROM。

RedBoot映像裝入閃存后,就可以直接執(zhí)行缺陷修正或增加功能等映像更新任務,此時需要已有的閃存RedBoot映像和新建立的從RAM運行的RedBoot映像的支持。

首先從閃存啟動目標平臺并運行舊的RedBoot映像,由于這里采用了閃存映像系統(tǒng)命令將新的RedBoot映像編入閃存,因此需要執(zhí)行 :RedBoot> fis init ,命令初始化fis系統(tǒng)。該命令用于初始化閃存,使新的映像能用fis命令下載。映像系統(tǒng)初始化完成后,可以用 :RedBoot> fis list ,命令查看閃存中的映像。此時會得到類似于圖5的輸出,根據實際使用的硬件平臺而顯示不同的地址、長度和入口地點,同時還能看到RedBoot映像名,該映像名代表的是目前正在閃存中運行的RedBoot映像。

圖5 閃存輸出圖

接著用上述同樣的步驟創(chuàng)建一個RedBoot RAM映像redboot_ram.bin。為了建立從RAM運行的映像,需要確保啟動類型(CYG_HAL_STARTUP)配置選項設為RAM。因為硬件平臺包括ROM和RAM最小配置文件,因此導入并建立RAM配置并不困難,重要的是要記住將RAM和ROM映像存放到不同的工作目錄中。

下一步用駐留在閃存中的原有RedBoot映像將新的redboot_ram.bin載入到RAM中,這步操作的命令是:

RedBoot> load redboot_ram.bin

載入命令的執(zhí)行有好幾種方法,如把映像從主機發(fā)送到目標硬件的TFTP,具體哪種方法取決于用戶實際可用資源情況,fis load命令還能用來通過閃存映像存儲系統(tǒng)裝載和存儲redboot_ram.bin映像。

我們用go命令執(zhí)行剛載入RAM中的RedBoot映像。RedBoot映像從RAM執(zhí)行后會產生新的類似于圖1的初始化消息,要注意這時是從RAM執(zhí)行RedBoot映像的。

接著用與上面相同的步驟裝載新創(chuàng)建的ROM RedBoot映像,裝載redboot_rom.bin映像的命令是:

RedBoot> load redboot_rom.bin -b

命令行中的ram_addr指RAM中的位置(不同的平臺有不同的值),這里臨時存放著即將編入閃存的redboot_rom.bin映像。

現(xiàn)在就可以用fis命令將新映像寫進閃存了。某些平臺可以支持閃存的鎖定和解鎖,如果用戶能夠解鎖閃存,那么用戶需要輸入的第一條fis命令是:

RedBoot> fis unlock -l

這里flash_addr是需解鎖的閃存地址,本例中這項參數(shù)對應的是fis list命令中RedBoot映像名稱的閃存地址,從fis list命令中還能得到長度。如果平臺不支持閃存鎖定,那么用戶可以跳過這一步。

隨后可以用命令:RedBoot> fis create RedBoot -f -b -l -s ,將RAM中的RedBoot新映像寫入閃存中。其中flash_addr是RedBoot新映像寫入閃存的位置,如fis list命令所示,ram_addr是redboot_ROM.bin文件載入RAM存儲器的位置。flash_len同樣出現(xiàn)在fis list命令中,代表RedBoot閃存映像的長度,data_len則是將被寫進閃存的redboot_rom.bin文件的長度。

在繼續(xù)下面的操作之前,fis create命令會詢問用戶是否愿意替換現(xiàn)有名為RedBoot的映像,如果回答“是”則將把新的映像裝入閃存。下一步,如果硬件平臺允許鎖定閃存,那么就可以用:RedBoot> fis lock -f -l ,命令完成閃存鎖定。上面討論的針對所支持平臺實際存儲位置在RedBoot文檔中有詳細說明。最后重新啟動硬件就可以啟用剛才寫進閃存的RedBoot新映像了。

發(fā)展前景

目前新版RedBoot正計劃與eCos v.2同時推出,新版RedBoot增強功能包括DHCP客戶機、嵌入式web服務器、USB調試和IDE驅動支持。

即使沒有這些功能改善,RedBoot ROM監(jiān)控器也能提供一種低成本而且容易使用的硬件調試與測試方法。由于RedBoot是開放式源代碼,因此用戶能夠定制RedBoot以滿足項目開發(fā)和測試階段遇到的所有特殊需求。RedBoot對GDB的支持甚至可以讓用戶不再需要昂貴的硬件調試工具。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 操作系統(tǒng)

    關注

    37

    文章

    6545

    瀏覽量

    122739
  • 代碼
    +關注

    關注

    30

    文章

    4671

    瀏覽量

    67765
  • 監(jiān)控器

    關注

    1

    文章

    254

    瀏覽量

    26364
收藏 人收藏

    評論

    相關推薦

    開放源代碼獲得授權許可

    也多種多樣,最近的方式是開放源代碼?! ∮捎谠O計者在開發(fā)軟微處理的軟件代碼時投入了大量的時間,所以理解相關許可模式的含義非常重要?!   ?/div>
    發(fā)表于 06-25 06:25

    開放源代碼獲得授權許可

    也多種多樣,最近的方式是開放源代碼。 由于設計者在開發(fā)軟微處理的軟件代碼時投入了大量的時間,所以理解相關許可模式的含義非常重要。
    發(fā)表于 07-12 07:13

    采用ROM監(jiān)控器調試技巧是什么?

    采用ROM監(jiān)控器調試技巧是什么RedBoot命令的基本格式是什么如何構建RedBoot?
    發(fā)表于 04-27 06:18

    開放源代碼數(shù)據庫系統(tǒng)

    開放源代碼數(shù)據庫系統(tǒng) 摘要: 開放源代碼軟件的流行推動了計算機軟件的發(fā)展。本文從幾個方面分析并比較了四種開放源代碼的數(shù)據庫系統(tǒng)。
    發(fā)表于 02-09 15:34 ?5次下載

    開放源代碼軟件的法律探討

    開放源代碼軟件的法律探討 另外應根據 產品質量法》第21條第2款“產品質量認證機構應當依照國家規(guī)定對準許使用認證標志的產品進行認證后的跟蹤檢查:對
    發(fā)表于 02-09 16:07 ?3次下載

    LINUX開放源代碼之應用

    LINUX開放源代碼之應用 服務端的優(yōu)勢♦ LINUX是一個真正意義上的多用戶、多任務系統(tǒng):一個普通的BBS站使用Linux系統(tǒng)的普通微機,同時上線人數(shù)都能達到
    發(fā)表于 02-10 13:43 ?21次下載

    基于開放源代碼的硬件設計方法研究

    基于開放源代碼的硬件設計方法研究 摘要:可重用性是當今超大規(guī)模集成電路設計的必要元素。與傳統(tǒng)的封閉源代碼付費IP 相比,開源硬件以共享設計文檔和IP
    發(fā)表于 02-10 13:50 ?9次下載

    2008開放源代碼技術日-MySQL Replication

    2008開放源代碼
    發(fā)表于 02-10 14:44 ?2次下載

    開放源代碼/開放標準與創(chuàng)新

    開放源代碼/開放標準
    發(fā)表于 02-10 15:08 ?3次下載

    開放源代碼的全文檢索引擎 Lucene

    開放源代碼的全文檢索引擎 Lucene――介紹、系統(tǒng)結構與源碼實現(xiàn)分析 第一節(jié) 全文檢索系統(tǒng)與Lucene簡介 一、           &
    發(fā)表于 02-10 15:09 ?5次下載

    Novell加入開放源代碼計劃 開放Linux產品

        8月5日國際報道 繼對手Red Hat 之后,Novell也計劃在下周宣布推動一個開放源代碼計劃OpenSuse,將Linux 產品開放給外面的程序開發(fā)人員。   &nbs
    發(fā)表于 03-13 13:09 ?549次閱讀

    開放源代碼”是什么?

    開放源代碼”是什么?您購買或下載的大多數(shù)軟件只提供已編譯的可運行版本?!耙丫幾g”意味著開發(fā)人員創(chuàng)建的實際程序代碼(稱為源代碼)已經由一個稱為編譯的特
    發(fā)表于 07-29 09:43 ?2284次閱讀

    Linux開放源代碼的操作系統(tǒng)

    作為一個開放源代碼的操作系統(tǒng),Linux附帶的源代碼庫使得廣大愛好者有了一個廣泛學習、深入鉆研的機會,特別是Linux內核的組織極為復雜,同時,又不能像windows平臺的程序一樣,可
    發(fā)表于 04-20 21:00 ?112次下載

    開放源代碼是什么意思?

    開放源代碼其實就是當程序員把軟件寫好后,不僅僅把軟件公開給別人使用還把自己寫程序時的源代碼公開給別人學習、甚至是修改達到不斷的升級象最著名的開源軟件就是Linux和Unix這兩個操作系統(tǒng)。
    發(fā)表于 11-16 16:10 ?2.6w次閱讀

    Google計劃使用Android開放源代碼項目

    常,新的表情符號會隨主要系統(tǒng)更新一起提供。用戶對其沒有太多控制。不過,Google計劃使用Android開放源代碼項目(ASOP)Gerrit將表情符號的分布更改為操作系統(tǒng)。
    的頭像 發(fā)表于 11-27 16:11 ?1794次閱讀