I am running a code on a LPC4088 board. In part of this code, when I want to initialize the ABI protocol, the IDE gave a hard fault error. Looking into a suggestion provided here http://chmorgan.blogspot.com/2013/06/debugging-imprecise-bus-access-fault-on.html, I added "*(uint8_t *)0xE000E008 |= (1<<1);" to main(). Now, what I get as the error is NOCP: No coprocessor Usagefault. The processor does not support coprocessor instructions.
Any ideas on how to solve this is greatly appreciated.
Note: based on this document https://web.eecs.umich.edu/~prabal/teaching/eecs373-f10/readings/ARMv7-M_ARM.pdf, I tried to monitor CPACR register, this is the value in memory starting from 0xE000ED88: 00F00000 00000000 00000800 00000000 00000000.
As you know that the LPC4088 uses Cortex-M4 core, the register ACTLR is located at 0xE000E008 address.
0xE000E008 ACTLR RW Privileged 0x00000000 Auxiliary Control Register
The CPACR is located at address 0xE000ED88.
0xE000ED88 CPACR RW 0x00000000 Coprocessor Access Control Register
The bit 2 in ACTLR register is DISDEFWBUF, which is explained as
"When set to 1, disables write buffer use during default memory map accesses. This causes all
BusFaults to be precise BusFaults but decreases performance because any store to memory must
complete before the processor can execute the next instruction.
This bit only affects write buffers implemented in the Cortex-M4 processor.
Because this is ARM peripheral register, I suggest you contact ARM support.
You can download "Cortex-M4 generic user guide" from the link:
hope it can help you