RTOS for AVR part two

I continue writing this article from the last article.You can scroll down this page to see the article about RTOS for AVR part one.

1.Femto OS
It is the real RTOS for AVR.It had been ported to many series of AVR microcontroller

(44 AVR devices).The task can be specified to be preemptive or cooperative task.It has

lots of example code and its documents is very good (The document is integrated into the

source code as comment).

2.pico os
It is the RTOS that support large set of features and can be ported to various type

of microcontroller other than AVR.Currently it only support MegaAVR 32 (8 bit

microcontroller) but may be can config to support other AVR devices too.The source code

for AVR can use with WinAVR or AvrStudio 4.

Protothreads can use on AVR too.Please click here to read my last article about


Contiki is one of widely used RTOS.It is multi-tasking operating system that designed

for microcontroller with small memory.
It is suitable for implement wireless sensor networks because it provide IP

communication.Its processes use protothreads to provide threadlike programming style.

It is RTOS designed for wireless sensor network.This RTOS was written in the nesC

programming language.The task is non-preemptive and task is run depend upon FIFO order.

It support Atmel AVR 8 bit (also support Atmega128).It has preemptive and cooperative

scheduling mechanism.The disadvantage of this RTOS is that it is not well tested (may be

there are some bugs).The website said that this RTOS can be installed in 16 bit and 32

bit microcontroller too.

7. µC/OS-II
This is well-known RTOS used widely in the world, so I don’t talk about it.
You can find the information relate to µC/OS-II at its website by yourself.

8.csRTOS or 4AvrOS
This RTOS is cooperative schduler.
It support ATmega88/168/16 and other AVR series.It is single-stack RTOS that require

small memory area.This RTOS was written using WinAVR C compiler.4AvrOS is the new version

of csRTOS (Most features are remain the same).

9.XMK (eXtreme Minimal Kernel)
It is a preemptive and multithread kernal suitable for small microcontrollers (8 bit).However it can run on 16 or 32 bit microcontroller.This RTOS implemented the features such as mailboxes, memory pools, file descriptors, hardware device drivers, and TCP/IP networking.

And this is the end of the two series “RTOS for AVR” microcontroller.

Thank you so much,
Jitkasem Pintaya.

Reference site : Electoday

Incoming search terms for the article:

RTOS for AVR part one.

This article is concern with the rtos that can port to AVR microcontroller.I list only rtos that is open source
and free for donwload.You can look for them as below…

1.AvrX Real Time Kernel
It is lightweight and support important features of RTOs such as Message Queues, Semaphores , fully
preemption etc.It is cooperative kernel too.You can download the document of AvrX here or here.

CocoOS is also lightweight and it is cooperative kernel.It can use with ATmega8/16/32.It is a cooperative task scheduler and its structure is small and easy.You can download the documents of this RTOS here
or here.

This is a popular RTOS is this world.It can port to various kinds of microcontroller , so I don’t talk about
it.You can find the information at its website yourself.

4.YAVRTOS (Yet Another Atmel® AVR® Real-Time Operating System)
This RTOS is only suitable with ATmega32 (It was tested only with ATmega32).It implemented mailboxes,
semaphores and mutexes.The disadvantage of YAVRTOS is that it’s not support defining task prioriy and the mutex mechanism of this RTOS is weak.I think disabling interrupt every time when want to access a shared resource is not a good way to do and you should avoid doing that.

pC/OS is RTOS that was developed base on uC/OS 1.00 (Its kernal based on uC/OS 1.00).It can port to ATMega32, AVR32 and ATMega128.Its document is easy to read.

It is non-preemptive kernel.It has memory management function together with task and time control functions.uSmartX is very old (it exist since 2006).This RTOS is suitable for small-footprint embedded system because of it consume little memory of the system.


COMATOS is the RTOS for ATMEL microcontroller (COMATOS is abbreviated from “COrnell Miniature ATmel Operating System “).It is simple,lightweight (Use memory not exceed 2K of program memory) and also non-preemptive RTOS.The source code has boht Assembly version and C version (THE C version is written for AT90S8515 ).Its website has a tutorial for using this RTOS but in Assembly language.

It is the project of Task Dispatcher.It contain C source code for implement this project and it also have
a PDF document to describe the souce code too.

It is the unique operating system for AVR.It was written in C for WinAVR (GCC) that can use optinally with Atman IDE.It contain the Scheduler for control each process (Cause process to run when desired) and inter-process communication like Semaphore.

The article “RTOS of AVR” is not end by this post.In the next post I will write about RTOS for AVR again as the episode two.

Want to know more about IPC (Inter-Process Communication , please visit wikipedia)

Reference site : (This topic started by wlasoi)

Thank you very much,

Incoming search terms for the article:

Introduction to RTOS.

RTOS is part of program (Or source code) that was written for manage the CPU
usability of microcontroller and it help to improve the efficiency of CPU in
managing the tasks or process.RTOS is somehow make the coding more complex ,hard to read
and hard to understand, so some people don’t like to use RTOS on their embedded
project but it has some advantages too.The general RTOS features are as

1.RTOS is a normal program so it must use RAM and program memory of your

2.RTOS has an important role in time management of embedded system because
our simple program run sequentially command by command from the top to
bottom and then cyclic to the top again (it usually operate like this all the
time you run the program) but if I assume there are some tasks that aren’t
necessay to run often as the main loop run or there are some tasks that require
the certain period of time to run, so if these two conditions correspond to your
program requirement I suggest to use RTOS , it will help you so much (at
least it better than you write the code to handle these situation yourself).
RTOS is not so hard.If you understand its mechanism then it is a fun thing. I
think RTOS is not more difficult than we can learn.

