This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/processor-SDK-AM335X:需要有关测试 i2c 控制器驱动程序 I2C 超时错误的帮助

Guru**** 2556920 points
Other Parts Discussed in Thread: TPS65217

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/615958/linux-processor-sdk-am335x-need-help-on-testing-i2c-controller-driver-i2c-timeout-error-seen

器件型号:PROCESSOR-SDK-AM335X
主题中讨论的其他器件:TPS65217

工具/软件:Linux

你(们)好

团队
我正在尝试在 Beagle Bone Black 板上测试 i2c-omap.c 驱动程序

我正在使用默认驱动程序存在  

insmod  安装
[techveda@BBBlack:]# insmod i2c-origin.ko
[24.326899]  tps65217 0-0024:TPS65217 ID 0xe 版本1.2
[24.333257]  OMAP_i2c 44e0b000。i2c:总线0 rev0.11、频率为400kHz
[24.356118]  OMAP-i2c 4802a000.i2c:总线1 rev0.11为100kHz
[24.373599]  omap_i2c 4819c000.i2c:100kHz 时的总线2版本0.11
我将使用以下应用程序来测试这种情况
我确信已插入 i2c-OMAP 驱动程序


但是、当我尝试运行应用程序时、我会遇到超时错误
如下所示
错误:write()失败
[techveda@BBBlack:]#./i2c50

成功:打开(3)通过

成功:ioctl (fd、I2C_slave、0x50>>1)通过

执行 EEPROM 写入操作
[172.058433] OMAP-i2c 4in 819c000.i2c:控制器超时
[173.098410] OMAP_i2c 4819c000.i2c:控制器超时
错误:write()失败
[techveda@BBBlack:]#
[techveda@BBBlack:]#

无法根据源链接中的补丁程序确定错误

patchwork.kernel.org/.../

我已将延迟修改为6*1000  
请帮我解决我所附的申请
如果有其他应用需要使用、请告诉我

我只想将内部存在的字节写入 EEPROM 并进行回读

从 dtsi 文件中、我找到 base_eeprom

&i2c2{
pinctrl-names ="默认值";
pinctrl-0 =<&i2c2_PINs>;

状态="正常";
时钟频率=<100000>;

cape eeprom0:capt_eprom0@




@




@54{compatible ="at、24c256";reg =<0x54>;#address-cores =<0x55>;cipro1


=<cipeprom =<0x55>;<ciprom1;<cip_1 = 0x256>=<ciprom1;<ciprom1 =<256;<ciprom1 =<cip_1 =<256;<ciprom1 =<256}<ciprom1 =<ciprom1;cip_1 =<ciprom1;cip_1;
#size-cells =<1>;
cape1_data:capt_data@0{
reg =<0 0x100>;
};
};

