Can i use a build for the MK60DN512LQ10 on a MK60DN512ZLQ10?

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

Can i use a build for the MK60DN512LQ10 on a MK60DN512ZLQ10?

1,517 Views
jasonscott
Contributor IV

Hi All,

 

So i have been using the KDS 3.2 and the sdk 1.3.

The processor i am using is a MK60DN512ZLQ10, which i just seen in another forum is not supported using the sdk.

 

Can i use the basic MK60DN512LQ10 project on this processor?

 

or

 

Can i still used the mqx files in the sdk folder to create a project to be used on the processor?

 

My main goal is to use the processor expert to setup the processor, then adapt it to use the MQX libraries to include a MFS file system and use the shell.

 

thanks for your time,

 

Jason

Labels (1)
8 Replies

1,027 Views
jorge_a_vazquez
NXP Employee
NXP Employee

Hi Jason Scott

Sorry, it seems that I misunderstood your question, I was thinking that you want to migrate and use the same modules. No, Unfortunately, there are many change in MK60 old revision ("Z") with the new ones, and you can not change the target device in the debugger. This part is not recommended for new designs and unfortunately the KSDK platform doesn't support it and it will not.

You can check the following threads for more recommendations:

Is the MK60DN512ZVLL10 kinetis part supported by KSDK

Silicium revision and MQX 4.0.2.2

Sorry for the inconvenience that this may cause you.


Have a great day,
Jorge Alcala

1,027 Views
jasonscott
Contributor IV

Hey Jorge,

This chip has already been used in a old production project that was created using the code warrior application.

My job is to create a similar project using the KDS software.

I understand that the SDK does not support this version of the chip.

However, would i be able to create a project using my targeted chip, use the processor expert, and setup a MQX application?

Even though it is not supported under the SDK?

Thanks for your time,

Jason

0 Kudos

1,027 Views
jorge_a_vazquez
NXP Employee
NXP Employee

Hi Jason Scott

Even though your device is not supported under the SDK, you can use it with KDS and MQX classic 4.2. But to use PE, and MQX you will have to create your own drivers.

To use KDS with MQX you can check this: Creating a New MQX RTOS 4.2 project in KDS

and to generate your own driver you can check this example that use PWM: How to generate PWM signal using MQX

Hope this information helps you, please don't hesitate to tell me if you have any more questions


Have a great day,
Jorge Alcala

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

0 Kudos

1,027 Views
jorge_a_vazquez
NXP Employee
NXP Employee

Hi Jason Scott

You can use it, the Z letter just indicates a silicon revision change, but you can consulted this application note that point out different between revision http://www.nxp.com/files/32bit/doc/app_note/AN4445.pdf

Also you can check the errata files for this specific device

Hope this information can help, please tell me if you have any more questions.


Have a great day,
Jorge Alcala

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

1,027 Views
jasonscott
Contributor IV

Hey Jorge,

Thanks for your response, that is actually great news!

However, I have not been able to get the build to work successfully in debug mode...

I will show you the steps and hopefully you could tell me what I am doing wrong.

Again, I am using the MK60DN512Z, KDS 3.2, and SDK 1.3.

1.) Choose the processor.

pastedImage_0.png

2.) Choose SDK 1.3 and select the processor expert.

pastedImage_1.png

3.) Select GNU Compiler.

4.) Add #include <stdio.h> and a printf to Main().

pastedImage_2.png

5). add debug console to processor expert.

pastedImage_3.png

6.) Generate code...

pastedImage_4.png

7.) Edit the debug settings to target chip.

pastedImage_5.png

8.) Apply and debug..

Then I am told that the build is successful, but no source is available?

pastedImage_6.png

Please tell me what I am doing wrong?

Thanks for your time,

Jason Scott

0 Kudos

1,027 Views
jasonscott
Contributor IV

I think I am actually never getting to the 'main' function.

Do i need to edit the linker file that was generated with the project?

Since i can not figure out how to insert files, ill post it below.

Any assistance would be greatly appreciated.!

Thanks for your time,

Jason

----------------------------------------------------------------------------------------------------------------------------------------------------------------

/*## ####################################################################### */

/*##                                                                         */

/*##     THIS COMPONENT MODULE IS GENERATED. DO NOT MODIFY IT.               */

/*##                                                                         */

/*##     Filename  : ProcessorExpert.ld                                      */