3.The importance of RTOS is depend on the number of features your application
have to do.I will show you an example of temperature data logger that have
features like this…

– Need to store the measurement data into SD-Card.
– Show the measurement data on the color lcd screen.
– Can communicate with PC via USB while datalogger is working to send data to
the program that running on PC and plot the graph.
– It can specify the alarm temperature in real-time by using the touch screen
as the input device to input the temperature.

If you design above datalogger by using only general ISR (Interrupt
Service Routine), maybe you will got stuck and your code will look
cumbersome.The using of RTOS is suitable for handle this kind of datalogger
because RTOS can apply the feature of multitasking for separate the code into
3-4 task such as DAQ_task , UI_task , USB_task etc.Each task has a specific
responsibility and run asynchronously with other tasks.Every task communicate
with each other by using the message such as mailbox , message queue (They
are data structure normally declared as global variable and used for store an
information that each module in the system can obtain and use together).

The name below is open source and non-commercial RTOS that you can use and
modify them to make your embedded project more reliable and powerful.

2.µC/OS-II Kernel from Micrium
6.CooCox CoOS

List above is only some examples of popular RTOS but there are hundred or
thousand RTOSes exist in the world.

For more information about RTOS please visit


Reference site :

Thank you,

Incoming search terms for the article:

FAT library for STM32.

FAT Library that normally used for developing small embedded system project
in nowadays are FATFs and EFSL.

The story for today is about FAT Library for ARM STM32 (Sorry for the person who want to use FAT Libray with AVR, I think articles relate to FAT Library with AVR is much more than STM32).

Let’s start with FATFs.FATFs support FAT32, Long File Name but you have to write Disk I/O mechanism by
yourself (Disk I/O is the part of Low level interface).There are two examples for FATFs that are ready to
1.Project by Martin Thomas.This project is a complete project to access FAT memory card with STM32 via SPI-
interface. And you can also download the code here.

2.FAT project from Domen Puncer.Domen had posted his answer to the STM32 Forum (Topic about SDcard code).You can view the original source forum that he posted his answer here.And you can also download the source code here.

Domen described that his code was separated into three parts as follow
– SPI Interface
– SD card code
– FATFs interface (It is the Disk I/O part for FATFs)

I’ve ever looked at his code and I think that his code is easy to understand than others.

For the person who use EFSL I have an example project that use EFSL from Newnesr.Newnesr also posted his project to the STM32 Forum too, and you can look for the original forum that he posted his article here.The source code for his post can download here.

You can arbitrarily choose the above two FAT Libraries.But I have one thing to tell you that EFSL is not
continue to update anymore and it is not support SDHC while FATFs is continuously developed for
improve its features and it has a test result with SDHC too. FATFs have a lite version that is sub-set of FATFs
call “Petit FAT”.You can use Petit FAT as a read only FAT File System only. For more information about it , visit here.

I got this article from

Thank you,
Written by

Incoming search terms for the article:

Websites you should visit.

Today I decide to stop writing the technical article and start writing other topic apart from technical topic.
I think it will make my blog lively and not so serious.The story for today is about the websites you should visit, they are… is website that provide the service of file sharing and real-time
presentation.With this service you can upload your files to and let other
people to download , comment or upload other files to your account.Otherwise
you can react to the person who are looking to your files in real-time via chat,
email or telephone.
The advantage of is the combination of SocialNetwork website with
file-storing website.This feature make the complete people-to-people
association website that not only can comment on the profile of each person
but also can upload or download the information of other person too.Visit it here.


Rememberthemilk is the website that help you arrange your task or
your to-do-list. Maybe it work similar to organizer but it have an advantage in that
it can remind you via msn,google talk,email,ICQ,Skype,Yahoo or send the SMS
to your mobile phone, so you won’t miss your task no matter where you are.
You can find more about it here.

If you are finding for the way to get your blog indexed by Google visit this article at PROBLOGGER.

Thank you.

Arduino resource on the web.

For the person who love Arduido, web list below is the resource related to Arduido I found they are very useful.

Arduino Interfacing SD / MMC Card with SPI ( Arduino FAT library )
1. Arduino Stand Alone
2.Adding a MicroSD flash card module to a SquidBee
3. SDMMC learning from
4. Wavehc (Arduino Library for the Adafruit Wave Shield)
5. SD card read/write with Arduino Forum
6. Download SD library at this link
7. on MediaFire

Arduino development software
1. Arduino 0017

xbee for arduino
1.Xbee Arduino from Google Code

GPS Arduino
1. GPS shield download stuff
2. TinyGPS A Compact Arduino GPS/NMEA Parser

Arduino Web
1. Webduino (Simple and extensible web server for Arduino and Ethernet Shield)

1. Arduino Command in PDF
2. Squidbee board
3. Arduino on the clothes
4. Top 40 Arduino Projects on the web
5. Infrared receiver module
6. Setting up an Arduino on a breadboard
7. Burning the Bootloader without external AVR-Writer
8. Arduino board from Sparkfun
9. Using Arduino with Wiznet I
10. Using Arduino with Wiznet II
11. Funnel (The Arduino competitor)
12. Arduino forum
13. Arduino Bootloader
14.Download the ebook for Arduino experimenter (Arduino for Beginner) Source : Adafruit

Reference site :

Thank you,
Jitkasem Pintaya.

Incoming search terms for the article:

Introduction to Arduino.

Arduino is the tool used together with computer to cause the computer can receive
external signal and also make computer can send signal to control the external device
more effective than using computer alone.

The Arduino board is designed from single-chip microcontroller (Normally use AVR 8-bit
microcontrooler).It also have a software used for writing the program or command to
control the board.

