<?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 Re: FreeRTOS tips in LPCXpresso IDE</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540878#M7192</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Rob65 on Thu Jan 05 13:17:28 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: toddatm&lt;/STRONG&gt;&lt;BR /&gt;Isn't there some probability you will grab a first value just before it reloads and a second value after it reloads? In that case the second value will be larger than the first?&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Yes there is.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If the section of the code you time takes more than 1 msec then you need to check the tickcount&amp;nbsp; also.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;And there is always a chance the tick interrupt fired just in between reading the Tickcounter's value register and reading FreeRTOSes tickcount.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you want this to be real safe, combinethe instructions in one function and disable interrupt while in there.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Still, this most of the times just works.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Rob&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 21:53:59 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T21:53:59Z</dc:date>
    <item>
      <title>FreeRTOS tips</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540865#M7179</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Rob65 on Thu Apr 21 09:54:36 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I've just started using FreeRTOS on the lpc1343.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;FreeRTOS is available from the &lt;/SPAN&gt;&lt;A href="http://http://ics.nxp.com/support/lpcxpresso/" rel="nofollow noopener noreferrer" target="_blank"&gt;LPCXpresso support&lt;/A&gt;&lt;SPAN&gt; on the NXP website for the 1100, 1300 and 1700 families giving us as very quick start at using an RTOS.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But as always, new software comes with new questions and problems that have to be solved. I've been mostly solving and testing the last two days and I think this is a good moment of sharing some information that may be usefull to others.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If you feel like it, add your own tips &amp;amp; tricks; spreading information spreads happiness &lt;SPAN class="lia-unicode-emoji" title=":grinning_face_with_smiling_eyes:"&gt;&lt;LI-EMOJI id="lia_grinning-face-with-smiling-eyes" title=":grinning_face_with_smiling_eyes:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[B]Code halting in the hardfault_handler[/B]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;After adding my own task I somehow always ended up with the debugger halting in the hardfault handler. This means that some code is trying to access an address that is not available to the CPU (e.g. reading from or writing to an unknown address).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The cause for this was that my tasks returned.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;A tasks may never return to the system. The tasks runs in its own environment with its own stack, returning from the tasks returns to an unknown address. Always include a while(1) loop in your code - normally this is the part of the tasks where you process all the incoming events.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[B]Problems debugging: strange jumps in the source files[/B]With the current versions (&amp;lt; =3.6.2) a problem exists in the linker resulting in wrong debug information in the binary (.axf) file. the --gc-sections option that is used by the linker optimizes code size by removing certain sections but unfortunately this may impact debugging information needed.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Remove the --gc-sections from the linker options (in the C/C++ Build - Settings section of the project properties).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[B]Application does not run, no response from the application[/B]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;After creating the tasks with xTaskCreate() and calling vTaskStartScheduler() nothing happens. Placing breakpoints in my tasks code shows that the tasks are never started and when I suspend debugging I return to the line with the vTaskStartScheduler() call.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In my case this was due to heap problems. The FreeRTOSConfig.h file contains a define for the heap size (configTOTAL_HEAP_SIZE). The heap is where all stacks, process information (TCBs), Queues and other stuff is stored.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;In xTaskCreate() the stacksize is given in 32-bits words, configTOTAL_HEAP_SIZE is specified in bytes!!!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;There are two options in the FreeRTOSConfig.h file that control stack and heap checking. enabling these will make your code bigger but it is a good thing to use (if possible).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;You also have to add handlers to your own code to capture the errors. You might use:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;#if (configCHECK_FOR_STACK_OVERFLOW &amp;gt; 0)
void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName )
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; volatile signed char *name;
&amp;nbsp;&amp;nbsp;&amp;nbsp; volatile xTaskHandle *pxT;

&amp;nbsp;&amp;nbsp;&amp;nbsp; name = pcTaskName;
&amp;nbsp;&amp;nbsp;&amp;nbsp; pxT&amp;nbsp; = pxTask;
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1);
}
#endif

