Hi
>>longevity of utasker
I heard this a lot in its 11 year history but it has out-lived the old Freescale Coldfire Interniche solution ad Luminary Micro's solution (after they were swallowed by TI) to name just two examples. The features from the Kinetis project are still being used by new Coldfire (mainly legacy hardware) products since it is compatible with all Kinetis and Coldfire V2s. It is also compatible with NXP Arm7 and Cortex M3/M4 parts in case the take over by NXP causes some (unplanned) upsets to the present direction......
>>only hid, msd, cdc
The uTasker project is driven by industrial requirements and integral parts of the framework are not "examples" but usually fully integrated results from industrial developments (after much testing in harsh environments and feedback/experience over several years of such operation in as many projects/products as possible). These three classes have been developed for such demands and other classes had rarely been requested. However, the latest version also supports initial host (OTG) which is being used in first products and virtual Ethernet/RNDIS and audio will be available shortly since demands in this area (and generally USB in industrial environments) has noticeably taken off in the last year or so.
Freescale offers KSDK, MXQ and PE (and a varietly of newer and older ANs - with or without compatibility with the device of choice) but these also have their strengths and weaknesses. Different solutions are suitable in different situations and no one will always be 100% "right". The uTasker solution attempts to fill in some missing gaps as well while being suitable for the highest percentage of real world requirements as possible, coupled with a solution that can run on really every part without porting investment.
So there will always be something missing - probably the way to go would be with Windows CE, Embedded Linux or Windriver when the highest availability of protocols, classes etc. are the highest requirement but then that would limit to a hand-full of Kinetis devices in the best case so again is far from a general solution.
What the uTasker adds are also simulation capabilities for project acceleration and learning, with as a focus on doing as much as possible with the least resources, simplicity and overall reducing real development schedules as much as possible. It is a further choice (to many others) and may or may not be most suitable for a certain requirement, but the probability is pretty high based on 11 years of experience with thousands of developments and products throughout the world.
>>tips for creating support files for the MK20DN128VFM5
This is where the concepts are different. The uTasker solution is a single project (it is like PE in a way but without the flashy GUI and with intensly tested and optimised code output). It has only one support file (or library) that is "Kinetis" which adapts itself to whatever chip is being used (when using a Coldfire just its support file/library is used instead).
KSDK is a collection of processor/board/projects which works out of the box for a few but needs the creation of new parts/projects for different ones. It also utilises various open source projects to supply stacks and such - the uTasker solution has also stacks but these were fully developed for the environment and typically have greater fetures/performance and are supported at source.
Also MQX is a huge array of projects and libraries - it can take 20 minutes just to move between two existing boards due to the various libraries that need to be build (BSP/PSP/drvers etc.).
Both of these are difficult and time consuming to support and still require often great efforts with debugging and code creation to add new parts or boards, including the necessary knowledge and experience (if it didn't there wouldn't be so many topics from professional developers discussing how and why they can't do it for weeks on end, rather than the same professional developer just spending a few minutes to solve it and getting on with productive work).
So my tip is not to do the steps in the guide for a real project for single use (if developing a new platform or general use then yes, one needs to do it due to the concept that is in place). I would simply take the K60 project and directly edit the content of its headers. The K20 and K60 are almost identical - here is more or less the full list of mods that are needed:
For example, I made some projects for Erich's new tinyK20 (a 50 MHz MK20DX128VFT5) - see: http://www.utasker.com/kinetis/tinyK20.html
which was done before the board had been produced and worked on first programming (thanks to Erich for sending a real-live board to verify on!!).
To do this I could simulate it (and check the operation and connections on the board in the simulator).
Since it is a 50Mhz part I activate
#define KINETIS_K20 and
#define KINETIS_MAX_SPEED 50000000
which controls the differences in its clocking limitiations (its clock module is almost identical apart from the divisor value to be used in its PLL - it has a different scaling to 100MHz or FPU parts). Otherwise it is just checing that no clocks are set too high.
The flash granularity in 50MHz parts is 1k and not 2k (as K60 or faster parts have).
Then it has some interrupts at different vector locations (the list of vectors needs to be adapted according to the vector table in the user's manual).
Periherals: 3 UARTs instead of 6, only 1 I2C, only 2 SPI, no I2S, only 2 FlexTimers, only 2 ADC, no RNG - but all obvious stuff and all 100% compatible. Maybe a couple of different pin mux locations but again no big deal.
When using USB its bus master needs to be set to 3 rather than 4 for the 100MHz K60. Also don't configure concurrent access in the MPU since the chip doesn't have one. (the only 2 lines of USB code that needs to be changed and only 1 if you don't need the USB controller to be able to transmit data that is resident in Flash).
#define KINETIS_REVISION_2
since its silicon is a revision 2 type - practically it means that
PMC_REGSC need to be reset after low power wakeups (although also newer K60s are rev.2)
and when reading reset causes it uses the newer MC rather than RMC. Plus a few older errata workaround may be disabled in newer silicon.
I don't see anything else needed so it should really be only a few lines of header file changes and removing some peripherals that aren't there (although also not needed as long as they are not accessed).
Erich certainly has projects for the 50Mhz K20 too although I see that he seems to have a preference for FreeRTOs (to add another resource that one should either "desire" to use or "wish to avoid" to the list) and even embedded Linux according to some recent blog entries.
Regards
Mark