Arduino can be adapted to make an intelligent tools such as the tool that can receive the
signal from switch or sensor,tool for control the lamp or motor,tool for communicate with
wireless device etc.Arduino project can work alone or work joinly with PC (work by
interaction with the program that run on PC).The board can be assembled by yourself or
buy the ready-to-use development board from vendor.It is the open hardware so everyone
are able to clone it but must use other label name.The purpose of Arduino project is to
make the low cost and easy-to-use tools for hobbyists who want to develop their simple embedded
project and don’t want to use the expensive microcontroller with complicated development

Why Arduino??
In market of microncontroller, their are many choice such as Parallax Basic
Stamp,Funnel,Pidgets,MIT’s Handyboard and from other vendors that have characteristics
similar to Arduino (That is making the board easy for develop project and underline on
programming for control the microcontroller).But Arduino has an obvious different points
from the others as you can see below…

1. Board is not expensive when compare with other boards.The cheapest Arduino board can
be obtained by making it ourselve.If you want to buy it,I think ready-to-use Arduino
board is not over $30.

2.The software used for develop Arduino can work on many platforms (Windows,Macintosh OSX
and Linux).It is easy to use for beginner and have fully capability with respect to the
professional developer’s requirement.

3.Arduino software was published as an open source.You can modify the software to
increase its capability via C++ library.If you want to deeply study its software, you can
go across to use AVR C (AVR C is prototype of Arduino) and you can add AVR-C code
directly if you want.

4.Arduino is open circuit (Open Hardware).It use the microcontroller from Atmel (ATMEGA8
and ATMEGA168).You can extend the hardware according to your demand.The circuit of Arduino board was published under the Creative Commons License so you can study about its machanism for free.

Reference site : 1.



Thank you,
Written by
Jitkasem Pintaya.

How to choose UML tools.

The story for today is about software that help you design UML diagram. How to choose UML tool is base upon the following choice..
-If you use the tool for draw UML Diagram I suggest the follow software
1. MS Visio
2. Poseidon
3. ArgoUML
4. MagicDraw
5. VisualUML
The above-mention software is not for free but however some software have community edition so you can use it for free.
– If you want to use UML tool for developing the complete software project I suggest you try Rational Rose Enterprise,Borland JBuilder Enterprise,Rational XDE or the other specific software that can generate the source code from UML Model such as iLogix,CodaGen,iUML etc.
– If you want to use OpenSource UML Tools, please try…
3.GIME (on Linux)
Or visit this link
Now I will introduce popular UML tools, they are MagicDraw and Visual Paradigm.
Visual Paradigm for UML

– This software was design for varied customers such as Software Engineer, System Analysis,Business Analysis and System Architects.
– Support the latest standards of Java and UML notations.
– Can create the report Documentation in PDF or HTML format.
– It also can export the diagram to different image format (JPG,PNG,SVG etc.)
– Support sequence diagram creation from “Flow of Event” and Collaboration creation from “sequence diagram”.
– GUI (graphical user interface) of this software is easy to understand.
– Support all type of UML Diagrams.
– Visual Paradigm has a features of round-trip engineering for JAVA (Can do code generation from diagram and reverse the source code into diagram).

For more information about Visual paradigm please visit here


– Support XMI for UML 2.0
– Support various kind of diagram such as Composite structure diagram , Use Case diagram , Sequence
diagram , Activity diagram , State diagram , Communication diagram ,Implementation diagram and including Component and Deployment diagrams
– Have a step by step guide, (I think this feature make it easy to use).It also has a help api that explain the command thoroughly.
– Can do the reverse engineering (Reverse from the source code back to the Sequence Diagram).This software support round-trip engineering (same as Visual Paradigm).
– It can export project file to many type of file such as GIF, JPG, PNG, PS, EPS, SVG
– Support code in many languages such as JAVA (JAVA 5.0) , C++ (& ANSI C) , C# , .net , COBRA IDL
– It has a security system and also integrate version control (CVS) into its Development Environment

Disadvantage of MagicDraw
– Use high amount of system resource (RAM, Harddisk)
– Hard to use for the person who new to UML design because its has many tools that have many details.
It is not suitable for design a small job. If you want to design a small job I suggest you use MS VISIO instead.
– It is not a Freeware, you must pay for the Full Version.For view the price please look for it here.

Thank you

CASE tool overview.

CASE tool (Computer-Aided Software Engineering)

CASE tool is the software that support system development or facilitate in system development.It
has an ability in building various kinds of document during analysis and design the system.For the example such as building the UML diagram,the screen interface (Graphical User Interface),form and report etc…
Furthermore some CASE tool can automatically generate source code too.In system maintenance can use CASE tool to make the operation smoothly,quickly and correctly.CASE tool also help you to decrease the time in document improvement or source code improvement.So at the present time CASE tools have an important role in system development and system maintenance.

Formerly CASE tool was separated into two groups as follow…
1.Upper CASE tool is the software that used in the step of analysis and design the system.This CASE tool make various diagram such as DFD (Data flow diagram) . DFD is used for design the component of the system such as the input of system , the mechanism of system , the result of the system etc.Other diagrams such as ER diagram (Entity-relationship diagram),layout (the screen that used for bring the data into the system or screen of the report). The example of CASE tool in this group are ERwin and Visual UML.

2.Lower CASE tool is the software that can build the source code or program automatically from condition or determinate procedure such as we can write the program for manage the vacation of our employee from the specific workflow or we can write the database structure command by select from the menu.The example of CASE tool in the group are Ecore Diagram Editor and dzine.

3.Integrated CASE tool is software that fulfill the usability from system analysis,system design to the system implementation (writing the source code) and system testing.It is the software that combine Upper CASE tool and Lower CASE tool into one software.The example of CASE tool in this group is Rational Rose from IBM.

