Hi
#1) Need examples and more examples
It is not easy to give people software and explain to them how to use it. Some want lots of documentation to read and others want to dive in and pick it up while experimenting. Therefore we try to give both these, plus the ability to walk through examples in the uTasker simulator (which is my favorite).
The demo project has lots of example in it and the forum contains also lots of practical descriptions and examples.
for example:
how to create socket connections
http://www.utasker.com/forum/index.php?topic=25.0
Working with UDP is here: http://www.utasker.com/forum/index.php? … 171#msg171
These contain explanations and code examples.
In addition, you can activate some demos in the demo project and see how they do it - then you can change them for your own use (don’t forget - using the simulator you can step through the code and see exactly how it works too):
#define DEMO_UDP in application.c shows how a UDP echo server is created.
#define TEST_TFTP in application.c shows how to send, get or compare files on a TFTP server.
#define USE_TIME_SERVER in config.h will show how to get the time from a time server using TCP.
examples of creating your own custom tasks
http://www.utasker.com/forum/index.php?topic=32.0 gives examples of most task issues. The demo project includes also some examples which can serve as a base for own task creation. Eg. #define SUPPORT_LCD in config.h activates an LCD task which switches between idle and polling modes - this can be used as a shell for most own new tasks. As explained in the previous link, this is also practical for adding extra open source code (which tends to run in a polling mode) - just throw it into a new task and that is basically it. Afterwards it can be optimised to becomem more efficient by making use for the OS resources rather than having to poll things.
why so much for so little cost
That is a strange question. Nowadays people expect to get all software for free (I thought) - what we sell is more the support which goes with it so that (commercial) users can get the most out of it to reduce development schedules and costs. Anyway we don’t actually sell the LPC package at the moment since we don’t consider it adequate yet (the support for Coldfire and SAM7X projects is better since it includes all important things including all standard interfaces and useful stuff like encrypted software uploads via web browser - this will be also extended to the LPC and Luminary projects as time goes by.
web page format
Yes this is a bit special. However it does allow a practical file system and FTP server to upload web pages at a cost of around 3k code. This has been a discussion point because some people would like FAT compatibility, but this has been decided against in the main project.
It is an idea to first know a bit of background:
-
there are many packages which require web pages to be compiled into the project and these often have conversion programs to do this. This was decided against because it doesn’t allow end users to change web pages (some one may simply like to translate some content but would need to be able to convert the input and recompile the code to do it… very awkward for an end user…!) FTP was therefore decided on (although it is also possible via HTTP post) since it is very practical for developers and also for end users (it can also be disabled or protected by password to block malicious changes).
-
the project is not designed to compete against Windows CE or uCLinux. If you have large chips with lots of memory then these are the ones to go for. It was designed for small footprint single chip processors and this means that the code should run not only on an LPC23XX with 256k FLASH but also on the smaller ones - like LPC2101 with 8k FLASH and 2k RAM. Although the TCP/IP stack won’t work on one of these the rest will - simply configure for LPC2101 in config.h and your project will be stripped of Ethernet and the rest will operate on the smallest chips (theoretically also the file system).
It needs a little file design from the programmer but the result is that most embedded projects can make good use of it and often allow a real product to fit in to a smaller chip - saving costs for production quantities which easily covers the cost of extra programmer’s effort.
Two last notes:
-
One user has written a Java program which takes the files to be loaded and automatically converts them respecting the uFileSystem layout, plus stripping any white space to optimise size. These are then sent via FTP and it avoids any programmer effort at all… This is a nice idea but it will need a slight adjustment to work well with the LPC due to its rather large FLASH granularity… but it would be nice!
-
Some users have added FAT to their projects - there is nothing to stop it being done, if this is necessary. See for example: http://www.utasker.com/forum/index.php? … 310#msg310
how fast it runs on the NXP
I am not sure how you interpret this but the uTasker project does try to optimise things especially for small processors.
This is an example of a product using it on a SAM7X128 (32k RAM):
http://www.altec-ag.ch/eng/products/AL6000.asp
It was tested for Zmodem RS232<->Telnet file throughput and was faster than a similar product based on a large ARM9 with lots of external DRAM.
We recently tested large file downloads (32Meg) from SPI FLASH to a browser client and achieved about 400kByte/s throughput using less that 1.5k RAM overhead, based on a special technique of TCP windowing requiring only about 80 bytes per HTTP connection. [Actual user code overhead to format the file content to .WAV type and control the browser interaction was about 20 lines].
As you see, the emphesis is on being able to do things efficiently and sometimes this involves things that are not absolutely standard (although RFC conform…) - it is fun though!
Regards
Mark