RK3568开发指南:Ubuntu系统基础优化(软件源更换+vim/git安装配置)

前言

RK3568是一款基于ARM架构的高性能开发板,广泛应用于嵌入式Linux开发、边缘计算等场景。其默认搭载的Ubuntu系统(多为Server版,无图形界面)存在两个核心问题:一是默认软件源为Ubuntu官方国外服务器,国内网络环境下下载速度慢且易出现依赖包下载失败;二是缺失嵌入式开发必备的文本编辑、版本控制工具,直接影响开发流程推进。

一、Ubuntu软件源更换(ARM架构适配+深度优化)

1. 技术原理与核心需求

  • 软件源本质是存储Ubuntu软件包的服务器集群,/etc/apt/sources.list文件用于指定服务器地址。
  • RK3568采用ARM64架构(aarch64),需选择支持ARM架构的国内镜像源(部分国内源仅适配x86架构,会导致软件包无法找到)。
  • 核心需求:解决官方源“网络延迟高”“ARM包兼容性差”问题,同时保障系统更新安全性(需选择带security仓库的源)。

2. 详细操作步骤(以Ubuntu 20.04 LTS aarch64为例)

1)环境预处理

先确认系统架构与版本,避免源版本不匹配:

# 查看系统架构(RK3568输出应为aarch64)

arch

# 查看Ubuntu版本(输出如20.04.6 LTS,核心版本号focal)

lsb_release -a

2)备份原软件源文件

原文件是系统恢复的关键,必须备份:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.original.bak

# 额外备份一份到用户目录,避免误操作丢失

cp /etc/apt/sources.list ~/sources.list.bak

3)编辑源文件(适配ARM64架构)

推荐使用nano编辑器(系统默认预装,无需额外安装),避免vim未安装导致操作受阻:

sudo nano /etc/apt/sources.list

4)国内ARM适配型镜像源推荐(任选其一,优先阿里云)

  • 阿里云源(ARM64专属,支持Ubuntu 20.04/22.04,速度最快):
  • # 主仓库(包含核心软件包,ARM64适配)
  • deb http://mirrors.aliyun.com/ubuntu-ports/ focal main restricted universe multiverse
  • deb-src http://mirrors.aliyun.com/ubuntu-ports/ focal main restricted universe multiverse
  • # 安全更新仓库(修复系统漏洞,必选)
  • deb http://mirrors.aliyun.com/ubuntu-ports/ focal-security main restricted universe multiverse
  • deb-src http://mirrors.aliyun.com/ubuntu-ports/ focal-security main restricted universe multiverse
  • # 系统更新仓库(稳定版更新,推荐启用)
  • deb http://mirrors.aliyun.com/ubuntu-ports/ focal-updates main restricted universe multiverse
  • deb-src http://mirrors.aliyun.com/ubuntu-ports/ focal-updates main restricted universe multiverse
  • # 回溯仓库(提供旧版本软件包,解决依赖冲突时启用)
  • deb http://mirrors.aliyun.com/ubuntu-ports/ focal-backports main restricted universe multiverse
  • deb-src http://mirrors.aliyun.com/ubuntu-ports/ focal-backports main restricted universe multiverse

  •  
  • 清华源(ARM64适配,学术网络环境优先):
  • deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
  • deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
  • deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
  • deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
  • deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
  • deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
  • deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
  • deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse

  •  

关键说明:ubuntu-ports是ARM架构专属仓库,普通ubuntu仓库仅支持x86,RK3568必须使用ubuntu-ports源。

5)保存并退出nano编辑器

Ctrl+O(保存),按Enter确认,再按Ctrl+X(退出)。

6)更新软件包缓存与系统

# 更新缓存(读取新源的软件包索引,必执行)

sudo apt update

# 升级已安装软件包(可选,确保系统组件为最新稳定版)

sudo apt upgrade -y


 

3. 技术细节与故障排查

1)源文件参数解释

  • deb:二进制软件包仓库(直接安装的.deb文件,开发中常用)。
  • deb-src:源代码仓库(需编译安装时启用,默认可保留)。
  • focal:Ubuntu 20.04的版本代号,22.04为jammy,需根据实际版本替换。

2)常见故障解决

  • 问题1:Could not resolve 'mirrors.aliyun.com'(无法解析域名)

解决:配置DNS,编辑/etc/resolv.conf,添加nameserver 223.5.5.5(阿里云DNS)或nameserver 8.8.8.8(谷歌DNS)。

  • 问题2:E: Unable to locate package xxx(找不到软件包)

解决:确认源地址包含ubuntu-ports,且版本代号与系统匹配;执行sudo apt update刷新缓存。

  • 问题3:GPG error: 签名无效(签名验证失败)

解决:导入镜像源的GPG密钥,以阿里云为例:

wget http://mirrors.aliyun.com/ubuntu/project/ubuntu-archive-keyring.gpg