The story of CASE tool is not finish by this article.In the next article I will write about the review of CASE tools that are well-known nowadays such as MagicDraw, Visual Paradigm,Poseidon UML and the suggestion about Commercial CASE tools and Open Source CASE tools software list.

for more information please visit these sites
1.UML Modeling Tools
3.CASE tool index

Thank you,

Incoming search terms for the article:

Protothreads (A lightweight thread for embedded system).

Protothreads was designed to use and work in the system that have limitation
in memory such as Embedded System or Sensor Node.It exclude the Stack
(Stack is used for store the working status of each thread) and it also support
the code that working in linear style on system that operation is base on event
(Event-driver).Otherwise it can work in cooperate with RTOS or work stand-alone
without RTOS.

Protothreads is the thread that cut out the Stack (Stackless), so it is very
small but it remain the top context of working in the system.The responsibility
of Protothreads is managing the status of complicated system or doing Multi-threading
because Protothreads have the instruction set for handling the thread.

The qualification of Protothreads are as follow…
1.Protothreads was written in pure C and no Assembly.
2.Can be used with OS or used without OS.
3.There is no error in manipulation part,use no error-prone functions.
4.Use very small RAM size.
5.Support waiting or blocking the execution part without doing Multi-threading or

For more information about Protothreads please visit
Protothreads website
Protothreads document in PDF
Download from Sourceforge

Thank you,
Jitkasem Pintaya

Software testing part II (White Box and Black Box testing)

White Box testing
Another name of White box testing is Glass-Box testing or Structural Testing.
It is the test in the system.The tester have to specify the test case that will be used
for test the system.They must have an ability in programming and well understand in
software testing theory.Their task it to assign the test case to every line, every
statement or every path of the program being tested. You can compare white box
testing with the measurement of electronics circuit (In measurement of electronics
circuit,you have to measure the electric current and voltage in every node existing
in your circuit).

White box testing can be applied for testing in Unit testing,Integration testing
or System testing but in commonly the tester apply White box testing in Unit testing phase
of software development.

The advantage of White box testing.
1.The process of White box testing can increase te quality of source code and can make
the pieces of source code work more efficiency because it is the testing in the system
(In the function and in every branches of the code)

2.In White box testing we can look for an error by give an input to the system and monitor
the output from the system.Otherwise it also can look for the internal error that existing
in the mentioned system too.

The disadvantage of White box testing.
1.This kind of testing require high skill in software coding to assure the high-quality of
source code.

Black Box testing.
Another name of Black-Box testing is Functional Testing.It is the testing
that disregard internal mechanism of the system (don’t test the internal component
of the system such as source code or function).This testing method is focus on the
output that come out from the system after we sent the input to it (Output that
come out after the system responded to the input data).

In Black-Box Testing, the tester will not look for the code to test, so the code
is considered to be “Black Box” that we can’t see the content inside the box.The
tester know only they must send the input to the “Black Box” and then it will release
the output to the tester.

The tester usually use the requirement specification document (Requirement
Knowledge) to build the test case, so they know what is the outcome that the system
will send after they send the corresponding input to it.

Now I can summarize the black box testing as follow…
– It is the testing that disregard the source code or command
in the program.
– It is testing of function of system base on the requirement documents.
– The tester must assume for output that will come out from the system
after sending the various input pattern to the system (The output must match up with
the input).

Now I can summarize White Box Testing as follow…
-It is the testing that examine the structure or the work-flow of the program .
-The tester must build the specific test case used for testing in each specific condition.
-The test case must contain the case that can be executed normally and abnormally.
-Try to execute every statement in the function at least 1 time.



In the next article I will write about Test first method (Software testing part III).
You can see more information about Black box and White box testing at these websites below
1.Software Testing Fundamentals
2.Testing and Code Coverage

Reference site: lenovoblogs

Thank you,
Jitkasem Pintaya.

Incoming search terms for the article:

Software testing part I.

There are no commercial software released to the market without testing.
Testing is an important process in software development.The big or
well-known software company place importance on software testing equal to
software implementation.
At present there are many type of software testing method but I summarize the
widely used testing method as following…

1.Unit test
Unit test is the testing functional
(Or testing in detail of each function in the system) to ensure
that each individual function in the system can work well.
Unit testing is very important in software development because
it is the method for finding the functional problems (It can decrease
the time in finding bugs in the posterior process).
2.Integration test
Integration test is the testing that take each unit to
combine altogether and then test the coherence between each unit to
ensure that the communication between each unit in the system can
be done correctly.
3.System test
System test is the testing of the whole system to ensure that
the totally work-flow of the system is correct.It is also
an important test that have to do in software development process
(Normally system test is done as the last test of all
testing procedure).
4.Acceptance Test
Acceptance test is the testing of customer or user who will
use the developed software.It is the test for satisfaction of the
user or customer.This testing is done after System test.

The important testing that you must emphasize on them are
Unit testing and Integration testing because many defect or bugs
can be found by these two testing method.

Testing is not necessary to be done by tester but developer
can also do the testing.Normally the Unit testing is done by
developer because the majority of this testing use the test case
that depend on the implementation, so nobody can do this testing
better than developer.However the real tester have a responsibility
for doing the Integration test and System test because…

– These two kinds of testing must do in long time.

– To prevent the bias if the developer is also the tester at the
same time.(The developer who write the code maybe
rather sure that the code they wrote is correct and will
ignore some minor part of code that have to test)

– The real tester has more time to design the test document
and test case. He/She must know clearly in the target system
that will be tested,so He/She can do the testing better than

This is part I of software testing story.In the next part (part II)
I will write about black box and white box testing,test first method and
how to design the test plan.

Thank you very much,
Jitkasem Pintaya.

Incoming search terms for the article:

