20231121 rock5b 接入mpu6050模块 驱动成功!感谢https://github.com/LitchiCheng/mpu6050-linux

发布时间 2023-11-22 21:47:19作者: 杨大茄子

我的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............