<?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>Kinetis Microcontrollers中的主题 uTasker OS - Small FLASH/RAM footprint with Solid Performance</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/uTasker-OS-Small-FLASH-RAM-footprint-with-Solid-Performance/m-p/972057#M55264</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="margin: 0in; font-size: 11.0pt;"&gt;I wanted to share with this group my experience with finding an operating system that "out of the box" had most of the features our product, an oxygen concentrator, needed in a small FLASH footprint with solid performance.&lt;/P&gt;&lt;P style="margin: 0in; font-size: 11.0pt;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="margin: 0in; font-size: 11.0pt;"&gt;I am the embedded firmware developer for this project.&amp;nbsp; I have had over 33 years working with embedded systems, starting out with an Intel 8051 for an infrared touch panel controller for a flat panel AC plasma display to using the latest Kinetis KE14Z ARM Cortex-M0+ microcontroller for an oxygen concentrator.&amp;nbsp; In the 1980s and 90s designing code to meet the requirements of a product that used a microcontroller was manageable for a single individual.&amp;nbsp; As time marched on, the requirements for a product became more challenging to meet.&amp;nbsp; Some of these features are USB connectivity (MSD), File Systems (FAT32), Ethernet connectivity (TCP/IP), bootloader for field upgradeability, cryptography, and LCD support.&amp;nbsp; Designing embedded code with these features and without a reliable OS today can be an overwhelming task.&lt;/P&gt;&lt;P style="margin: 0in; font-size: 11.0pt;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="margin: 0in; font-size: 11.0pt;"&gt;My recent project had me looking for a very low cost microcontroller that could meet the growing marketing requirements of this marketing such as:&lt;/P&gt;&lt;OL style="margin-left: .375in; margin-top: 0in; margin-bottom: 0in; font-size: 11.0pt;"&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;Allowing reliable field upgradeability through an easy and reliable method to update the firmware through a UART connection.&amp;nbsp; uTasker has many other options to update firmware in the field securely through USB, MSD, SD, Ethernet, SPI FLASH.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;LCD support&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;Fault tolerate storage of non-volatile data&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;Smallest FLASH/RAM footprint because of high volume of the product&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;A way to visualize during development, manufacture, and service the operation of the device.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P style="margin: 0in; font-size: 11.0pt;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="margin: 0in; font-size: 11.0pt;"&gt;After evaluating several manufacturer's microcontrollers, the most cost effecive solution was NXP's KE14Z microcontroller.&amp;nbsp; The big differentiator was FreeMASTER.&amp;nbsp; FreeMASTER far surpased the closest competitor, uC/Probe in my evaluation.&amp;nbsp; The next step was to find an operating system and middleware.&amp;nbsp; Looking first at FreeRTOS with FreeMASTER and SDK support worked well, but was lacking in requirements 1, 2, 3 and 4.&amp;nbsp; As I searched the internet, I came across a product called, &lt;STRONG&gt;uTasker&lt;/STRONG&gt;, by M.J.Butcher Consulting.&amp;nbsp; Studying uTasker website, &lt;A href="http://www.utasker.com"&gt;www.utasker.com&lt;/A&gt;, and its documentation/videos, it became clear that this product could meet all the requirments "out of the box".&amp;nbsp; Since the full source code is available for evaluation as well as support from the author himself, Mark Butcher, I found the only cost I had was the evaluation time.&amp;nbsp; What I have found during my 4 months of development on the project:&lt;/P&gt;&lt;UL style="margin-left: .375in; margin-top: 0in; margin-bottom: 0in;"&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;uTasker is extremely code efficient.&amp;nbsp; Most options are dependent on preprocessor definitions which only allow code to compile if the option is defined.&amp;nbsp; Evaluating MCUXpresso SDK with the ConfigTools was found to use a much greater amount (8x) of code space than uTasker. &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;uTasker is deterministic.&amp;nbsp; I have designed my system for a 1 ms interrupt timer which is exactly 1 ms while maintaining the other support options being event driven in the background.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;DMA as well as hardware ADC sampling are designed into uTasker for the most efficient operation automatically taking advantage of hardware built into the microcontroller.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;Low power is designed into uTasker in every area that can be put into a low power mode when not used.&amp;nbsp; If low power is not desired, using one simple definiton allows you to turn off this feature.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;uTasker is NOT multi-threading, but co-operative.&amp;nbsp; This is an important point to remember.&amp;nbsp; If you want to run two independent threads, you will need to design your code to manage them co-operatively.&amp;nbsp; I found being forced to design this way made me more aware of potential problems and how to design them out before they became a problem.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;uTasker has a FREE simulator mode built in it that is really very good.&amp;nbsp; uTasker was designed to work with Visual Studio.&amp;nbsp; The same code that drives your embedded product can be recompiled to drive a virtual project.&amp;nbsp; All the GPIO, USB, Ethernet, UART have been rerouted to use your PC resources within uTasker.&amp;nbsp; You can even interact and customize the simulator graphics using various common PC tools.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;The cost of uTasker is very resonable for the quality and support that is given.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;Mark Butcher has been working on uTasker for over 12 years, so the product is very mature, stable, and continues to be supported with useful interfaces.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P style="margin: 0in; font-size: 11.0pt;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="margin: 0in; font-size: 11.0pt;"&gt;The only commitment is that you will need to put some time into reading the documentation and watching the videos to understand how to modify uTasker for your needs.&amp;nbsp; From my point of view though, this is educational time (and fun) that even if you decide not to use uTasker, you will be a better embedded software developer because of this time investment.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 10 Sep 2019 19:52:26 GMT</pubDate>
    <dc:creator>tdrobnak</dc:creator>
    <dc:date>2019-09-10T19:52:26Z</dc:date>
    <item>
      <title>uTasker OS - Small FLASH/RAM footprint with Solid Performance</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/uTasker-OS-Small-FLASH-RAM-footprint-with-Solid-Performance/m-p/972057#M55264</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="margin: 0in; font-size: 11.0pt;"&gt;I wanted to share with this group my experience with finding an operating system that "out of the box" had most of the features our product, an oxygen concentrator, needed in a small FLASH footprint with solid performance.&lt;/P&gt;&lt;P style="margin: 0in; font-size: 11.0pt;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="margin: 0in; font-size: 11.0pt;"&gt;I am the embedded firmware developer for this project.&amp;nbsp; I have had over 33 years working with embedded systems, starting out with an Intel 8051 for an infrared touch panel controller for a flat panel AC plasma display to using the latest Kinetis KE14Z ARM Cortex-M0+ microcontroller for an oxygen concentrator.&amp;nbsp; In the 1980s and 90s designing code to meet the requirements of a product that used a microcontroller was manageable for a single individual.&amp;nbsp; As time marched on, the requirements for a product became more challenging to meet.&amp;nbsp; Some of these features are USB connectivity (MSD), File Systems (FAT32), Ethernet connectivity (TCP/IP), bootloader for field upgradeability, cryptography, and LCD support.&amp;nbsp; Designing embedded code with these features and without a reliable OS today can be an overwhelming task.&lt;/P&gt;&lt;P style="margin: 0in; font-size: 11.0pt;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="margin: 0in; font-size: 11.0pt;"&gt;My recent project had me looking for a very low cost microcontroller that could meet the growing marketing requirements of this marketing such as:&lt;/P&gt;&lt;OL style="margin-left: .375in; margin-top: 0in; margin-bottom: 0in; font-size: 11.0pt;"&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;Allowing reliable field upgradeability through an easy and reliable method to update the firmware through a UART connection.&amp;nbsp; uTasker has many other options to update firmware in the field securely through USB, MSD, SD, Ethernet, SPI FLASH.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;LCD support&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;Fault tolerate storage of non-volatile data&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;Smallest FLASH/RAM footprint because of high volume of the product&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;A way to visualize during development, manufacture, and service the operation of the device.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P style="margin: 0in; font-size: 11.0pt;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="margin: 0in; font-size: 11.0pt;"&gt;After evaluating several manufacturer's microcontrollers, the most cost effecive solution was NXP's KE14Z microcontroller.&amp;nbsp; The big differentiator was FreeMASTER.&amp;nbsp; FreeMASTER far surpased the closest competitor, uC/Probe in my evaluation.&amp;nbsp; The next step was to find an operating system and middleware.&amp;nbsp; Looking first at FreeRTOS with FreeMASTER and SDK support worked well, but was lacking in requirements 1, 2, 3 and 4.&amp;nbsp; As I searched the internet, I came across a product called, &lt;STRONG&gt;uTasker&lt;/STRONG&gt;, by M.J.Butcher Consulting.&amp;nbsp; Studying uTasker website, &lt;A href="http://www.utasker.com"&gt;www.utasker.com&lt;/A&gt;, and its documentation/videos, it became clear that this product could meet all the requirments "out of the box".&amp;nbsp; Since the full source code is available for evaluation as well as support from the author himself, Mark Butcher, I found the only cost I had was the evaluation time.&amp;nbsp; What I have found during my 4 months of development on the project:&lt;/P&gt;&lt;UL style="margin-left: .375in; margin-top: 0in; margin-bottom: 0in;"&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;uTasker is extremely code efficient.&amp;nbsp; Most options are dependent on preprocessor definitions which only allow code to compile if the option is defined.&amp;nbsp; Evaluating MCUXpresso SDK with the ConfigTools was found to use a much greater amount (8x) of code space than uTasker. &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;uTasker is deterministic.&amp;nbsp; I have designed my system for a 1 ms interrupt timer which is exactly 1 ms while maintaining the other support options being event driven in the background.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;DMA as well as hardware ADC sampling are designed into uTasker for the most efficient operation automatically taking advantage of hardware built into the microcontroller.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;Low power is designed into uTasker in every area that can be put into a low power mode when not used.&amp;nbsp; If low power is not desired, using one simple definiton allows you to turn off this feature.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;uTasker is NOT multi-threading, but co-operative.&amp;nbsp; This is an important point to remember.&amp;nbsp; If you want to run two independent threads, you will need to design your code to manage them co-operatively.&amp;nbsp; I found being forced to design this way made me more aware of potential problems and how to design them out before they became a problem.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;uTasker has a FREE simulator mode built in it that is really very good.&amp;nbsp; uTasker was designed to work with Visual Studio.&amp;nbsp; The same code that drives your embedded product can be recompiled to drive a virtual project.&amp;nbsp; All the GPIO, USB, Ethernet, UART have been rerouted to use your PC resources within uTasker.&amp;nbsp; You can even interact and customize the simulator graphics using various common PC tools.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;The cost of uTasker is very resonable for the quality and support that is given.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI style="margin-top: 0; margin-bottom: 0;"&gt;&lt;SPAN style="font-size: 11.0pt;"&gt;Mark Butcher has been working on uTasker for over 12 years, so the product is very mature, stable, and continues to be supported with useful interfaces.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P style="margin: 0in; font-size: 11.0pt;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="margin: 0in; font-size: 11.0pt;"&gt;The only commitment is that you will need to put some time into reading the documentation and watching the videos to understand how to modify uTasker for your needs.&amp;nbsp; From my point of view though, this is educational time (and fun) that even if you decide not to use uTasker, you will be a better embedded software developer because of this time investment.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Sep 2019 19:52:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/uTasker-OS-Small-FLASH-RAM-footprint-with-Solid-Performance/m-p/972057#M55264</guid>
      <dc:creator>tdrobnak</dc:creator>
      <dc:date>2019-09-10T19:52:26Z</dc:date>
    </item>
  </channel>
</rss>

