硬件平台:A20 android系统开发板
LED阵列:控制芯片MAX7219
第一步:配置开发环境,加载spi节点
1.配置内核
# cd /usr/MarsBoard-A20-android-4.2.2-SDK-V2.0/lichee/linux-3.3 //进入源码下的linux内核路径
#make ARCH=arm menuconfig
2.修改spi配置文件
开发上只接出spi0的接口,因此只能配置spi0的接口
;-------------------------------------------------------------------------------
;spi configuration
;-------------------------------------------------------------------------------
[spi0_para]
spi_used = 1 //选中spi0,开发板只给出了spi0硬件接口
spi_cs_bitmap = 1
spi_cs0 = port:PI10<2><default><default><default>
spi_cs1 = port:PI14<2><default><default><default>
spi_sclk = port:PI11<2><default><default><default>
spi_mosi = port:PI12<2><default><default><default>
spi_miso = port:PI13<2><default><default><default>
[spi1_para]
spi_used = 0
spi_cs_bitmap = 1
spi_cs0 = port:PA00<3><default><default><default>
spi_cs1 = port:PA04<3><default><default><default>
spi_sclk = port:PA01<3><default><default><default>
spi_mosi = port:PA02<3><default><default><default>
spi_miso = port:PA03<3><default><default><default>
[spi2_para]
spi_used = 0
spi_cs_bitmap = 1
spi_cs0 = port:PB14<2><default><default><default>
;spi_cs1 = port:PB13<2><default><default><default>
spi_sclk = port:PB15<2><default><default><default>
spi_mosi = port:PB16<2><default><default><default>
spi_miso = port:PB17<2><default><default><default>
[spi3_para]
spi_used = 0
spi_cs_bitmap = 1
spi_cs0 = port:PA05<3><default><default><default>
spi_cs1 = port:PA09<3><default><default><default>
spi_sclk = port:PA06<3><default><default><default>
spi_mosi = port:PA07<3><default><default><default>
spi_miso = port:PA08<3><default><default><default>
[spi_devices]
spi_dev_num = 1
[spi_board0]
modalias = "spidev"
max_speed_hz = 4000000
bus_num = 0 //bus_num要对应spi
chip_select = 0
mode = 0 //
3.编译打包固件,并烧写固件
在lichee目录下:#./build.sh -p sun7i_android
进入lichee/out 可以看到 zImage
进入android根目录:
#source build/envsetup.sh
#lunch
#16
#extract_bsp
#make -j4
#pack
最后就会在 lichee/tools/pack 中生成我们最终的固件
将最终固件sun7i_android_wing-marsboard.img 使用phoenixsuit 工具对开发板刷机
4.上电启动
系统启动后通过 adb shell 连接系统终端,可看到在/dev 看到 spidev0.0的设备节点,0.0 就是
spi_board_info 中设置的.bus_num 和.chip_select 的值的组合。在 spidev 中,spidev 驱动注册会和相应的 spi
从设备绑定,也就是说 spidev 对应的是一个实际的从设备。spidev 注册成字符设备,可以方便的使用其提
供的标准 read/write/ioctl 等功能函数对 spi 从设备进行读写和设置等操作,设备的全双工半双工都得以实
现。
第二步:IO控制驱动模块编译、加载
1.编写代码
# cd /usr/MarsBoard-A20-android-4.2.2-SDK-V2.0/lichee/linux-3.3/drivers/
#sudo mkdir ctl_io