三 嘉楠勘智k230开发板上手记录--K230_GPU应用实战

按照应用实战.md
一、开发环境的准备
在src下创建文件夹,并在文件夹中创建
mkdir my_vglite_codecd my_vglite_code
【三嘉楠勘智k230开发板上手记录--K230_GPU应用实战】# SDK地址K230SDK ?= /root/k230/k230_sdk-main# 生成的可执行文件名字BIN := test-vglite# 指定交叉编译器CC := "$(K230SDK)/toolchain/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.0/bin/riscv64-unknown-linux-gnu-gcc"CXX := "$(K230SDK)/toolchain/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.0/bin/riscv64-unknown-linux-gnu-g++"# 指定头文件搜索路径 CFLAGS := -I"$(K230SDK)/src/little/buildroot-ext/package/vg_lite/inc" -I"$(K230SDK)/output/k230_evb_defconfig/little/buildroot-ext/host/riscv64-buildroot-linux-gnu/sysroot/usr/include"CFLAGS += -I "$(K230SDK)/output/k230_evb_defconfig/little/buildroot-ext/host/riscv64-buildroot-linux-gnu/sysroot/usr/include/drm"# 指定库文件搜索路径LDFLAGS += -L"$(K230SDK)/output/k230_evb_defconfig/little/buildroot-ext/target/usr/lib"# 指定链接库LDFLAGS += -lvg_lite -lvg_lite_util -ldrm# 编译参数LDFLAGS += -Wall -gCXXFLAGS := $(CFLAGS) CXXFLAGS += $(LDFLAGS)# 代码所在目录SRCDIR := ../my_vglitec_code# 编译结果目录OBJDIR := ../my_vglitec_code/objs# wildcard 用于得到指定文件夹下所有指定匹配模式的文件SRCS := $(wildcard $(SRCDIR)/*.c) $(wildcard $(SRCDIR)/*.cpp)# patsubst替换字符 filter函数的作用是从字符串列表中过滤出匹配指定通配模式的字符串OBJS := $(patsubst $(SRCDIR)/%.c, $(OBJDIR)/%.o, $(filter %.c, $(SRCS))) \$(patsubst $(SRCDIR)/%.cpp, $(OBJDIR)/%.o, $(filter %.cpp, $(SRCS)))DEPS := $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.d,$(filter %.c, $(SRCS))) \$(patsubst $(SRCDIR)/%.cpp,$(OBJDIR)/%.d,$(filter %.cpp, $(SRCS)))all: $(BIN)$(OBJDIR):mkdir -p $(OBJDIR)$(BIN): $(OBJS)$(CXX) $(CXXFLAGS) $(OBJS) -o $@$(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)$(CC) $(CFLAGS) -MMD -c $< -o $@$(OBJDIR)/%.o: $(SRCDIR)/%.cpp | $(OBJDIR)$(CXX) $(CXXFLAGS) -MMD -c $< -o $@-include $(DEPS)clean:rm -rf $(OBJDIR) $(BIN)install:cp $(BIN) "$(K230SDK)/output/k230_evb_defconfig/little/buildroot-ext/target/usr/bin"uninstall:rm "$(K230SDK)/output/k230_evb_defconfig/little/buildroot-ext/target/usr/bin/$(BIN)".PHONY: all clean install
二、编译 1.
官方文档对于编译的实例没有讲的很清楚 。文档给了,但是make需要的代码没有说明白 。我在里搜索才找到文件夹的位置
最后一行就是文档里说的
2. 需要的代码
把下的.c和.c拷贝到刚刚创建的文件夹中,然后把上一级目录的drm.c也拷贝到文件夹中 。
关键的一点是 , sdk/src中有多个drm.c
根据文件夹中的推断第二个是我们需要的 。第一个中的代码跟第二个有差别,不清楚具体有什么用 。第三个猜测是用于生成.so,因为他跟.so一样都没有和等函数的定义。
这是拷贝完成的文件夹结构

三  嘉楠勘智k230开发板上手记录--K230_GPU应用实战

文章插图
3. 编译
4. 上传k230并运行
上传
运行