RTOS for small embedded system.

TNKernal is the RTOS (real time operating system)
that was developed by Yuri Tiomkin (Russian).
The distinctive point of this RTOS is its APIs
that similar to µITRON 4.0 (Japanese RTOS developed
by Prof.Ken Sagamura).TNKernal can be ported to various
kind of micro controller such as Microchip PIC24/dsPIC,
ARM Cortex-M3,ARM LPC21xx/22xx,Freescale Coldfire,etc.
It also compatible with many Toolchanins from the free one
(Such as GNU Toolchanins) unto the expensive commercial
Toolchains.The current version of TNKernal is 2.5 and you
can download it at here or visit its website here.

TNKernal is open source and it is FREE!!!.
I think this RTOS was suitable for the small series
micro controller especially ARM and PIC.So if you’re looking
for the small RTOS that flexible for every small embedded
task and has complete basis mechanism of ordinarily RTOS,
TNKernal is your choice.

Salvo RTOS is RTOS suitable for low performance and low cost
embedded system because it requires little
program and data memory, without task stacks.
It was written in C.It support various kind of micro controller
(look for the supported micro controller here).Salvo is not
free but it has a demo version to download.It supported
many kinds of compilers (depend on the platform).It’s
not only can use on embedded platform but also x86 platform
(Using MS Visual C++ as compiler).In my opinion I think
Salvo is easy to use.It hide the complicate structure of
RTOS mechanism and provide you the easy to understand interface
that you can use for build your project (So you can emphasis on
your project without worry about the RTOS structure).
The current version of Salvo RTOS is 4 and you can find more information about it here.

Mind map and mind mapping software.

Mind Map is the map of ideas. It is used for represent the word or the ideas of
the human that spread out from the center .To imply by using text and the picture
to look alike the ramification of the tree. This theory is getting from the brain of the human.
Mind Map was built to be the source or the beginning point of developing the project
or doing the tasks.

Mind Map can simplify everything especially the complicate one such as.
– Make from the abstraction to be concrete object.
– It help in learning everything.
– It can be used for solving the problems in daily life.
– It is used in decision-making in case that there are alternative ways to solve the problem.

You can use mind map to apply to many tasks such as…
– Brain storming
– Project planning
– Use for summarize the meeting(Meeting minutes)
– To analyze the strategy of our company.(Strategic thinking, SWOT Analysis)
– To specify the strategy of marketing (Marketing Plans)
– Use for Teaching
– Use when you want to describe something or teach someone(Training)
– To control the new product development(Product Development)
– To gather the data,the knowledge and the ideas(Capture tacit knowledge)
and much more…

Mind Mapping Software

Nowadays there are many software that use for build the mind map.
The mind mapping software in the world today can be separated into
two groups as follow…

-Commercial Mind Mapping Software is the software that was built by
private company for the purpose of business or commercial only. You have
to pay for this software.

-Open Source Mind Mapping Software is free Mind Mapping software.
You don’t have to pay for these software.It is open source so may be
you can download the software together with its source code.

Commercial software list

MindManager is commercial software.You can download it for free trial
from Mindjet here.It is easy to use software that combine many
tools necessary for build Mind map.This software can link with Microsoft
Office such as MS Word,MS PowerPoint,MS Outlook, MS project, etc.
It also can export your Mind map into image file (support various type of image file),
PDF file,”.doc” file and “.html” file.It can use under Windows and MAC OS X.

ConceptDraw is software that can design Mind map,Brainstorming,Project Planing.You can download
the free trial for 30 days from here.

NovaMind is the popular Mind map building software.You can download the trial
from here.

Another Commercial Mind mapping software that I know is as follow…
Visual Mind
Visual Concept

Open source or free Mind mapping software.

FreeMind is a good open source Mind mapping software.It was written in JAVA.
It is licenced under GPL (General Public License) so you can download it for free
without paying for it.With FreeMind you can download the source code for modify
some features but you must licence it under GPL only.Look for it at here.

CUMindMap is the free software for build Mind map.It was developed by
Faculty of Computer engineering , Chulalongkorn University, Thailand.
It also support both Thai and English language.It can run only on Windows.
I had ever used it and I think it is easy to use.
You can download it for free at here.

WikkaWiki is a flexible, standards-compliant and lightweight wiki engine written in PHP, which uses MySQL to store pages. Forked from WakkaWiki. Designed for speed, extensibility, and security. Released under the GPL license.Click here to look for it.

Another software in this group is as follow…

vym ( view your mind)

The below is some pictures of Mind map



Reference site :
Thank you
Jitkasem Pintaya,

Incoming search terms for the article:



V-model is software development model.It is improve from the waterfall model. V-model is normally used for manage the software development project in the large company (Japaneses company).

V-model is also called verification and validation model (V&V). It has a very intensive testing in order to eliminate the bug/error that may be occur during each stage of development project using V-model.

You can see the picture of V-model as below…





*The picture above is come from here

For the detail what is each stage in the V-model do, I suggest you find the information on these sites.



Advantage of V-model.

– The defect or bug can be found in the early stage.

– It is trustworthy software development model that used widely in the big company.

– V-model can be done parallel in each side of “V” (Left and right side),
that mean the testing (Right side) is acting like planning (Left side). The tester must design the test case and the testing team is joined early in the project development life cycle ,so they will receive a good
understanding of the project at the very beginning .

Disadvantage of V-model.

– Use a lot of money and resource to implement the complete V-model

– Suitable for the large project which have to do for long term (not suitable of short term project because it need to review at each stage).

– Test is important , by ignore any one of test phase may affect the quality of product.

– No prototype software can be made because the software is developed in
the implementation phase.

– It is rigid and least flexible (if something happen or change in during the middle stage of V model,
the requirement document and the test document is also need to update)

