AN2295 bootloader fails to program the KV10 over UART

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

AN2295 bootloader fails to program the KV10 over UART

Jump to solution
868 Views
awahab
Contributor I

Hello,

I have been struggling to get the AN2295 FC-protocol bootloader to program or erase the KV10 over UART. 

I have been using the "Uart_bootloader_demo" and "Blink_Led_For_Bootloader" IAR projects included in the TWR-KV10Z32_SC sample code bundle to generate the bootloader and application binaries, respectively.  Both of the sample projects seem to include appropriate ICF linker scripts - "Uart_bootloader_demo" uses the general purpose ICF and "Blink_Led_For_Bootloader" uses a linker script with an offset.  I have not made any modifications to the linker scripts.  I am using IAR EWARM version 7.3

On the PC-side, I have been trying version 10.0.13.0 of the AN2295 Universal bootloader (win_hc08sprg.exe and hc08sprg.exe).  Screenshots of later versions of this application can be seen throughout the forum, but I have not been able to find any downloadable files beyond version 10.0.13.0.  After flashing the bootloader firmware onto the KV10, I am able to connect to it using the AN2295 bootloader program with "Short TRIM" checked (I am using an FTDI virtual COM port) and a data rate of 115200, which matches that specified in the bootloader firmware.  The program prints out the following log:

Bootloader protocol version: 0x08 (Kinetis, read command supported)

CRC protocol NOT supported)

Bootloader version string: KV10

System device ID: 0x14A [Kinetis K60] rev. 0

Kinetis Package: 144-pin

Number of memory blocks: 1

Memory block #1 0x00001000-0x00008000

Erase block size: 1024 bytes

Write block size: 64 bytes

Original vector table: 0x00000000-0x00003FF

New vector table: 0x000010000-0x000013FF

S19 Image Control.

Parsed S-record lines: 277 Bytes total: 4377

Source address range: 0x0000-0x2473

Memory block 0 erasing: E 0x00001000 0%

Memory is NOT erased.

Memory programming block 0: W 0x00001040 1%

Can't program block 0 at address 0x00001040

The "Bootloader", "System device ID", and "Kinetis Package" lines are incorrect since the bootloader sample code specifies that the protocol version is 0x88 (not 0x08) and I am using the Kinetis KV10 in 32-pin package (not a K60 in a 144-pin package), but I am not sure that matters since the memory-related information is correct.

I am not using the TWR-KV10Z32 hardware, but the clock and UART registers have been configured properly in the sample code, as confirmed by the successful communication between the PC-side application and the bootloader firmware.

Does anybody have a more recent version of the PC-side bootloader application or could provide some assistance for getting the AN2295 bootloader working with the KV10?

Labels (1)
0 Kudos
1 Solution
456 Views
Jorge_Gonzalez
NXP Employee
NXP Employee

Hello awahab:

I reproduced the same problem and I think it is caused by the initial CPU identification function, which uses the same UART port to print MCU description. Try commenting out that line of code and rebuild the UART_bootloader project:

/* Perform processor initialization */

sysinit();

//cpu_identify();

With this the bootloader worked from my side using TWR-KV10Z32.


Regards!,
Jorge Gonzalez

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

View solution in original post

0 Kudos
2 Replies
457 Views
Jorge_Gonzalez
NXP Employee
NXP Employee

Hello awahab:

I reproduced the same problem and I think it is caused by the initial CPU identification function, which uses the same UART port to print MCU description. Try commenting out that line of code and rebuild the UART_bootloader project:

/* Perform processor initialization */

sysinit();

//cpu_identify();

With this the bootloader worked from my side using TWR-KV10Z32.


Regards!,
Jorge Gonzalez

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos
456 Views
awahab
Contributor I

That did it!  Thank you for responding so quickly, Jorge.

Best,

Adam

0 Kudos