/*##                                                                         */

/*##     Project   : MCP8_MQX_SDK                                            */

/*##                                                                         */

/*##     Processor : MK60DN512VLQ10                                          */

/*##                                                                         */

/*##     Compiler  : GNU C Compiler                                          */

/*##                                                                         */

/*##     Date/Time : 2016-08-04, 14:45, # CodeGen: 0                         */

/*##                                                                         */

/*##     Abstract  :                                                         */

/*##                                                                         */

/*##     This file is used by the linker. It describes files to be linked,   */

/*##     memory ranges, stack size, etc. For detailed description about      */

/*##     linker command files see compiler documentation. This file          */

/*##     is generated by default. You can switch off generation by setting   */

/*##     the property "Generate linker file = no" in the "Build options"     */

/*##     tab of the CPU component and then modify this file as needed.       */

/*##                                                                         */

/*##                                                                         */

/*## ####################################################################### */

/* Entry Point */

ENTRY(Reset_Handler)

HEAP_SIZE  = DEFINED(__heap_size__)  ? __heap_size__  : 0x00;

STACK_SIZE = DEFINED(__stack_size__) ? __stack_size__ : 0x0400;

/* Specify the memory areas */

MEMORY {

  m_interrupts          (RX)  : ORIGIN = 0x00000000, LENGTH = 0x00000400

  m_flash_config        (RX)  : ORIGIN = 0x00000400, LENGTH = 0x00000010

  m_interrupts_ram      (RW)  : ORIGIN = 0x1FFF0000, LENGTH = 0x00000400

  m_text                (RX)  : ORIGIN = 0x00000410, LENGTH = 0x0007FBF0

  m_data                (RW)  : ORIGIN = 0x1FFF0400, LENGTH = 0x0000FC00

  m_data_2              (RW)  : ORIGIN = 0x20000000, LENGTH = 0x00010000

}

/* Define output sections */

SECTIONS

