我是这个设备:Station P2, 下面的链接说里面的板子是 ROC-RK3568-PC ,但是好像这个板子做了两个版本的电路板。
https://download.t-firefly.com/product/Board/RK356X/Document/Hardware/ROC-RK3568-PC/Specification/CN/ROC-RK3568-PC-开源主板-规格书.pdf
想在这个设备上玩裸机开发,了解了下这个板子的参数:
CPU :
RK3568 A55 => ARMv8 ARM64
GPU :
Mali G52 2EE => 3D实现了 opengl ES,内带 Rockchip 自家的 RGA 2D图形加速引擎(主要想玩这个2D加速)
其它:
各种常见接口,以及支持 4K 的 HDMI2.0a
编译环境是 Win10 WSL ,这个是 windows 中的 linux 环境(ubuntu)
==============================================================================================
------1).
在控制面板->程序与功能->启动或关闭Windows功能中安装 “适用于 Linux 的 Windows 子系统” 和 "虚拟机平台"
------2).
C:\Users\lenovo>dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
从
部署映像服务和管理工具
版本: 10.0.19041.844
映像版本: 10.0.19043.1466
启用一个或多个功能
[==========================100.0%==========================]
------3).
C:\Users\lenovo>wsl -l -v
NAME STATE VERSION
* Ubuntu-16.04 Running 1
据说 VERSION == 1,用起来会很慢, 如果需要,可以用下面的指令把 wsl 更新成 wsl2 ,但不一定成功!!
wsl.exe --set-version Ubuntu-16.04 2
查看wsl1和wsl2的区别:
https://docs.microsoft.com/zh-cn/windows/wsl/compare-versions
https://docs.microsoft.com/zh-cn/windows/wsl/basic-commands
如果觉得wsl中的 Ubuntu-16.04 版本太老,可以在开始菜单旁边的搜索框内搜索 ubuntu , 然后卸载掉 Ubuntu-16.04
再打开Microsoft Store搜索Ubuntu,安装Ubuntu20.04(需要 microsoft 账户登录)。
------4).
启用完成后, CTRL + R, 运行 bash 指令即可调出 Ubuntu shell。
mount 指令可以查看 ubuntu shell 把 Windows 下的 C D E F 等各个盘挂载到哪个目录了
lenovo@HFWin10:/mnt/c/Users/lenovo$ mount
C:\ on /mnt/c type drvfs (rw,noatime,uid=1000,gid=1000,case=off)
D:\ on /mnt/d type drvfs (rw,noatime,uid=1000,gid=1000,case=off)
E:\ on /mnt/e type drvfs (rw,noatime,uid=1000,gid=1000,case=off)
-----5).
从Microsoft Store 安装的 Ubuntu, 其对应的虚拟机文件默认是压缩的,
而wsl2不支持开了压缩的虚拟机, 所以要么切换回wsl1,要么取消虚拟机压缩
切换回wsl1:wsl.exe --set-version Ubuntu-20.04 1
取消压缩:
打开 C:\Users\你的用户目录\AppData\Local\Packages\
搜索 CanonicalGroupLimited , 搜索结果列表中就是你安装的虚拟机目录, 比如:CanonicalGroupLimited.Ubuntu20.04onWindows_***
如果虚拟机处于压缩状态,其文件夹图标的右上角会有两个对挤的箭头,
右击 -> 属性 -> 常规 -> 高级 -> 取消勾选 压缩内容以便节省磁盘空间 这一项 -> 确定
因使用习惯,需要这样将Ubuntu shell由dash修改为bash
sudo dpkg-reconfigure dash ,再选择No,确定
lenovo@HFWin10:/mnt/c/Users/lenovo$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Jan 17 20:51 /bin/sh -> bash
我最后是这样子的环境:
--------------------------------------------------------------------
C:\Users\lenovo>wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Stopped 2
C:\Users\lenovo>bash
lenovo@HFWin10:/mnt/c/Users/lenovo$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Jan 17 21:43 /bin/sh -> bash
在这个 ubuntu shell环境中搭建arm64编译环境:
==============================================================================================
安装make
sudo apt install make
如果需要,可以更新系统软件源列表,以便使用国内的软件源(比如清华的,这样安装软件快一些)
从 https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 获取对应的软件源列表
覆盖掉 Ubuntu 的软件源配置文件 /etc/apt/sources.list 。
【注意:清华的软件源里面没有make!!, 所以把安装make放到最前面】
【注意:开始 -> 运行, \\wsl$ 可以读取 wslUbuntu 中的 /etc/apt/ 等文件,但没有权限更改】
然后:
sudo apt-get update
sudo apt-get upgrade
下面开始搞交叉编译工具:
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads
我下载的这个:gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz
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
把下面指令运行一次,同时把这个指令加入到 ~/.bashrc 中
PATH=$PATH:/mnt/e/Dev/EE/Rockchip/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf/bin
这次裸机开发,99%参考了这个项目:
https://hceng.cn/2018/08/16/RK3399——裸机大全/
https://github.com/hceng/RK3399/tree/master/hardware/
里面有几个裸机代码的例子,其中第一个 "1_template" 是点LED的,不可以直接编译
试着编译一下其中的 "3_irq" 这个例子,当做测试检查编译环境是否已搭好。
因为环境不完全相同, 所以工程里面有需要调的地方,如下:
Makefile 文件中第一行改成 PREFIX=aarch64-none-elf-
make rk3399.bin
编译成功,说明环境没问题了。