Altera FPGA SoC搭建步骤
轉至https://www.cnblogs.com/li--chao/p/7294306.html
Altera SoC 官方搭建指南:
https://rocketboards.org/foswiki/Documentation/EmbeddedLinuxBeginnerSGuide
?官方文檔中除了講解搭建方法之外,還有很多原理性的介紹,感興趣的朋友可以自己閱讀。
?
準備工作:
1. 安裝Altera官方提供的IDE (Quartus?和?SoC EDS), 不需要安裝DS-5. 文檔中的工作是基于v15.0版本
2. 一塊FPGA SoC開發板。官方Guide中的硬件平臺是友晶系列的DE0-Nano-SoC,但對大多Altera板子都適用
3. 一臺Linux主機
4. 一張SD卡
5. 網絡可以訪問github
?
搭建步驟:
1.?生成Preloader
2.配置和編譯Bootloader (U-Boot)
3. 生成和編譯Device Tree
4. 測試系統(一)
5. 配置和編譯Linux Kernel
6. 生成Root Filesystem
7. 測試系統(二)
?
搭建方法:
1. 生成Preloader
- 下載并解壓GHRD,并解壓至某目錄:?atlas_linux_ghrd.tar.gz?
- 運行EDS配置環境變量的腳本
- 運行BSP Editor工具:
將彈出如下窗口:
?
- 配置BSP Editor:?
- File→New HPS BSP
- 在彈出的窗口中,點擊"Preloader settings directory"右側的"..."按鈕,選擇“atlas_linux_ghrd/hps_isw_handoff/soc_system_hps_0”,然后點擊Open。完成后的界面如下圖,點擊確定:
-
- 在生成的窗口中,選中"FAT_SUPPORT",其他的使用默認,結果如下圖:
-
- 點擊Generate,正常結束后點擊Exit退出。
?
- 編譯Preloader.
編譯結束后將生成如下文件:
-
- 新目錄 - “uboot-socfpga”
- 新文件 - “preloader-mkpimage.bin”
?
2.配置和編譯Bootloader (U-Boot)
- 獲取U-Boot編譯工具: Linaro GCC toolchain for the ARMv7 instruction set,并配置其相關的環境變量
- ?獲取U-Boot源代碼,查看并切換至相應的tag:
?
- Clean U-Boot目錄
?
- 編譯U-Boot
?
- 創建boot腳本。在software目錄下,新建boot.script文件,并寫入如下內容:
?
- 編譯boot腳本
?編譯結束后,將生成"u-boot.scr"文件
?
3. 生成和編譯Device Tree
- 生成Device Tree所需的board xml文件已經存在了。在"atlas_linux_ghrd"目錄下,運行如下命令:
?
?
- 編譯Device Tree源代碼;
編譯結束后,將生成二進制文件:"soc_system.dtb"。
?
4. 測試系統(一)
Preloader和U-Boot已經生成。我們首先,以測試preloader和bootloader編譯和燒寫成功。
- 制作SD Card image,?生成空值組成的sdcard.img
?
- 虛擬回環設備(loop device),并獲取回環設備名。紅色的X表示不同的環境下可能會有不同,在我的環境下,X=0,即我得到的結果是"/dev/loop0"。
?
- 使用fdisk命令對該回環設備關聯的sdcard.img進行分區
?
首先確認,當前sd卡上沒有分區:
?
創建分區3,用來存儲preloader image,相應的配置信息如下:
轉換分區類型為'a2'
?
創建分區2,用來存放Linux root文件系統,相應的配置信息如下,且不需要進行分區類型轉換:
創建分區1,用來存放啟動文件:相應的配置信息如下:
轉換分區類型為FAT:
最終的分區信息如下圖:
確認無誤后,使用"w"命令退出,忽略下圖中的錯誤信息。
?
- ?Kernel對上述改動尚未生效,正如上圖中最后一樣的提示。Reboot,或者使用"partprobe"命令,使上述改動生效。
- 生成文件系統:
preloader寫入分區3:
sudo dd if=software/spl_bsp/preloader-mkpimage.bin of=/dev/loopXp3 bs=64k seek=0?
?格式化分區1,成為FAT文件系統:
sudo mkfs –t vfat /dev/loopXp1?
格式化分區2,成為ext4文件系統:?
sudo mkfs.ext4 /dev/loopXp2?
?掛載分區1(FAT文件系統),并將拷入之前生成的"u-boot.img", "u-boot.scr"和FPGA的燒寫文件"soc_system.rbf".
mkdir temp_mount sudo mount /dev/loopXp1 ./temp_mount sudo cp software/u-boot-socfpga/u-boot.img software/u-boot.scr soc_system.dtb soc_system.rbf temp_mount sync sudo umount temp_mount?
- ?燒寫SD卡
?
- ?將SD卡插入FPGA,開機,通過串口調試工具如minicom進行調試,結果是SoC的preloader和bootloader正常啟動,但因為我們還沒有制作linux kernel和root filesystem, 系統提示如下錯誤:
?
5. 配置和編譯Linux Kernel
- 獲取Linux Kernel源代碼,并切換到相應的release:
?
- 配置Linux Kernel,運行環境變量配置腳本,確保新打開的shell的環境變量配置正確:
?
- ?安裝圖形化的kernel配置工具:
- ?在打開的圖形界面里,需要改動2個地方。1. 主菜單進入“General Setup”,取消?“Automatically append version information to the version string” ?2. 主菜單進入“Enable the block layer”,選中?“Support for large (2TB+) block devices and files”。然后save到默認的.config文件。
- 編譯Linux Kernel (zImage):?
?注意,"LOCALVERSION=" 后面是空格
?
6. 生成Root Filesystem
- 運行環境變量配置腳本,確保新打開的shell的環境變量配置正確:
?
- 獲取buildroot代碼 (Guide中給的地址已經打不開了,自己搜索了buildroot在github上的代碼)
?
- 切換到兼容Linaro 2014.09 toolchain的版本:
?
- 打開配置窗口:
- 配置Target Options:
- 在"Target Architecture"選項中,選擇"ARM (little endian)"
- 在"Target Architecture variant"選項中,選中 "cortex-A9"
- 在"Target ABI"選項中, 選中"EABIhf"
- Enable “NEON SIMD extension support”?
- 在“Floating point strategy”選項中, 選中"NEON"
- ?“Target Binary Format” and “ARM Instruction set” 選項保持默認。
- 配置Toolchain:
- 在“Toolchain type”選項中, 選中 “External toolchain”
- 確保 ?“Toolchain” 選項中,選中 “Linaro ARM 2014.09”.?
- 在“Toolchain origin”選項中, 選中 “Pre-installed toolchain”
- 忽略"toolchain path"
- Enable “copy gdb server to the Target”
- 其他選項保持默認
- 配置System configuration:
- 配置hostname
- 配置root password
- 配置Kernel:
- 去掉“Linux Kernel” 選項的選中狀態
- 配置Target packages?
- 在 “Debugging, profiling and benchmark”選項中, 拖動滾動條到底部并選中 “valgrind”
- 配置結束,F6保存并退出。
- 配置Busy Box
在打開的配置窗口中,不做改變保存即可。
- 編譯Root Filesystem:
?
7. 測試系統2
將編譯好的Linux Kernel 拷入SD,并解壓Root Filesystem。之后開機登陸root。
sudo cp linux-socfpga/arch/arm/boot/zImage <mount point that lsblk tells you, remember the FAT partition is the 256M one> sudo tar –xvf buildroot/output/images/rootfs.tar –C <mount point of your ext4 partition, it’s the 254M one> sync?
?
備份:
1. 一切工作開始前,調整SoC的MSEL開關,至Fast Passive Parallel x16模式,
2. GHRD代表?Golden Hardware Reference Design,它是包含了很多基本功能模塊的硬件設計,我們可以用它作為設計參考。
3. 在生成preloader時,我碰到一個找不到二進制文件的錯誤,但實際上需要的二進制文件已經存在了。問題的原因是編譯出的二進制文件是32位的文件,而我的主機用的是64位的Linux。安裝32位兼容庫即可解決:
sudo apt-get install lib32ncurses54. 在生成bootloader時,缺少庫文件libz.so.1和工具包,安裝之:
sudo apt-get install lib32z1 sudo apt-get install u-boot-tools總結
以上是生活随笔為你收集整理的Altera FPGA SoC搭建步骤的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑怎么在线录制屏幕声音,如何内录
- 下一篇: 超越竞争(2) 价值创新