上一章的问题解决
在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明确说明是执行文件格式错误
- 可能是交叉编译的时候交叉编译工具选择不符合原因。