MQX usage

Comments

8 comments

  • Avatar
    mundungus

    I did get MQX running on the FRDM-K64F board with CrossWorks recently (also an M4 core). It did take a little while to get to compile, figuring out floating point options, typing in the include paths and fiddling with some other compile settngs etc. 

    A good starting point is to import the Kiel UVision projects into CrossWorks. 

    Freescale has recently released a version of MQX ported to Vybrid. Unfortunately the example projects are only for IAR and DS5, which Crossworks doesn't import (I think I'll add that to the requested features now that I think about it). 

    0
    Comment actions Permalink
  • Avatar
    mundungus

    HI, 

    I have MQX compiled and running on the k64F Freedom board. 

    The main issue is setting up the paths up in the 'user include directories' setting. 

     

    My first attempt at this I just imported one of the uv4 example projects. This is set up quite nice in that it has a project for each of the main MQX components (bsp, mfs, psp etc) to build them into libs, and a project that contains all of those. Your project then includes that as a dependency.

    If you've installed MQX using the Freescale installer, no doubt it has gone into the standard directory structure on your C drive (assuming you're using Windows).

    I'd recommend putting your projects somewhere else, and not inside the MXQ folder structure where the Freescale example projects are kept. Then you can create lots of your own projects without having to keep modifying the include paths for each project.

    E.g. I keep my projects in C:\my_proj\

    So my 'user include paths' looks like this

    $(TargetsDir)/CMSIS_3/CMSIS/Include ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/config/common ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/config/frdmk64f ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/adc/kadc ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/adc ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/cm ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/dma ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/enet/macnet ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/enet/phy ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/enet ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/esdhc ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/flashx/freescale ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/flashx ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/can/flexcan ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/gpio/kgpio ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/gpio ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/hwtimer ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/i2c ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/i2c/polled ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/i2c/int ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/bsp/frdmk64f ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/include ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/debug ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/io_mem ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/io_null ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/pipe ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/lpm ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/lwadc ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/lwgpio ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/pcb ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/pcb/mqxa ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/rtc ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/sai ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/sai/int ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/sdcard/sdcard_esdhc ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/sdcard/sdcard_spi ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/sdcard ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/serial ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/spi ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/tchres ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/tfs ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/timer ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/usb ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/usb_dcd ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/usb_dcd/polled ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/io/usb_dcd/int ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/psp/cortex_m/compiler/gcc_arm ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/psp/cortex_m/cpu ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/psp/cortex_m ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/psp/cortex_m/core/M4 ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mqx/source/tad ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/mfs/source/include ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/usb/common/include ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/usb/host/source/include ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/usb/host/source/classes/msd/mfs ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/usb/host/source/rtos/mqx ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/usb/host/source/classes/msd ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/usb/host/source/classes/hub ../../../Freescale/Freescale_MQX_4_1_FRDMK64F/shell/source/include

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

    There are a couple more tweaks to make, 

     my language standard is gnu99

    arm fpu type is FPv4-SP-D16

    include standard libraries is YES

    Allow multiple symbol definitions is YES

    entry point is __boot

     

    I think that's about it.

     

     

    0
    Comment actions Permalink
  • Avatar
    Christian Edhofer

    Hi guys,

    I am sorry for the late response. I still have problems to get MQX running with Cross Studio. But I think I made some progress. I consider your suggestions with the user include paths and additional options. Now, I am at the point where I always get the same errors even if I play around with the settings. Please see attached my screenshot. If I google these errors, I don't get anything appropriate. I also tried different examples but it makes no difference. The next thing I will try is to use an other version of MQX. Thank you in advance.

     

    Christian

    0
    Comment actions Permalink
  • Avatar
    Michael Johnson

    You'll need to set the ARM FP ABI Type property to Hard.

    0
    Comment actions Permalink
  • Avatar
    Christian Edhofer

    Good hint! I could build the bsp & psp solution of my project (TWRK70F120M). Which is a big step in the right direction. Now, I get errors at the building process of the gpio solution. Maybe you have another hint for me?

    0
    Comment actions Permalink
  • Avatar
    Christian Edhofer

    Sorry, there was a mistake in the path of the Section Placement File. I don't know how this happened but I put it back to default and now the build is complete without erros. Thank you very much.

    0
    Comment actions Permalink
  • Avatar
    Michael Johnson

    For the gpio_twrk70f120m project I imported the section placement file flash_placement.xml and modified it to the attached version.

    I had to set the "Linker Symbols Definition" property to

    __BOOT_STACK_ADDRESS=__SRAM_segment_end__
    __DEFAULT_PROCESSOR_NUMBER=1
    __DEFAULT_INTERRUPT_STACK_SIZE=1024
    __EXTERNAL_MRAM_RAM_BASE=0xA0000000
    __INTERNAL_SRAM_BASE=__SRAM_segment_start__
    __INTERNAL_SRAM_SIZE=__SRAM_segment_size__
    __UNCACHED_DATA_END=0x2000FFF0
    __UNCACHED_DATA_START=__SRAM_segment_used_end__
    __thumb_startup=_start

    the "Keep Symbols" property to

    __vector_table
    _cfm

    I had to modify boot.S - to call the __init_hardware function before the C library startup code is called.

            bl __init_hardware

            /* Perform toolchain startup routines */
            ASM_EXTERN(toolchain_startup)
            b ASM_PREFIX(toolchain_startup)

    0
    Comment actions Permalink
  • Avatar
    Christian Edhofer

    Yes, I meant this modified section placement file with "default". I made the experience that if you are changing the properties of the "Multi Solution", the subordinated solutions might not inherit the properties.

    0
    Comment actions Permalink

Please sign in to leave a comment.