3. 源码获取

好,咱们进入实操环节。源码获取这件事,说白了就是你要先拿到「入场券」。瑞芯微的HAL源码不是公开的,你得有个开发者账号,还得配好工具链。我当年第一次搞的时候,光注册就卡了两天——嗯,这里头有些坑,我帮你踩过了,咱们直接绕过去。

3.1 注册Rockchip开发者账号

先打开瑞芯微的官方开发者网站。我个人习惯用Chrome,兼容性最好。找到右上角的「注册」按钮,点进去。

注册要点:

  • 公司邮箱最好用企业邮箱,QQ邮箱有时候收不到验证码
  • 填写项目信息时,写「嵌入式开发学习」或「HAL驱动开发」都行
  • 注册后需要审核,一般1-2个工作日

我记得有一次帮同事注册,他用的是163邮箱,结果验证邮件死活收不到。后来换成公司邮箱,十分钟就搞定了。你想想看,这其实是因为瑞芯微的邮件网关对某些公共邮箱做了限制。

注册成功后,你会得到一个SDK下载权限。这个权限是分级的,咱们做HAL开发,需要的是「Linux SDK」和「HAL源码」这两个权限。如果发现没有,可以发邮件给support申请,标题写「申请HAL源码访问权限」就行。

3.2 配置Repo客户端

Repo是Google搞的一个工具,用来管理多Git仓库的项目。瑞芯微的HAL源码树有上百个Git仓库,不用Repo的话,你手动clone能累死。

配置步骤其实不复杂,但有几个细节容易翻车:

  1. 安装Repo:sudo apt install repo 或者从Google官方下载脚本
  2. 初始化Repo:repo init -u [你的manifest地址] -b [分支名]
  3. 同步源码:repo sync -j4

我的小技巧:同步时加 -j4 参数,表示4个线程并行下载。网络好的话可以加到 -j8。但别贪多,超过10个反而容易出错。

我曾经在配置Repo时犯过一个低级错误——忘了装Python。Repo是用Python写的,系统里没Python的话,跑都跑不起来。所以第一步先确认:python --version,至少2.7以上。

3.3 同步HAL源码树

这一步是重头戏。HAL源码树的结构,我画了个图,你一看就明白:

HAL源码树根目录 hardware/rockchip vendor/rockchip device/rockchip external/rockchip hal/ (HAL核心层) libhardware/ board/ (板级配置) libcamera/ camera/ display/ audio/ sensor/ 主目录 子模块 具体HAL实现

同步命令很简单:

repo sync -j4 --no-tags

这里加 --no-tags 是为了省带宽。标签信息其实咱们用不上,能省则省。我第一次同步时没加这个参数,多下了将近1GB的标签数据,心疼流量啊。

注意:同步过程中如果网络断了,别慌。重新跑一遍 repo sync 就行,它会断点续传。我曾经同步到90%时断网,重跑后从断点继续,没浪费一点时间。

同步完成后,你会看到类似这样的输出:

Fetching project hardware/rockchip/hal
Fetching project vendor/rockchip/common
...
Syncing work tree: 100% (128/128)

看到这个就说明成功了。整个源码树大概在5-8GB左右,取决于你选的芯片平台。我建议你同步完先看看 hardware/rockchip/hal 这个目录,里面就是咱们要折腾的核心代码。

3.4 验证同步结果

同步完别急着关终端,先做几个检查:

检查项 命令 预期结果
查看仓库数量 repo list | wc -l 100-150个左右
查看HAL目录 ls hardware/rockchip/hal/ 包含camera、display等子目录
查看分支信息 repo info 显示当前manifest分支

我个人习惯同步完先跑一遍 repo status,看看有没有文件冲突。虽然概率很小,但万一有的话,早点发现比写到一半报错强。

避坑指南:我曾经同步完直接开干,结果编译时报找不到头文件。查了半天,发现是同步时网络波动导致某个仓库没拉全。所以建议你同步完再跑一遍 repo sync,确保所有仓库都是完整的。

好了,到这一步,你的开发环境已经搭好了地基。源码在本地,工具链也配齐了。接下来就是真正动手写代码的时候了。

可可精品资料库