Incoming search terms for the article:

Software to manage subversion.

The story for today is about Subversion program and other program that can use with subversion.

I normally separate the subversion program into two groups as follow.

1. Command line subversion program is the subversion program that must use only the command to manage all operation of subversion (such as you must type the command in the “command prompt” of Windows XP) Subversion program in command line interface have many binary files used for manage the subversion system altogether such as “svn.exe”,”svnadmin.exe”,”sveserve.exe”,”svnlook.exe”.The advantage of this subversion series is that it is able to used in many operating system.You can look for the OS
that can be use the subversion in command line style at
Another advantage is that it provide the subversion server program (subversion is managed as the
client-server model, so it must set the subversion server first) used for make the subversion server service
that other clients can be connect to.The only disadvantage of this subversion series is that it is difficult
to manage because it is only the command , you must type the command to manage it!! and you also
must read the a lot of the instructions of the command too.The well-known program for this series of
subversion is come from CollabNet at here –>

2.Graphical user interface subversion program is the subversion program used only as the subversion client software.

This series of subversion program must used as the integrator with other software or OS.The well-known subversion program in this series is TortoiseSVN (for integrate with windows explorer), Subclipse and Subversive (for integrate with Eclipse IDE),AnkhSVN and VisualSVN (for integrate with Visual Studio), RapidSVN (Cross-platform) etc…

The main advantage of GUI subversion is the ease of use because you don’t have to write the command to control the subversion system , just only use mouse to click at the command you want at the GUI subversion program.However before you can use the GUI Subversion program to control your subversion you must set subversion server service by using Apache subversion module or using the subversion server program that usually come with the subversion command line program.

Subclipse windows.

Subclipse windows.

TortoiseSVN commit windows.

TortoiseSVN commit windows.

For the subversion client software for windows I recommend to use TortoiseSVN because it is easy to use,popular and the software is cover all the necessary operation for manage the subversion system.If you use the eclipse IDE as your development environment I suggest to use Subclipse because of the ease of use and it capability is similar to TortoiseSVN.

If the subversion programs I show you in the above is not enough.I also have other suggestion programs that can be use with the subversion client software to make it better and easy to monitor.They are…

– cvs2svn> The tool to convert the CVS to SVN.

– CommitMonitor> Integrate with TortoiseSVN to look for the commit and the change that happen to the repository.
– WebSVN -> The web interface for look at the status in subversion system.
– svnnotifier -> Look for the commit and change that happen to the repository.
– StatSVN> Look for the statistic of the subversion.
– Bugzilla/SVN integration -> scripts to integrate Bugzilla with Subversion.
– Gurtle -> TortoiseSVN issue tracker plug-in.

For more information about subversion software , please take a look at

By jitkasem pintaya.

Agile software development model II.

This article is the continue version of the last article (Agile Software development model I)

The technique for development using Agile is as follow.
-Agile model driven development (AMDD)
-Code Refactor : is the method to redesign code that is to modify the code immediately and then
the design is also change.
-Pair Programming : Combine the two developers to work together for the same project.
These two developers work at the same location and
also use the same computer.Share the computer in the way that one
person implement the code and another person has a responsibility for
checking the correction of implemented code.
-Test Driven Development(TDD) : is the technique for writing the test-case and write the test
case before implement the code.

The format(pattern) of Agile.

Agile methodology has many patterns that can be used for developing the system such as Scrum, FDD,
XP (extreme programming), DSDM, RUP, etc…But the popular pattern in my opinion is XP (extreme programming) because XP is the pattern that emphasize on the satisfaction of the customer and XP can change the system easily when the customer change the requirement.

Addition aspect for Agile.
– When we have the old project that can be used for additional development.It mean that
we have the asset that can be used as the base system for develop the new project,
so if the new project arrive then we can send the old project to the customer before sending
the new one.
– In the first step of developing new project,we can also deliver the things such as the screen,
the prototype,infrastructure to our customer without the software (because we have not written
the software yet)
– We also can think about Agile as the modifier of the former software development process such as
– Use Agile for rearrange the importance of the project development activity ,
which activity should be done and which should not be done.
– Use Agile to control the former project and look at some part of former project.The part that
is important for use with the development of new project should be done ,
the unimportant part will be ignored.

Incoming search terms for the article:

Agile software development model I.


Agile is the new idea for software development
that try to scrape through the old methodology to shorten
the development process.
It is the principle of new software development methodology
that emphasize on the following topic.

– Rapid and flexible response to change
– speed up the development process
– don’t stop, do the development continuously despite
of the things that will affect the development process
– when there is a change, we can support this
alteration rapidly and flexible

The objective of Agile
1.Emphasize on the aptitude of each developer.Try
to commune with each other more than impress on the
tools and methodology.Such as the programmer have a chance
to talk with the customer and can do the project in agreement
with the customer’s requirement.
2.Do the project by concentrate on the result or final
software.The old methodology is concentrate on the document
but Agile is not,the purpose of Agile is that we have a
ready software to send to the customer on the definited time.
3.The main point of Agile is communication.Agile is not
prefer the contact but Agile is stress on the communication
between the customer and developer.
4.Accept the changefulness.The old methodology is must do
follow the plans (gantt chart) but Agile is not necessary to follow the plans.
But Agile must able to respond to the change.

The model of Agile is as follow.

– choose only some methodologies for developing project.
– the chosen methodolgy must be able to use the
priciple of Agile to manage the documents and the existing
– In Agile,It must consist of
– value (result)
– principle
– practices

The three things above are the part of Agile model that
can be use for develop the project efficiently and have
less overhead.

That’s all for this article but the story of Agile is not finish.
In my next articles I will write about technique of development using Agile and other
addition aspect for using Agile.

