【RK3568】基于VSCode的嵌入式开发实战:从Ubuntu环境配置到远程调试全流程
1. 环境准备与工具安装刚拿到RK3568开发板时我第一反应就是得找个顺手的开发环境。毕竟在终端里用vim写代码虽然很酷但效率实在不敢恭维。经过一番折腾我发现VSCodeUbuntu的组合简直是为嵌入式开发量身定制的。下面分享下我的环境搭建经验。首先需要准备Ubuntu 20.04或更高版本的开发机物理机或虚拟机都行。我实测过在VMware和VirtualBox上运行都没问题但建议分配至少4GB内存和50GB硬盘空间。安装好系统后第一件事就是换源sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list sudo apt update sudo apt upgrade -y接着安装基础开发工具链sudo apt install -y build-essential git cmake python3-devVSCode的安装更简单直接去官网下载.deb包或者用以下命令安装wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor packages.microsoft.gpg sudo install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/ sudo sh -c echo deb [archamd64 signed-by/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main /etc/apt/sources.list.d/vscode.list sudo apt update sudo apt install -y code安装完成后这几个插件是必须装的C/C提供代码补全和调试支持CMake Tools如果你用CMake管理项目Remote - SSH远程连接开发板ARM Assembly查看汇编代码时很有用2. 交叉编译工具链配置RK3568是ARM架构的芯片我们需要在x86的Ubuntu上配置交叉编译环境。官方推荐的工具链是gcc-linaro-6.3.1可以从开发板厂商提供的资料包里找到或者用以下命令安装wget https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz sudo tar -xvf gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz -C /opt然后配置环境变量echo export PATH/opt/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin:$PATH ~/.bashrc source ~/.bashrc验证安装是否成功aarch64-linux-gnu-gcc --version如果看到类似下面的输出就说明工具链配置正确了aarch64-linux-gnu-gcc (Linaro GCC 6.3-2017.05) 6.3.1 201704043. VSCode工程配置实战创建一个简单的helloworld项目目录结构如下hello_rk3568/ ├── include/ ├── lib/ ├── src/ │ └── main.c └── .vscode/ ├── c_cpp_properties.json ├── launch.json └── tasks.json重点来看.vscode目录下的配置文件。首先是c_cpp_properties.json这个文件决定了代码提示和头文件查找{ configurations: [ { name: RK3568, includePath: [ ${workspaceFolder}/**, /opt/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include, /opt/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/libc/usr/include ], defines: [], compilerPath: /opt/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc, cStandard: gnu11, cppStandard: gnu14, intelliSenseMode: linux-gcc-x64 } ], version: 4 }然后是tasks.json定义了编译任务{ version: 2.0.0, tasks: [ { label: Build RK3568, type: shell, command: aarch64-linux-gnu-gcc, args: [ -g, -o, ${workspaceFolder}/output/main, ${workspaceFolder}/src/main.c, -I${workspaceFolder}/include, -L${workspaceFolder}/lib, -Wl,-rpath-link${workspaceFolder}/lib ], group: { kind: build, isDefault: true }, problemMatcher: [$gcc] } ] }4. 第三方库集成技巧实际项目中经常需要集成第三方库。以libhv网络库为例首先需要交叉编译git clone https://github.com/ithewei/libhv.git cd libhv mkdir build cd build cmake .. -DCMAKE_C_COMPILERaarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILERaarch64-linux-gnu-g -DCMAKE_INSTALL_PREFIX./output make make install编译完成后把生成的libhv.a和libhv.so复制到项目的lib目录下头文件放到include目录。然后在tasks.json中添加链接参数args: [ -g, -o, ${workspaceFolder}/output/main, ${workspaceFolder}/src/main.c, -I${workspaceFolder}/include, -L${workspaceFolder}/lib, -lhv, -Wl,-rpath-link${workspaceFolder}/lib ]5. 远程调试全流程调试RK3568需要先在开发板上启动gdbserver。假设开发板IP是192.168.1.100gdbserver :6000 ./main然后在VSCode中配置launch.json{ version: 0.2.0, configurations: [ { name: RK3568 Debug, type: cppdbg, request: launch, program: ${workspaceFolder}/output/main, args: [], stopAtEntry: false, cwd: ${workspaceFolder}, environment: [], externalConsole: false, MIMode: gdb, miDebuggerPath: /opt/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gdb, miDebuggerServerAddress: 192.168.1.100:6000, setupCommands: [ { description: Enable pretty-printing for gdb, text: -enable-pretty-printing, ignoreFailures: true } ] } ] }调试前需要确保开发板和Ubuntu主机在同一局域网开发板的防火墙放行了6000端口可执行文件main已传输到开发板并添加了执行权限6. 常见问题排查问题1头文件找不到检查c_cpp_properties.json中的includePath是否包含工具链的头文件路径可以用以下命令查找find /opt/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu -name stdio.h问题2链接时库找不到确保tasks.json中的-L参数指向正确的库路径并且库文件名格式正确比如libhv.so对应-lhv问题3调试连接失败检查开发板上的gdbserver是否正常运行可以用netstat查看端口监听情况netstat -tulnp | grep 60007. 效率提升技巧使用CMake管理项目对于复杂项目建议用CMake代替直接gcc编译预编译头文件可以显著提升大型项目的编译速度远程开发通过VSCode的Remote-SSH插件直接在开发板上开发自动化部署编写脚本自动将编译好的程序部署到开发板一个简单的部署脚本示例#!/bin/bash scp output/main user192.168.1.100:/home/user ssh user192.168.1.100 chmod x /home/user/main这套环境配置好后开发效率比纯命令行方式提升了至少3倍。特别是代码补全和可视化调试功能让嵌入式开发也能有现代IDE的体验。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2427593.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!