第一次接触Station P2这块开发板时,我被它强大的RK3568芯片吸引住了——四核Cortex-A55架构、Mali-G52 GPU,还有Rockchip自家的RGA 2D图形加速引擎。但当我真正想尝试裸机开发时,却发现从Windows环境搭建ARM64交叉编译工具链的过程充满了各种"坑"。这篇文章就是记录我如何从零开始,在WSL2中配置完整的开发环境,最终让第一个裸机程序在Station P2上点亮LED的全过程。
在Windows 10/11上使用WSL2作为开发环境已经成为许多嵌入式开发者的首选。但第一步就遇到了版本选择的难题:
bash复制# 查看已安装的WSL发行版及版本
wsl -l -v
我最初使用的是Ubuntu 16.04,但很快发现这个老版本不仅软件源难以更新,而且WSL1的性能瓶颈明显。经过多次尝试,最终选择了Ubuntu 20.04 LTS + WSL2的组合。以下是关键步骤:
powershell复制dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
powershell复制wsl --set-default-version 2
从Microsoft Store安装Ubuntu后,我发现虚拟机文件默认启用了NTFS压缩,这会导致WSL2无法正常启动。解决方法有两种:
| 解决方案 | 命令/操作 | 优缺点 |
|---|---|---|
| 降级到WSL1 | wsl --set-version Ubuntu-20.04 1 |
简单但性能下降 |
| 取消压缩 | 右键虚拟机目录 → 属性 → 高级 → 取消压缩 | 保持WSL2性能 |
我选择了后者,具体路径在:
C:\Users\<用户名>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_*
进入WSL2的Ubuntu环境后,首先需要安装一些基础开发工具:
bash复制sudo apt update && sudo apt upgrade -y
sudo apt install build-essential make git -y
特别注意:如果更换了清华等国内镜像源,可能会发现某些基础包缺失。建议先使用官方源安装必须工具,再切换镜像源加速后续安装。
默认的/bin/sh链接到了dash,这会导致某些脚本执行异常。修改为bash更符合开发习惯:
bash复制sudo dpkg-reconfigure dash # 选择"No"
ls -l /bin/sh # 确认现在指向bash
针对RK3568的ARMv8架构,我选择了Arm官方提供的aarch64-none-elf工具链。下载地址:
Arm GNU Toolchain
bash复制# 解压工具链
xz -d gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz
tar -xvf gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar -C /opt
将工具链路径永久添加到环境变量中:
bash复制echo 'export PATH=$PATH:/opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf/bin' >> ~/.bashrc
source ~/.bashrc
验证安装是否成功:
bash复制aarch64-none-elf-gcc --version
参考了hceng的RK3399裸机开发项目,虽然芯片不同,但开发思路相通:
bash复制git clone https://github.com/hceng/RK3399.git
cd RK3399/hardware/1_template
关键修改点:
makefile复制PREFIX = aarch64-none-elf-
CFLAGS = -mcpu=cortex-a55 -Wall -O0 -ggdb
bash复制make clean
make
如果一切顺利,将生成rk3568.bin文件,这就是可以在Station P2上运行的裸机程序。通过Rockchip提供的工具将其写入开发板,就能看到LED灯被成功点亮了。
在实际操作中,我遇到了几个典型问题:
解决这些问题需要结合RK3568的参考手册,仔细检查汇编启动代码和链接脚本中的配置。这也是裸机开发最有挑战也最有成就感的部分——完全掌控硬件的感觉令人着迷。