Using KBOOT V2 and MQX

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Using KBOOT V2 and MQX

ソリューションへジャンプ
1,483件の閲覧回数
kevinlfw
Contributor III

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

1 解決策
1,180件の閲覧回数
kevinlfw
Contributor III

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;

元の投稿で解決策を見る

2 返答(返信)
1,180件の閲覧回数
danielchen
NXP TechSupport
NXP TechSupport

Hi Kevin:

Did you solve this problem?

Regards

Daniel

0 件の賞賛
返信
1,181件の閲覧回数
kevinlfw
Contributor III

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;