sudo apt-key add ubuntu-archive-keyring.gpg

二、vim编辑器安装与深度配置(嵌入式开发适配)

1. 技术定位

vim是嵌入式开发的核心编辑器,支持无图形界面操作,适配RK3568的SSH远程开发场景。深度配置需满足:代码缩进规范、语法高亮、错误提示、文件导航等嵌入式开发需求。

2. 安装vim(含依赖补全)

RK3568的Ubuntu Server版默认可能仅安装vi,需手动安装完整vim:

# 安装vim及依赖(含语法支持、Python接口,后续插件需用)

sudo apt install vim vim-gtk3 python3-dev -y

# 验证安装:查看vim版本及支持特性

vim --version | grep -E "python|syntax|indent"


 

3. 基础配置(~/.vimrc文件详解)

vim的配置文件为~/.vimrc(用户级配置,仅对当前用户生效),以下是嵌入式开发专属配置,每个参数附技术说明:

# 1. 显示基础配置

set number                  " 显示行号(嵌入式代码调试需定位行号)

set relativenumber          " 显示相对行号(快速跳转代码块)

set ruler                   " 右下角显示光标位置(列号+行号)

set cursorline              " 高亮光标所在行(避免代码过长找不到光标)

# 2. 编码与换行配置(适配跨平台开发)

set encoding=utf-8          " 默认编码UTF-8(支持中文注释)

set fileencodings=utf-8,gbk " 自动识别文件编码(兼容Windows下的GBK文件)

set nowrap                  " 禁止自动换行(嵌入式代码长行需完整显示)

set linebreak               " 强制换行时在单词边界断开(避免代码拆分)

# 3. 缩进配置(符合Linux内核编码规范)

set autoindent              " 继承上一行缩进(基础缩进功能)

set smartindent             " 智能缩进(代码块{}内自动加缩进)

set cindent                 " C语言专用缩进(适配RK3568驱动开发)

set shiftwidth=4            " 自动缩进时的缩进宽度(4空格,符合内核规范)

set tabstop=4               " Tab键等价于4空格(避免Tab与空格混用冲突)

set expandtab               " 将Tab键转换为空格(提交代码时避免格式错乱)

# 4. 搜索与替换配置

set ignorecase              " 搜索时忽略大小写(快速查找关键词)

set smartcase               " 关键词含大写时区分大小写(精准搜索)

set hlsearch                " 高亮搜索结果(快速定位所有匹配项)

set incsearch               " 增量搜索(输入关键词时实时匹配)

nnoremap <ESC> :nohlsearch<CR><ESC> " ESC键取消搜索高亮(便捷操作)

# 5. 编辑体验优化

set mouse=a                 " 启用鼠标支持(SSH远程连接时可鼠标操作)

set scrolloff=3             " 光标靠近屏幕边缘时自动滚动(避免光标出界)

set wildmenu                " 命令行补全时显示菜单(快速选择命令)

set laststatus=2            " 始终显示状态栏(查看文件类型、编码)

set fileformat=unix         " 默认文件格式为Unix(换行符\n,避免Windows下的\r\n冲突)

# 6. 备份与恢复配置(防止代码丢失)

set backup                  " 启用自动备份

set backupdir=~/.vim/backup " 备份文件存储目录(集中管理,避免杂乱)

set undofile                " 启用持久化撤销(关闭文件后重新打开仍可撤销操作)

set undodir=~/.vim/undo     " 撤销历史存储目录

set undolevels=1000         " 最大撤销步数(1000步,足够日常开发)

# 7. 语法高亮与文件类型识别

syntax enable               " 启用语法高亮(不同语法颜色区分)

syntax on                   " 开启语法高亮

filetype on                 " 自动识别文件类型(.c/.h/.sh自动适配对应语法)

filetype plugin on          " 加载文件类型专属插件(如C文件的编译快捷键)

filetype indent on          " 加载文件类型专属缩进规则(C/Python自动区分)

# 8. 快捷键自定义(嵌入式开发便捷操作)

inoremap jj <ESC>           " 插入模式下按jj快速退出到普通模式(无需按ESC)

nnoremap <C-s> :w<CR>       " 普通模式下Ctrl+S保存文件(Windows习惯适配)

nnoremap <C-f> :set foldmethod=indent<CR> " Ctrl+F折叠代码块(查看大文件结构)

nnoremap <C-u> :set foldmethod=manual<CR> " Ctrl+U取消代码折叠

1)配置文件生效步骤

  1. 创建vim缓存目录(用于存储备份和撤销历史):

mkdir -p ~/.vim/backup ~/.vim/undo

  1. 编辑.vimrc文件并粘贴上述配置:

vim ~/.vimrc

  1. 保存退出(Esc:wq),重新打开vim即可生效。