{

  /* The startup code goes first into INTERNAL_FLASH */

  .interrupts :

  {

    __VECTOR_TABLE = .;

    . = ALIGN(4);

    KEEP(*(.isr_vector))     /* Startup code */

    . = ALIGN(4);

  } > m_interrupts

  __VECTOR_RAM = ORIGIN(m_interrupts_ram);

  .flash_config :

  {

    . = ALIGN(4);

    KEEP(*(.FlashConfig))    /* Flash Configuration Field (FCF) */

    . = ALIGN(4);

  } > m_flash_config

  /* The program code and other data goes into INTERNAL_FLASH */

  .text :

  {

    . = ALIGN(4);

    *(.text)                 /* .text sections (code) */

    *(.text*)                /* .text* sections (code) */

    *(.rodata)               /* .rodata sections (constants, strings, etc.) */

    *(.rodata*)              /* .rodata* sections (constants, strings, etc.) */

    *(.glue_7)               /* glue arm to thumb code */

    *(.glue_7t)              /* glue thumb to arm code */

    *(.eh_frame)

    KEEP (*(.init))

    KEEP (*(.fini))

    . = ALIGN(4);

  } > m_text

  .ARM.extab :

  {

    *(.ARM.extab* .gnu.linkonce.armextab.*)

  } > m_text

  .ARM :

  {

    __exidx_start = .;

    *(.ARM.exidx*)

    __exidx_end = .;

  } > m_text

.ctors :

  {

    __CTOR_LIST__ = .;

    /* gcc uses crtbegin.o to find the start of

       the constructors, so we make sure it is

       first.  Because this is a wildcard, it

       doesn't matter if the user does not

       actually link against crtbegin.o; the

       linker won't look for a file to match a

       wildcard.  The wildcard also means that it

       doesn't matter which directory crtbegin.o

       is in.  */

    KEEP (*crtbegin.o(.ctors))

    KEEP (*crtbegin?.o(.ctors))

    /* We don't want to include the .ctor section from

       from the crtend.o file until after the sorted ctors.

       The .ctor section from the crtend file contains the

       end of ctors marker and it must be last */

    KEEP (*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors))

    KEEP (*(SORT(.ctors.*)))

    KEEP (*(.ctors))

    __CTOR_END__ = .;

  } > m_text

  .dtors :

  {

    __DTOR_LIST__ = .;

    KEEP (*crtbegin.o(.dtors))

    KEEP (*crtbegin?.o(.dtors))

    KEEP (*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors))

    KEEP (*(SORT(.dtors.*)))

    KEEP (*(.dtors))

    __DTOR_END__ = .;

  } > m_text

  .preinit_array :

  {

    PROVIDE_HIDDEN (__preinit_array_start = .);

    KEEP (*(.preinit_array*))

    PROVIDE_HIDDEN (__preinit_array_end = .);

  } > m_text

  .init_array :

  {

    PROVIDE_HIDDEN (__init_array_start = .);

    KEEP (*(SORT(.init_array.*)))

    KEEP (*(.init_array*))

    PROVIDE_HIDDEN (__init_array_end = .);

  } > m_text

  .fini_array :

  {

    PROVIDE_HIDDEN (__fini_array_start = .);

    KEEP (*(SORT(.fini_array.*)))

    KEEP (*(.fini_array*))

    PROVIDE_HIDDEN (__fini_array_end = .);

  } > m_text

  __etext = .;    /* define a global symbol at end of code */

  __DATA_ROM = .; /* Symbol is used by startup for data initialization */

  .data : AT(__DATA_ROM)

  {

    . = ALIGN(4);

    __DATA_RAM = .;

    __data_start__ = .;      /* create a global symbol at data start */

    *(.data)                 /* .data sections */

    *(.data*)                /* .data* sections */

    KEEP(*(.jcr*))

    . = ALIGN(4);

    __data_end__ = .;        /* define a global symbol at data end */

  } > m_data

 

  /* Symbol is used by startup for data initialization */

  __DATA_END = __DATA_ROM + (__data_end__ - __data_start__);

  .m_interrupts_ram :

  {

     . = ALIGN(4);

     __m_interrupts_ram_RAMStart = .;

     *(.m_interrupts_ram)    /* This is an User defined section */

    . += 0x0400;

     __m_interrupts_ram_RAMEnd = .;

     . = ALIGN(4);

  } > m_interrupts_ram

  __m_interrupts_ram_ROMSize = __m_interrupts_ram_RAMEnd - __m_interrupts_ram_RAMStart;         

  __RAM_VECTOR_TABLE_SIZE_BYTES = __m_interrupts_ram_RAMEnd - __m_interrupts_ram_RAMStart;

  __m_data_2_ROMStart = __DATA_ROM + SIZEOF(.data);

  .m_data_2 : AT(__m_data_2_ROMStart)

  {

     . = ALIGN(4);

     __m_data_2_RAMStart = .;

     *(.m_data_2)            /* This is an User defined section */

     __m_data_2_RAMEnd = .;

     . = ALIGN(4);

  } > m_data_2

  __m_data_2_ROMSize = __m_data_2_RAMEnd - __m_data_2_RAMStart;         

 

  text_end = ORIGIN(m_text) + LENGTH(m_text);

  data_init_end = __m_data_2_ROMStart + SIZEOF(.m_data_2);

  ASSERT( data_init_end <= text_end, "region m_text overflowed with text and data")

 

  /* Uninitialized data section */

  .bss :

  {

    /* This is used by the startup in order to initialize the .bss section */

    . = ALIGN(4);

    __START_BSS = .;

    __bss_start__ = .;

    *(.bss)

    *(.bss*)

    *(COMMON)

    . = ALIGN(4);

    __bss_end__ = .;

    __END_BSS = .;

  } > m_data

 

  .heap :

  {

    . = ALIGN(8);

    __end__ = .;

    PROVIDE(end = .);

    __HeapBase = .;

    . += HEAP_SIZE;

    __HeapLimit = .;

  } > m_data_2

  .stack :

  {

    . = ALIGN(8);

    . += STACK_SIZE;

  } > m_data_2

  __StackTop   = ORIGIN(m_data_2) + LENGTH(m_data_2);

  __StackLimit = __StackTop - STACK_SIZE;

  PROVIDE(__stack = __StackTop);

  .ARM.attributes 0 : { *(.ARM.attributes) }

}

0 Kudos

1,027 Views
jasonscott
Contributor IV

The only reason i think that there is something weird with the linker file is because i cant seem to hit my break points and this keeps happening...

pastedImage_0.png

0 Kudos

1,027 Views
jasonscott
Contributor IV

I would also like to add that this same process works when not using the sdk and choosing the processor MK60DN512Z at the very beginning.

-Jason

0 Kudos