<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Minimal code/ram config for 52212 MQX CDC in MQX Software Solutions</title>
    <link>https://community.nxp.com/t5/MQX-Software-Solutions/Minimal-code-ram-config-for-52212-MQX-CDC/m-p/175562#M2290</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Freescale lists that the MQX RTOS with USB stack requires 10K of RAM and 32K of code.&amp;nbsp; Unfortunately the 52212 only has 8K of RAM.&amp;nbsp; Because of this, the vanilla off the shelf 3.8.0 MQX stack will not work.&amp;nbsp; Here are the required changes to get the stack to comfortably fit within the 52212 footprint.&amp;nbsp; Note:&amp;nbsp; This has been tested on version 3.8.0 of the MQX stack using CodeWarrior 7.2.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Base your build off the 52223evb.cw project in the MQX folder.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In MQX 3.8/mqx/source/psp/coldfire/int_unx.c:&lt;/P&gt;&lt;P&gt;Add #if _DEBUG around printf statements.&amp;nbsp; New code should look as follows:&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#if _DEBUG&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; printf( "\n*** UNHANDLED INTERRUPT ***\n"); &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; printf( "Vector #: %d&amp;nbsp; 0x%x\n\r",vector,vector);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; printf( "Offset&amp;nbsp; : %d&amp;nbsp; 0x%x\n\r",offset,offset);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; printf( "Task Id: 0x%0x Td_ptr 0x%x Stack Frame: 0x%x\n\r",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; td_ptr-&amp;gt;TASK_ID, td_ptr, basic_frame_ptr);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; printf( "Interrupt_nesting level: %d&amp;nbsp;&amp;nbsp; PC: 0x%08x&amp;nbsp;&amp;nbsp; SR: 0x%04x\n\r",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kernel_data-&amp;gt;IN_ISR,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; basic_frame_ptr-&amp;gt;FRAME.RETURN_ADDRESS,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; basic_frame_ptr-&amp;gt;FRAME.STATUS_REGISTER );&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;In MQX 3.8/usb/device/source/include/usbfs/usbprv_fs.h:&lt;/P&gt;&lt;P&gt;Add #if PSP_MQX_MIN_USB to reduce number of endpoints.&amp;nbsp; New code should look as follows:&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#if PSP_MQX_MIN_USB&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define USB_MAX_ENDPOINTS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (4)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define MAX_XDS_FOR_TR_CALLS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (4)&lt;/P&gt;&lt;P&gt;#elif PSP_MQX_CPU_IS_MCF51JM&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define USB_MAX_ENDPOINTS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (4)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define MAX_XDS_FOR_TR_CALLS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (8)&lt;/P&gt;&lt;P&gt;#else&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define USB_MAX_ENDPOINTS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (16)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define MAX_XDS_FOR_TR_CALLS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (32)&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In MQX 3.8/usb/device/source/classes/include/usb_stack_config.h:&lt;/P&gt;&lt;P&gt;Change IMPLEMENT_QUEUING to 0.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In MQX 3.8/usb/device/source/classes/include/usb_cdc.h:&lt;/P&gt;&lt;P&gt;Add #if IMPLEMENT_QUEUING to USB_CLASS_CDC_ENDPOINT.&amp;nbsp; The above file is also copied into MQX 3.8/lib/m52223evb.cw/usb/device/usb_cdc.h.&amp;nbsp; New code should look as follows:&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/* USB class cdc endpoint data */&lt;/P&gt;&lt;P&gt;typedef struct _usb_class_cdc_endpoint&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint_8 endpoint;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* endpoint num */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint_8 type;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* type of endpoint (interrupt, bulk or isochronous) */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #if IMPLEMENT_QUEUING&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint_8 bin_consumer;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* the num of queued elements */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint_8 bin_producer;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* the num of de-queued elements */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endif&lt;/P&gt;&lt;P&gt;}USB_CLASS_CDC_ENDPOINT;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In MQX 3.8/source/bsp/m52223evb/gpio_init.c:&lt;/P&gt;&lt;P&gt;Change USB_USBCTRL_CLKSRC_OSCCLK to USB_USBCTRL_CLKSRC_SYSCLK.&amp;nbsp; Note:&amp;nbsp; This change is because I don't have an external oscillator on my board, and need to use the internal relaxation oscillator.&amp;nbsp; New code should look as follows:&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/* Set clock source from internal PLL oscillator */&lt;/P&gt;&lt;P&gt;reg_ptr-&amp;gt;USBOTG.USBCTRL &amp;amp;= ~USB_USBCTRL_CLKSRC_MASK;&lt;/P&gt;&lt;P&gt;reg_ptr-&amp;gt;USBOTG.USBCTRL |= USB_USBCTRL_CLKSRC_SYSCLK;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In MQX 3.8/config/m52223evb/user_config.h:&lt;/P&gt;&lt;P&gt;Change BSPCFG_ENABLE_TTYA to 0.&amp;nbsp; Add BSPCFG_RX_RING_LEN, BSPCFG_TX_RING_LEN, and BSPCFG_ENABLE_IO_SUBSYSTEM to 0.&amp;nbsp; Change MQX_HAS_TIME_SLICE to 0, and MQX_ROM_VECTORS to 1.&amp;nbsp; Add MQX_USE_PARTITIONS to 1, MQX_USE_MUTEXES to 1, MQX_USE_LWEVENTS to 1, MQX_USE_LWMSGQ to 1, MQX_SPARSE_ISR_TABLE to 1, MQX_SPARSE_ISR_SHIFT to 7, MQX_USE_IO to 0, and PSP_MQX_MIN_USB to 1.&amp;nbsp; Change MQX_TASK_DESTRUCTION to 0.&amp;nbsp; Change include of "small_ram_config.h" to "smallest_config.h".&amp;nbsp; I've included the user_config.h file for reference.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;With these changes, adding code that contains three tasks, multiple interrupts, a bootloader (which takes 8K codespace), and bunch of other stuff, I get 42.8K for code, and 6.8K for RAM.&amp;nbsp; This leaves me plenty more space for the application.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;These are the minimal changes that I could find without heavily modifying the internals of the RTOS/USB stack.&amp;nbsp; That would save a lot more code/RAM, but it would make it much more difficult to upgrade to a newer version of the operating system if necessary.&amp;nbsp; While it does look like a lot of changes, each change is really only a line or two, and very easy to make.&amp;nbsp; These changes have been verified to connect properly on Windows XP, Windows 7, (both 32 and 64 bit versions), and Linux.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-338445"&gt;user_config.h.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 14 Nov 2012 13:09:26 GMT</pubDate>
    <dc:creator>Hspahr_89north</dc:creator>
    <dc:date>2012-11-14T13:09:26Z</dc:date>
    <item>
      <title>Minimal code/ram config for 52212 MQX CDC</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/Minimal-code-ram-config-for-52212-MQX-CDC/m-p/175562#M2290</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Freescale lists that the MQX RTOS with USB stack requires 10K of RAM and 32K of code.&amp;nbsp; Unfortunately the 52212 only has 8K of RAM.&amp;nbsp; Because of this, the vanilla off the shelf 3.8.0 MQX stack will not work.&amp;nbsp; Here are the required changes to get the stack to comfortably fit within the 52212 footprint.&amp;nbsp; Note:&amp;nbsp; This has been tested on version 3.8.0 of the MQX stack using CodeWarrior 7.2.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Base your build off the 52223evb.cw project in the MQX folder.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In MQX 3.8/mqx/source/psp/coldfire/int_unx.c:&lt;/P&gt;&lt;P&gt;Add #if _DEBUG around printf statements.&amp;nbsp; New code should look as follows:&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#if _DEBUG&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; printf( "\n*** UNHANDLED INTERRUPT ***\n"); &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; printf( "Vector #: %d&amp;nbsp; 0x%x\n\r",vector,vector);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; printf( "Offset&amp;nbsp; : %d&amp;nbsp; 0x%x\n\r",offset,offset);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; printf( "Task Id: 0x%0x Td_ptr 0x%x Stack Frame: 0x%x\n\r",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; td_ptr-&amp;gt;TASK_ID, td_ptr, basic_frame_ptr);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; printf( "Interrupt_nesting level: %d&amp;nbsp;&amp;nbsp; PC: 0x%08x&amp;nbsp;&amp;nbsp; SR: 0x%04x\n\r",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kernel_data-&amp;gt;IN_ISR,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; basic_frame_ptr-&amp;gt;FRAME.RETURN_ADDRESS,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; basic_frame_ptr-&amp;gt;FRAME.STATUS_REGISTER );&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;In MQX 3.8/usb/device/source/include/usbfs/usbprv_fs.h:&lt;/P&gt;&lt;P&gt;Add #if PSP_MQX_MIN_USB to reduce number of endpoints.&amp;nbsp; New code should look as follows:&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#if PSP_MQX_MIN_USB&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define USB_MAX_ENDPOINTS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (4)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define MAX_XDS_FOR_TR_CALLS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (4)&lt;/P&gt;&lt;P&gt;#elif PSP_MQX_CPU_IS_MCF51JM&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define USB_MAX_ENDPOINTS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (4)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define MAX_XDS_FOR_TR_CALLS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (8)&lt;/P&gt;&lt;P&gt;#else&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define USB_MAX_ENDPOINTS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (16)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define MAX_XDS_FOR_TR_CALLS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (32)&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In MQX 3.8/usb/device/source/classes/include/usb_stack_config.h:&lt;/P&gt;&lt;P&gt;Change IMPLEMENT_QUEUING to 0.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In MQX 3.8/usb/device/source/classes/include/usb_cdc.h:&lt;/P&gt;&lt;P&gt;Add #if IMPLEMENT_QUEUING to USB_CLASS_CDC_ENDPOINT.&amp;nbsp; The above file is also copied into MQX 3.8/lib/m52223evb.cw/usb/device/usb_cdc.h.&amp;nbsp; New code should look as follows:&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/* USB class cdc endpoint data */&lt;/P&gt;&lt;P&gt;typedef struct _usb_class_cdc_endpoint&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint_8 endpoint;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* endpoint num */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint_8 type;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* type of endpoint (interrupt, bulk or isochronous) */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #if IMPLEMENT_QUEUING&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint_8 bin_consumer;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* the num of queued elements */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint_8 bin_producer;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* the num of de-queued elements */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endif&lt;/P&gt;&lt;P&gt;}USB_CLASS_CDC_ENDPOINT;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In MQX 3.8/source/bsp/m52223evb/gpio_init.c:&lt;/P&gt;&lt;P&gt;Change USB_USBCTRL_CLKSRC_OSCCLK to USB_USBCTRL_CLKSRC_SYSCLK.&amp;nbsp; Note:&amp;nbsp; This change is because I don't have an external oscillator on my board, and need to use the internal relaxation oscillator.&amp;nbsp; New code should look as follows:&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/* Set clock source from internal PLL oscillator */&lt;/P&gt;&lt;P&gt;reg_ptr-&amp;gt;USBOTG.USBCTRL &amp;amp;= ~USB_USBCTRL_CLKSRC_MASK;&lt;/P&gt;&lt;P&gt;reg_ptr-&amp;gt;USBOTG.USBCTRL |= USB_USBCTRL_CLKSRC_SYSCLK;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In MQX 3.8/config/m52223evb/user_config.h:&lt;/P&gt;&lt;P&gt;Change BSPCFG_ENABLE_TTYA to 0.&amp;nbsp; Add BSPCFG_RX_RING_LEN, BSPCFG_TX_RING_LEN, and BSPCFG_ENABLE_IO_SUBSYSTEM to 0.&amp;nbsp; Change MQX_HAS_TIME_SLICE to 0, and MQX_ROM_VECTORS to 1.&amp;nbsp; Add MQX_USE_PARTITIONS to 1, MQX_USE_MUTEXES to 1, MQX_USE_LWEVENTS to 1, MQX_USE_LWMSGQ to 1, MQX_SPARSE_ISR_TABLE to 1, MQX_SPARSE_ISR_SHIFT to 7, MQX_USE_IO to 0, and PSP_MQX_MIN_USB to 1.&amp;nbsp; Change MQX_TASK_DESTRUCTION to 0.&amp;nbsp; Change include of "small_ram_config.h" to "smallest_config.h".&amp;nbsp; I've included the user_config.h file for reference.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;With these changes, adding code that contains three tasks, multiple interrupts, a bootloader (which takes 8K codespace), and bunch of other stuff, I get 42.8K for code, and 6.8K for RAM.&amp;nbsp; This leaves me plenty more space for the application.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;These are the minimal changes that I could find without heavily modifying the internals of the RTOS/USB stack.&amp;nbsp; That would save a lot more code/RAM, but it would make it much more difficult to upgrade to a newer version of the operating system if necessary.&amp;nbsp; While it does look like a lot of changes, each change is really only a line or two, and very easy to make.&amp;nbsp; These changes have been verified to connect properly on Windows XP, Windows 7, (both 32 and 64 bit versions), and Linux.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-338445"&gt;user_config.h.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 Nov 2012 13:09:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/Minimal-code-ram-config-for-52212-MQX-CDC/m-p/175562#M2290</guid>
      <dc:creator>Hspahr_89north</dc:creator>
      <dc:date>2012-11-14T13:09:26Z</dc:date>
    </item>
    <item>
      <title>Re: Minimal code/ram config for 52212 MQX CDC</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/Minimal-code-ram-config-for-52212-MQX-CDC/m-p/175563#M2291</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you for sharing !&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;MartinK&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 Nov 2012 15:13:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/Minimal-code-ram-config-for-52212-MQX-CDC/m-p/175563#M2291</guid>
      <dc:creator>c0170</dc:creator>
      <dc:date>2012-11-14T15:13:40Z</dc:date>
    </item>
  </channel>
</rss>