Incoming search terms for the article:

Software Process and Software Development model.

This article is about Software Process.

What is software process.

The software process is the process that applied to the developing
of software and accomplish the software development project.
The fundamental of software process can be devided into the 4 process
as follow
1.Software Specification
2.Software Design and Implementation
3.Software Validation
4.Software Evolution

Software Specification is the method to defind the characteristic of software we
want to develop.

Software Design and Implementation is the method to build or develop
the software to agree with the Software Specification

Software Validation is the method to check for the accuracy of the
developed software or check the function of the software whether it
match the customer’s requirement.

Software Evolution is the method to improve the software.Make the software
flexible for the alteration of customer’s requirement or to make the software
ready for support the changing of technology.

What is Software Process Model?

Software Process Model is the model of software development
of the 4 topic I mentioned above. We can write a graph or picture that easy to
understand for represent the Software Process Model.Today there are
so many software process model such as Waterfall model,V-model,Agile,
Extreme programming, Lean, etc…

I will show you only the important Software Process
Model that normally used today.

It is the V-model and agile but I will write them for my next articles.
For more information about it , you can look for it
at or other site such as

Software revision control.

Today i will write the story about software revision control.

Software revision control is an important part of software development.
When we have to develop the large software project that must use many person, software
revision control will take an important role for this situation. Revision control or SCM
(source code management) is the software that have an ability to track and record the
change that happen to software development project and it will do this all the time of
developing the softwar project.

Revision control can also be used with document too.

The principle of revision control system is mostly use Optimistic Technique that is
the method to let many user can reach (Check out) to the same source code.Each user
(I mean programmer) can edit the source code that thay had download and can upload
(Check in / Commit) back to the Revision Control System. SCM has a responsibility to
check for the conflict of the data.The conflict data such as the situation that two user
edit the same file and still edit for the same fuction or the same line.Furthermore the
SCM has an ability to show the difference between the file in each version and can be
used for merge the two files altogerher. In SCM we have to build the Resository as the
data bank to store the data for SCM to use. In present there are many SCM software
such as SVN (subversion), GIT, CVS, Bazaar,IBM ClearCase, Perforce. SCM software also
has both commercial and non-commercial.

In the next article I will write about the comparison of revision control software
and the popular revision control software that are SVN (subversion) and GIT.

SE concept (Before know more about software engineering).

Software engineering, known as SE, is the development, design, maintenance and documentation of software by applying practices and various technologies from fields such as computer science, engineering, application domains, project management, digital asset management and interface design.

The conception, development and verification of a software system is what software engineering is all about. It is necessary to identify, define, realize and verify the resultant software’s required characteristics. Necessary testing is required for attributes such as reliability, functionality, testability, maintainability, ease of use, availability and portability. In software engineering, software can be verified to meet these requirements by having design and technical specifications prepared and implemented correctly. The characteristics of the software development process are also important in software engineering. Development itself, development duration and risks in software development are examples of such characteristics.

A computer uses software as part of its system that allows the hardware to operate properly. Software can be system software or application software. System software includes the main operating system and a variety of other utilities that enable the computer and its applications to run. Application software includes the computer programs and relevant documentation responsible for end-user data processing tasks. This kind of software is developed for such tasks as word processing, payroll, inventory and production control.

Software Development

A series of processes undertaken systematically to improve a business through using computerized information systems is what is known as software development. There are two major components to software development, which are systems analysis and design.

Systems analysis is the specification of what exactly the system is required to do, or the main objective. Design is about how to make the system do what is required of it. For system analysis, it is required to study the current system by certain procedures in order to gather and interpret data and facts, identify any problems and use this data to improve the system currently in use. System design refers to the process of developing a new system, concentrating heavily on the technical specifications and other specifications that make the system operations.

Software Development Life Cycle

Software Development Life Cycle, or SDLC, is a sequence of events done by designers, analysts and users to develop and execute an information system. There are a number of stages to this practice, which can overlap. The stages are Preliminary investigation (which is feasibility study), Determination of system requirements (which is analysis), Design of system, Development of software, System testing, System Implementation and System Maintenance in that order.

Published At: Isnare Free Articles Directory
Permanent Link:

The author of this article is Gabriel Adams

Visit the Software Management Institute, a.k.a.SMI, an association and resource for software professionals:

What is jtag and how about arm jtag.

Today the story is about JTAG for arm microcontroller.

Jtag is an important equipment use for programming (flash) and debugging
various microcontroller series.This story is about jtag for arm microcontroller.
Nowadays normally used jtag is divided in to two interfaces. One is parallel and the
other one is USB.These two kinds of jtag have and advantage and dis-advantage that is
the USB-jtag is faster and it can connect to almost PC of today but of course it is
more expensive than parallel jtag.Parallel-jtag is an old format jtag but it can still
be used upon now with the PC that have a parallel port.

Arm jtag is also can be divided in to two group (USB and parallel).On the
market Arm jtag has a various name that is J-link , U-link , R-link.Thease kinds of
jtag is categorized depend upon the IDE that use for debugging and programming
your current arm microcontroller.As an example , suppose that you use IAR Embedded
Workbench for debugging you LPC2378 development board , in this case you much use
the J-link that is supported by IAR Embedded Workbench.The X-link that I mentioned
above is jtag that is not open-source and was invented by the microcontroller software
tools company. Arm jtag has an open source too. It is call OpenOCD.OpenOCD is one kind
of jtag that can be used to flash and debugging arm microcontroller with the free
software development tool such as Eclipse.OpenOCD also have USB or paraller interface.
To setup the IDE used for OpenOCD must integrate many tools together. Such as Eclipse as
the main IDE, arm-gcc compiler ,arm-gcc  linker and the gdb server. To read more about
OpenOCD please visit –>