4. 嵌入式开发必备插件(ARM架构适配)

通过vim-plug插件管理器安装插件,适配RK3568的C/C++驱动开发需求:

1)安装vim-plug

# 下载vim-plug并安装(ARM64架构兼容)

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \

  https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

2)在.vimrc中添加插件配置

.vimrc文件开头添加以下内容(插件列表):

" 开始插件配置(必须以call plug#begin()开头)

call plug#begin('~/.vim/plugged')

" 1. 代码补全插件(C/C++专属)

Plug 'ycm-core/YouCompleteMe' " 智能代码补全(支持语法检查、函数跳转)

" 2. 文件树导航插件(快速浏览项目目录)

Plug 'preservim/nerdtree'

Plug 'Xuyuanp/nerdtree-git-plugin' " 显示git状态(未提交/修改文件标红)

" 3. 语法检查插件(实时提示代码错误)

Plug 'scrooloose/syntastic'

" 4. 代码注释插件(快速添加//或/* */注释)

Plug 'preservim/nerdcommenter'

" 5. Git集成插件(直接在vim中操作git)

Plug 'tpope/vim-fugitive'

" 结束插件配置(必须以plug#end()结尾)

call plug#end()

" 插件额外配置(按需添加)

" NERDTree快捷键:F2打开/关闭文件树

map <F2> :NERDTreeToggle<CR>

" Syntastic语法检查配置(C语言使用gcc检查)

let g:syntastic_c_checkers = ['gcc']

let g:syntastic_enable_signs = 1 " 显示错误标记(行号旁标红)

3)安装插件

  1. 打开vim,输入:PlugInstall(底部显示安装进度)。
  1. 编译YouCompleteMe插件(ARM64架构需手动编译):
cd ~/.vim/plugged/YouCompleteMe

python3 install.py --clangd-completer " 仅安装C/C++补全(节省空间)

注意:编译前需安装依赖sudo apt install build-essential cmake clang

5. 验证vim配置

# 创建一个C语言测试文件(模拟RK3568驱动代码)

vim test_drv.c

输入以下代码,验证语法高亮、缩进、行号显示:

#include <linux/module.h>

#include <linux/kernel.h>

static int __init rk3568_test_init(void) {

    printk(KERN_INFO "RK3568 test driver loaded\n");

    if (1) {

        printk(KERN_INFO "Indent test: 4 spaces\n");

    }

    return 0;

}

static void __exit rk3568_test_exit(void) {

    printk(KERN_INFO "RK3568 test driver unloaded\n");

}

module_init(rk3568_test_init);

module_exit(rk3568_test_exit);

MODULE_LICENSE("GPL");


 

若显示行号、语法高亮正常,输入代码时自动缩进,则配置生效。

三、git版本控制工具安装与嵌入式开发配置

1. 技术定位

git是嵌入式项目的核心版本控制工具,RK3568开发中需通过git管理驱动代码、应用程序代码,实现多版本回溯、团队协作、代码提交审计等功能。

2. 安装gitARM64完整版本)

# 安装git及依赖(含SSH支持、文档)

sudo apt install git git-man git-svn openssh-client -y

# 验证安装(查看版本,RK3568适配git 2.25+)

git --version


 

3. 基础配置(用户身份与编辑环境)

1)配置全局用户信息(提交代码时的身份标识)

# 配置用户名(建议与代码仓库用户名一致)

git config --global user.name "Your GitHub/Gitee Username"

# 配置邮箱(建议与代码仓库绑定邮箱一致)

git config --global user.email "your_email@example.com"


 

2)配置核心编辑与差异对比工具

# 配置默认编辑器为vim(提交说明、合并冲突时使用)

git config --global core.editor "vim"

# 配置差异对比工具为vimdiff(可视化解决合并冲突)

git config --global merge.tool "vimdiff"

git config --global mergetool.prompt false " 解决冲突时不弹出确认提示"

3)配置跨平台兼容性(避免WindowsLinux换行符冲突)

RK3568开发常涉及Windows下编写代码、Linux下编译,需统一换行符:

# 配置默认编辑器为vim(提交说明、合并冲突时使用)

git config --global core.editor "vim"

# 配置差异对比工具为vimdiff(可视化解决合并冲突)

git config --global merge.tool "vimdiff"

git config --global mergetool.prompt false " 解决冲突时不弹出确认提示"

4)配置缓存与性能优化(适配大项目)

RK3568开发的项目可能包含大量驱动文件、静态库,需优化git性能:

# 启用git缓存(加速大文件操作)

git config --global core.fscache true

# 配置提交时忽略空白字符差异(避免误提交空格修改)

git config --global apply.whitespace fix


 

5)查看配置结果(验证配置正确性)

# 查看所有全局配置(按类别排序)

git config --global --list | sort

# 查看单个配置项(如用户邮箱)

git config --global user.email

