Altabel Group's Blog

Posts Tagged ‘embedded development

As computers (and sensors) get smaller, smarter and connected, our everyday objects, from clothing to lavatories to cars, get more intelligent. By so doing embedded software is essential to the operation of today’s smart devices.

Embedded systems control many devices in common use today. Ninety-eight percent of all microprocessors are manufactured as components of embedded systems. Manufacturers ‘build in’ embedded software in the electronics of e.g. cars, telephones, modems, robots, appliances, toys, security systems, pacemakers, televisions and set-top boxes, and digital watches, for example.

Embedded systems are not always standalone devices. Many embedded systems consist of small parts within a larger device that serves a more general purpose.

Specifics of embedded development:

  • The development of embedded systems requires a good combination of industry knowledge, up-to-date technology expertise and excellent quality and project management skills.
  • Code is typically written in C or C++, but various high-level programming languages, such as Python, JavaScript and even the Go programming language, are now also in common use to target microcontrollers and embedded systems. However the complexity is not in the lines of code, most of the times, since embedded software is more focused towards controlling and managing the system (or hardware).
  • Programmers spend nearly all of their time using their embedded software development environment, which is an integrated collection of software development tools that manage the entire embedded software development process: analyzing, designing, documenting, writing, compiling, debugging, testing, optimizing, and verifying software. The choice of an embedded software development environment is the most important determinant of the productivity and effectiveness of programmers.
  • Today’s embedded systems development spans sensor, device, gateway, and cloud. This dramatically increases the complexity of development, troubleshooting, and fault isolation.
  • Unlike smartphones and personal computers, which sells in millions, most embedded products such as ECG machines, PoS machines, Laboratory and Test equipment, Ticket vending machines, etc. have low sales volume.
  • Furthermore, the product life of embedded devices ranges to 7+ years in contrast to the 15-18 months life for smartphones and to 4-6 years life for laptops. Due to this limited sales volume and long product life, custom or chip-based development of embedded devices adds significant overheads in terms of supply chain inefficiencies, platform obsolescence, non-optimal cost structure, and barriers to adopt latest technologies.

Embedded vs. application software development

Embedded software development

Application software development

Embedded software is physically part of a device, loaded by the manufacturer, and cannot be changed or removed by the user.

Application software is an optional program that the user chooses, installs and can remove.

It’s important to consider not only algorithm performance, but also the overall system robustness, reliability, and cost in the architecture and design. It’s closely associated with hardware manufacturing. You can’t write embedded software in your bedroom and unleash it on the world. Either you make a device yourself, or you work for someone who does.

Application software is similar and different. You can do it for yourself or for The Man, with the difference that no manufacturing is involved so there is much less capital outlay.

Embedded software however is often less visible, but no less complicated. Unlike application software, embedded software has fixed hardware requirements and capabilities, addition of third-party hardware or software is strictly controlled. To manage quality risk, as well as to meet tighter standards for software certification, embedded software engineers need to leverage software simulation tools and certified code generators.

Application software is usually less complex than embedded devices. It has more flexible requirements and solutions.

Embedded systems often reside in machines that are expected to run continuously for years without errors and in some cases recover by themselves if an error occurs. Unreliable mechanical moving parts such as disk drives, switches or buttons are avoided.

Therefore the application software for personal computers is usually developed and tested less scrupulously.

Embedded software may use no operating system, or when they do use, a wide variety of operating systems can be chosen from, typically a real-time operating system. This runs from small one-person operations consisting of a run loop and a timer, to LynxOS, VxWorks, BeRTOS, ThreadX, to Windows CE or Linux (with patched kernel).

Standard computers generally use operating systems such as OS X, Windows or GNU/Linux.


Hot trends for Embedded s/w development: Big Data, Internet of Things, Connected Cars and Homes

The amount of data that’s being created and stored on a global level is almost inconceivable, and it just keeps growing, yet only a small percentage of data is actually analyzed.

The importance of BD doesn’t revolve around how much data you have, but what you do with it. You can take data from any source and analyze it to find answers that enable cost and time reductions, new product development and optimized offerings, and smart decision making. When you combine big data with high-powered analytics, you can accomplish business-related tasks such as:

  • Determining root causes of failures, issues and defects in near-real time.
  • Generating coupons at the point of sale based on the customer’s buying habits.
  • Recalculating entire risk portfolios in minutes.
  • Detecting fraudulent behavior before it affects your organization.

Big data affects organizations across practically every industry, from Banking, Education and Government to Health Care and Retail industry, etc.

The Internet of Things is yet another ubiquitous word in the world of embedded technologies. The core of IoT is the availability of the application or thing and its data to be a connectable ecosystem.

– For example, the Connected Home also known as the Smart Home, uses modern automation systems to provide a practical way of controlling electronic devices in the home. Connected Homes technology can include but is not limited to the scheduling and automatic operation of heating, security systems and lighting. This advanced technology allows these vital home functions to be controlled remotely from anywhere in the world using an internet connected device.

