瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工藝,搭載一顆四核Cortex-A55處理器和Mali G52 2EE 圖形處理器。RK3568 支持4K 解碼和 1080P 編碼,支持SATA/PCIE/USB3.0 外圍接口。RK3568內置獨立NPU,可用于輕量級人工智能應用。RK3568 支持安卓 11 和 linux 系統,主要面向物聯網網關、NVR 存儲、工控平板、工業檢測、工控盒、卡拉 OK、云終端、車載中控等行業。
第195章 實踐:移植官方mcp2515驅動
在前面的章節中從零編寫了一個mcp2515的驅動程序,旨在對SPI驅動相關的知識進行學習,但實際上mcp2515的驅動程序在內核中已經提供了,在本章節將會講解如何移植官方mcp2515驅動。
195.1 內核和設備樹配置
Linux內核源碼中默認已經有了MCP2515的驅動程序,驅動具體路徑為“linux_sdk/kernel/drivers/net/can/spi/mcp251x.c”,所以只需要在make menuconfig圖形化配置界面選中即可。
> Networking support
> CAN bus subsystem support
> CAN Device Drivers
> CAN SPI interfaces
<*> Microchip MCP251x and MCP25625 SPI CAN controllers
然后在kernel/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi設備樹中添加如下節點:
&spi0 {
status = "okay";
pinctrl-0 = <&spi0m1_cs0 &spi0m1_pins>;
pinctrl-1 = <&spi0m1_cs0 &spi0m1_pins_hs>;
mcp2515: mcp2515@0 {
compatible = "microchip,mcp2515";
reg = <0>;
spi-max-frequency = <10000000>;
interrupt-parent = <&gpio0>;
interrupts = ;
pinctrl-names = "default";
pinctrl-0 = <&mcp2515_int>;
clocks = <&clk8m>;
status = "okay";
};
clk8m: clk8m {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <8000000>;
};
};
然后在pinctrl節點下添加以下內容
mcp2515-gpio{
mcp2515_int:mcp2515-int {
rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
保存修改配置,然后重新編譯內核鏡像,修改好的設備樹以及編譯好的內核鏡像存放路徑為“iTOP-3568開發板\03_【iTOP-RK3568開發板】指南教程\02_Linux驅動配套資料\04_Linux驅動程序\121_mcp2515_08”。
195.2 運行測試
首先需要確保燒寫的是上一小節修改編譯出來的內核鏡像,系統啟動之后,輸入“ifconfig -a”命令,如下圖所示,可以看到生成的can1設備。
接下來輸入以下命令進行回環測試:
ip link set can1 down
ip link set can1 type can bitrate 250000
ip link set can1 type can loopback on
ip link set up can1
candump can1 -L &
cansend can1 123#1122334455667788
如上圖所示,發送和接收的數據是一樣的,說明回環測試成功!
至此,移植官方MCP2515驅動實驗完成!
————————————————
版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
原文鏈接:https://blog.csdn.net/BeiJingXunWei/article/details/140181160
-
soc
+關注
關注
38文章
3978瀏覽量
216705 -
SPI
+關注
關注
17文章
1645瀏覽量
90473 -
瑞芯微
+關注
關注
23文章
367瀏覽量
51005 -
RK3568
+關注
關注
4文章
470瀏覽量
4632
發布評論請先 登錄
相關推薦
評論