#if (configUSE_MALLOC_FAILED_HOOK &amp;gt; 0)
void vApplicationMallocFailedHook(void)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1);
}
#endif
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt;Set both config.... defines above to 1 to enable checking.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If you want to know if you are still OK on heap space, suspend your debug session and check the variable xFreeBytesRemaining in heap_2.c (part of FreeRTOS_Library/portable, on line 103 in the FreeRTOS 6.1.0 sample code).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you suspend debugging and end up in one of the hooks in the code above you either ran out of stack or heap.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[B]Using printf() to check where your code is going.[/B]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The book "Using the FreeRTOS Real Time Kernel NXP lpc17xx edition" (of which a sneak preview is available &lt;/SPAN&gt;&lt;A href="http://http://ics.nxp.com/literature/books/microcontrollers/pdf/using.freertos.lpc17xx.summary.pdf" rel="nofollow noopener noreferrer" target="_blank"&gt;here&lt;/A&gt;&lt;SPAN&gt; at the NXP website) mentions printf-stdarg.c. This optimized version is not in the sample code on the NXP website but is is available in the complete download at &lt;/SPAN&gt;&lt;A href="http://http://www.freertos.org/" rel="nofollow noopener noreferrer" target="_blank"&gt;freertos.org&lt;/A&gt;&lt;SPAN&gt; (in the 7.0.0 version it is in FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If you want to print out multiple lines of information it might be usefull to use a mutex to guard printing, just to make sure that the text stays readable.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Please note that semi hosting console output is slow, very slow, and that may (will) impact your code. do not use semi hosting but a real UART (I am using the I2C to Uart controller on the base board from Embedded Artists for this).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;That's all for now - more to follow.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Rob&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:53:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540865#M7179</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:53:50Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS tips</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540866#M7180</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by rmteo on Thu Apr 21 10:01:39 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;What size footprint (FLASH &amp;amp; RAM) are you seeing for typical apps?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:53:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540866#M7180</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:53:51Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS tips</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540867#M7181</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by jharwood on Thu Apr 21 10:31:25 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: rmteo&lt;/STRONG&gt;&lt;BR /&gt;What size footprint (FLASH &amp;amp; RAM) are you seeing for typical apps?&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My 1769 is currently running lwIP and a telnet server with a limit of 4 active sessions. SNMP is included along with a private MIB. There's also DNS, Syslog and SNTP.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Flash is around 90k (release build). &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Ethernet MAC buffers are in the upper 16k AHB RAM bank&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;FreeRTOS heap is located in the lower 16k AHB RAM bank&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;SRAM is at about 28k by tweaking the lwIP config. Main stack uses 768 bytes, so there's about 3.5k left for the C run time heap.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:53:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540867#M7181</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:53:52Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS tips</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540868#M7182</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by rmteo on Thu Apr 21 11:46:23 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for the info.&amp;nbsp; I would also be interested in size info for the more typical multi-tasking control type applications - and the minimum footprint required by FreeRTOS.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:53:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540868#M7182</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:53:52Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS tips</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540869#M7183</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by martinho on Thu Apr 21 23:02:39 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;In My application (LPC1752) the FreeRTOS library is using this space:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;make --no-print-directory post-build
Performing post-build steps
arm-none-eabi-size libFreeRTOS_Library.a ; # arm-none-eabi-objdump -h -S libFreeRTOS_Library.a &amp;gt;libFreeRTOS_Library.lss
&amp;nbsp;&amp;nbsp; text&amp;nbsp;&amp;nbsp;&amp;nbsp; data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bss&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dec&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hex filename
&amp;nbsp;&amp;nbsp;&amp;nbsp; 156&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 156&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9c list.o (ex libFreeRTOS_Library.a)
&amp;nbsp;&amp;nbsp; 1436&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; 1436&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 59cqueue.o (ex libFreeRTOS_Library.a)
&amp;nbsp;&amp;nbsp; 2852&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 280&amp;nbsp;&amp;nbsp;&amp;nbsp; 3140&amp;nbsp;&amp;nbsp;&amp;nbsp; c44tasks.o (ex libFreeRTOS_Library.a)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0timers.o (ex libFreeRTOS_Library.a)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 292&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; 8216&amp;nbsp;&amp;nbsp;&amp;nbsp; 8512&amp;nbsp;&amp;nbsp;&amp;nbsp; 2140 heap_2.o (ex libFreeRTOS_Library.a)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 340&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 344&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 158 port.o (ex libFreeRTOS_Library.a)&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using most of the kernel functions so probably You can reduce size further if You do not use all of them. The bss of heap_2.o is the memory pool used by the kernel / tasks (size depends on your memory need)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;P.S. I'm using the latest version (V7.0.0) for this reason you see the timers.o file that was added in this version.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Martin&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:53:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540869#M7183</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:53:53Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS tips</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540870#M7184</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Rob65 on Fri Apr 22 00:02:21 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;[B]How to know (and study) the memory footprint[/B]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This is not FreeRTOS specific but there is some info on footprint at the beginning and the end with FreeRTOS specific info.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Code size is important,an lpc1343 has 'only' 23kBytes of Flash that can be used to store your program. Data size may be even more important since there is only 8 kByte of RAM available.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;But how to know the amount of memory used?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The easy way is to check the output of the build.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The standard SimpleDemo application (all on the lpc1343) will show the following output in the console window:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
Building target: SimpleDemo.axf
Invoking: MCU Linker
arm-none-eabi-gcc -nostdlib -L"C:\Users\Rob\Documents\lpcxpresso_3.6\workspace\FreeRTOS_Library\Debug" -L"C:\Users\Rob\Documents\lpcxpresso_3.6\workspace\CMSISv1p30_LPC13xx\Debug" -Xlinker -Map=SimpleDemo.map -Xlinker --gc-sections -mcpu=cortex-m3 -mthumb -T "SimpleDemo_Debug.ld" -o"SimpleDemo.axf"&amp;nbsp; ./cr_startup_lpc13.o ./main.o&amp;nbsp;&amp;nbsp; -lFreeRTOS_Library -lCMSISv1p30_LPC13xx
Finished building target: SimpleDemo.axf
 
make --no-print-directory post-build
Performing post-build steps
arm-none-eabi-size SimpleDemo.axf; # arm-none-eabi-objcopy -O ihex SimpleDemo.axf SimpleDemo.hex ;
&amp;nbsp;&amp;nbsp; text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bss&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dec&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hex&amp;nbsp;&amp;nbsp;&amp;nbsp; filename
&amp;nbsp;&amp;nbsp; 7808&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 532&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2344&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10684&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 29bc&amp;nbsp;&amp;nbsp;&amp;nbsp; SimpleDemo.axf&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt;This shows us a successful build. Text + data means program code (Flash), so that is 8340 bytes, and data + bss tells you how much RAM is needed.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Data is pre initialized data (this data has a value at program start), bss is the so called 'blanked storage space' and this is un-initialized data (the cr_startup_lpc13.c startup code will clear this part of memory).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you use too much RAM you might see something like this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;Building target: SimpleDemo.axf
Invoking: MCU Linker
arm-none-eabi-gcc -nostdlib -L"C:\Users\Rob\Documents\lpcxpresso_3.6\workspace\FreeRTOS_Library\Debug" -L"C:\Users\Rob\Documents\lpcxpresso_3.6\workspace\CMSISv1p30_LPC13xx\Debug" -Xlinker -Map=SimpleDemo.map -Xlinker --gc-sections -mcpu=cortex-m3 -mthumb -T "SimpleDemo_Debug.ld" -o"SimpleDemo.axf"&amp;nbsp; ./cr_startup_lpc13.o ./main.o&amp;nbsp;&amp;nbsp; -lFreeRTOS_Library -lCMSISv1p30_LPC13xx
c:/nxp/lpcxpresso_3.6/tools/bin/../lib/gcc/arm-none-eabi/4.3.3/../../../../arm-none-eabi/bin/ld.exe: SimpleDemo.axf section .bss will not fit in region RamLoc8
c:/nxp/lpcxpresso_3.6/tools/bin/../lib/gcc/arm-none-eabi/4.3.3/../../../../arm-none-eabi/bin/ld.exe: region RamLoc8 overflowed by 832 bytes
collect2: ld returned 1 exit status
make: *** [SimpleDemo.axf] Error 1&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt;Scroll a bit to the right and you see that there is too much data to fin in the RAM (region RamLoc8 is the 8 kB RAM) . 832 bytes too big.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;To determine what part of the code/data is taking up which amount of memory you have to look at the MAP file. It's in your workspace/SimpleDemo/Debug directory and is called SimpleDemo.map.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You have to scroll through the file a bit to find the pieces of text you need. Scrolling through the file you will see that suddenly there are 32-bit hex numbers with some text that you might recognize as file or function names. This continues until there are a lot of lines starting with ".debug_".&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is, part of, such a section:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;.text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000344&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4e8 C:\Users\Rob\Documents\lpcxpresso_3.6\workspace\FreeRTOS_Library\Debug\libFreeRTOS_Library.a(queue.o)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0000060c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xQueueGenericSendFromISR
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x000007a0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xQueueCreate
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000364&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vQueueDelete
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000668&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xQueueGenericSend
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x000003b4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xQueueReceiveFromISR
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000814&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xQueueCreateCountingSemaphore
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000354&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xQueueIsQueueFullFromISR
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000378&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uxQueueMessagesWaiting
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000488&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xQueueGenericReceive
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000344&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uxQueueMessagesWaitingFromISR
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000348&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xQueueIsQueueEmptyFromISR
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000754&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xQueueCreateMutex
 .text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0000082c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xc64 C:\Users\Rob\Documents\lpcxpresso_3.6\workspace\FreeRTOS_Library\Debug\libFreeRTOS_Library.a(tasks.o)
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;SPAN&gt;[LIST]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[*].text 0x00000344&amp;nbsp; 0x4e8 C:\Users\Rob\.....&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Shows the start of a text segment (program code) with a length of 0x4e8 bytes (1.2 kB) and the filename.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[*]0x00000348&amp;nbsp; xQueueIsQueueEmptyFromISR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;tells us that the function xQueueIsQueueEmptyFromISR starts at address 0x0348&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[*].text 0x0000082c&amp;nbsp; 0xc64&amp;nbsp; C:\....&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;is where the next section (in this case the next file) starts.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[/LIST]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;You can import the projects and compile the example yourself to see the complete file. Please do so, change some settings in the FreeRTOSConfig.h to see what happens with your code and data size.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The standard application uses:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[LIST]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[*]472 bytes of startup code&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[*]364 bytes for main.o (the program with the two tasks)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[*]5276 bytes for FreeRTOS&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[*]1692 bytes for the CMS and other libraries used&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[*]8 bytes of read only data (.rodata section)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[/LIST]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The one more thing I like to show is the data section (RAM) where you'll see the memory overflow:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
.data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10000000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x214 load address 0x00001e8c
 FILL mask 0xff
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10000000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _data = .
 *(vtable)
 *(.data*)
 .data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10000000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4 ./main.o
 .data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10000004&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4 C:\Users\Rob\Documents\lpcxpresso_3.6\workspace\FreeRTOS_Library\Debug\libFreeRTOS_Library.a(heap_2.o)
 .data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10000008&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4 C:\Users\Rob\Documents\lpcxpresso_3.6\workspace\FreeRTOS_Library\Debug\libFreeRTOS_Library.a(port.o)
 .data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1000000c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4 C:\Users\Rob\Documents\lpcxpresso_3.6\workspace\CMSISv1p30_LPC13xx\Debug\libCMSISv1p30_LPC13xx.a(system_LPC13xx.o)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1000000c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SystemCoreClock
 .data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10000010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x204 c:/nxp/lpcxpresso_3.6/tools/bin/../lib/gcc/arm-none-eabi/4.3.3/../../../../arm-none-eabi/lib/thumb2\libcr_c.a(ctype.o)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10000010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __ctype
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10000214&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN (0x4)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10000214&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _edata = .

.bss&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10000218&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x2128 load address 0x000020a0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10000218&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _bss = .
 *(.bss*)
 .bss&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10000218&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4 ./main.o
 .bss&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1000021c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x100 C:\Users\Rob\Documents\lpcxpresso_3.6\workspace\FreeRTOS_Library\Debug\libFreeRTOS_Library.a(tasks.o)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x100002bc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pxCurrentTCB
 *fill*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1000031c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4 00
 .bss&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10000320&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x2018 C:\Users\Rob\Documents\lpcxpresso_3.6\workspace\FreeRTOS_Library\Debug\libFreeRTOS_Library.a(heap_2.o)
 *(COMMON)
 COMMON&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10002338&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x8 c:/nxp/lpcxpresso_3.6/tools/bin/../lib/gcc/arm-none-eabi/4.3.3/../../../../arm-none-eabi/lib/thumb2\libcr_c.a(__init_alloc.o)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10002338&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __heaps
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1000233c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __end_of_heap
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10002340&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN (0x4)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10002340&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _ebss = .
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10002340&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PROVIDE (end, .)&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt;The first line shows the section of the initialized data; 0x214 bytes (532 decimal) are stored in Flash, these are copied to RAM during startup.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Looking a bit further you'll see that heap_2.o uses 0x2018 bytes of RAM (remember: 8 kBytes is 0x2000 !).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This all gives you some pointers of what to look for when looking at code size.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;As a nice 'homework' assignment, let's add a string to the main.c file and see what happens with your flash and ram sizes.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Use both ways to add a string, compile both and compare the .map files:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[LIST=1]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[*]char *str = "This is just a plain string I like to use for printing";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[*]char str[] = "This is just a plain string I like to use for printing";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[/LIST]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Look what happens to the size of your .data section. You will see that the first line (containing the 0x214 load address 0x00001e8c) has an increased size, but have a look at the .data section for main.o. One variant uses more memory than the other...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My current application (still under development) is, I think, a typical embedded application for a small device has the following footprint:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;&amp;nbsp;&amp;nbsp; text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bss&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dec&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hex&amp;nbsp;&amp;nbsp;&amp;nbsp; filename
&amp;nbsp; 20364&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 548&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5596&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 26508&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 678c&amp;nbsp;&amp;nbsp;&amp;nbsp; SimpleDemo.axf
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt;This is a small board computer with an interface to 3 wireless sensors, 4 PWM controllers, and LCD and some buttons. Software is still simple, most of the code is the framework to handle all the events.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:53:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540870#M7184</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:53:54Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS tips</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540871#M7185</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by rmteo on Fri Apr 22 07:50:27 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you very much for the size info guys.&amp;nbsp; I am particularly interested in small footprint RTOSes that can run in the smallest ARM Cortex micros such as the LPC1111 which has only 8K Flash and 2K RAM.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The commercial RTOSes I am looking at are Avix-RT, Q-Kernel (not yet for ARM, only PIC32) and emBOS.&amp;nbsp; All 3 are pre-emptive (and claim to be hard real time) and optionally co-operative.&amp;nbsp; The free ones that I looked at are ChibiOS and CooOS but not FreeRTOS which is why I asked for&amp;nbsp; the size info.&amp;nbsp; It appears that they are all fairly similar in their memory requirements for typical applications - starting at about 15-25K Flash and several kBytes of RAM depending upon number of tasks and task stack sizes.&amp;nbsp; The exception to these numbers is emBOS which needs as little as &amp;lt;2K flash for a minimum configuration.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Another interesting option is the Tasking Library that is an integral part of the CrossWorks (supports ARM7, ARM9, XScale and Cortex-M0/3/4) development system for ARM. It is a royalty-free library that provides a multi-priority, pre-emptive, task switching and synchronisation facility. Additionally, the library can also provide timer and interrupt handling support. Its memory requirements are small - similar to that of emBOS.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;As for a purely co-operative RTOS, I have pretty much settled on Salvo.&amp;nbsp; Without going into the pros and cons of co-operative vs. pre-emptive, there are situations where I feel one would be more apprpriate over the other.&amp;nbsp; The interesting thing about a co-operative one such as Salvo is that you can do a multitasking app with 5-6 tasks (including things like soft RS232) in 1K Flash and &amp;lt;50 bytes RAM on an 8-bit MCU (obviously more on a 32-bit Cortex, I am seeing &amp;lt;2x).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;BTW, all 3 commercial pre-emptive RTOSes are about US$5-6K for a royalty free source code license and Salvo is US$1.5K - CrossWorks is US$1.5K for the development system that includes the tasking library.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:53:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540871#M7185</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:53:55Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS tips</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540872#M7186</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by&amp;nbsp; on Fri Apr 22 11:09:48 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi guys,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I came to this thread a bit late, but will add a few comments of my own, replying to many posts at once, although it looks like the OP pretty much has everything covered anyway.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;After adding my own task I somehow always ended up with the debugger halting in the hardfault handler. This means that some code is trying to access an address that is not available to the CPU (e.g. reading from or writing to an unknown address).&lt;BR /&gt;The cause for this was that my tasks returned.&lt;BR /&gt;A tasks may never return to the system&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;That is correct.&amp;nbsp; Never let a task run off the end of the function that implements it.&amp;nbsp; If you want a task to run once, then simply add a vTaskDelete( NULL ); call to the end of the task, and it will delete itself rather than running off the end of the function.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Better still, if you are using FreeRTOS V7, then instead of using a task at all, use a one shot timer.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;In my case this was due to heap problems. The FreeRTOSConfig.h file contains a define for the heap size (configTOTAL_HEAP_SIZE). The heap is where all stacks, process information (TCBs), Queues and other stuff is stored.&lt;BR /&gt;In xTaskCreate() the stacksize is given in 32-bits words, configTOTAL_HEAP_SIZE is specified in bytes!!!&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;As is documented.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;There are two options in the FreeRTOSConfig.h file that control stack and heap checking. enabling these will make your code bigger but it is a good thing to use (if possible).&lt;BR /&gt;You also have to add handlers to your own code to capture the errors. You might use:&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Absolutely - it is always good practice to use these during debugging, even if you then take them out when everything is stable.&amp;nbsp; The latest FreeRTOS versions also have some configASSERTS() laced through the code to assist even more.&amp;nbsp; configASSERT() has the same functionality as the standard C assert(), but the standard C assert() is not used as not all the many many compilers supported by FreeRTOS include an assert.h implementation.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;Thanks for the info. I would also be interested in size info for the more typical multi-tasking control type applications - and the minimum footprint required by FreeRTOS.&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;With respect to FreeRTOS - see here:&lt;/SPAN&gt;&lt;BR /&gt;&lt;A href="http://http://www.freertos.org/FAQMem.html"&gt;http://www.freertos.org/FAQMem.html&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;Thank you very much for the size info guys. I am particularly interested in small footprint RTOSes that can run in the smallest ARM Cortex micros such as the LPC1111 which has only 8K Flash and 2K RAM.&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;With a pre-emptive system, you really have to consider how much RAM is used by task stacks, not how much is used by the kernel (as the kernel will only use a few bytes, and a stack has to be as big as a stack has to be).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;On a device such as the Cortex-M3 the stack handling is pretty much done automatically by the hardware.&amp;nbsp; Interrupt use a separate stack without any intervention from the kernel.&amp;nbsp; This is unlike something like, for example, a MIPS core where the kernel has to manage stack switching to prevent a fully nested worth of interrupt stacks having to be allocated to each task.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;2K of RAM is always going to be a small amount for a preemptive kernel, because of the required task stacks.&amp;nbsp; How much stack is required depends on the libraries being used as much as anything else.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Just for the record, FreeRTOS has preemptive, co-operative options, as well as software timers for run to completion and co-routines for ultra tiny co-operative multasking (with a lot of restrictions).&amp;nbsp; The latter two all share a stack between timers and/or co-routines, so require much less RAM.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for the plug to the LPC17xx version of the FreeRTOS tutorial book - whoever that was ;o)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:53:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540872#M7186</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:53:55Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS tips</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540873#M7187</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by rmteo on Fri Apr 22 14:42:55 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for the info, Richard.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:53:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540873#M7187</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:53:56Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS tips</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540874#M7188</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Rob65 on Fri Apr 22 23:26:31 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;A Release build of SimpleDemo with all optimizations set to -O3 and --gc-sections shows:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;SimpleDemo.bin ; checksum -p LPC1343 -d SimpleDemo.bin;
&amp;nbsp;&amp;nbsp; text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bss&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dec&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hex&amp;nbsp;&amp;nbsp;&amp;nbsp; filename
&amp;nbsp;&amp;nbsp; 5220&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 532&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2340&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8092&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1f9c&amp;nbsp;&amp;nbsp;&amp;nbsp; SimpleDemo.axf&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt;On this system the debug version (with optimization -O0 and --gc-sections) I see the following:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;SimpleDemo.bin ; checksum -p LPC1343 -d SimpleDemo.bin;
&amp;nbsp;&amp;nbsp; text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bss&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dec&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hex&amp;nbsp;&amp;nbsp;&amp;nbsp; filename
&amp;nbsp;&amp;nbsp; 8684&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 532&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2336&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11552&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2d20&amp;nbsp;&amp;nbsp;&amp;nbsp; SimpleDemo.axf&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt;Removing the --gc-sections option from the linker (which I needed in order to be able to properly debug my application) results in the following figures:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Release:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;SimpleDemo.bin ; checksum -p LPC1343 -d SimpleDemo.bin;
&amp;nbsp;&amp;nbsp; text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bss&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dec&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hex&amp;nbsp;&amp;nbsp;&amp;nbsp; filename
&amp;nbsp;&amp;nbsp; 6744&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 532&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2340&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9616&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2590&amp;nbsp;&amp;nbsp;&amp;nbsp; SimpleDemo.axf&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt;Debug:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;SimpleDemo.bin ; checksum -p LPC1343 -d SimpleDemo.bin;
&amp;nbsp;&amp;nbsp; text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bss&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dec&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hex&amp;nbsp;&amp;nbsp;&amp;nbsp; filename
&amp;nbsp; 11428&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 532&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2336&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 14296&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 37d8&amp;nbsp;&amp;nbsp;&amp;nbsp; SimpleDemo.axf&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt;This shows that compiler and linker options are important when comparing code size.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Looking at FreeRTOS this still does not tel you enough. One needs to provide the exact config settings during compilation of library and application. I expect FreeRTOS to be customizable the same way I am used from uC-OS II meaning that there is a lot to tweak in the library and your application. (I know&amp;nbsp; I will have to do a lot of tweaking to get everything to fit in a 1343 ...&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:53:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540874#M7188</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:53:57Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS tips</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540875#M7189</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Rob65 on Fri Apr 22 23:59:26 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;[B]Timing your programs[/B]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;FreeRTOS uses the systick block to generate its tick interrupt.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The systick block is a simple timer that runs at the CPU's clock frequency and counts down at every clock pulse, when it reaches zero an interrupt is generated and the timer reloads a value from the reload value register.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The interrupt is handled by FreeRTOS to keep track of the number of ticks.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;We can use this timer combined with the FreeRTOS TickCount to do some timing of our own programs. If you include the following code in your code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t old_tickcount, old_subtick, new_tickcount, new_subtick, reload;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; old_tickcount = xTaskGetTickCount();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; old_subtick = *((volatile unsigned long *) 0xe000e018);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . some code
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new_tickcount = xTaskGetTickCount();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new_subtick = *((volatile unsigned long *) 0xe000e018);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reload = *((volatile unsigned long *) 0xe000e014);&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt;you can quickly measure how much time was spent in that code.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I placed the first lines of code just before an xQueueSend() and the second part just after the xQueueReceive to measure how long it takes before the message is processed. This time will depend of the tasks priorities and other things running in your system.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In my case the tickcounts are both the same, new_subtick is 54392, old_subtick is 57272 and reload is 71999.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;FreeRTOS is configured with a 1000 Hz tick interrupt and the CPU clock frequency is 72 MHz (this is all configurable). The reload values 71999 makes sure the systick counts 72000 clock pulses between two interrupts so this matches perfectly.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Note that the new tickcount is lower than the old one: the timer counts down to 0.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Between two times loading the value the program spent 57272 - 54392 = 2880 clock pulses / (reload+1) = 0.040 (milli seconds since we run at 1000 Hz tick).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I just placed a breakpoint after the code, you could also calculate the time and store it (or store the max measured).&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:53:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540875#M7189</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:53:57Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS tips</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540876#M7190</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by apighin on Wed Jan 04 09:45:48 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;If code and data memory footprint is paramount in your design, you may want to look at this RTOS: &lt;/SPAN&gt;&lt;A href="http://"&gt;http://www.code-time.com/products.html&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It is fully scalable and preemptive, and the base size for the Cortex-M3 is about 800 bytes (ROM). Even the maximum configuration is stated as less than 3KB (ROM), and that includes things like round-robin, etc.&amp;nbsp; I am sure you'd best the embOS numbers by quite a bit.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:53:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540876#M7190</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:53:58Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS tips</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540877#M7191</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by toddatm on Thu Jan 05 12:54:01 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: Rob65&lt;/STRONG&gt;&lt;BR /&gt;[B]Timing your programs[/B]&lt;BR /&gt;... &lt;BR /&gt;Note that the new tickcount is lower than the old one: the timer counts down to 0.&lt;BR /&gt;Between two times loading the value the program spent 57272 - 54392 = 2880 clock pulses / (reload+1) = 0.040 (milli seconds since we run at 1000 Hz tick).&lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Isn't there some probability you will grab a first value just before it reloads and a second value after it reloads? In that case the second value will be larger than the first?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:53:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540877#M7191</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:53:59Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS tips</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540878#M7192</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Rob65 on Thu Jan 05 13:17:28 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: toddatm&lt;/STRONG&gt;&lt;BR /&gt;Isn't there some probability you will grab a first value just before it reloads and a second value after it reloads? In that case the second value will be larger than the first?&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Yes there is.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If the section of the code you time takes more than 1 msec then you need to check the tickcount&amp;nbsp; also.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;And there is always a chance the tick interrupt fired just in between reading the Tickcounter's value register and reading FreeRTOSes tickcount.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you want this to be real safe, combinethe instructions in one function and disable interrupt while in there.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Still, this most of the times just works.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Rob&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:53:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540878#M7192</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:53:59Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS tips</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540879#M7193</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by csuttner on Mon Dec 17 11:11:31 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: jharwood&lt;/STRONG&gt;&lt;BR /&gt;My 1769 is currently running lwIP and a telnet&amp;nbsp; server with a limit of 4 active sessions. SNMP is included along with a&amp;nbsp; private MIB. There's also DNS, Syslog and SNTP.&lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello jharwood,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm having trouble setting up a telnet server on the lpc1769. I use the EasyWeb TCP/IP Stack but the functions it contains are on a very low level. Since you have already got it working I would appreciate it if you coul post your solution.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Best Regards&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Chris&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:54:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540879#M7193</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:54:00Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS tips</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540880#M7194</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by csuttner on Mon Dec 17 11:15:09 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: jharwood&lt;/STRONG&gt;&lt;BR /&gt;My 1769 is currently running lwIP and a telnet server with a limit of 4 active sessions. SNMP is included along with a private MIB. There's also DNS, Syslog and SNTP.&lt;BR /&gt;&lt;BR /&gt;Flash is around 90k (release build). &lt;BR /&gt;&lt;BR /&gt;Ethernet MAC buffers are in the upper 16k AHB RAM bank&lt;BR /&gt;FreeRTOS heap is located in the lower 16k AHB RAM bank&lt;BR /&gt;&lt;BR /&gt;SRAM is at about 28k by tweaking the lwIP config. Main stack uses 768 bytes, so there's about 3.5k left for the C run time heap.&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: jharwood&lt;/STRONG&gt;&lt;BR /&gt;My 1769 is currently running lwIP and a telnet&amp;nbsp;&amp;nbsp; server with a limit of 4 active sessions. SNMP is included along with a&amp;nbsp;&amp;nbsp; private MIB. There's also DNS, Syslog and SNTP.&lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello jharwood,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm having trouble setting up a telnet server on the lpc1769. I use the&amp;nbsp; EasyWeb TCP/IP Stack but the functions it contains are on a very low&amp;nbsp; level. Since you have already got it working I would appreciate it if&amp;nbsp; you coul post your solution.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Best Regards&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Chris&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:54:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540880#M7194</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:54:01Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS tips</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540881#M7195</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Rob65 on Mon Dec 17 11:49:24 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: csuttner&lt;/STRONG&gt;&lt;BR /&gt;Hello jharwood,&lt;BR /&gt;I'm having trouble setting up a telnet server on the lpc1769.&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;this topic is about FreeRTOS tips, the lwIP program was just uzed as an example to demonstrate FreeRTOS.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Please open a new topic to address your telnet problems and keep this thread clean, otherwise things are very hard to follow.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Rob&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:54:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540881#M7195</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:54:01Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS tips</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540882#M7196</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Giri Sparrow on Tue Feb 03 05:02:59 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt; i need to clarify following things.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;We are going to interface a GPS and a GSM module to lpc82x controller.And we need to Get the GPS data from the GPS module and send it to our server using GSM modem. Will 32KB Flash memory and 8KB RAM will be sufficient for this purpose ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Or Should I have to go for Any other controllers with higher memory configuration ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards, R.Giritharan&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:54:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/FreeRTOS-tips/m-p/540882#M7196</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:54:02Z</dc:date>
    </item>
  </channel>
</rss>