– The race to build the fully Connected Car, and ultimately the completely Autonomous vehicle, is also under way. Drivers around the world are getting used to the increasing amount of digital technology in their cars. Many of the normal features of the car such as monitors of performance data like speed, fuel efficiency, and gas tank levels; heating and air conditioning; and the audio system — all have been digitized in hopes of providing the driver with easier operation and better information. And the car, including smartphones and other devices carried onboard by drivers and passengers now reaches out to the surrounding world for music streamed from the cloud, real-time traffic information, and personalized roadside assistance. Recent innovations allow automobiles to monitor and adjust their position on the highway, alerting drivers if they are drifting out of their lane, and slowing down if they get too close to the car in front of them.

Naturally, smart homes, smart cars, and other connected products won’t just be aimed at home and private life. They’ll also have a major impact on business.


We’re just beginning to imagine the possibilities of embedded systems. Innovations in sensors, big data, and machine learning now make it possible for engineering teams to develop smarter and more autonomous systems that have the potential to dramatically improve designs and create new categories of products and services previously unimaginable.

Embedded software engineers develop embedded hardware and software solutions, custom-made for applications in various target markets. With capabilities that span the complete system and software lifecycle, Altabel Group is placed to manage entire projects from start to finish, working closely with customers to understand their needs and deliver excellent results. For more information on our work in the industry, please click here.

Thank you! And you’re always welcome with your questions.


Victoria Sazonchik

Victoria Sazonchik

Business Development Manager

Skype: victoria_sazonchik
LI Profile: Victoria Sazonchik



Altabel Group

Professional Software Development


By 2020, more than 24 billion internet-connected devices will be installed globally — that’s more than 4 devices for every human on earth.

The Internet of Things first reached users on PCs. Then it migrated to smartphones, tablets, smartwatches, and TVs.

This growth surely brings several benefits, as it will change the way people fulfill everyday tasks and potentially change the world. Having a smart home is undoubtedly cool and will amaze your guests, but smart lighting can also reduce overall energy consumption and lower your electric bill.

New developments would allow connected cars to link up with smart city infrastructure to create an entirely different ecosystem for the driver, who is simply used to the traditional way of getting from Point A to Point B. And there are many other examples of positive changes IoT may bring to our lifes.
But with all of these benefits comes risk, as the increase in connected devices gives hackers and cyber criminals more entry points.

Late last year, a group of hackers took down a power grid in a region of western Ukraine to cause the first blackout from a cyber attack. And this is likely just the beginning, as these hackers are looking for more ways to strike critical infrastructure, such as power grids, hydroelectric dams, chemical plants, and more.

What is already being done to Secure The IoT?

The great thing about IoT security is that previously ignored, it has now become an issue of high concern, even at the federal government level. Several measures are already being taken to gap holes and prevent security breaches at the device level, and efforts are being led to tackle major disasters before they come to pass.

Now security firms and manufacturers are joining ranks to help secure the IoT world before it spins out of control. IT giant Microsoft has started taking measures and has promised to add BitLocker encryption and Secure Boot technology to the Windows 10 IoT, their operating system for IoT devices and platforms such as the Raspberry Pi.

BitLocker is an encryption technology that can code entire disk volumes, and it has been featured in Windows operating systems since the Vista edition. This can be crucial to secure on-device data. Secure Boot is a security standard developed by members of the PC industry to help make sure that your PC boots using only software that is trusted by the PC manufacturer. Its implementation can prevent device hijacking.

The IoT security issue has also given rise to new alliances. A conglomeration of leading tech firms, including Vodafone, founded the Internet of Things Security Foundation, a non-profit body that will be responsible for vetting Internet-connected devices for vulnerabilities and flaws and will offer security assistance to tech providers, system adopters and end users.

Other companies are working on setting up platforms that will enable large networks of IoT devices to identify and authenticate each other in order to provide higher security and prevent data breaches.

What should we know to protect ourselves and minimize risks of hacking attacks?

Security must be addressed throughout the device lifecycle, from the initial design to the operational environment:

1. Secure booting: When power is first introduced to the device, the authenticity and integrity of the software on the device is verified using cryptographically generated digital signatures. In much the same way that a person signs a check or a legal document, a digital signature attached to the software image and verified by the device ensures that only the software that has been authorized to run on that device, and signed by the entity that authorized it, will be loaded. The foundation of trust has been established, but the device still needs protection from various run-time threats and malicious intentions.

2. Device authentication: When the device is plugged into the network, it should authenticate itself prior to receiving or transmitting data. Deeply embedded devices often do not have users sitting behind keyboards, waiting to input the credentials required to access the network. How, then, can we ensure that those devices are identified correctly prior to authorization? Just as user authentication allows a user to access a corporate network based on user name and password, machine authentication allows a device to access a network based on a similar set of credentials stored in a secure storage area.

3. Firewalling and IPS: The device also needs a firewall or deep packet inspection capability to control traffic that is destined to terminate at the device.

4. Updates and patches: Once the device is in operation, it will start receiving hot patches and software updates. Software updates and security patches must be delivered in a way that conserves the limited bandwidth and intermittent connectivity of an embedded device and absolutely eliminates the possibility of compromising functional safety.

