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/DRA626:访问 TSC/ADC 控制器外设寄存器:"未处理的故障:在0xcf82c028处的非线性获取(0x1008)上的外部中止内部错误:1008 [#1]"

Guru**** 2589265 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/638755/linux-dra626-access-tsc-adc-controller-peripheral-registers-unhandled-fault-external-abort-on-non-linefetch-0x1008-at-0xcf82c028-internal-error-1008-1

器件型号:DRA626
Thread 中讨论的其他器件:SysConfig

工具/软件:Linux

ADC 硬件 sch:

我访问 ADC 修订版寄存器:

1.set CM_ALWON_ADCTSC_CLKCTRL 寄存器(0x48180000+0x1400+0x1C0)= 0x00000002

读取 ADC 修订寄存器(0x48450000 + 0x00)

在 Linux-2.6.37中,显示错误 日志:“Unhandled fault:external abort on non-linefetch (0x1008) at 0xcf82c028内部错误:1008 [#1]"

为什么?

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

    我会向您介绍并返回。

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

    您是否使用 ti-ezsdk_c6a811x-evm_5_05_01_10/board-support/linux-2.6.37-psp04.07.00.02/?

    在写入0x2和写入0x2之后、您能否检查 CM_ALWON_ADCTSC_CLKCTRL 寄存器中的值? 您能否尝试读取另一个 ADC 寄存器(如 SysConfig/0x10、CTRL/0x40、ADCSTAT/0x44)、是否有相同的错误?

    请提供您的代码供审核。

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

    您好、Pavel:


    SoC:Jacinto5-E DRA628PC71ZKQI 经济学

    是的、我使用的是 ti-ezsdk_c6a811x-evm_5_05_01_10/board-support/linux-2.6.37-psp04.07.00.02/和 u-boot-2010.06-psp04.07.00.02/

    我尝试在 u-boot 或 Linux 内核中读取 SysConfig/0x10、CTRL/0x40、ADCSTAT/0x44、但仍然存在与之前相同的错误。

    中的 u-boot 代码如下:

    printf ("开始测试:\n");
    printf ("之前:cm_ALWON_ADCTSC_CLKCTRL:0x%x\n"、__RAW_READL (CM_ALWON_ADCTSC_CLKCTRL);
    
    //_READON_ADCK_CLK
    (0x2、CM_ADCTRL
    
    )(0x_RAW)
    
    
    ;_ADCTRL (0x_ADCTRL)_RAW (_ADCTRL:_ADCTRL:_RAW)_CLK_CLK_CLK_CLK_CLK_CLK_CLK_CLON (0x20_ENTRL);
    printf ("SysConfig:0x%x\n"、__raW_readl (ADC_base + 0x10));
    printf ("ADCSTAT:0x%x\n"、__raW_readl (ADC_base + 0x44));
    printf ("修订版:0x%x\n"、 _raW_readl (adc_base + 0x00);
    
    printf ("结束测试\n"); 

    U-boot 日志:

    开始测试
    :之前:CM_ALWON_ADCTSC_CLKCTRL:0x30000
    之后:CM_ALWON_ADCTSC_CLKCTRL:0x2 

    中的 Linux 内核代码如下:

    unsigned long * adc_base = ioremap (0x48450000、0x2000);
    if (adc_base = NULL){
    printk ("tSC/adc:无法 ioremap\n");
    return -1;
    }
    
    unsigned long * adc_clkctrl = ioremap (0x48180000+0x1400+0x1c0);
    (在
    tctrc = 0x000x
    
    
    
    之前)、[unsigned ctrl = 0xctrl (n");[unsigned ctrl = 0xctrl = 0xctrl);(在 cprint1)(intrl = 0xctrl = 0xctrl = 0xcycl000x (n1);(在 ctrl = 0xctrl = n1);(在 ctrl = n1)
    adc_clkctrl);
    printk ("之后:adc_clkctrl[0]=0x%x\n"、readl (adc_clkctrl));
    
    printk ("CTRL:0x%x\n"、readl (adc_base + 0x40));
    printk ("SysConfig:0x%x\n"、readl (ADC_base + 0x10));
    
    printk ("ADCSTAT:0x%x\n"、readl (ADC_base + 0x44));
    
    printk ("修订版本:0x%x\n"、 readl (ADC_base + 0x00); 

    内核日志:

    之前:adc_clkctrl[0]= 0x30000
    之后:adc_clkctrl[0]= 0x10002
    未处理的故障:在0xcf82c100处的非线性蚀刻(0x1008)上的外部中止
    内部错误:1008 [#1]
    最后一个 sysfs 文件:
    链接到
    CPU 的模块:0未被污染(2.6.37 #sem 在
    0xc+c+ctrl_cl_cl_cl_cl_cl_cl_release 0x8[#x8[#1ce/tssc
    :0x198_tc+c+c_cl_cl_cl_cl_cl_cl_cl
    ] LR:[ ] PSR:60000013
    sp:ce829f90 IP:ce829ec8 FP:ce829fa4
    R10:00000000 R9:00000000 R8:c002184c
    r7:00000013 R6:c0069488 r5:cf82c000 r4:fa1815c0
    r3:60000013 r2:c03420a8 r1:00000001
    :000000000021 nZCv 模式下 FIQ 上的 IRQ SVC_32 ISA ARM 段内核
    控制:10c5387d 表:80004019 DAC:00000017
    进程交换器(pid:1、栈限制= 0xce8282e8)
    堆栈:(0xce829f90至0xce82a000)
    9f80: c0025e00 c00086b0 ce829fdc ce829f8
    9fa0:c003442c c0021858 00000177 c00086b0 c0069488 00000013 c0025e00 c00086b0
    9fc0:c0069488 00000013 00000000 00000000 829ff4 ce829fe0 c00087486b0 c00000886b0 c000008f000008 c00000886b0 c000008 0000000886b0 c000008 c000008600000008 c000008 c0000086b0 c000008 c000008f 00000000 00000000 000000086ff4 c100000
    


    此致、
    乔汇

     

     

     

     

     

     

     

     

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

    [引用用户="Chaohui Zheng"]

    我尝试在 u-boot 或 Linux 内核中读取 SysConfig/0x10、CTRL/0x40、ADCSTAT/0x44、但仍然存在与之前相同的错误。

    中的 u-boot 代码如下:

    printf ("开始测试:\n");
    printf ("之前:cm_ALWON_ADCTSC_CLKCTRL:0x%x\n"、__RAW_READL (CM_ALWON_ADCTSC_CLKCTRL);
    
    //_READON_ADCK_CLK
    (0x2、CM_ADCTRL
    
    )(0x_RAW)
    
    
    ;_ADCTRL (0x_ADCTRL)_RAW (_ADCTRL:_ADCTRL:_RAW)_CLK_CLK_CLK_CLK_CLK_CLK_CLK_CLON (0x20_ENTRL);
    printf ("SysConfig:0x%x\n"、__raW_readl (ADC_base + 0x10));
    printf ("ADCSTAT:0x%x\n"、__raW_readl (ADC_base + 0x44));
    printf ("修订版:0x%x\n"、 _raW_readl (adc_base + 0x00);
    
    printf ("结束测试\n"); 

    U-boot 日志:

    开始测试
    :之前:CM_ALWON_ADCTSC_CLKCTRL:0x30000
    之后:CM_ALWON_ADCTSC_CLKCTRL:0x2 

    [/报价]

    从您共享的日志中、如果您在 u-boot 阶段成功访问(读取) ADC_TSC 寄存器、则不会清除。 您能否共享完整的 u-boot 日志?

    另请确认 CM_ALWON_ADCTSC_CLKCTRL 寄存器使用的物理地址为0x481815C0、ADC_BASE 使用的物理地址为0x48450000。

    在 u-boot 阶段清除所有内容后、我们可以进入 Linux 阶段。

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    另请注意、DRA62x TRM 中可能存在错误、CM_ALWON_ADCTSC_CLKCTRL 寄存器的物理地址似乎为0x481815BC (而不是0x481815C0)。 您可以使用0x481815BC 地址吗?结果是什么?

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

    没关系、CM_ALWON_ADCTSC_CLKCTRL 寄存器0x481815BC (不是0x481815C0)

     您是否有正确的 DRA62x TRM? 请发送给我、谢谢!

    此致、
    乔汇

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

    不、我的版本不正确。 我的最后一个版本是 SPRUHF4C。 您可以使用"提交文档反馈"按钮请求更改文档。

    此致、
    帕维尔