当前位置: 首页 > news >正文

如何将VSCode中C项目工程运行到开发板上 - 指南

如何将VSCode中C项目工程运行到开发板上 - 指南


大致步骤记录下:

1.拷贝cmake文件夹以及文件 到  项目根目录
2.拷贝build.bat 和 clean.bat到根目录 ===>修改到指定工具链  设置了ARM工具链路径,但CMake可能仍然使用了系统默认的编译器(MinGW64)。
3.修改build.bat
4.修改main.c
5.修改CmakeLists.txt
6.精简项目工程


一、需求来源

 1.之前我们的项目工程都在VSCode搭建的模拟器上跑,现在我们需要在开发板上跑。

 2.Leader要求,参照下面的编译环境搭建,把demo的应用hellolvgl模板编译下

01-02编译环境搭建
1. svn导出01编译环境prebuilts,到C盘根目录
2. svn导出02SDK开发发布到C:\prebuilts\win32
3. 下载02SDK开发发布/工程模板,分普通应用helloworld和界面应用hellolvgl
3.1 普通应用helloworld通过build.bat编译
3.2 普通应用hellolvgl通过build.bat
4. 通过adb push xxx /userdata/ 到目标板上执行,chmod +x xxx

二、准备配置

1.将编译环境prebuilts整个文件拷贝到C盘根目录,如图所示:

2. 将svn导出02SDK开发发布到C:\prebuilts\win32,如图所示:

3. 下载02SDK开发发布/工程模板,分普通应用helloworld和界面应用hellolvgl

4.因为我们是用lvgl开发的界面,将代码导入到官方的lv_port_pc_eclipse-release-v8.3项目中,并在VScode中运行,所以这里选用参考模版为 hellolvgl。hellolvgl如图所示:

三、参考模版配置项目工程

1.首先看看我们的原代码工程,如图所示:

2.复制一份上面项目工程代码,到桌面,以便编译,防止破坏了原工程。

3.拷贝模版中的三个文件到项目工程根目录,同时删除不必要的文件,最终如下图所示

4.修改CMakeLists.txt文件如下图所示

cmake_minimum_required(VERSION 3.10)
# 设置项目名称和C标准
project(hellolvgl C)
# 包含工具链和LVGL配置
include(cmake/toolchain.cmake)
include(cmake/lvgl.cmake)
# 只添加项目根目录到包含路径
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR})
# 递归收集所有头文件(.h)到 INCLUDES 变量
file(GLOB_RECURSE INCLUDES "main/custom/*.h" "main/generated/*.h" "main/generated/guider_customer_fonts/*.h")
# 递归收集所有源文件(.c)到 SOURCES 变量
file(GLOB_RECURSE SOURCES  "main/custom/*.c" "main/generated/*.c" "main/generated/guider_customer_fonts/*.c" "main/generated/guider_fonts/*.c" "main/generated/images/*.c""main.c")
# 创建可执行文件
add_executable(hellolvgl ${SOURCES})

5.修改main.c文件,如下图所示:

/*** @file main**/
/**********************      INCLUDES*********************/
#include 
#include 
#include "lvgl/lvgl.h"
#include "main/generated/gui_guider.h"
#include "lvgl/lv_port_init.h"
lv_ui guider_ui;
/**********************      DEFINES*********************/
/***********************      TYPEDEFS**********************/
/***********************  STATIC PROTOTYPES**********************/
/***********************  STATIC VARIABLES**********************/
/***********************      MACROS**********************/
/***********************   GLOBAL FUNCTIONS**********************/
/**********************      DEFINES*********************/
/***********************      TYPEDEFS**********************/
/***********************      VARIABLES**********************/
/***********************  STATIC PROTOTYPES**********************/
/***********************   GLOBAL FUNCTIONS**********************/
int main()
{lv_port_init(320, 480, 0);setup_ui(&guider_ui);while(1) {/* Periodically call the lv_task handler.* It could be done in a timer interrupt or an OS task too.*/lv_timer_handler();usleep(5 * 1000);}return 0;
}