4. SSH密钥配置(免密访问代码仓库)

RK3568开发中需频繁克隆、提交代码,SSH密钥可避免每次输入账号密码:

1)生成SSH密钥对(ED25519算法,更安全)

# 生成密钥(邮箱为标识,默认存储在~/.ssh/id_ed25519)

ssh-keygen -t ed25519 -C "your_email@example.com"

# 按Enter默认路径,无需设置密码(嵌入式开发板本地操作,无需额外加密)

2)查看并复制公钥(添加到代码仓库)

# 查看公钥内容(复制输出的所有字符)

cat ~/.ssh/id_ed25519.pub

将输出的公钥添加到GitHub/Gitee/GitLab的“SSH密钥”配置中(仓库设置→SSH密钥)。

3)验证SSH连接(确保免密生效)

# 验证GitHub连接(替换为你的仓库地址)

ssh -T git@github.com

# 验证Gitee连接

ssh -T git@gitee.com

输出“Hi XXX! You've successfully authenticated”即表示配置成功。

5. RK3568开发常用git进阶操作

1)项目初始化与克隆

# 本地新建项目并初始化git

mkdir rk3568_drv_project && cd rk3568_drv_project

git init

# 克隆远程仓库(SSH方式,免密)

git clone git@github.com:your-username/rk3568-driver.git


 

2)分支管理(适配多版本开发)

RK3568可能需同时开发稳定版、测试版驱动,需用分支隔离:

# 创建并切换到开发分支(如驱动开发分支)

git checkout -b drv_develop

# 查看所有分支(当前分支标*)

git branch -a

# 合并分支(将开发分支合并到主分支)

git checkout main

git merge drv_develop

# 删除分支(开发完成后)

git branch -d drv_develop


 

3)提交与回滚(嵌入式开发容错)

# 查看文件修改状态

git status

# 添加修改文件到暂存区(.表示所有修改,也可指定文件)

git add .

# 提交代码(备注需详细,如“fix: 修复I2C驱动通信超时问题”)

git commit -m "feat: 添加RK3568 SPI驱动基础框架"

# 查看提交历史(按时间倒序,显示哈希值、作者、备注)

git log --oneline --graph --decorate

# 回滚到上一版本(未推送时使用)

git reset --hard HEAD~1

# 回滚到指定版本(通过git log获取哈希值)

git reset --hard 8f3a2b1


 

4)子模块操作(管理第三方依赖)

RK3568开发可能依赖第三方库(如WiFi驱动、AI算法库),用子模块管理:

# 添加子模块(如添加第三方SPI库)

git submodule add git@github.com:xxx/spi-lib.git libs/spi

# 克隆包含子模块的项目时,同步子模块

git clone git@github.com:your-username/rk3568-project.git

git submodule init && git submodule update


 

5)冲突解决(团队协作必备)

多开发者修改同一文件时可能出现冲突,解决步骤:

# 拉取远程更新(触发冲突检测)

git pull

# 若出现冲突,用vimdiff打开冲突文件

git mergetool

# 编辑文件,保留正确代码,删除冲突标记(<<<<<<、======、>>>>>>)

# 冲突解决后,提交修改

git add .

git commit -m "merge: 解决SPI驱动配置冲突"


 

6. git配置文件备份(开发板迁移必备)

RK3568开发板可能需重新烧录系统,备份git配置避免重复操作:

# 备份全局配置到文件

git config --global --list > ~/git_config_backup.txt

# 恢复配置(新系统中执行)

cat ~/git_config_backup.txt | while read line; do git config --global "$line"; done

四、优化效果验证与性能测试

1. 软件源速度测试

# 安装apt-fast(加速下载工具)

sudo apt install apt-fast -y

# 测试下载速度(安装大型软件包,如gcc-arm-linux-gnueabihf)

sudo apt-fast install gcc-arm-linux-gnueabihf -y


 

国内源下载速度应≥1MB/s(取决于网络环境),远超官方源的10-100KB/s。

2. vim功能验证

# 打开驱动代码文件,验证插件功能

vim ~/rk3568_drv_project/drivers/spi/rk3568_spi.c


 

  • F2打开NERDTree文件树,验证导航功能。
  • 输入struct,验证YouCompleteMe代码补全。
  • Ctrl+F折叠代码块,验证折叠功能。
  • 输入错误语法(如少分号),验证Syntastic语法检查(行号旁标红)。

3. git功能验证

# 克隆ARM架构专属仓库(验证SSH免密与源兼容性)

git clone git@github.com:rockchip-linux/rk3568-linux.git

# 进入仓库,创建测试文件并提交

cd rk3568-linux

touch test_rk3568.txt

git add test_rk3568.txt

git commit -m "test: git配置验证"

# 查看提交记录

git log --oneline

若克隆速度快、提交无报错,且无需输入账号密码,则git配置生效。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