What is evident is that the IoT will play an important role in our lives in the near future, and its security is one of the major issues that must be addressed via active participation by the entire global tech community. Next several years will show whether all of the innovations will revolutionize the world or will bring us to a new era of digital insecurity and chaos. Time will tell.



Yana Khaidukova

Business Development Manager

Skype: yana_altabel
LI Profile: Yana Khaidukova



Altabel Group

Professional Software Development


Internet of Things(IoT) is extremely broad phrase, and can mean a great many different things. But it does not change the fact that each day more and more devices all over the world are being connected to the Internet. At that rate, Internet of Things (IoT) development projects are gaining popularity to say the least.

It is definitely the trend. This brings up a question: what programming languages are the most popular for IoT project? Well, according to the Eclipse Foundation survey, Java, JavaScript, C, and Python are the top four programming choices for developers who are building IoT solutions. Let’s look into them!


Though some people question the use of Java in IoT it is not surprising to see Java as being the most popular among developers who are working on IoT solutions. The practicality of the statement “write once, run anywhere” still predetermines the choice in a great measure.

Java advantages are apparent. It is an object-oriented and platform independent language. Thus coding and debugging can be done on desktop and moved to any chip with a Java Virtual Machine afterwards. Therefore code can be run not only on places where JVMs are common (servers and smartphones), but also on the smallest machines. Minimum hardware dependency is a huge plus. This also means that Java is great from an economic standpoint: devotion to Java coding can pay back across various platforms.

Besides, by now Java has attracted an active community of millions software developers and is being taught as one of the primary programming languages in the majority of engineering degree programs. Consequently, finding someone skilled in Java programming should not constitute a problem.

Last but not the least, maturity and stability of this language make it even more attractive. When there are devices that are going to be remotely managed and provisioned for a long period of time, Java’s stability and care about backwards compatibility become important.

It should be taken into consideration thought that your choice of IoT platform should support Java. You should make sure available hardware support libraries should have control functions according to your requirements too.


Combining some knowledge from other languages JavaScript has not only proven itself worthy on both the client and server side of the web, but it also has a huge potential in the growing Internet of Things domain.

The main difference between Javascript and Java is that JavaScript is a scripting language that has a range of existing libraries, plugins, and APIs, and many of them can be used to create complicated IoT apps easier and faster. Instead of building a range of new libraries and plugins, developers are free to reuse and further develop existing solutions around the web for absolutely new implementations.

Remarkably, applications that listen for events and respond when events occur are a strength of a JavaScript. Effective and secure communications and interactivity are of paramount importance in the IoT, and there are great systems for dealing with requests and events. For example, maintains an open connection between the server and the browser and thus enables the server to push updates to the browser as they happen. This gives you a chance to see the changes in the IoT network without a page refresh. By providing real time event based communication across multiple devices really comes in handy.

Additionally, much of the Internet is built on JavaScript and huge portion of the web functionality is enabled through JavaScript. Connecting up the web to our IoT devices and using the language that web pages and web apps already speak lead to simplicity in management.

It’s important to mention however, that Javascript would be a bad choice for lightweight embedded controllers.


Created to program the telephone switches C programming language has almost monopolized embedded systems programming. Its proximity to machine language makes it impressively fast.

C can create compact and faster runtime code. Still it should be noted that runtime speed isn’t the primary aspect of development to consider. Development speed should also be takes into account (and other languages may be much more efficient in that).

Another vote for stems from the fact that majority of the modern languages follow the syntax of C, which means that it is easy to learn and effective in accomplishing advanced tasks.

As both completing complex tasks and finding developers with extensive experience in C is relatively easy, its applicability to IoT projects speaks for itself.

Still, there are some drawbacks of C that make it less preferred in today’s development world, e.g. poor data security and no run time checking mechanism.


Although Python originally is widely chosen for Web development, it has significantly gained popularity in the IoT coding arena for the past few years. Such huge advantages as its flexibility, writability, error reduction, and readability contributed to that greatly. Distribution of compact executable code is easy. Working in programming teams is easy. Known as organized and neat, its elegant syntax is great for database arrangement. Sure, Python is a good choice for building applications that take data, convert it into any sort of a database format and draw upon the tables for control information. Python also has libraries for all 3 main IoT protocols such as TCP/IP, Bluetooth and NFC.

Additionally, IoT projects involve lots of data analytics and Python has rich modules for that.

Finally, major IoT hardware platforms and micro-controllers, e.g. Arduino, Raspberry PI, Intel Galileo, are enabled for interactive communication through Python.

Probably, the main problem for Python is its runtime speed, especially in comparison to C. Still there is a number of ways to optimize the code so it runs more efficiently.

Steady increase in popularity of Python for IoT is evident.

So which programming language is the best for IoT?

No definite answer, guys… All the above languages influence the IoT space up to an extent. However, the preference of language today depends on the end use of the app, product or service you want to create. What do you think? I’d love to hear your thoughts in the comments!



Alexandra Presniatsova

Business Development Manager

Skype: alex.presniatsova
LI Profile: Alexandra Presniatsova



Altabel Group

Professional Software Development


%d bloggers like this: