s1：CSM400B的SPI简称。

'#'开头的命令为板子执行。
'$'开头的命令为电脑执行。

一、设备树
	不同平台设备树可能有差异，以M3568平台（linux5.10.110）spi0配置模块s1为例：
	...
	&spi0 {
		pinctrl-names = "default";
		pinctrl-0 = <&spi0m1_pins &spi0m1_cs0>;         /* only cs0, so reg can only be configured as 0 */
		status = "okay";
		csm400b_spi: csm400b-spi@0{
			compatible = "zhiyuan,csm400b-spi";
			reg = <0>;
			gpios = <&gpio1 24 0                        /* for rst */
					 &gpio1 25 0>;                      /* for cfg */
			
			interrupt-parent = <&gpio1>;
			interrupts = <RK_PD2 IRQ_TYPE_LEVEL_LOW>;   /* for interrupt GPIO */
			spi-max-frequency = <3000000>;

			gid = <0>;                                  /* if gid = <1> , just using can0, else if gid = <0>, using can0 and can1 */
			status = "okay";
		};
	};
	...
	
	注：1、gid是csm400b的模组号，比如一个M3568接2个csm400b，gid就是用于区分不同的模组。
		2、spi能配置模块，需要配置gpios（需要按顺序填写，先RST，后CFG），还需要配置一个gpio引脚为中断引脚。
		3、spi-max-frequency要设置适当的值，如果过高会导致数据无法收发成功。

二、驱动文件
	1、将CSM400B的驱动csm400b.c、csm400b_spi.c、csm400b.h拷贝到kernel/drivers/net/can目录。
	2、修改kernel/drivers/net/can/Makefile（不要使用obj-y的写法，会影响到驱动）
		+	obj-$(CONFIG_CAN_CSM400B) += csm400b.o csm400b_spi.o
		
	3、修改kernel/drivers/net/can/Kconfig
		+	config CAN_CSM400B
		+		tristate "zlg csm400b to can device"
		+		depends on TTY && SERIAL_DEV_CTRL_TTYPORT && SERIAL_DEV_BUS
		+		help
		+			Support for ZLG CSM400B to CAN interfaces.
		+			This is a CAN device driver which registers as an serial、spi adapter
		+			and gpiochip to expose these functions of the CSM400B.

	
	4、修改linux内核配置make menuconfig
		+	CONFIG_SERIAL_DEV_BUS=y
		+	CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
		+	CONFIG_CAN_CSM400B=y
		
三、使用方法
	1、使能can设备进行收发。
		csm400b驱动加载时会检查模块是否可以正常，如果正常内核log中会出现"spi check ok"相关信息（该信息与uart是互斥的）。
		# dmesg | grep "csm400b"
		...
		csm400b-spi spi0.0 can3: GID = 0, spi check ok.
		...
		
		# ip link set can3 down
		# ip link set can3 type can bitrate 1000000 dbitrate 5000000 fd on
		# ip link set can3 up
		
四、寄存器读写方法
		1、先明确s1对应的设备文件。
		因平台不同，设备对应的文件位置是不确定的，以M3568平台（linux5.10.110）为例：
		# find /sys -name "csm400b-spi"
		/sys/bus/spi/drivers/csm400b-spi
		
		# ll /sys/bus/spi/drivers/csm400b-spi
		...
		spi0.0 -> ../../../../devices/platform/fe610000.spi/spi_master/spi0/spi0.0/
		...
		
		注：	可以看到spi0.0即是配置的csm400b_spi设备。
	
	2、查看或者修改模块寄存器。
		# ls /sys/bus/spi/drivers/csm400b-spi/spi0.0
		channel  driver  driver_override  modalias  net  of_node  power  registers  statistics  subsystem  supplier:platform:fe740000.gpio1  uevent

			
		1、registers文件是用于cat查看、echo修改模块寄存器配置的（echo命令，先寄存器地址，后寄存器值），例：
		# cat registers
		# echo 0x1 0x7 > registers






	
	