I think _dspi_polled_init() function is called by _io_spi_install() in _bsp_enable_card(). (_dspi_polled_install() in MQX 3.8.1) function and not by fopen(). Do you enable SPI2 and SPI3 in user_config.h ?
I don't have MQX 3.8, I use the latest MQX 4.0.
in the TWR-PXN20 user_config.h I enable
#define BSPCFG_ENABLE_SPI2 TRUE
#define BSPCFG_ENABLE_SPI3 TRUE
and build PXN20 MQX libs and some simple application with fopen("spi2:") call.
When I reset and halt the MCU using debugger, I can see default reset value of DSPI_C.MCR = 0x00004001.
Then I start the application executable. After _bsp_enable_card() I can see the DSPI_C.MCR changes to 0x01FF0000. Then in a task I execute:
f_ptr_spi2 = fopen("spi2:", NULL);
if(NULL == f_ptr_spi2)
{
printf("Error opening SPI2 driver!\n");
_task_block();
}
else printf("SPI2 driver open OK\n");
the "spi2:" device opens without any issue.
I'm afraid the register dump you attached is not very useful for checking the MMU as we can's see from it the e200z6 MMU table. But in default BSP the MMU configuration is OK, so unless you modified it, we can assume it is good.
Try MQX 4.0, I can send you my user_config.h and the application that I verified as being functional, if you wish.