1. 从NVME 启动系统
从官方的文档上看rock5c, 你会有一种看山跑死马的感觉, 因为它在一本正经的胡说八道
怀疑它只是把rock 5b或5a的文档复制过来改一一改
按他们文档上刷nvme的文档,你将永远不可能成功, 因为rock 5c 从emmc或nvme启动,只能二选一
因为pin脚不够用.但是他们文档上没有指出这点, 截止2024-07-27
如果不想买额外的模块,又想从nvme启动系统,唯的一选项是 把系统刷到 sd中,
这里sd卡中有三个分区
然后把sd卡的 第二个分区和第三个分区格式化后,这样当sd卡中的bootloader找不到系统,会尝试从pcie启动
前提是系统已经识别到nvme设备
格式化可以把sd加载到linux,使用fdisk
1
2
3
4
5
6
|
$lsblk #查看是否正常识别sd卡设备
$fdisk /dev/sdc #进入交互式cli
d 2 #删除第二分区
d 3 #删除第三分区
w #保存
q #退出
|
然后把官网下载的镜像烧录到m2, 接入rock5c
启动后应该可以看到系统挂载在nvme
可以买容量比较小的sd卡, 10元以内的, 烧录系统失败也没关系,因第一个分区应该还是成功的,失败了应该不影响使用sd卡作为bootload
这样比较经济实惠
2. 开机不自动WIFI
关闭 钱包服务
kwalletmanager中禁用掉
把wireless网络删除,重新创建 无线连接
设置固定ip地址 为wifi生成一个随机的mac (radxa估计没有买mac地址,所以没有mac地址导致dhcp服务器不会缓存,每次重新开机都是新的ip,真是满满的惊喜)
需要在/config/config.txt中设置
1
|
connect_wi-fi YOUR_WIFI_SSID YOUR_WIFI_PASSWORD
|
如果 是刚刚完系统,可能会有一个before.txt, 也在里面加
3 . ssh服务不自动启动
1
|
sudo systemctl enable ssh
|
4. UART
sudo rsetp
中选择overlays
选择manager 后,进入选择想要的uart,再选择ok, 就会配置对应的uart
然后再选择一下rebuild overlays
如果想确认uart对应的pin脚是哪个, 可以看官方的文档中的硬件目录中的一个表格
也可以在 rsetup
中 overlays目录选择一个 view indo的选项, 选择想查看的功能后,Ok,会逐个显示其pin脚信息
强烈推荐使用 ttys2 ttyS4 ttyS6 (也就是配置界面中前3个uart)
理由: ttys2, ttys4 和 raspberry pi 5 的pin脚是兼容的, ttyS6则可以配置为调试用的串口
1
2
3
4
5
6
7
8
|
sudo rsetup
#树莓派5
#uart0管脚8,10
#uart2管脚7,29
#与rock5c的uart2-m0和uart4-m2 管脚号一样
#uart6-m1主要用作调试用
#所以开这三个串口
|
![image-20240723190240441](image-20240723190240441.png)
ok后, 到同上级菜单选择重新编译,然后重启
重启后会多出三个串口ttyS2
ttyS4
ttyS6
![image-20240723190409492](image-20240723190409492.png)
2,4和树莓派串口的40pin 管脚号可以兼容,6不兼容, 所以把6作为调试用的串口,顺便把波特率改为和树莓派兼容的115200
默认的1500000 太非主流了
![image-20240723190836587](image-20240723190836587.png)
修改完执行
Rock5/hardware/5b/gpio - Radxa Wiki
overlays/arch/arm64/boot/dts/rockchip/overlays/rk3588-fiq-debugger-uart2m2.dts at main · radxa/overlays (github.com)
Rock5/guide/hardware-configuration - Radxa Wiki
Rsetup | Radxa Docs
硬件接口说明 | Radxa Docs
4.1 测试uart的脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# 测试脚本 tst.py
import serial
import argparse
import threading
import time
from datetime import datetime
def send_data(ser):
while True:
current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
ser.write(current_time.encode())
print("Sent: {}".format(current_time))
time.sleep(5) # 每5秒发送一次
def receive_data(ser):
while True:
if ser.in_waiting > 0:
received_data = ser.readline().decode().strip()
print("Received: {}".format(received_data))
def main():
parser = argparse.ArgumentParser(description="Serial port listener and responder")
parser.add_argument('--port', type=str, required=True, help='Serial port to use, e.g., /dev/ttyUSB0 or COM3')
parser.add_argument('--baudrate', type=int, required=True, help='Baud rate for the serial communication')
args = parser.parse_args()
try:
with serial.Serial(args.port, args.baudrate, timeout=1) as ser:
print("Listening on {} at {} baud.".format(args.port,args.baudrate))
# 创建发送和接收线程
send_thread = threading.Thread(target=send_data, args=(ser,))
receive_thread = threading.Thread(target=receive_data, args=(ser,))
# 启动线程
send_thread.start()
receive_thread.start()
# 确保主线程不会提前结束
send_thread.join()
receive_thread.join()
except serial.SerialException as e:
print("Error: {}".format(e))
if __name__ == "__main__":
main()
|
1
2
3
4
|
python -m venv test # 创建一个名为test的python虚拟环境
cd test
source bin/active # 激活python虚拟环境
python -m pip install pyserial #安装 py的串口库, 测试脚本会使用这个库
|
测试脚本用法:
如果当前用户没有在dialout
用户组先添加进去,否则将没有使用/dev/tts 的权限
1
2
3
4
|
$sudo usermod dialout $USER
#需要重启登录一下才生效
#可以用groups 来确认是不是有在这个权限组
$goups
|
,在激活python虚拟环境后,
1
|
sudo chmod +x ./tst.py --port /dev/ttyS2 --baudrate 115200
|
5 . GPIO
可以参考我的博客中raspberry pi 5的gpio部分,都是使用 gpiod,
唯一需要注意的是, raspberry pi 5 40 pin脚上的gpio都是来自gpio chip 4
rock 5c 则是把多个chip 上的pin脚都引到40 pins上面了
还有一个转换规则,
rock 5c 中每个chip 的32pin被分为abcd4组 每组8个Pin
- A 0-7
- B 8-15
- C 16-23
- D 24-31
例如 radxa系统中的GPIO3_B2 对应 gpiod中的 gpio chip1 11 line
>> Home
Comments