公司购买了某公司的一块FPGA的板卡,想给这个板卡发送图片,然后得到返回的坐标,再往图片上框出识别到的物体。
驱动已经由供应商给出,编译安装正常,板卡端的软件由同事烧写,所以我的任务是写一个应用软件,给板卡发送数据并读取处理结果。
参考例程为供应商给出的例程2.
主机平台为龙芯,mips64架构
首先看Makefile——这也是自己一直想掌握却没有掌握的知识点
从头部的注释中知道,这个makefile会搜索指定目录下所有的c/c++源文件并进行编译和链接。除了可以编译使用标准的c/c++库的程序之外,使用者还可以添加其他库,即定制化。
使用的是gnu make,如果是其它版本的make则可能无法工作。
使用方法:
1、将Makefile拷贝到指定目录
2、定制化。
修改第一部分的makefile即可,包含编译选项MY_CFLAGS和MY_LIBS,可以看到,这里没有使用特殊的编译选项,但是添加了数学库和线程库MY_LIBS = $(LIBS) ——LIBS = -lm -lpthread
修改源码目录,此处为src文件夹
定义程序的名称,此处为pcie_image_trd
3、执行make即可启动编译。
make的目标:
make:编译和链接
make NODEP=yes:编译和链接但是不产生依赖文件
make objs:只编译不链接
make tags:
make ctags: //这两个应该是配合一些ide使用的
make clean:清除工程和可执行文件
make distclean:清除工程文件、可执行文件和依赖文件
make help:查看帮助
进入到Makefile正文:
1、设置环境
MY_CFLAGS = //未添加自定义的编译选项
LIBS = -lm -lpthread //指定链接数学库和线程库
MY_LIBS = $(LIBS)
CPPFLAGS = -Wall //打开警告信息
LDFLAGS = //链接选项未设置
SRCDIRS += ./src //指定源文件路径
PROGRAM = pcie_image_trd //指定名称
2、默认的选项
SRCEXTS = .c .C .cc .cpp .CPP .c++ .cxx .cp //源文件的扩展名类型
HDREXTS = .h .H .hh .hpp .HPP .h++ .hxx .hp //头文件的扩展名类型
INCLUDES = -I ./src //指定头文件的保存路径
COMPILE_OPTS = -g $(INCLUDES) //指定c编译选项,可以看到,添加了调试信息
CXXFLAGS= $(COMPILE_OPTS) -DBSD=1 //指定c++编译选项,可以看到,添加了调试信息并且定义了一个宏BSD
CC = gcc
CXX = g++ //指定c和c++编译器
ETAGS = etags
ETAGSFLAGS =CTAGS = ctags
CTAGSFLAGS = &nb