AnsweredAssumed Answered

Unhandled fault: external abort on non-linefetch (0x1008)

Question asked by 根伟 吴 on Feb 25, 2019
Latest reply on Feb 26, 2019 by igorpadykov

Hi All

CPU:IMX7D

linux:4.1.15

spi flash:winbond w25q128

When I was developing the QSPI I had one problem each.I added w25q128 through DTS.

&epdc {
   status = "disabled";
};

&iomuxc {
   qspi1 {
      pinctrl_qspi1_1: qspi1grp_1 {
         fsl,pins = <
            MX7D_PAD_EPDC_DATA00__QSPI_A_DATA0 0x51
            MX7D_PAD_EPDC_DATA01__QSPI_A_DATA1 0x51
            MX7D_PAD_EPDC_DATA02__QSPI_A_DATA2 0x51
            MX7D_PAD_EPDC_DATA03__QSPI_A_DATA3 0x51
            MX7D_PAD_EPDC_DATA05__QSPI_A_SCLK 0x51
            MX7D_PAD_EPDC_DATA06__QSPI_A_SS0_B 0x51
         >;
      };
   };
};

&qspi1 {
   pinctrl-names = "default";
   pinctrl-0 = <&pinctrl_qspi1_1>;
   status = "okay";
   ddrsmp=<0>;

   flash0: w25q128@0 {
      #address-cells = <1>;
      #size-cells = <1>;
      compatible = "w25q128";
      spi-max-frequency = <29000000>;
      reg = <0>;
   };
};

The result of the run is that the QSPI can read the JEDEC ID, but there is a problem:

[ 25.470038] Unhandled fault: external abort on non-linefetch (0x1008) at 0xc1000000
[ 25.477697] pgd = a8654000
[ 25.480408] [c1000000] *pgd=a891e811, *pte=60000653, *ppte=60000453
[ 25.486724] Internal error: : 1008 [#1] PREEMPT SMP ARM
[ 25.491953] Modules linked in:
[ 25.495028] CPU: 0 PID: 747 Comm: hexdump Not tainted 4.1.15+ #25
[ 25.501124] Hardware name: Freescale i.MX7 Dual (Device Tree)
[ 25.506874] task: a84ab440 ti: a885a000 task.ti: a885a000
[ 25.512285] PC is at memcpy+0x48/0x330
[ 25.516043] LR is at fsl_qspi_read+0x120/0x13c
[ 25.520493] pc : [<801e5cc8>] lr : [<80303bb4>] psr: 20060013
[ 25.520493] sp : a885bdc4 ip : 00000000 fp : a885be04
[ 25.531974] r10: a80e0010 r9 : 00000000 r8 : 00000000
[ 25.537202] r7 : 00000000 r6 : 00000000 r5 : 00001000 r4 : a80e0010
[ 25.543733] r3 : 00000000 r2 : 00000f80 r1 : c1000000 r0 : a8403000
[ 25.550266] Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
[ 25.557405] Control: 10c53c7d Table: a865406a DAC: 00000015
[ 25.563154] Process hexdump (pid: 747, stack limit = 0xa885a210)
[ 25.569164] Stack: (0xa885bdc4 to 0xa885c000)

 

I tracked the code to make sure the problem was the memcpy parameter in the fsl_qspi_read function q->ahb_addr.I don't know how to solve.

Please help me.Thank you! 

Outcomes