1. 程式人生 > >ARRIA10學習之(4)

ARRIA10學習之(4)

上一章的問題解決

ARRIA10學習之(3)linux啟動失敗的問題,現在已經解決了這個問題,過程大概這樣。 因為我在ubuntu安裝的quatusii ,我是直接用用命令執行

$ ~/intelFPGA//quartus/bin/quartus_cpf -c \
  ~/cv_soc_devkit_ghrd/output_files/soc_system.sof  \
  ~/cv_soc_devkit_ghrd/output_files/soc_system.rbf 

這可能是因為quatusii的License沒有識別到原因吧,因為我每次開啟quartusii的時候,它會叫我輸入License,所以可能是這個原因。還有一個地方就是執行的命令時的目錄路徑不對。

$ ~/intelFPGA/[acds_version]/embedded/embedded_command_shell.sh
//下面的目錄應該是在工程的目錄執行的,boot.script 也應該放在工程的目錄下面。
$ mkimage  -A arm -O linux -T script -C none -a 0 -e 0 -n "My script" -d boot.script u-boot.scr 
//雖然mkimage是在其他的目錄下面,但是我認為在其他目錄下執行也應該可以。

就上面的地方改動以後,重新走遍就可以啟動了,上一章中的那個unkonwn應該沒有影響。 mkimage命令 這裡寫圖片描述

但是現在新的問題又來了

  • 1、不知在哪裡找到地址,就是基地址,比如FPGA端的LED地址。
  • 2、對於mmap和munmap、open等函式不熟悉,這個學習一下就好了應該。

自己編譯C程式碼的經過

找到一個demo,然後進入其中修改一下自己的main函式和其他函式,然後就可以make了,因為demo目錄下面他們已經提供了makefile,而且他們在makefile中也定義好了CROSS_COMPILEE工具,前提你在終端下面要可以識別到交叉工具才能這樣用啊。 還有就是你embedded_command_shell.sh 記得開啟,不然找不到很多標頭檔案。 makefile中定義好了交叉工具

這裡寫圖片描述 make的過程 這裡寫圖片描述

編譯不能執行

對於linux下cannot execute binary file: Exec format error明確說明是執行檔案格式錯誤 - 可能是交叉編譯的時候交叉編譯工具選擇不符合原因。