我的rock5b安装的其radxa官方OS,里面有一个rsetup程序的overlay功能可以管理设备树,
我想根据 https://github.com/LitchiCheng/mpu6050-linux 来尝试连接一个6050;
先 rsetup 里面的overlay管理 开启 i2c8-m4 设备节点,之后在 /boot/dtco
i2c8-m4 设备节点已经启用
现在我想利用rsetup的overlay 添加第三方节点文件的功能给i2c8-m4添加6050子节点;
rock@rock-5b:/boot/dtbo$ dtc -I dtb -O dts rk3588-i2c8-m4.dtbo -o ~/i2c8-m4.dts
这里我用dtc反编译出节点源文件,dtc命令的 -I dtb意思是输入文件类型是二进制节点文件, -O dts的意思是输出文件类型是设备树节点源文件,-o 后面跟输出文件名字;
~/i2c8-m4.dts 内容是这样;
vi修改后:
我插入6050子节点;
然后:
这是查看overlays info 发现有2个。。。
reset overlay不行,重启后还是那样
但是/boot/dtbo内容发生变化,跟芯片和板子无关的文件消失了
然后删除第一个 .dtbo
重新查看overlay info 时 显示这个,切换到rock用户时正常了。。。。
切换到radxa用户也能显示出内容,root用户就是unable。。。
重新修改一下源文件,把名字修改一下以区别
mv i2c8-m4.dts i2c8-m4-6050.dts 文件名也改一下;
重新添加
rsetup
如果取消启用6050overlay,则相应文件名加一个.disabled
没有reboot命令,原来PATH没有加/sbin;
rock@rock-5b:~/Documents/work20231121$ git clone https://github.com/LitchiCheng/mpu6050-linux.git
下载源码
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.201.tar.xz 太慢了。。。
sudo apt install tftpd-hpa
mkdir /tftp && chmod 777 -R /tftp
rock@rock-5b:~/Documents/work20231121$ vi /etc/default/tftpd-hpa
lsof -i -P
这下我的Macmini可以 tftp 了
tftp 太坑了,不能put上传文件,有点麻烦
尝试mac开启http下载服务: 直接在相关目录运行:python -m http.server ;
这下我的rock5b开发板直接下载Macmini的文件,快得一笔了
tar -Jxvf linux-5.10.201.tar.xz 解压
把mpu6050.c的makefile改成
# kbuild part of makefile obj-m := mpu6050.o #the following is just an example #ldflags-y := -T foo_sections.lds # normal makefile KERNEL_SRC ?= /lib/modules/$(shell uname -r)/build all default: modules install: modules_install modules modules_install help clean: $(MAKE) -C $(KERNEL_SRC) M=$(shell pwd) $@
apt install linux-headers-$(uname -r) #安装在 /usr/src/linux-headers-$(uname -r) ;符号链接 /lib/modules/$(uname -r)/build 指向它;
makefile中的命令前面必须以tab开头不然报错: Makefile:19: *** missing separator. Stop. 操
报错,找不到文件;我注释掉那个include后没这个错了。报另一个错:
注释掉该行后,编译通过!
加载模块: insmod mpu6050.ko
rock@rock-5b:~/Documents/work20231121/mpu6050-linux$ insmod mpu6050.ko
-bash: insmod: command not found 这他妈
/sbin/insmod mpu6050.ko 可以,还是PATH的事;
dmesg 查看到输出:
我现在把6050模块接上 电源接3.3v pin1,GND接pin39 SCL接pin32,SDA接pin7;rmmod then insmod oncetime;
感觉好像有点接近成功了。。。。。。
编译demo
是缺少c语言库, sudo apt-get install build-essential 下载好慢,为什么几十kb的速度啊
Demo 编译通过!
没有获取到数据呢。。。。重新拔插6050 然后重新insmod,然后运行demo成功获取到数据了;
N.........B............
标签:rock5b,20231121,linux,mpu6050,m4,i2c8,rock,节点 From: https://www.cnblogs.com/yangdinshan/p/17847741.html