Folks
I am facing an issue (CPU resetting) with MK64FN1M0VMD12 freescale freedom bootloader (FSL 1.0.2) and WinUpdater communicating over Serial port.
K64's boot loader boots up fine and when I ping it from Winupdater it gets into "bootloader_run" which is expected but then after a little while CPU resets.
When I say ping from Winupdater what it means is (I have disabled erasing and writing flash functions from Winupdater code) after I press "Update" button on Winupdater GUI (This is for debugging only) it just sends a serial ping message.
I have verified K64 receives the serial ping message and gets into "bootlader_run" function (verified with IAR IDE) but after that it takes <= 5-6 seconds and the CPU resets.
Any ideas ?
HW: I-JET Probe (JTAG)
SW: IAR IDE v7.20, FSL 1.0.2 (Freescale Boot loader for MK64FN1M0VMD12), Winupdater (FSL 1.0.2)
Does anyone know how to disable auto baud detection in FSL 1.0.2 ?
Hi
Have you tried loading and using the pre-built binary for this board (in FSL_Kinetis_Bootloader_1_0_2\targets\k64f12\binaries). This will possibly distinguish between a problem with the board and a problem with the project that you have built.
Regards
Mark
Mark
Can you please throw a little light on to this code (BOLD):
// See flash.h for documentation of this function.
status_t flash_get_property(flash_driver_t * driver, flash_property_t whichProperty, uint32_t * value)
{
if ((driver == NULL) ||
(value == NULL))
{
return kStatus_InvalidArgument;
}
switch (whichProperty)
{
case kFlashProperty_SectorSize:
*value = driver->PFlashSectorSize;
break;
case kFlashProperty_TotalFlashSize:
*value = driver->PFlashTotalSize;
break;
case kFlashProperty_BlockSize:
*value = driver->PFlashTotalSize;
break;
case kFlashProperty_BlockCount:
*value = driver->PFlashBlockCount;
break;
case kFlashProperty_FlashBlockBaseAddr:
*value = driver->PFlashBlockBase;
break;
default: // catch inputs that are not recognized
return kStatus_FlashUnknownProperty;
}
return kStatus_Success;
}
Shouldn't BLOCK SIZE (*value in case of kFlashProperty_BlockSize) be equal to the Total flash size / No. of blocks ?
What are your thoughts ?
Nitin
The KBOOT loader (HID or UART) presently only makes use of the kFlashProperty_SectorSize request to discover the flash granularity of the device to be programmed. The block size request response does look suspect but won't cause a problem (at the moment) - if it is not correct it will presumably be corrected when the PC SW starts using it.
If you search for the location of the definition of the enums or the driver struct you may find some comments that make it clear what the actual values are representing. Maybe a block is indeed equal to the total memory size in this device (if block count is also 1) (?)
Regards
Mark
Mark, thanks for your suggestion.
Whenever I try to download that binary with IAR IDE using flash loader, I get an error saying the corresponding SIM file could not be found/generated.
Hi
I would install the Freescale KDS because it will load binary files - I don't actually know whether IAR allows it.
Or just use the (original) mbed boot loader on the FRDM-K64F to drag and drop the binary file to the board as it appears as a harddrive.
Regards
Mark