Avi Weiss created an issue: 
https://gitlab.rtems.org/rtems/rtos/rtems/-/issues/5588



## Summary
In `bsps/arm/tms570/start/init_esm.c` writing zero to enable the error pin 
channels and interrupts does not have the desired effect:
```c
void tms570_esm_init( void )
{
  /** - Disable error pin channels */
  TMS570_ESM.DEPAPR1 = 0xFFFFFFFFU;
  TMS570_ESM.IEPCR4 = 0xFFFFFFFFU;

  /** - Disable interrupts */
  TMS570_ESM.IECR1 = 0xFFFFFFFFU;
  TMS570_ESM.IECR4 = 0xFFFFFFFFU;

...

  /** - Enable error pin channels */
  TMS570_ESM.EEPAPR1 = 0x00000000;

  TMS570_ESM.IEPSR4 = 0x00000000;

  /** - Enable interrupts */
  TMS570_ESM.IESR1 = 0x00000000;

  TMS570_ESM.IESR4 = 0x00000000;
}
```

These are write-one-to-set registers, so writing zero leaves them all disabled. 
 

e.g. from the 4357x TRM:
![image](/uploads/26a084f39d0fb8ef60a5595fc4b3b42f/image.png){width=762 
height=177}

and from the 3137x TRM:
![image](/uploads/6339472fa6cdb028bd04140bef8f21d0/image.png){width=692 
height=190}

## Steps to reproduce
I checked these on a TMS570LC43x Launchpad XL.   

Logs confirm:
```c
before init: EEPAPR1=00000000 DEPAPR1=00000000 IEPSR4=00000000 IEPCR4=00000000
before init: IESR1=00000000 IECR1=00000000 IESR4=00000000 IECR4=00000000

after init: EEPAPR1=00000000 DEPAPR1=00000000 IEPSR4=00000000 IEPCR4=00000000
after init: IESR1=00000000 IECR1=00000000 IESR4=00000000 IECR4=00000000
```

## Expected behaviour
Write `FF`s (all ones) to `EEPAPR1`, `IEPSR4`, `IESR1` and `IESR4` at the end 
of init (instead of `0`).

-- 
View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/issues/5588
You're receiving this email because of your account on gitlab.rtems.org.


_______________________________________________
bugs mailing list
[email protected]
http://lists.rtems.org/mailman/listinfo/bugs

Reply via email to