【小梅哥SOPC學習筆記】sof與NIOS II的elf韌體合并jic得到檔案

來源:互聯網
上載者:User

標籤:src   source   tag   load   內容   comm   float   選中   elf   

sof與NIOS II的elf韌體合并jic得到檔案 7.1 為什麼需要將Sof與elf合并得到jic檔案

我們在學習和調試NIOS II工程的時候,一般都是先使用Quartus II軟體中提供的Quartus Programmer來燒寫FPGA設定檔(SOF),然後NIOS II EDS中提供的Flash Programmer工具來進行燒寫NIOS II的。這對於開發人員來說,並沒有什麼不便,反而因為這種方式的靈活,為開發帶了了很大的便利。然而,當我們的產品已經設計完成並量產的時候,就需要將韌體燒寫到產品中。生產線上進行燒錄時,總希望能夠用最簡單的方式實現。試想,如果生產線上在進行燒寫時,還需要幾個工具換來換去,等待很久,效率自然就下去了。因此這種Quartus Programmer+Flash Programmer的方式並不適合生產。

小梅哥在最近的工作中也遇到了這樣的問題。我們新設計的一批開發板,在工廠生產完畢後,都要進行出廠測試。然而SMT廠家卻並不熟悉我們的這種Quartus Programmer+Flash Programmer燒寫方式。再說了,要使用這種方式還得安裝Quartus Programmer和NIOS II EDS軟體。廠家表示使用這種方式對他們來說有一定難度,而且效率也不高。所以我就根據Altera 官方網站上的一個文章,進行了轉換,將SOF檔案和NIOS II的elf韌體合并並產生了一個jic檔案,這樣,廠家就只需要使用Quartus Programmer來燒寫這個jic檔案就能實現同時燒寫FPGA設定檔和NIOS II韌體的功能了,簡化步驟,節省時間。

從SOF檔案和ELF檔案得到JIC檔案的原帖地址如下:

https://www.altera.com.cn/support/support-resources/knowledge-base/solutions/rd10132010_126.html

7.2 本章樣本介紹

因為有經驗不足的朋友反映在看了這個教程後還是不知道怎麼操作,總是不成功,因此這裡小梅哥使用我們芯航線FPGA的開發板,一步一步示範這個實現過程,將整個過程具體化。

先說明下我這個設計工程的結構:

 

 

EPCS16用來儲存FPGA設定檔和NIOS的韌體,本例中最終轉換得到的JIC檔案也是燒寫到該器件中。

512K位元組SRAM:作為NIOS II運存或者4.3寸TFT顯存,這裡作為TFT顯存。(PS:使用SRAM作為運存,相較於使用SDRAM作為運存,NIOS II的效能會有較大的提升。)

128Mbit SDRAM作為NIOS II運存或者4.3寸TFT顯存,這裡作為NIOS II運存。以運行較為複雜的程式或者GUI。

4.3寸TFT:用來顯示文字/圖片等內容。

XPT2046觸摸控制器:使用SPI介面,用來得到觸控螢幕資訊,實現人機互動

CH340 USB2TTL將UART協議與USB協議進行互相轉換。以實現調試的功能。

4bit LED指示程式運行狀態。

2X輕觸按鍵:輸入控制資訊

介紹完了這個系統,接下來就可以介紹整個轉換過程了:

7.3 詳細轉換步驟 7.3.1 sof2flash:

從一個.sof 檔案產生一個flash檔案:

sof2flash --input=<hwimage>.sof --output=hwimage.flash --epcs –verbose

首先我們開啟我們的NIOS II軟體工程和對應板級支援包,這裡名為tft_touch和tft_touch_bsp

 

 

然後選中tft_touch,單擊右鍵選擇Nios II -> Nios II Command Shell

 

 

我們的Quartus II生產的sof檔案名稱為” TFT_SRAM.sof”,這個時候,如果我們直接輸入

sof2flash --input= TFT_SRAM.sof --output=hwimage.flash --epcs –verbose

會提示找不到input file也就是找不到TFT_SRAM.sof檔案。

 

 

這是因為該命令是在目前的目錄下尋找TFT_SRAM.sof檔案,而我們的TFT_SRAM.sof檔案在E:\easy_sopc\TFT_SRAM\prj\output_files目錄下,因此當然無法找到該檔案了。解決這個問題的方法有兩種。

第一種,推薦方案。

