AM335X 添加 SPI 设备(以添加 spi flash 为例)

来源:互联网 发布:如花照片软件 编辑:程序博客网 时间:2024/06/16 08:38

由于 spi 设备经常用到,而在 myd-am335x 的开发板上没有 spi 设备,所以内核里也没有 spi设备的注册信息,对内核不熟悉的童鞋想要添加自己的 spi 设备时可能会感觉无从下手

折腾了一下下,在myd-am335x的 spi1 上添加了一个 spi 的设备,但由于 myd-am335x 上没有 spi 设备,所以没有验证是否可行,但至少在 /dev/ 目录下有 spidev2.0 出来了,说明 spi设备已经注册成功,接下来就是调试的事了

步骤如下


1. 首先想要用 spidev,就得把 spidev 加载到内核里,在Linux内核源码的根目录下运行:

make ARCH=arm menuconfig

    依次选择
Device Drivers --->
         SPI support--->
                <*>McSPI driver for OMAP
                <*>User mode SPI device driver support

   注意:这些都要选上
   
2. 在 arch/arm/mach-omap2/board-am335xevm.c 文件里添加 spi1的引脚配置
  (注意 ,在myd-am335x上,spi1 的引脚跟McASP 的引脚复用,所以用 spi1 就不能使用 McASP)
   
1
2
3
4
5
6
7
8
staticstruct pinmux_config spi_pin_mux[] = {
    {"mcasp0_aclkx.spi1_sclk", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL |AM33XX_INPUT_EN },
    {"mcasp0_fsx.spi1_d0", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL |AM33XX_PULL_UP | AM33XX_INPUT_EN},
    {"mcasp0_axr0.spi1_d1", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL |AM33XX_INPUT_EN},
    {"mcasp0_ahclkr.spi1_cs0", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL |AM33XX_PULL_UP | AM33XX_INPUT_EN},
    {NULL, 0},
};


3. 添加 spi 设备及注册函数
   
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
staticstruct spi_board_info am335x_spi1_slave_info[] ={
    {
        .modalias     ="spidev",// 用来匹配 spidev 驱动
        .max_speed_hz  = 1000000,// 最大速率
        .bus_num      = 2, // 表示该设备在 spi1 总线上
        .chip_select   =0, // 表示使用 spi1_cs0
    },
};
 
staticvoid spi_init(intevm_id, int profile)
{
    
    setup_pin_mux(spi_pin_mux);
    spi_register_board_info(am335x_spi1_slave_info,
                            ARRAY_SIZE(am335x_spi1_slave_info));
 
    return;
}


4. 在设备初始化列表里添加该函数的调用,和注释掉 McASP 函数,如下所示
  
1
2
3
4
5
6
7
staticstruct evm_dev_cfg myd_am335x_dev_cfg[] = {
    // ..............
    //{mcasp0_init,  DEV_ON_BASEBOARD,PROFILE_ALL},                                                                               
    {spi_init,     DEV_ON_BASEBOARD, PROFILE_ALL},
    // ..............
    {NULL, 0, 0},
};


5. 重新编译内核,并用该内核启动开发板后,就可以在 /dev/ 目录下看到 spidev2.0 设备结点了
  
11:52:11.png
0 0
原创粉丝点击