想使用 spidev 接口编写用户层程序控制 SPI 设备,看firefly的wiki教程和sdk里面的文档思路不清晰,记录一下!!
0.环境
1.ubuntu-20.04
2.kernel-5.10
1.首先在kernel-5.10/arch/arm64/boot/dts/rockchip/rk3588-firefly-itx-3588j.dtsi配置节点信息
添加
&spi1{
status = "okay";
pinctrl-0 = <&spi1m2_cs0 &spi1m2_pins>;
max-freq = <50000000>;
spidev1: spidev@0{
compatible = "rockchip,spidev";
status = "okay";
reg = <0x0>;
spi-max-frequency = <50000000>;
};
};
2.然后在kernel-5.10/drivers/spi/spidev.c中添加节点信息
3. 修改默认内核配置文件
在 kernel 目录下,执行
make menuconfig
然后依次选取Device Drivers>>SPI support>>
最后查看help,
出现如图所示信息表示配置成功。
4.编译kernel
在SDK主目录输入指令
./build.sh kernel
会在主目录下的rockdev文件夹下出现boot.img的分区镜像文件
5.烧写分区镜像
首先连接开发板与虚拟机,按住 recovery 按键上电或复位,开发板进入 Loader 固件烧写模式。
然后输入指令
upgrade_tool ld
可以看到开发板,连接成功。
使用Linux_Upgrade_Tool工具进行烧录。
在kernel目录下输入
sudo upgrade_tool di -b rockdev/boot.img
成功后重启板子。系统运行起来后会在/dev/
目录下生成名为spidev1.0
的字符设备,该设备可以用open、close、write、read、ioctl
去操作。
参考链接
linux烧写分区镜像:
https://wiki.t-firefly.com/zh_CN/Core-3588J/upgrade_firmware.html#an-zhuang-shao-xie-gong-ju
SPI:
https://wiki.t-firefly.com/zh_CN/Core-3588J/usage_spi.html
https://dev.t-firefly.com/forum.php?mod=viewthread&tid=123738&highlight=spi
内核配置:
https://blog.csdn.net/wylwws/article/details/113515093
https://m.elecfans.com/article/2052674.html