6.Leader提供的build.bat我运行始终生成不出可执行文件,所以我修改了一下build.bat

@echo off

set PROJECT_ROOT=%CD%
set PROJECT_OUT=%PROJECT_ROOT%\out

call :add_path C:\prebuilts\win32\bin
call :add_path C:\prebuilts\win32\cmake\bin
call :add_path C:\prebuilts\win32\arm-none-linux-gnueabihf\bin

if not exist %PROJECT_OUT% mkdir %PROJECT_OUT%

cd %PROJECT_OUT%

:: 明确指定工具链文件
cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain.cmake

ninja -v -j 1

cd ..

exit /B 0

:add_path
(echo ";%PATH%;" | find /C /I ";%1;" > nul) || set "PATH=%1;%PATH%"
goto :eof

7.最终的目录结构如下图所示:

8.点击build.bat,编译出可执行文件在out目录下:,如图所示:

9.通过以下命令,运行到开发板上:

adb push C:\Users\A03251\Desktop\lv_port_pc_eclipse-release-v8.3\out\hellolvgl /userdata
cd /userdata
chmod 777 hellolvgl
 ./hellolvgl

额外命令也写上,万一以后用的上:


adb shell
cd /userdata
/userdata# ./n
/userdata# ./hellolvgl
/userdata# ls
/userdata# cp hellolvgl bak
/userdata# exit

四、效果展示

因为屏还没调好,所以会导致显示有问题

http://www.jsqmd.com/news/293246/

相关文章:

  • 中山CNC数控机床批发哪家强?2025最新榜单揭晓,无人机配件数控/CNC数控机床/医疗器械数控机床CNC数控机床门店供应链
  • 总结2026年冷干机排名,杭州超滤冷干机产品性能佳售后完善排前列!
  • 2026年有名的办公室搬迁公司,安徽好为民服务全面哪家强?
  • 2026年合肥办公室搬迁机构推荐,安徽好为民搬家公司性价比如何
  • 2026年评价高的陕西钣金铆焊加工厂家高性价比排行榜
  • 2026年天津热门教育机构排名,一铭教育的教学模式怎么样?
  • 2026 线上雅思网课哪个好?单项突破技巧与快速上岸靠谱教育机构推荐
  • 用go构建-回文链表
  • 湖南可靠的冷库建造厂家有哪些,哪家口碑好?
  • SVN培训笔记(二):使用sourceTree通过git桥接管理svn项目
  • 2026雅思网课培训线上哪个好?高性价比与提分冲刺指南机构测评推荐
  • vllm单机多卡(无Ray)部署架构
  • 基于spring的地产企业工程项目管理系统[spring]-计算机毕业设计源码+LW文档
  • 基于spring的大学生兼职网[spring]-计算机毕业设计源码+LW文档
  • 基于spring的创新团队管理平台[spring]-计算机毕业设计源码+LW文档
  • 志趣网 item_get - 获取公司详情接口对接全攻略:从入门到精通
  • 教育领域新玩法:用Live Avatar制作AI讲师课程
  • 用YOLOv9官方镜像做毕业设计,简单又出彩
  • IQuest-Coder-V1 vs PolyCoder:小团队开发适配性对比
  • Unsloth能否用于生产?企业级部署稳定性实战评估
  • 异构GPU架构(英伟达+华为升腾等)
  • 深入解析:零基础学AI大模型之Milvus索引实战
  • 告别手动剪辑!FSMN-VAD帮你自动切分语音片段
  • Qwen3-Embedding-0.6B推荐部署:开箱即用镜像提升开发效率
  • NewBie-image-Exp0.1出现OOM?显存不足问题的三种解决方案实战
  • IndexTTS-2模型权重获取:Apache 2.0许可合规使用指南
  • MinerU技术架构解析:magic-pdf与mineru协作机制
  • Llama3语音扩展 vs Speech Seaco Paraformer:中文识别能力对比
  • STM32CubeMX教程:STM32F4系列时钟配置深度剖析
  • 成都恒利泰HT-LFCN-2000+替代LFCN-2000+