NSDS - Northern Software Development System
NSDS is a system designed to develop software for microcontrollers. NSDS development has started in 2013, the first beta version is planned to be released in March 2018, and the final release is expected later in 2018. NSDS will support the majority of Microchip PIC® microcontrollers.
Why there's a need for a new tool? Because microcontrollers are different from computers. Nearly all existing development tools have been originally designed for big computers and then adopted for microcontrollers. NSDS is designed specifically for microcontrollers.
|Every computer uses essentially the same set of hardware - hard drives, network cards, keyboard, pointing device, display. Operating system handles all the hardware interactions through the system of drivers. Software is isolated from the hardware peculiarities.||The primary goal of the microcontroller software is to interact with the hardware and control it. The hardware may be very diverse and changes from project to project.|
|The set of software running on a computer is dynamic. Users may delete one software program or install new software. Since the exact set of software is unknown, the software components must be able to handle diverse environment and interact with other components which are not known in advance.||Software running on the microcontroller is static. It never changes. During updates, the software is usually replaced as a whole. It is therefore possible to bind all the components togheter at compile time thus creating more compact and efficient code.|
|If there's a problem, computer software usually has an ability to report the problem to a human and stop working while waiting for the resolution.||Microcontroller software often must run without any user interaction either because there is no user interface at all or because it is very limited. Often microcontroller cannot stop. Therefore, it is difficult to handle exceptions gracefully, and it is important to avoid errors and exceptions at all costs.|
|Most computer software is not time critical. Usually, even delays of few seconds can be tolerated.||Microcontroller software works on a tight schedule, often measuring its time in microseconds.|
|Computers usually have significant resources - gigabytes of RAM, terabytes of HDD space, fast processors. Resource conservation is not the highest priority.||Microcontroller resources are limited. Code efficiency is very important.|
These considerations were used in NSDS design. Below is a very brief and incomplete description of NSDS function.
The programming unit in NSDS is called a task. Task is anything that needs to be accomplished over a period of time. Examples of tasks are - blinking LED, controlling a motor, sending an email.
A task may contain one or more actions. Action is something that must be performed to accomplish the task. For example the LED-blinking task may consist of two actions - turning the LED on and turining it off. From the programming viewpoint, actions are functions which are called at the specified times by a very efficient scheduler. The tasks are very lightweight and the scheduler can run dozens of them in parallel.
Any task has certain hardware requirements. For example to blink a LED, the task would need a pin. Special command language (an extension of C-style pre-processor) lets you specify requirements for the task. Requirements are abstract. When you write your code you do not need to select specific pins. Your code will be automatically bound to the selected pins later.
Individual tasks are combined into projects. A graphical tool is used to assign specific resources to the tasks. It is possible to use multiple instances of the same task. For example, you can create 5 LED-blinking tasks, each task working with its own pin. The system ensures simultaneous operation of all tasks.
NSDS will include C-style pre-processor and compilers for four languages (Enhanced Assembler, C, Pascal and Basic), IDE, simulator and OCD debugger.
© 2007-2017 Northern Software Inc. All Rights Reserved.