To select which Arm jtag that is suitable for you is based on the software IDE and
software programming and debugging tools you use to develop that arm project.But the normally Arm jtag
selection is as follow

IAR Embedded Workbench for ARM -> use J-link.
Keil MDK-ARM  , Keil uVision for ARM (ARM RealView)  -> use U-link.
Ride7  IDE  from raisonance -> use R-link (Normally used for STMicroelectronics microcontroller series) .
Open source IDE -> use OpenOCD jtag.

Below is some pictures of these various kinds of Arm jtag.

R-link from Raisonance

R-link from Raisonance

U-link from KEIL

U-link from KEIL

J-link from IAR

J-link from IAR

OpenOCD Jtag

OpenOCD Jtag

Thank you so much.

Tool for convert the picture file to C source code.

Today the story is about the tool that help you translate the image file into the C source
code.This tool have an advantage in that when you want to show some picture to display on the LCD of
your embedded development platform, you must translate the picture file that you can normally see on
your computer to be the array of color code that will be represented the whole pixels of that picture file (
of course , the array of color code , you can’t see it).It is “BMP2C”.You can get this
program from by follow this link

This program is an opensource so you can modify it to suitable for your project, or continue to
develop it to be better than the current version.This program can be used with various LCD driver and can
generate the color data that represent the color of the pixel range up to 32 bits, but it don’t provide the lcd
driver program for you , so if you want to use it you have to write the code to control the LCD driver first.

The disadvantage of this program is that it is a command line program (no gui) however it also can
run on MS windows XP (For Windows Vista  -> I don’t know) .You can easily run it by follow this step.

1. Click at the menu name “Run…” on the Start Menu of Windows XP.
2. Type the word “cmd” on the white blank and then press OK , this will open the command-line
program of Windows XP.
3. Go to the directory that you store the execute file of this program ( name “bmp2c.exe” ) and then run it.
4. follow the instruction ,  afterthis please follow the help document of this program by yourself
(the good document is already come with this program).

please note that this program can be used with the picture file extension “.bmp” only.

Thank you.


Incoming search terms for the article:

Good ARM usb openOCD jtag debugger and programmer

Today I write an article about the JTAG for ARM.It is an open-source JTAG or openOCD. The article below is the introduction of the good JTAG I found from website (It was made from OLIMEX).

ARM USB openOCD JTAG is a device that used for debugging the ARM series microcontroller, it also can be used as the programmer too. This ARM USB openOCD JTAG is combined with RS232 virtual COM port and power supply adapter. This item allow you to debug your ARM boards with full featured virtual RS232 port with all modem signals on it. It also have a power jack that can provide the tree range voltage that is  5V , 9V and 12V DC via jumper selection. It include the CD that contain the software neccessary to perform the ARM development and debugging with this USB openOCD such as

– Eclipse IDE using Yagarto and Codesourcery as toolchains.

– ARM USB openOCD driver for Windows.

– Various ARM sample project (include source code) that can use the ARM USB openOCD as the debugger and programmer.

– A good documents and instruction about how to use this ARM USB openOCD with Eclipse IDE .

– Other utilities software that can be used to integrate with the ARM development IDE and can work together with ARM USB openOCD (such as CYGWIN GNU  C/C++ compiler,  GNUARM GNU C/C++ compiler).

– OpenOCD for JTAG debugging software.

(*almost the software list above is open-source)

– This item can be used with the CrossWorks for ARM development IDE too. Please visit the Olimex website for more information about how to use it with CrossWorks for ARM.

For more information about its hardware specifications, you can visit the two links below.

For the person who develop ARM project on an open-source platform, This JTAG would be suitable for you.


Incoming search terms for the article:

Good tool for browsing and analyze your source code

Hello, today I will present about the good source code browser & analyzer.
It is “Source Insight”.Source Insight is the program used for browse a big source code.
It can help you to easy jump to the definition of the symbols while you are currently
browsing the source code , this will help you save the time for find the value of that symbol by yourself.
(symbols are such as the variable,the function,constant variable,define directive,or
else that is the symbol in programming language)
It can look for the caller of the current function.Otherwise It can integrate with the
version control such as CVS or SVN by add the version control command to the source insight program.
For more information you can visit the website at This program can browse and analysis a various langauge (such as C,C#,C++,JAVA,VHDL,etc).The current version for free Trial is 3.5 and you
can use it for free for 35 days.But if you like it and want to buy it, the price is $239
(for the hard copy,the price may increase more than this price).

Interest ARM7 and ARM9 embedded development board

People who love an Embedded System must ever written a program to run in the microcontroller.Today I will suggest  some good embedded development board for people who interesting in ARM7/ARM9. These development board is rather high performance an all of them are 32-bit platform, of course they are not too expensive for you to buy them!

For a long time I have developed ARM7 embedded system , I think the ARM7 LPC2478/LPC2378 from NXP is a good one to study and the development board I recommand is as below




The above link may be changed or deleted, so I recommend you to search for the arm7 from the seller name “esky-sh” instead because this seller is selling ARM7 development board.


1. (this board can develop with uClinux as well as C for ARM)



About the ARM9 development board , I found them a lot on ebay and almost of them used the Samsung S3C2440 as the main MPU (microcontroller processing unit) as below.


but I also recommend this seller  ->>

that is esky-sh

Another interesting one is the product from The development board from Tin Can Tools was developed as the separated embedded module so It will be easy for integrate the other embedded module to it because it come with prototyping board!!!

Of course, you can find this interesting board from

Who am I?

Hi, My name is Jitkasem Pintaya. I am software engineer at NDRS.
I love SEO because it is my life.
Contact me at OR