capt_eeprom2:capt_eeprom2@56{
compatible ="at、24c256";
reg =<0x56>;
#address-cells =<1>;
#size-cells =<1>;

我的应用是这样的

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 



/* chmod 666 /dev/i2c-0 */
int main (void)
{

//要写入 EEPROM
的数据 unsigned char wbuf[17]={0x00、0x11、0x12、0x13、0x14、 0x15、0x16、0x17、0x18、0x19、 0x1A、0x1B、0x1C、0x1D、0x1E、 0x1f};
unsigned char rbuf[16];
int i2c_addr = 0x54;
int status;
unsigned short int i;

//打开 I2C 设备
int fd = open ("/dev/i2c-2、O_RDWR);
if (fd < 0){
printf ("error:open (%d) failed\n"、SUd");
return -1;return -1;
i2c_dd


(iDfd)、设置 iDCfd (iDC_adfd)、iDCfd (iD/ iDd)
如果(状态< 0)
{
printf ("错误:ioctl (fd、I2C_slave、0x%02x)失败\n"、i2c_addr);
关闭(fd);
return -1;
}
printf ("\nSUCCESS:ioctl (FD、I2C_SLAVE、0x%02x>>>1)传递了\n"、i2c_addr);
//写入 EEPROM
printf ("\n 执行 EEPROM 写入操作\n");
写入(fd、wbuf、16);
睡眠(10);//直到 EEPROM 完成写入
(write (fd、wbuf、16)!= 16){
printf ("error:write () failed\n");
Close (fd);
return -fp (wbuf




)(

1);如果从 EEPROM 写入

操作("subforming (buf"、则为1)、则为1)/printf (wbuf)("printf ("(wbuf);//);/printf (wbuf (wbuf);/n= 1)(从 EEPROM (1);/printf (wbuf (1);/f (wbuf) read()的缓冲区指针初始化失败\n");

}
如果(read(fd,rbuf,16)!= 16){printf("error:
read()failed\n");
close (fd);
return -1;
}
for (i=0;i< 16;i++)
printf("ReadBuffer[%d]%d];return -1"; rfd)\n"preeeeeeee";
eneeeed"




请告诉我可以尝试做什么

谢谢你
Deepak R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    i2c150 i2capp55 mnt
    i2c1nxp50 i2capp5516 nXP
    [techveda@BBBlack:]#./i2capp55
    [92.828457] omap_i2c 4819c000.i2c:控制器超时
    write_to device ():connection timed out
    [93.868437] omap_i2c 4819c000.i2c:controller timed out
    write_to _device():connection_technature# badt
    
    (@
    @
    @v55bad_device#)[timed
    to device: technature_address][timed to bb_reset_address][timed to device: v21bechn_reset_device: v_reset[timed to device](v_reset_address][timed to connection: bechneval_connection_address][timed to device: bechnechnechning]
    
    地址重置不起作用
    [techveda@BBBlack:]#
    [techveda@BBBlack:]#
    [techveda@BBBlack:]#
    [techveda@BBBlack:]#
    [techveda@BBBlack:]#[techveda BBBlack:]#
    [techveda@BBBlack:]#./i2capp5516 [132.498800] random:非阻塞池已初始化
    

    代码如下所示

    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    
    #define DEVICE_PATH "/dev/i2c-2
    
    #define PAGE_SIZE 64
    
    #define DEVICE_ADDR 0x54// 0b101001
    // int addr=0b10101001;
    
    int file_desc;
    char buffer[page_size + 2];//对于地址
    
    void teardownI2C ()
    {
    int 结果= close (file_desc);
    }
    
    void setupI2C()
    {
    file_desc = open (device_path、O_RDWR);
    if (file_desc < 0)
    {
    printf ("%s\n"、strerror (errno));
    退出(1);
    }
    if (ioctl (file_desc、I2C_slave、device_ADDR)< 0)
    {
    printf ("%s\n"、strerror (errno));
    teardownI2C();
    退出(1);
    
    }
    }
    
    int write_to_device (char addr_hi、char addr_lo、char * buf、int len)
    {
    struct i2c_rdwr_ioctl_data msg_rdwr;
    struct i2c_msg i2cmsg;
    char my_buf[page_size + 2];
    if (len > page_size + 2)
    {
    printf ("一次不能写入超过%d 个字节。\n"、page_size);
    返回-1;
    }
    int i;
    my_buf[0]= addr_hi;
    my_buf[1]= addr_lo;
    
    for (i=0;i < len;i++)
    {
    my_buf[2+i]= buf[i];
    }
    MSG_rdwr.msgs =&i2cmsg;
    MSG_rdwr.nmsgs = 16;
    i2cmsg.addr = device_ADDR;
    i2cmsg.flags = 0;
    i2cmsg.len = 2+len;
    i2cmsg.buf = my_buf;
    
    if (ioctl (file_desc、I2C_RDWR、&msg_rdwr)<0)
    {
    printf ("write_to _device():%s\n"、strerror (errno));
    返回-1;
    }
    
    返回0;
    
    }
    
    int read_fin_device (char addr_hi、char addr_lo、char * buf、int len)
    {
    struct i2c_rdwr_ioctl_data msg_rdwr;
    struct i2c_msg i2cmsg;
    
    
    
    if (write_to 设备(addr_hi、addr_lo、NULL、0)<0)
    {
    printf ("read_fin_device():地址复位不起作用\n");
    返回-1;
    }
    
    MSG_rdwr.msgs =&i2cmsg;
    MSG_rdwr.nmsgs = 16;
    
    i2cmsg.addr = device_ADDR;
    i2cmsg.flags = I2C_M_RD;
    i2cmsg.len = len;
    i2cmsg.buf = buf;
    
    if (ioctl (file_desc、I2C_RDWR、&msg_rdwr)<0)
    {
    printf ("read_ffrom _device():%s\n"、strerror (errno));
    返回-1;
    }
    
    
    返回0;
    }
    
    void fill_buffer (char * buf)
    {
    int i = 0;
    while (i < page_size &&*buf)
    {
    Buffer[i+2]=* buf++;
    }
    while (i++< page_size-1)
    {
    Buffer[i+2]='*';//用某种
    内容填充缓冲区}
    }
    
    
    int main()
    {
    
    setupI2C();//setup
    
    fill_buffer ("这里是一些字。");
    WRITE_TO_DEVICE (0x01、0x00、缓冲区、PAGE_SIZE);
    char newbuf[page_size];
    
    if (READ_FIT_DEVICE (0x01、0x00、newbuf、PAGE_SIZE)>0)
    {
    printf ("%s\n"、newbuf);
    }
    
    
    teardownI2C();//清理
    返回 EXIT_SUCCESS
    ;} 

    谢谢你

    Deepak R

    我附加了另一种使用方法

    我收到以下错误、请帮助我解决此问题

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好的团队、您能告诉我任何解决方案! 希望收到回复、请告诉我任何可能的解决方案

    谢谢你
    Deepak R
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    正在等待更新
    请就此提供帮助

    谢谢你
    Deepak R
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Deepak、您好!


    您是否使用基于 BeagleBoneBlack 的 BeagleBoneBlack 板或 AM335x 定制板?

    您是否使用 AM335x TI PSDK? 如果是、那是哪个版本?

    [引用 user="Deepak r"][techveda@BBBlack:]# insmod i2c-origin.ko

    I2C 驱动程序是 kernel/drivers/i2c/bis/i2c-omap.c、默认为内置内核。 您是否将其重新配置为外部内核模块? 什么是 i2c-origin.ko? 请提供完整的引导控制台日志输出。

    I2C 驱动器是通用驱动器、除非添加了新功能、否则不应进行修改。 要测试 I2C 模块、您可以从内置默认 I2C 驱动程序和 I2C 用户空间工具开始、有关详细信息、请参阅以下 wiki:

    processors.wiki.ti.com/.../Linux_Core_I2C_User's_Guide

    另请参阅以下 wiki 页面是否将处于"帮助"中:

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    Pavel 感谢您的支持

    我刚刚将驱动程序从 i2c-omap.c 重命名为 i2c-origin.c 并构建了.ko 文件、当我插入驱动程序时、我发现注册正常

    我已经在使用24c256 EEPROM 的情况下测试了一个 i2c -从驱动程序、但 我要检查此适配器驱动程序功能的工作情况、方法是读取和写入板上内部的基本 EEPROM 、正如我在 dtsi 中提到的那样 文件

    根据我的理解、我在此图上附加了一个图像

    根据注释

     支持 ioctl

    I2C_SLAVE_FORCE 更改从器件地址。 从器件地址为7或10位。 即使地址已经被考虑在内、这也会更改地址。  

    I2C_funcs 获取适配器功能  

    I2C_RDWR

    我要使用的应用是

    I2C_SLAVE_FORCE 更改从器件地址。 从器件地址为7或10位。 即使地址已经被考虑在内、这也会更改地址。  

    I2C_funcs 获得适配器功能 **** 我希望我的应用程序中缺少这些内容。****  可能已发布的内容

    I2C_RDWR

    在这方面、我会测试并更新任何 w.r.t 结果到要为基本 EEPROM 启用的引脚、您能给我提供帮助吗

    我附上了让您了解我的概念的图片

    请告诉我这是否正确

    谢谢你

    Deepak R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    我的重点是 i2c_Detect 工具执行内部 EEPROM base_caperom 读取和写入
    比如、我希望通过应用程序进行类似测试

    任何其他不带 i2ctools 和从器件的用于测试 I2C-OMAP-C 的应用
    谢谢你
    Deepak R
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    附加日志
    说明:I18N
    编译于2014年1月1日、17:13:19。
    端口/dev/ttyUSB0、23:29:05

    按 CTRL-A Z 获取有关特殊键的帮助


    密码:




    登录不正确
    BBBlack 登录:
    U-Boot SPL 2015.01-00001-gb2412df (2015年1月29日- 15:01:06)


    U-Boot 2015.01-00001-gb2412df (2015年1月29日- 15:01:06)、编译:Jenkins-GitHub_Bootloader-Builder-105

    启用看门狗
    I2C:就绪
    DRAM:512 MiB
    MMC:OMAP SD/MMC:0、OMAP SD/MMC:1.
    使用默认环境

    网络: 未设置。 验证第一个电子保险丝 MAC
    CPsw
    按任意键停止自动引导:0
    GPIO:引脚53 (GPIO 53)的值为1
    切换到分区#0,确定
    mmc0是当前器件
    GPIO:引脚54 (GPIO 54)的值为1
    正在检查:/uEnv.txt ...
    正在检查:/boot.scr...
    GPIO:引脚55 (GPIO 55)的值为1
    正在读取 BOOT.SCR
    在4ms 内读取255个字节(61.5 KiB/s)
    从 boot.scr 加载脚本
    GPIO:引脚56 (GPIO 56)的值为1
    正在从 mmc0:1运行 bootscript ...
    ##正在执行82000000的脚本
    正在读取 uImage
    3654176字节读取时间:202ms (17.3 MIB/s)
    读取 AM335x-bonebblack.dTB
    在9ms 内读取32292字节(3.4 mib/s)
    ##从传统映像启动内核,地址为81000000...
    映像名称:Linux-4.4.43
    创建日期: 世界协调时2017年7月9日10:17:18
    映像类型:ARM Linux 内核映像(未压缩)
    数据大小:3654112字节= 3.5 MIB
    加载地址:80008000
    入口点:80008000
    正在验证校验和... 好的
    ###展平设备树团于82000000
    使用0x82000000处的 FDT blob 进行引导
    正在加载内核映像... 好的
    正在将设备树加载到8fff5000,结束8ffe23... 好的

    正在启动内核...

    [0.000000]在物理 CPU 0x0上引导 Linux
    [0.000000]正在初始化 cgroup Subsys cpuset
    [0.000000]正在初始化 cgroup 子系统 CPU
    [0.000000]正在初始化 cgroup Subsys cpuacct
    [0.000000] Linux 版本4.4.43 (Deepak@Deepak-VGN-N31S-W)(gcc 版本4.9.4 (BuildRoot 2017.02)) 3 SMP Mon Jun 26 15:01:56 IS7
    [0.000000] CPU:ARMv7处理器[413fc082]修订版2 (ARMv7)、CR=10c5387d
    [0.000000] CPU:PIPT/VIPT 非混叠数据高速缓存、VIPT 别名指令高速缓存
    [0.000000]机器模型:TI AM335x BeagleBone Black
    [0.000000] CMA:保留0x9e800000处的16 MIB
    [0.000000]内存策略:数据高速缓存写回
    [0.000000] CPU:所有 CPU 均在 SVC 模式下启动。
    [0.000000] AM335X ES2.1 (SGX NEON )
    [0.000000] PERCPU:嵌入式14页/CPU @df916000 s24936 r8192 d24216 u57344
    [0.000000]在区域顺序和移动分组中构建了1个区域列表。 总页数:129408
    [0.000000]内核命令行:console=ttyO0、115200 rw root=/dev/mmcblk0p2 rootwait
    [0.000000] PID 哈希表条目:2048 (顺序:1、8192字节)
    [0.000000]条目高速缓存散列表条目:65536 (顺序:6、262144字节)
    [0.000000] inode 高速缓存散列表条目:32768 (顺序:5、131072字节)
    [0.000000]内存:481932K/522240K 可用(6739K 内核代码、747K rwdata、2244K rodata、452K init、8263K BSS、 23924K 保留)
    [0.000000]虚拟内核内存布局:
    [0.000000] 向量:0xff0000-0xff1000 (4KB)
    [0.000000] Fixmap:0xc00000 - 0xc00000 (3072 KB)
    [0.000000] vmalloc:0xe0800000 - 0x0x800000 (496MB)
    [0.000000] 低内存:0xC0000000 - 0xe0000000 (512 MB)
    [0.000000] pkmap:bfe00000 - 0xC0000000 (2 MB)
    [0.000000] 模块:bbf000000 - bbfe00000 (14 MB)
    [0.000000] .text:0xc0008000 - 0xc08ce184 (8985KB)
    [0.000000] init:0xc08cf000 - 0xc0940000 (452KB)
    [0.000000] .data:0xc0940000 - 0xc09faeb8 (748KB)
    [0.000000] .bss:0xc09fd000 - 0xc120ec30 (8264KB)
    [0.000000]正在运行 RCU 自检
    [0.000000]分层 RCU 实现。
    [0.000000]启用 RCU 锁定检查。
    [0.000000]叶扇出的生成时间调整为32。
    [0.000000] RCU 将 CPU 从 NR_CPU=2限制为 nr_CPU_IDs=1。
    [0.000000] RCU:调整 RCU_Fanout_leaf = 32、nr_cpu_ids=1的几何结构
    [0.000000] NR_IRQ:16 nr_IRQ:16 16.
    [0.000000] IRQ:在0xfa200000 (修订版5.0)处找到具有128个中断的 INTC
    [0.000000] OMAP 时钟事件源:timer2为24000000 Hz
    [0.000013] sched_clock:24MHz 时为32位、分辨率为41ns、每89478484971ns 换行一次
    [0.000034]时钟源:Timer1:屏蔽:0xFFFFFFFF max_cycles:0xFFFFFFFF、max_idle_ns:79635851949 ns
    [0.000080] OMAP 时钟源:Timer1为24000000 Hz
    [0.000928]控制台:彩色虚拟设备80x30
    [0.000986]锁依赖性验证器:版权所有(c) 2006 Red Hat, Inc., Ingo Molnar
    [0.000994]... MAX_LOCKDEP_SUBCLASSES:8.
    [0.001002]... MAX_LOCK_DEPTH: 48
    [0.001009]... MAX_LOCKDEP_KEY: 8191
    [0.001017]... CLASSHASH_SIZE: 4096
    [0.001024]... MAX_LOCKDEP_ENTERINES: 32768
    [0.001031]... MAX_LOCKDEP_链: 65536
    [0.001039]... CHAINHASH_SIZE: 32768
    [0.001046]锁依赖项信息使用的内存:5167 KB
    [0.001054]每个任务结构内存占用量:1536字节
    [0.001080/]校准延迟环路... 996.14茂物剪(lpj=4980736)
    [0.078728] pid_max:默认值:32768最小值:301
    [0.079129]安全框架已初始化
    [0.079246]安装高速缓存散列表条目:1024 (顺序:0、4096字节)
    [0.079260]安装点高速缓存散列表条目:1024 (顺序:0、4096字节)
    [0.082287] Initializing cgroup Subsys IO
    [0.082389]正在初始化 cgroup Subsys 内存
    [0.082481]正在初始化 cgroup 子系统设备
    [0.082608]初始化 cgroup Subsys 冷冻柜
    [0.082686]正在初始化 cgroup 子系统 perf_event
    [0.082753] CPU:测试写入缓冲器一致性:好的
    [0.084228] CPU0:线程-1、CPU 0、套接字-1、mpidr 0
    [0.084347]为0x80008280 - 0x800082f0设置静态标识映射
    [0.088131]带来了1个 CPU
    [0.088153] SMP:总共激活1个处理器(996.14 BogoMips)。
    [0.088163] CPU:所有 CPU 以 SVC 模式启动。
    [0.092274] devtmpfs:已初始化
    [0.127089] VFP 支持 v0.3:实施者41架构3第30部分版本 c 修订版3
    [0.171219] omap_hwmod:tptc0、使用 EDMA 中断开的 dt 数据
    [0.171698] omap_hwmod:tptc1、使用 EDMA 中断开的 dt 数据
    [0.172156] omap_hwmod:tptc2、使用 EDMA 中断开的 dt 数据
    [0.181241] OMAP-hwmod:debugss:_wait_target_disable 失败
    [0.236570]时钟源:Jiffies:MASK:0xFFFFFFFF max_cycles:0xFFFFFFFF、max_idle_ns:19112604462750000 ns
    [0.239191] pinctrl 内核:已初始化 pinctrl 子系统
    [0.244423] NET:注册协议系列16.
    [0.250242] DMA:为原子相干分配预先分配的256 KiB 池
    [0.252309]空闲:使用调速器梯
    [0.252337]空闲:使用调速器菜单
    [0.262205] OMAP GPIO 硬件版本0.1
    [0.285054]没有 ATAG?
    [0.285092]硬件断点:不支持调试架构0x4。
    [0.285670] OMAP4_SRAM_INIT:无法分配处理勘误 I688所需的 SRAM
    [0.285689] OMAP4_SRAM_INIT:无法获取处理勘误 I688所需的 SRAM 池
    [0.311405] EDMA 49000000.EDMA:启用了传统 memcpy、但可能无法正常工作
    [0.328130] EDMA 49000000.EDMA:TI EDMA DMA 引擎驱动程序
    [0.332514] SCSI 子系统已初始化
    [0.334196] pps_core:LinuxPPS API 版本。 1已注册
    [0.334208] pps_core:软件版本 5.3.6 -版权所有2005-2007 Rodolfo Giometti
    [0.334263] PTP 时钟支持已注册
    [0.338373]时钟源:切换到时钟源 Timer1
    [0.481823] NET:注册协议系列2.
    [0.483842] TCP 建立哈希表条目:4096 (顺序:2、16384字节)
    [0.483939] TCP 绑定哈希表条目:4096 (顺序:5、147456字节)
    [0.485130] TCP:配置哈希表(建立4096 BIND 4096)
    [0.485350] UDP 哈希表条目:256 (顺序:2、20480字节)
    [0.485524] UP-Lite 哈希表条目:256 (顺序:2、20480字节)
    [0.486387] NET:注册协议系列1.
    [0.488124] RPC:注册后命名为 UNIX 套接字传输模块。
    [0.488147] RPC:注册的 UDP 传输模块。
    [0.488157] RPC:注册 TCP 传输模块。
    [0.488167] RPC:注册的 TCP NFSv4 4.1反向通道传输模块。
    [0.491078]硬件性能事件:通过 armv7_cortex_A8 PMU 驱动器启用、提供5个计数器
    [0.495580] futex 散列表条目:256 (顺序:2、16384字节)
    [0.495816]审核:初始化 netlink 子系统(已禁用)
    [0.496060]审核:type=2000审核(0.480:1):已初始化
    [0.500962] VFS:磁盘配额 dquot_6.6.0
    [0.501139] VFS:Dquot 高速缓存散列表条目:1024 (顺序0、4096字节)
    [0.503616] NFS:注册 id_resolver 密钥类型
    [0.503990]注册了密钥类型 id_resolver
    [0.504005]注册密钥类型 id_legacy
    [0.504218] jffs2:版本2.2。 (NAND)(摘要)Copyright2001-2006 Red Hat, Inc.
    [0.510003]已注册 IO 调度程序 NOP
    [0.510043]已登记 IO 调度程序的截止日期
    [0.510102]注册的 IO 调度程序 cfq (默认)
    [0.512196] pinctrl-single 44e10800.pinmux:142引脚、PA f9e10800大小568
    [0.514752]串行:8250/16550驱动程序,4个端口,启用 IRQ 共享
    [0.520813] OMAP-UART 44e09000.serial: uart0无 wakeirq
    [0.521440] 44e09000.serial:在 MMIO 0x44E09000 (IRQ = 155、base_baud = 3000000)上的 ttyO0是 OMAP UART0
    [1.238012]控制台[ttyO0]已启用
    [1.279894]返修:模块已加载
    [1.306160]循环:模块已加载
    [1.312152] mtdoops:必须提供 MTD 器件(mtddev=name/number)
    [1.388397] DaVinci_MDIO 4a101000.MDIO:达芬奇 MDIO 修订版本1.6
    [1.394786] DaVinci_MDIO 4a101000.MDIO:检测到的 phy 掩码 FFFFFFFE
    [1.405105] libphy: 4a101000.mdio:探测
    [1.409473] DaVinci_MDIO 4a101000.MDIO:PHY[0]:device 4a101000.MDIO:00、driver SMSC LAN8710/LAN8720
    [1.420310] cpsw 4a100000.以太网:检测到的 MACID = 78:A5:04:FD:E2:d0
    [1.432415] mousedev: PS/2鼠标设备,适用于所有鼠标
    [1.438424] i2c /dev/entries 驱动程序
    [1.443759] omap_hmc 48060000.mmc:获得 CD GPIO
    [1.526117] mmc0:主机不支持只读开关、假设已启用写入
    [1.535123] ledtrig-CPU:注册以指示 CPU 上的活动
    [1.542736]轮廓:使用 ARM/armv7
    [1.547407]正在初始化 XFRM netlink 套接字
    [1.552376] NET:注册协议系列10.
    [1.558962] mmc0:地址59b4处的新高速 SDHC 卡
    [1.567536] mmcblk0:mmc0:59b4 MS 15.0GiB
    [1.577257] SIT:IPv6 over IPv4隧道驱动程序
    [1.584556] NET:注册协议系列17.
    [1.589424] NET:注册协议系列15.
    [1.594480]注册了密钥类型 DNS_旋 变传感器
    [1.599197] OMAP-VOLTGE_LARD_INIT:未添加电压驱动器支持
    [1.605850] SR_DEV_INIT:未为 Smarttreflex0指定电压域。 无法初始化
    [1.614346] SR_DEV_INIT:未为 Smarttreflex1指定电压域。 无法初始化
    [1.623956]支持 ThumbEE CPU 扩展。
    [1.628583]正在注册 SWP/SWPB 仿真处理程序
    [1.633609] SmartReflex 3类已初始化
    [1.639561] mmcblk0:P1 P2
    [1.656416] hctosys:无法打开 RTC 设备(rtc0)
    [1.661871] SR_init:无 PMIC 挂钩以初始化 SmartReflex
    [1.667385] SR_init:SR 的平台驱动程序寄存器失败
    [1.703847] EXT4-FS (mmcblk0p2):使用 ext4子系统安装 ext3文件系统
    [1.732753] mmc1:未设置 MAN_BKOPS_EN 位
    [1.742452] mmc1:地址0001处的新高速 MMC 卡
    [1.753142] mmcblk1:mmc1:0001 MMC04G 3.66 GiB
    [1.759628] mmcblk1boot0:mmc1:0001 MMC04G 分区1 1.00 MIB
    [1.766781] mmcblk1boot1:mmc1:0001 MMC04G 分区2 1.00 MIB
    [1.776164] mmcblk1:P1 P2
    [1.903479] EXT4-FS (mmcblk0p2):恢复完成
    [1.922601] EXT4-FS (mmcblk0p2):已安装文件系统、具有有序数据模式。 OPTS:(空)
    [1.931339] VFS:在设备179:2上安装了根(ext3文件系统)。
    [1.964759] devtmpfs:已安装
    [1.968837]释放未使用的内核内存:452K (c08cf000 - c0940000)
    [2.754071] Net eth0:正在初始化 cpsw 版本1.12 (0)
    [2.762268] net eth0: Phy found : id is : 0x7c0f1.
    [2.767298] libphy:找不到 Phy 4a101000.mdio:01
    [2.772396] net eth0:PHY 4a101000.MDIO:01未在从器件1上找到
    [2.787283] IPv6:ADDRCONF (NETDEV_UP):eth0:链路未就绪

    BBBlack 登录:techveda
    登录:无法将目录更改为"/root"
    1月1日00:00:10登录[89]:'ttyO0'上的 root 登录
    [techveda@BBBlack:]#


    2c1nxp50 i2capp5516 NXP
    [techveda@BBBlack:]# insmod i2c-origin.ko
    [103.609100] tps65217 0-0024:TPS65217 ID 0xe 版本1.2
    [103.615332] OMAP_i2c 44e0b000。i2c:400kHz 时的总线0版本0.11
    [103.637587] OMAP_i2c 4802a0.i2c:100kHz 时的总线1 rev0.11
    [103.655261] OMAP_i2c 4819c000.i2c:100kHz 时的总线2版本0.11
    [techveda@BBBlack:]# dm[134.718629] random:非阻塞池已初始化


    dmesg

    [2.772396] net eth0:PHY 4a101000.MDIO:01未在从器件1上找到
    [2.787283] IPv6:ADDRCONF (NETDEV_UP):eth0:链路未就绪
    [103.609100] tps65217 0-0024:TPS65217 ID 0xe 版本1.2
    [103.615332] OMAP_i2c 44e0b000。i2c:400kHz 时的总线0版本0.11
    [103.637587] OMAP_i2c 4802a0.i2c:100kHz 时的总线1 rev0.11
    [103.655261] OMAP_i2c 4819c000.i2c:100kHz 时的总线2版本0.11
    [134.718629] random:非阻塞池已初始化
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否使用基于 BeagleBoneBlack 的 BeagleBoneBlack 板或 AM335x 定制板?

    您是否使用 AM335x TI PSDK? 如果是、那是哪个版本?

    [引用 user="Deepak r"]

    我刚刚将驱动程序从 i2c-omap.c 重命名为 i2c-origin.c 并构建了.ko 文件、当我插入驱动程序时、我发现注册正常

    我已经在使用24c256 EEPROM 的情况下测试了一个 i2c -从驱动程序、但 我要检查此适配器驱动程序功能的工作情况、方法是读取和写入板上内部的基本 EEPROM 、正如我在 dtsi 中提到的那样 文件

    根据我的理解、我在此图上附加了一个图像

    [/报价]

    为什么要将 I2C OMAP 驱动程序(i2c-omap.c)用作外部内核模块? 默认情况下、它内置在内核、在中配置:

    linux-kernel/arch/arm/configs/tisdk_am335x-evm_defconfig

    CONFIG_I2C_OMAP=y

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    Pavle

    感谢您的支持

    我正在使用 busybox 构建内核和其他 rootfs、并构建所使用的 root 和 Linux 版本为4.4.43

    但我的问题是在不支持从器件/i2c-tools 的情况下测试适配器驱动程序

    例如、我在 makefile 中进行更改以启用、也在 menuconfig 中进行更改

    从用户空间的 i2c 应用中检查 i2c-omap.c 的可能方法是什么

    这是否意味着仅使用从器件/i2ctools 测试适配器驱动程序功能  

    如果我遗漏了一些东西、请帮助我理解


    Hope i2c-tools 也适用于默认情况下的 EEPROM (CAP_EEPROM)

    谢谢你

    Deepak R  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、我已经在 i2c/bus/Makefile 中的 make 文件中进行了更改、注释为 I2C-OMAP.C、以便我可以加载驱动程序并测试此文件(i2c-OMAP.c)

    谢谢你
    Deepak R
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Deepak r"]我正在使用 busybox 构建内核和其他 rootfs,并生成所用的 root 和 Linux 版本为4.4.4.43

    似乎您没有使用 TI SDK。 您是否仍然使用 Arago TI Linux? 从何处获取此4.4.43内核?

    有关 I2C C 应用、请参阅以下链接:

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Deepak r"]

    但我的问题是在不支持从器件/i2c-tools 的情况下测试适配器驱动程序

    例如、我在 makefile 中进行更改以启用、也在 menuconfig 中进行更改

    从用户空间的 i2c 应用中检查 i2c-omap.c 的可能方法是什么

    这是否意味着仅使用从器件/i2ctools 测试适配器驱动程序功能  

    [/报价]

    是的、您也可以从 I2C C 应用程序测试 EEPROM、而不仅仅是从 i2c-tools 测试 EEPROM

    此致、
    帕维尔