因為很多不熟悉命令列的朋友在操作時速度慢而且容易出錯,因此這裡提供一種比較熟悉的方式。首先在windows中,將TFT_SRAM.sof檔案從output_files檔案夾中拷貝到tft_touch檔案夾中:

 

 

然後回到命令列視窗再次執行

sof2flash --input= TFT_SRAM.sof --output=hwimage.flash --epcs –verbose命令

(提示:使用鍵盤上的向上方向鍵,可以快速切換到之前使用過的命令,這裡在切換目錄後,連按兩次方向上鍵就應該能找到之前輸入的sof2flash命令。)產生過程大約花費10秒鐘。產生完成後的如下所示:

 

 

然後我們輸入ls命令就能看到,確實產生了這樣一個名為hwimage.flash的檔案:

 

 

第二種方案:首先在shell中使用cd命令直接將目錄切換到sof檔案所在目錄,也就是E:\easy_sopc\TFT_SRAM\prj\output_files。相應命令為(注意斜線方向):

cd e:/easy_sopc/TFT_SRAM/prj/output_files

 

 

然後再次執行sof2flash命令即可實現。產生完成後的如下所示:

 

 

然後我們輸入ls命令就能看到,確實產生了這樣一個名為hwimage.flash的檔案:

 

 

一般推薦大家使用第一種方式,當然命令列高手除外。

7.3.2 elf2flash:

從一個,elf 產生一個flash檔案:

elf2flash --input=<elf file>.elf --output=swimage.flash --epcs --after=hwimage.flash --verbose

因為推薦大家使用第一種方式操作,因此這裡就按照第一種方式接著講,相信有能力用命令列方式切換目錄的朋友,也不會對其他動作存在問題。

這裡我們就只需要直接輸入elf2flash命令即可了,命令詳細如下:

elf2flash --input=tft_touch.elf --output=swimage.flash --epcs --after=hwimage.flash –verbose

從命令中可以看到,第一步產生的hwimage.flash檔案是作為了參數的一部分的,所以這裡必須保證hwimage.flash在目前的目錄下。(第一步中使用推薦的方式,則能夠自動保證這一點)。命令執行結果如下:

 

 

然後我們輸入ls命令,可以看到,在當前檔案夾下確實產生了一個名為swimage.flash的檔案:

 

 

7.3.3 flash2hex:

轉換.flash檔案到.hex檔案:直接輸入以下命令(注意:altera官網中原帖這個地方命令有誤,前後對應不上,原帖為nios2-e…… mysw.flash mysw.hex,應該講mysw改為swimage):

nios2-elf-objcopy --input-target srec --output-target ihex swimage.flash swimage.hex

這個命令瞬間執行完成,我們ls下,就能看到當前檔案夾下已經產生了一個swimage.hex的檔案:

 

 

7.3.4 Convert Programming Files

在Quartus? II軟體中,open File > Convert Programming Files > Set the programming file as JTAG Indirect Configuration File (.jic).

 

 

7.3.5 選擇EPCS

在配置下拉式功能表中選擇合適大小的EPCS器件(見10步圖)

7.3.6 命名jic

命名你的輸出.jic 檔案(見10步圖)

7.3.7 Add Device

點擊Flash Loader的下面,在右邊選擇Add Device (見10步圖)

7.3.8 選擇FPGA器件

從列表中選擇你的FPGA器件(見10步圖)

7.3.9 Add SOF

點擊SOF Data,選擇Add File,選擇加.sof 檔案(見10步圖)

7.3.10 Add Hex data

點擊Add Hex data,選擇Relative addressing,選擇上面產生的.hex 檔案

 

 

7.3.11 Generate

然後點擊Generate產生。產生完成後檢查產生的 .map 檔案(使用記事本開啟)有Page_0在起始地址0x0,.hex檔案在Page_0結束位址後的起始地址1

 

 

7.3.12 燒寫

現在在Quartus II Programmer中,選擇Add File,選擇加.jic 檔案。檢查Program框,下一步.jic 檔案,接著按Start即可。

7.3.13 測試效果

最後上一張測試圖,女神鎮樓(話說放這樣一張圖給客戶,客戶是不是會覺得特別開心呢):

 

 

如有更多問題,歡迎加入芯航線 FPGA 支援人員群交流學習:一群 472607506(已滿)  二群  615381411

小梅哥

芯航線電子工作室

【小梅哥SOPC學習筆記】sof與NIOS II的elf韌體合并jic得到檔案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.