问题背景:本人开发板使用的是迅为iTOP4412精英版,额外购买的CAN/485模块,如下图:

750fcaca52ce9d2388a2eecc8b8b1f68.png

但是插上模块之后,在终端使用ifconfig can0命令发现开发板读不到CAN设备,显示“ifconfig: SIOCGIFFLAGS: No such device”。如下图:

5b8bb309a652a8e318c386da440afb27.png

在重新配置内核后,可以读出CAN的设备来了。如下图

963bb493b26cd1edc9437f8c50fa6f73.png

配置方法如下:

(1)打开官方搭建好环境的Ubuntu,进入内核目录

(2)在内核目录下输入命令“make menuconfig”进入内核配置界面

a042175e25289f13676ae3670c4388b5.png

(3)因为CAN总线是GPIO上SPI的复用,所以首先要配置SPI。

首先进入“Device Drivers”;

87df47becbcc53f7fa2d02f0e00160e0.png

再进入“SPI Support”

24ffb7242a16c8d0c3463df6cd1419cd.png

选中“GPIO-based Bitbanging SPI Master”和“Samsung S3C64XX series type SPI”

424c39bcabe25252bc4a5925e1294722.png

取消选中“RC522 Module driver support”(防止占用CAN端口)

cf8831d61efa688334bff55d6136d604.png

(4)回到主界面,进入“Networking Support”

a08ed648359868df2ba6cfac8f729ae9.png

进入“CAN bus system support”

f4f70483f0cf43d911a22e2ac17993d3.png

进入“Can Device Drivers”

07c0b9e19b37d6d6295127d2ba6a13bc.png

选中“Platform CAN drivers with Netlink support”,“CAN bit-timing calculation”,“Microchip MCP251x SPI CAN controllers”三项。

b76b6472719090f13a4899b528c3f632.png

(5)退出内核配置界面,询问是否保存对话框选择“Yes”。

(6)使用“make zImage”编译内核后,将内核烧写进开发板即可。

注:如果在编译内核的过程中出现“recipe for target 'arch/arm/mach-exynos/cpu-exynos4.o' failed”的问题,请移步链接:https://www.cnblogs.com/UnfriendlyARM/p/9749144.html

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