张靖 20151029 开源精神
说明:1、zlg9518s串口驱动在/dev下挂载串口驱动节点,需要在arch硬件层加上platform总线结构体,用于匹配新增加的串口驱动与串口设备。
2、zlg9518s调用spi接口的方式不是注册spi设备驱动,而是调用spi核心层的接口,调用方法参考spi设备驱动层(spi驱动分3层:控制器驱动spi_mxs.c-->核心层spi.c<--设备驱动spidev.c,其中设备驱动是调用spi接口直接操作外设的最终层,相当于我们的zlg9518s串口驱动这的spi操作部分功能,我们以这个文件为基础来操作spi,但是我们不需要它注册spi设备的那部分)
3、linux内核代码:周立功EasyARM-i.MX287A,http://doc.zlg.cn/zip/EasyARM-i.MX280A_283A_287A_cd.zip
要修改的其它文件(我的硬件平台是i.MX287):
增加总线,以便可以匹配zlg9518s的名称,改动这部分编译后要在板子上重新烧linux内核,然后才能insmod驱动
arch/arm/plat-mxs/device.c
arch/arm/mach-mx28/serial.c
新增加的文件
driver/serial/zlg9518s_serial.c
driver/serial/zlg9518s_serial.h
driver/spi/zlg9518s_spidev.c
附注:
1、编译驱动前要先编译内核,make uImage -j8, make menuconfig都通过(事先装好linux系统,设置好交叉编译器,此处略去),然后编译内核模块
obj-m := helloworld.o
make -C /home/robot/share/linux-2.6.35.3_20151026 SUBDIRS=/home/robot/share modules
前一个路径为开发板linux源码路径,后一个路径为你驱动代码zlg9518s_serial.c的路径,路径中都不能包含中文
2、查看模块insmod zlg9518s_serial.ko挂载驱动后的调试信息
dmesg
3、查看驱动的节点
cat /proc/devices,proc文件夹是运行时访问内核数据的接口;/sys与/proc类似,但是更优化
4、有U-boot的情况下通过网络升级uImage(串口用于命令行)(如果板子没有U-boot,请自行寻找其它烧写linux系统的方法)
内核make uImage-->板子上电串口一直回车进uboot-->打开tftpd32.exe软件设置tftp服务器,在根目录下放uImage文件-->设置板子ip: setenv ipaddr 192.168.99.198-->设置电脑ip: setenv serverip 192.168.99.185-->saveenv-->uboot测试网络: ping 192.168.99.185-->run upkernel升级内核-->reset重启
板子ip和电脑ip可任意设置,只要在一个ip段就可以(此处为.99)
5、spi初始化函数在arch/arm/mach-mx28/device.c
static void __init mx28_init_spi(void),默认只初始化spi3,你可以选择初始化其它spi