I'm using MQX 5.0.2 that comes with KSDK 1.3.0 for my already developed user application that targets the MK22FN512VLH12. I am using IAR EWARM IDE. It uses the usbd_sdk_mqx_lib. I'm trying to get it to work with the KBOOT v2 bootloader (USB-HID periph. enabled), however I have been unsuccessful at doing so. I've tried editing the startup and system files in the mqx_frdmk22f project, KSDK Files group, and adding crt0.s, however that doesn't work. I've tried a few linker file changes, (trying to place the user application at offset 0xA000) but that didn't help, and I think its due to sections not being named the same name. For instance, when running the application, MQX_init_struct.START_OF_HEAP = (__RW_END > __ZI_END) ? __RW_END : __ZI_END; ends up setting START_OF_HEAP to 0x0, and trying to manually set it to 0x1fffb860 does no good.
I am hoping that someone can take the hello world MQX example project <KSDK_1.3.0 Install Directory>\rtos\mqx\mqx\examples\hello\build\iar\hello_frdmk22f and make necessary changes to it & the KSDK so that it can be placed at the offset 0xA000 to work with KBOOT V2 and post your solution or/and the description here.
Thank you,
Kevin
Solved! Go to Solution.
Yes, I seem to have got it working.
In my MQX project, I edited the startup_MK22F51212.s file in the mqx_frdm22f project found in the KSDK Files directory. In this file I commented DefaultISR 240-254 and also removed the DCD 0xFFFFFFFF value reserved for user TRIM value (is that okay?). In placed of that, I added the BCA area (0x3C0-0x3FF) like it was in the demo project.
Additionally, I changed the linker file (MK22FN512xxx12_flash.icf) to define the following symbols:
define symbol __ram_vector_table_size__ = 0x00000400;
define symbol __ram_vector_table_offset__ = 0x000003FF;
define symbol INTERRUPTS_START = 0x0000A000;
define symbol INTERRUPTS_END = 0x0000A3FF;
define symbol FLASH_CONFIG_START = 0x0000A400;
define symbol FLASH_CONFIG_END = 0x0000A40F;
define symbol TEXT_START = 0x0000A410;
define symbol TEXT_END = 0x0007FFFF;
define symbol RAM_INTERRUPTS_START = 0x1FFF0000;
define symbol RAM_INTERRUPTS_END = 0x1FFF0000 + __ram_vector_table_offset__;
define symbol DATA_START = RAM_INTERRUPTS_START + __ram_vector_table_size__;
define symbol DATA_END = 0x1FFFFFFF;
define symbol DATA_2_START = 0x20000000;
define symbol DATA_2_END = 0x2000FFEF;
Hi Kevin:
Did you solve this problem?
Regards
Daniel
Yes, I seem to have got it working.
In my MQX project, I edited the startup_MK22F51212.s file in the mqx_frdm22f project found in the KSDK Files directory. In this file I commented DefaultISR 240-254 and also removed the DCD 0xFFFFFFFF value reserved for user TRIM value (is that okay?). In placed of that, I added the BCA area (0x3C0-0x3FF) like it was in the demo project.
Additionally, I changed the linker file (MK22FN512xxx12_flash.icf) to define the following symbols:
define symbol __ram_vector_table_size__ = 0x00000400;
define symbol __ram_vector_table_offset__ = 0x000003FF;
define symbol INTERRUPTS_START = 0x0000A000;
define symbol INTERRUPTS_END = 0x0000A3FF;
define symbol FLASH_CONFIG_START = 0x0000A400;
define symbol FLASH_CONFIG_END = 0x0000A40F;
define symbol TEXT_START = 0x0000A410;
define symbol TEXT_END = 0x0007FFFF;
define symbol RAM_INTERRUPTS_START = 0x1FFF0000;
define symbol RAM_INTERRUPTS_END = 0x1FFF0000 + __ram_vector_table_offset__;
define symbol DATA_START = RAM_INTERRUPTS_START + __ram_vector_table_size__;
define symbol DATA_END = 0x1FFFFFFF;
define symbol DATA_2_START = 0x20000000;
define symbol DATA_2_END = 0x2000FFEF;