海思Hi3521/Hi3520A/Hi3520D/Hi3515A/Hi3515C U-boot移植應用開發指南
本文件主要介紹本在Hi3521/Hi3520A/Hi3520D/Hi3515A/Hi3515C單板上如何移植和燒寫 U-boot(Hi3521 單板的 Bootloader)的相關操作及如何使用ARM 除錯工具。
Hi3521單板的Bootloader 採用U-boot。當選用的外圍晶片的型號與單板上外圍晶片的型號不同時,需要修改 U-boot 配置檔案,主要包括儲存器配置、管腳複用。
1.2 U-boot 目錄結構
U-boot 的主要目錄結構如表 1-1 所示,詳細目錄說明請閱讀 U-boot 目錄下的 README文件。
2.1 概述
在 Hi3521 單板上所選用的外圍晶片型號如下:
DDR SDRAM:K4B2G1646C-HCK0
NAND Flash:TC58NVG1S3ETA00
SPI Flash:FL128PIFL121QQ030
如果選用的外圍晶片不是以上型號時,需要適當修改 SDK 中的“osdrv/
tools/pc_tools/uboot_tools/”目錄下的配置表格,對應的單板才能正常執行。
2.2 編譯 U-boot
當所有以上移植步驟完成後,就可以編譯 U-boot,操作如下:
make ARCH=arm CROSS_COMPILE=arm-hisivXXX-linux- godarm_config //選擇Hi3521
make ARCH=arm CROSS_COMPILE=arm-hisivXXX-linux- godcare_config //選擇Hi3520A
make ARCH=arm CROSS_COMPILE=arm-hisivXXX-linux- hi3520d_config //選擇Hi3520D/Hi3515A
編譯成功後,將在 U-boot 目錄下生成 u-boot.bin。
其中 CROSS_COMPILE 表示工具鏈。文件中統一以 CROSS_COMPILE=arm-hisiXXX-linux-來
表示兩種情況。
Hi35xx_V100R001C01SPCxxx 對應 uclibc,使用 uclibc 工具鏈時,CROSS_COMPILE=armhisiv100nptl-linux-。
Hi35xx_V100R001C02SPCxxx 對應 glibc,使用 glibc 工具鏈時,CROSS_COMPILE=armhisiv200-linux-。
2.3 配置 DDR 儲存器
在 Windows 下開啟 SDK 中的“osdrv/ tools/pc_tools/uboot_tools/”目錄下的配置表格。
當選用不同的 DDR SDRAM 時,需要針對不同器件的特性,對配置工作表中的相關標籤頁進行修改。
2.4 配置管腳複用
如果管腳複用有變化,還需要對配置表格中的相關標籤頁進行修改。
2.5 生成最終使用的 U-boot 映象
完成配置表格的修改後,儲存表格。單擊表格第一個標籤頁上的按鈕“Generage reg bin file”,生成臨時檔案 reg_info.bin。
將臨時檔案 reg_info.bin 和編譯 u-boot 得到的 u-boot.bin 都複製到 SDK 中的“osdrv/tools/pc_tools/uboot_tools/目錄下,執行命令:
mkboot.sh reg_info.bin u-boot-hi3521_930MHz.bin
其中 u-boot-hi3521_930MHz.bin 就是能夠在單板上執行的 U-boot 映象。
目前是將 Hi3520D 和 Hi3515A/Hi3515C 做成一個 U-boot 映象,需要將 Hi3520D、Hi3515A 表格生成的臨時檔案,分別命名為 reg_info_hi3520d.bin、reg_info_hi3515a.bin,然後將兩個臨時檔案和編譯好的 u-boot.bin 一起複製到 SDK 中的“osdrv/tools/pc_tools/uboot_tools/目錄下,執行命令:mkboot-hi3520d.sh
reg_info_hi3520d.bin reg_info_hi3515a.bin u-boot-hi3520d.bin
需要特別注意 Hi3520D 的 reg_info 在前、15a 的 reg_info 在後,這個順序不能隨意更改。
在 u-boot 的程式碼段中需要預留 4800Byte 的空白區,用來存放 reg_info_hi3520d.bin、reg_info_hi3515a.bin 檔案的內容,兩個檔案各佔 2400Byte。由於受片內 RAM 的限制,預留空白區的大小最好不要超過 4800Byte,如果超過這個限制將會導致 FastBoot
無法正常燒寫。如果確實需要預留超過 4800Byte 的空白區,可以考慮先用 FastBoot 工具燒寫一個未超過 4800Byte 限制的 U-boot 映象,然後透過網路把超過限制的 U-boot映象燒進 Flash。
如果只需將 Hi3520D 或者 Hi3515A/Hi3515C 的 reg_info 檔案放入 U-boot 映象,需要把U-boot 目錄下./include/configs/hi3520d.h 檔案中的 ENABLE_HI3520D_BLANK 或者ENABLE_HI3515A_BLANK 宏註釋掉即可。
為臨時檔案(reg_info_xxx.bin)預留的空白區的大小由宏 REG_INFO_BLANK_SIZE決定,預設是 2400,如果需要可以調整 REG_INFO_BLANK_SIZE 的大小。
如果想要把更多的臨時檔案放入 U-boot 映象,需要以下步驟:
首先,需要修改./arch/arm/cpu/hi3520d/start.S54~61 行程式碼,具體程式碼如下:
__blank_zone_start:
#ifdef ENABLE_HI3520D_BLANK
.fill REG_INFO_BLANK_SIZE,1,0 /* 空白區*/
#endif
#ifdef ENABLE_HI3515A_BLANK
.fill REG_INFO_BLANK_SIZE,1,0 /* 空白區*/
#endif
/* 在此處新增空白區 */
__blank_zone_end:
其次,需要修改 osdrv/tools/pc_tools/uboot_tools/ mkboot-hi3520d.sh 檔案,如下:
dd if=$1 of=./fb2 bs=2400 conv=sync
dd if=$2 of=./fb3 bs=2400 conv=sync
/* 可以在此處增加類似上面兩個命令 */
dd if=./u-boot.bin of=./fb4 bs=1 skip=4864 /* 大小為 64 + 所有空白區的大小 */
cat fb1 fb2 fb3 fb4 > $3
3.1 概述
如果待移植單板中已有 U-boot 執行,則可以透過串列埠或網口與伺服器連線,直接更新U-boot。
如果是第一次燒寫,則需要透過網口使用 RVDS 工具進行燒寫。由於晶片特性,必須有透過 RVDS 下載到單板的指令碼,該指令碼能夠對儲存器和晶片進行初始化。在 HI3521 SDK 中提供了相應的初始化指令碼,當選用了不同的外圍晶片,則需要重新配置初始化指令碼才能使用。
3.2 透過 bootrom 工具燒寫 U-boot
具體操作方式請參考《Fastboot 工具使用說明 Application Notes》。
3.3 兩種 Flash 的 U-boot 燒寫方法
3.3.1 SPI Flash 燒寫方法
SPI Flash 燒寫方法如下:
1. 在記憶體中執行起來之後在超級終端中輸入:
hisilicon# mw.b 0x82000000 ff 0x100000 /* 對記憶體初始化*/
hisilicon# tftp 0x82000000 u-boot-hi3521_930MHz.bin /*U-boot下載到記憶體
*/
hisilicon# sf probe 0 /*探測並初始化SPI flash*/
hisilicon# sf erase 0x0 0x100000 /*擦除 1M大小*/
hisilicon# sf write 0x82000000 0x0 0x100000 /*從記憶體寫入SPI Flash*/
2. 上述步驟操作完成後,重啟系統可以看到 U-boot 燒寫成功。
----結束
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31529038/viewspace-2647995/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Qt5.2.1移植海思QT
- 海思hi3536 PCIE級聯應用指南
- 海思3515A移植記錄
- 海思HI3751 Android 待機開發指南Android
- 海思HI3751 Android升級開發指南Android
- 5. U-Boot移植boot
- 海思hi3751 Android儲存開發指南手冊Android
- AI 聊天應用開發實戰:從構思到上線的全棧開發指南AI全棧
- libx264開發筆記(一):libx264介紹、海思平臺移植編譯筆記編譯
- 使用Taro開發鴻蒙原生應用——快速上手,鴻蒙應用開發指南鴻蒙
- 使用 Taro 開發鴻蒙原生應用 —— 快速上手,鴻蒙應用開發指南鴻蒙
- FFmpeg開發筆記(十):ffmpeg在ubuntu上的交叉編譯移植到海思HI35xx平臺筆記Ubuntu編譯
- Kurento實戰之四:應用開發指南
- 應用模型開發指南上新介紹模型
- OpenCV開發筆記(七十四):OpenCV+ffmpeg交叉編譯移植到海思平臺Hi35xx平臺OpenCV筆記編譯
- 海思HI3751V600使用者指南
- 海雲安應用安全測試、移動應用安全、開發安全再次上榜
- 海思hi3518ev300開發資料PDF
- OpenCV開發筆記(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉編譯移植到海思平臺Hi35xx平臺OpenCV筆記編譯
- RK3399 U-Boot開發簡介boot
- 特斯拉第三方應用開發指南(一)
- 對標小程式 ? "快應用"開發入門指南
- 實戰指南 | Serverless 架構下的應用開發Server架構
- [譯] 使用 Architecture Components 開發 MVVM 應用:MVP 開發者的實踐指南MVVMMVP
- 應用架構指南全新發布應用架構
- 海思hi3519dv500,hi3516dv500移植yolov8-模型處理YOLO模型
- 海思Hi3798mv300_DDR相容性測試指南
- 華為海思平臺晶片型號和處理器應用領域晶片
- 思否釋出丨2024 最受開發者歡迎的 AI 應用開發平臺AI
- 開源繪畫應用 Pinta 已移植到GTK 3和.NET 6
- 海思 uboot 編譯boot編譯
- 海思hi3559AV100開發板引數規格介紹
- 海思Hi3516DV300軟硬體全套開發資料分享
- 新發布企業加密DNS應用指南加密DNS
- ffmpeg在移植到海思HI35xx平臺之將ffmpeg庫引入到sample的demo中
- 開發Web應用Web
- 1.1.4 應用開發
- 全棧開發以太坊應用的完整教程指南與原始碼 - Dabit全棧原始碼