Hello,
I am working with an NXP MCXA185VLH custom board and am trying to modify the default ROM ISP UART pins through the CMPA/PFR configuration.
1. Objective
The default MCXA185 ISP UART pins are:
LPUART2
TX: P2_2
RX: P2_3
I want to change the ROM ISP UART to:
LPUART4
TX: P3_27
RX: P3_28
I am using Secure Provisioning Tool (SPT) / SPSDK 3.10.0 and an MCU-LINK Pro as the debug probe.
2. CMPA ISP_UART_CFG configuration
In the PFR Configuration tool, I configured ISP_UART_CFG as follows:
UART_RX_PIN 0x7C
UART_RX_FUNC_SLOT 0b0011
UART_ISP_FLEXCOM 0b0100
UART_TX_PIN 0x7B
UART_TX_FUNC_SLOT 0b0011
UART_BAUD_RATE AUTO_BAUDRATE / 0b0000
According to the pin encoding, I understand:
0x7B → P3_27
0x7C → P3_28
Therefore the intended configuration is:
LPUART4
TX = P3_27
RX = P3_28
Function slot = 3
Baud rate = Auto baud detection
The MCXA185 documentation also lists LPUART4 as instance 4, which is why I configured the corresponding UART_ISP_FLEXCOM value.
3. CMPA generation and programming
I generated the CMPA binary using SPT/SPSDK.
The generated script executed successfully.
The important commands/results were:
### Create CMPA page - binary ###
pfr.exe export -c pfr_write_cmpa.yaml -o pfr_write_cmpa.bin
Success. (CMPA binary has been generated)
Then the bootloader connection was checked:
blhost -t 2000 -p COM8,115200 -j -- get-property 1 0
and returned:
{
"command": "get-property",
"response": [
1258488320
],
"status": {
"description": "0 (0x0) Success.",
"value": 0
}
}
Then CMPA was erased:
pfr.exe erase-cmpa -p COM8,115200 -f mcxa185
Result:
CMPA page address on mcxa185, Revision: latest is 0x7e000
CMPA page has been erased.
Then I programmed the CMPA:
blhost -t 5000 -p COM8,115200 -j -- write-memory 0x0007E000 pfr_write_cmpa.bin
Result:
{
"command": "write-memory",
"response": [
256
],
"status": {
"description": "0 (0x0) Success.",
"value": 0
}
}
Therefore, CMPA erase and write both reported success.
4. Entering ISP mode through MCU-LINK Pro
I am using an MCU-LINK Pro:
NXP Semiconductors MCU-LINK Pro (r0CF) CMSIS-DAP V2.241
Serial: JE3OY43UTRELI
The debug mailbox starts successfully:
nxpdebugmbox -i pyocd cmd -f mcxa185 start
Result:
Start Debug Mailbox succeeded
I then force the MCU into ISP mode:
nxpdebugmbox -i pyocd cmd -f mcxa185 ispmode -m 0
Result:
Entering into ISP mode succeeded
So the debug mailbox reports that the MCU has successfully entered ISP mode.
5. UART connection to the new ISP pins
I have a USB-to-UART adapter connected to the custom board.
The adapter is connected to:
MCXA185 P3_27 / P3_28
The serial port is:
COM27
The connection is crossed:
USB-UART TX → MCXA185 P3_28 (RX)
USB-UART RX ← MCXA185 P3_27 (TX)
GND → GND
I am testing at:
115200 baud
6. BLHOST does not respond on the new ISP UART
After entering ISP mode, I run:
blhost -t 10000 -p COM27,115200 -j -- get-property 1
However, I get:
SpsdkNoDeviceFoundError: No devices for given interface 'uart' and parameters 'port=COM27, baudrate=115200, timeout=10000' was found.
Therefore, the ROM ISP bootloader is not responding through COM27/P3_27/P3_28.
I have also observed the following on the serial monitor when entering ISP mode:
[RX] - 00
but I do not receive a valid BLHOST response.
7. COM27 is physically detected
nxpdevscan shows the MCU-LINK Pro and related USB devices correctly, but:
Scanning UART devices... Nothing found
The USB-UART adapter itself is available as COM27 in Windows and is being used by the serial monitor/BLHOST.
8. Original ISP UART works
Before changing the ISP UART configuration, I was able to communicate with the MCU through the original ISP UART using:
blhost -t 10000 -p COM8,115200 -j -- get-property 1
which returned successfully:
{
"command": "get-property",
"response": [
1258488320
],
"status": {
"description": "0 (0x0) Success.",
"value": 0
}
}
This confirms that:
The MCU is functional.
ROM ISP is functional.
BLHOST/SPSDK is functional.
The USB-UART adapter and serial communication setup work.
The problem appears after changing the ISP UART configuration to P3_27/P3_28.
9. Debug memory access issue
I also attempted to verify the CMPA contents directly through the MCU-LINK Pro.
CMPA is located at:
0x0007E000
I used:
nxpdebugmbox -i pyocd mem-tool read-memory -f mcxa185 -a 0x0007E000 -c 0x100 -h
but received:
SPSDKAppError: SPSDK: The memory access port is not found!
I also tried:
nxpdebugmbox -i pyocd mem-tool test-connection -f mcxa185
which returned:
The test connection ends NOT successfully.
I tried enabling recovery reset:
nxpdebugmbox -i pyocd -o enable_recovery_reset=True mem-tool read-memory -f mcxa185 -a 0x0007E000 -c 0x100 -h
but received the same:
The memory access port is not found!
However, the debug mailbox itself can still be started:
Start Debug Mailbox succeeded
and ISP mode can be entered:
Entering into ISP mode succeeded
10. SPT connection issue
When I tried to use the PFR Configuration window again, it showed:
PFR Configuration, MCXA185, COM8[baud=115200]
and reported:
Connection problem. Check the connection dialog for configuration.
Failed to open UART port with:
Could not open port 'COM8'. Access denied.
This appears to be a separate COM-port access issue because COM8 was already being used by another application/process.
PS. Ive also configured the ISP_MISC_CFG : ISP_UART_CUST in the secure provisioning tool and done a power cycle too. Literally I've done everything that i could find via documentation and even support and there is no chance for silly mistakes from my side. Please help me resolve my issue.
Thank you.