分享常用的Kernel Spi 一点调试经验

   分享Kernel 几个常用的Spi Log调试方法。

      平台文件: spi.c

                 /kernel-4.4/drivers/spi/spi.c   ---- 这个是抽象出来的通用接口

                 spi_drv_probe   struct spi_driver

                 Dts的spi组配置

     在刚开始调试时, 降低spi的频率,分平台:

          高通平台, 是一个4-5个不同阶段的频率数组,只能选择组,不能指定具体的。

     比如:drivers/clk/qcom/gcc-msm8916.c

static const struct freq_tbl ftbl_blsp1_qup1_spi_apps_clk_src[] = {
    F(960000, P_XO, 10, 1, 2),
    F(4800000, P_XO, 4, 0, 0),
    F(9600000, P_XO, 2, 0, 0),
    F(15000000, P_GPLL0, 10, 1, 4),
    F(19200000, P_XO, 1, 0, 0),
    F(25000000, P_GPLL0, 12, 1, 2),
    F(50000000, P_GPLL0, 12, 0, 0),
    { }
};

          MTK,在老的平台里,通过spi struct mt_chip_conf结构体里修改;新的平台,在mtk_spi.c平台

     文件下修改,mt_chip_conf结构体有变化

    注意下CS的配置,是高High还是低Low有效,一般情况下,在结构体中可修改。高通Mtk有点不同。

    spi->mode = spi->mode|

    Spi的Tee权限组问题,现在高通,MTK,都对spi配置了Tee的权限限制。高通比较灵活,可以代码

    修改对应的spi index组。MTK就做的比较死,限死哪几组,所以在选型时,需要特别注意,否则无法

    通过软件修改。

     Spi的DMA访问问题,在新的kernel版本中,需要关注DMA的申请类型Flag。

     Spi的数据线主从方向要接对,了解从芯片的规格。是MISO对MISO,还是MISO对MOSI。

     内核中,有一个专门用来Debug的 spi dev0 设备可以测试用。比如MTK平台的spi-mt65xx-dev.c

     struct spi_device_id spi_id_table[] = {    {"spi-ut", 0},

     static DEVICE_ATTR(spi, 0200, NULL, spi_store);
     static DEVICE_ATTR(spi_msg, 0200, NULL, spi_msg_store);

     如果碰到一些奇怪的问题,最简单实用的办法,是抓一个波形,来分析,看下clk,data等信号

   系统有32位和64位兼容,需要同时增加,举例如下:

     .unlocked_ioctl     =  test_ioctl, 
      .compat_ioctl       = compat_ioctl,    // 32位

  需要修改的是指针类型,

typedef struct {
    smart_cmd_t cmd;
    int type;
    u32 inlen;
    u32 inbuf;
    u32 outlen;
    u32 outbuf;  };

    if (copy_from_user(&data, (void __user *)arg, sizeof(smart_cmd_t)))
    {
        TEST_ERR("copy from user failed!\n");
        return ERR_COPY_FROM_USER;
    }
    p_com_data = (smartcard_com_data_t __user *)arg;
    //err = get_user(data.cmd, &(p_com_data->cmd));
    err |= get_user(data.type, &(p_com_data->type));
    err |= get_user(data.inlen, &(p_com_data->inlen));
    err |= get_user(p, &(p_com_data->inbuf));
 

发布了83 篇原创文章 · 获赞 61 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/junwua/article/details/104903761
SPI
今日推荐