Altabel Group's Blog

Posts Tagged ‘embedded

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.

 
Conclusion

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

E-mail: victoria.sazonchik@altabel.com
Skype: victoria_sazonchik
LI Profile: Victoria Sazonchik

 

altabel

Altabel Group

Professional Software Development

E-mail: contact@altabel.com
www.altabel.com

As the Internet of Things begins to revolutionize businesses, economies and our society, IoT platforms are coming up being the core basis in the overall IoT infrastructure. IoT platforms, in simple words, are just about connecting the sensors to data networks and integrating with back-end applications to provide insight into huge volumes of data.

However developing for the Internet of Things is a complicated undertaking, and almost nobody chooses to do it from scratch. IoT data platforms provide a starting point by integrating many of the tools needed to operate a deployment from device control to data prediction and grasp into one service. Ready-built IoT platforms can meet the needs of any company and smoothly accommodate constant growth and change. In the light of the possibilities offered by IoT, many high tech companies started taking advantage of it. For the time being there are more than 300 hundred various IoT platforms on the market and the number is continuing to grow. So, let’s see what features of IoT platforms take into consideration while choosing one for your business.

Before selecting an appropriate solution which may be suitable for your organization, you must determine:

1. Three different types of IoT platforms. Here they are listed from most complex to least complex:

  • Application enablement and development (AEP/ADP): This encompasses platforms that offer modules, widget-based frameworks or templates for producing (with minimal or no coding) actual end-user applications. These platforms are capable of turning data into either intelligence or action very quickly. The vivid examples of such platforms are Oracle, ThingWorx and etc.
  • Network/Data, and subscriber management (NM): In the wireless carrier and mobile virtual network operator (MVNO) space, this kind of platforms try to streamline connecting cellular M2M data, so you don’t have to build much of the data infrastructure behind it. For instance Cisco and Aeris do network management as well as device management, while Jasper and Wyless do more sheer network management.
  • Device management (DM): These platforms are more about monitoring device statuses, troubleshooting issues, configuring embedded device settings and administrating the provisioning and health of the endpoints. Usually in the IoT space this fairly elementary software is provided by hardware vendors. Like both Digi and Intel provide pure device cloud management.

While these platforms can be found as distinct standalone products, it is becoming increasingly common to find vendors that combine two or all three types in a single offering.

2. Implementation, integration support and device management. Device management is one of the most significant features expected from any IoT software platform. The IoT platform should maintain a number of devices connected to it and track their proper operation status; it should be able to handle configuration, firmware (or any other software) updates and provide device level error reporting and error handling. Ultimately, users of the devices should be able to get individual device level statistics.

To make implementation smooth, the provider should possess convincing manuals, blogs and feasibly lively developer-community around the IoT platform.

Support for integration is another vital feature expected from an IoT software platform. The API should provide the access to the important operations and data that needs to be disclosed from the IoT platform. It’s typical to use REST APIs to achieve this aim.

3. Comprehensive Information Security. There are four main technological building blocks of IoT: hardware, communication, software backend and applications. It’s essential that for all these blocks security is a must-have element. To prevent the vulnerabilities on all levels, the IoT infrastructure has to be holistically designed. On the whole, the network connection between the IoT devices and the IoT software platform would need to be encrypted and protected with a strong encryption mechanism to avoid potential attacks. By means of separation of IoT traffic into private networks, strong information security at the cloud application level, requiring regular password updates and supporting updateable firmware by way of authentication, signed software updates and so on can be pursued to enhance the level of security present in an IoT software platform. Nonetheless while security ought to be scalable, it is unfortunately usually a trade-off with convenience, quick workflows and project cost.

4. Flexible Database. There are four major “V” for databases in IoT space:

  • Volume (the database should be able to store massive amount of generated data)
  • Variety (the database should be able to handle different kind of data produced by various devices and sensors)
  • Velocity (the database should be able to make instant decisions while analyzing streaming data)
  • Veracity ( the database should be able to deal with ambiguous data in some cases produced by sensors)

Therefore an IoT platform usually comes with a cloud-based database solution, which is distributed across various sensor nodes.

5. Data analytics.

A lot of IoT cases go beyond just action management and require complicated analytics in order to get the most out of the IoT data-stream. There are four types of analytics which can be conducted on IoT data:

  • Real-time analytics (on the fly analysis of data),
  • Batch analytics (runs operations on an accumulated set of data),
  • Predictive analytics (makes predictions based on different statistical and machine learning technologies)
  • Interactive analytics (runs numerous exploratory analysis on either streaming or batch data)

While choosing the right IoT platform, it’s better to keep in mind that the analytics engine should comprise all dynamic calculations of sensor data, starting from basic data clustering to complex machine learning.

6. Pricing and the budget. The IoT platform market features a diversity of pricing methodologies underlying various business strategies. And sometimes providers’ costs aren’t always transparent. Thus it’s very important to check out all the nuances of your provider’s pricing pattern, so you are not plainly bought into introductory teaser rates or into the prices for the base model.

Further you should bear in mind that you licensing cost for the chosen platform is just the beginning. The major expense can turn out to be the integration itself, as well as hiring consultants (if you are not able to do it on your own) to support the system.

Therefore, it’s extremely vital to brainstorm what your entire IoT system will look like at scale and choose which features are most critical to you chiefly — and only afterwards decide what sort of platform you need.

A lot of companies do this backward. They get the IoT platform and believe they’re getting the complete necessary solution—then realize the mistake half a year into development. Thus it’s critical to be aware of this before you get started.

Also it should be mentioned that some companies don’t use IoT platforms—they’re developing their own platforms in-house. Yet, depending on how you want to go to market, it may be clever to research pre-built options. Depending on your situation, you may save a lot of time and money by partnering with one of these platforms.

Have you ever faced the difficulties of choosing the IoT platform for your business? If yes, can you please let me know what kind of difficulties? And what do you think is it better to use a ready-built IoT platform or develop your own from the scratch? Looking forward to getting your ideas and comments.

 

Anastasiya Zakharchuk

Anastasiya Zakharchuk

Business Development Manager

E-mail: anastasiya.presnetsova@altabel.com
Skype: azakharchuk1
LI Profile: Anastasiya Zakharchuk

 

altabel

Altabel Group

Professional Software Development

E-mail: contact@altabel.com
www.altabel.com

Last year Apple introduced Swift, its own programming language, which was focused on making it easier to build apps. Many reviews have praised Swift as the strong alternative of Objective C and even it will replace ‘C’ for embedded coding on entire Apple platform including Mac, iOS handheld devices, and wearable devices in near future. There must be some valid reasons behind. Let’s explore that why Swift is praised more.

1

  1. Ease in Code and Comprehend

Swift isn’t built on C so it is free from all C class languages related warts:

  • If you want to introduce new Objective C type or object-related keyword in Objective C, you have to use @ symbol in each case. Swift is capable to unify all keywords by removing extra @ symbols to de-clutter the code documents.
  • Swift doesn’t follow legacy conventions therefore programmers can easily avoid excessive semicolons that need to indicate end of line.
  • You can avoid use of parenthesis to surround conditional expressions particularly inside if/else statements.
  • Swift uses industry standard comma-separated list of parameters within parenthesis.
  • Swift is a natural type language so its readability resembles to the English so modern programmers certainly love it.
  1. Ease in Maintenance
  • Swift fundamentally avoid double file creation in order to improve the build time and programming efficiencies.
  • Xcode and the LLVM compiler are capable to figure out dependencies as well as perform incremental builds automatically for Swift programming
  • Swift programmers don’t have to follow C paradigm to create two files by separating table of content and body because (.swift) combines both (.h) and (.m).
  • In Swift, you don’t need to synchronize method names and comments between files.
  • Xcode and the LLVM compiler can reduce the work load of programmers behind the scene because it demand less bookkeeping to cuts out boilerplate work and improves the quality of Swift code along with productivity.
  1. Swift requires less code 
  • Swift reduces the amount of code that is required for repetitive statements and string manipulation. In Objective-C, working with text strings requires many steps to combine two pieces of information. Swift adopts modern programming language features like adding two strings together with a “+” operator. Support for combining characters and strings like this is fundamental for any programming language that displays text to a user on a screen.
  • The type system in Swift reduces the complexity of code statements — as the compiler can figure out types. As an example, Objective-C requires programmers to memorize special string tokens (%s, %d, %@) and provide a comma-separated list of variables to replace each token. Swift supports string interpolation, which eliminates the need to memorize tokens and allows programmers to insert variables directly inline to a user-facing string, such as a label or button title. The type inferencing system and string interpolation mitigate a common source of crashes that are common in Objective-C.
  • Swift relieves you from bookkeeping work, translating into less code to write (code that is now less error prone) because of its inline support for manipulating text strings and data.
  1. Ease in Memory Management

Memory management is quick and without memory leakage:

  • Swift unifies the language in a way that Objective-C never has. The support for Automatic Reference Counting (ARC) is complete across the procedural and object-oriented code paths. In Objective-C, ARC is supported within the Cocoa APIs and object-oriented code; it isn’t available, for procedural C code and APIs like Core Graphics. This means it becomes the programmer’s responsibility to handle memory management when working with the Core Graphics APIs and other low-level APIs available on iOS. The huge memory leaks that a programmer can have in Objective-C are impossible in Swift.
  • Because ARC handles all memory management at compile time, the brainpower that would have gone toward memory management can instead be focused on core app logic and new features. Because ARC in Swift works across both procedural and object-oriented code, it requires no more mental context switches for programmers, even as they write code that touches lower-level APIs – a problem with the current version of Objective-C.
  1. Ease in Debugging
  • Debugging process is instant and rapid, because Swift allows generating a compiler error along with ongoing writing of the code in document.
  1. Fast Performance

Swift has memory-bound GEMM algorithm with sequential access of large arrays. Therefore, along with FFT and Mandelbrot algorithm, it improves overall performance many folds:

  • According to Primate Labs (GeekBench performance tool), Swift was approaching the performance characteristics of C++ for compute-bound tasks in December 2014 using the Mandelbrot algorithm.
  • In February 2015 the Xcode 6.3 Beta improved Swift’s performance of the GEMM algorithm – a memory-bound algorithm with sequential access of large arrays – by a factor of 1.4. The initial FFT implementation – a memory-bound algorithm with random access of large arrays – had a 2.6-fold performance improvement.
  • Further improvements were observed in Swift by applying best practices, resulting in an 8.5-fold boost for FFT algorithm performance (leaving C++ with only a 1.1-time performance gain). The enhancements also enabled Swift to outperform C++ for the Mandelbrot algorithm by a factor of a mere 1.03.
  • Swift is nearly on par with C++ for both the FFT and Mandelbrot algorithms. According to Primate Labs, the GEMM algorithm performance suggests the Swift compiler cannot vectorize code the C++ compiler can – an easy performance gain that could be achieved in the next version of Swift.
  1. Encouraging Interactive Coding
  • Swift has highly interactive tool for seasoned /experienced programmers in form of Playground so programmers can write an algorithm while instantly obtaining feedback.
  • The Playgrounds were partially inspired by the work of former Apple employee Brett Victor. Playgrounds enable programmers to test out a new algorithm or graphics routine, say 5 to 20 lines of code, without having to create an entire iPhone app.
  • Apple has added inline code execution to Playgrounds to help programmers create a chunk of code or write an algorithm while getting feedback along the way. This feedback loop can improve the speed at which code can be written because the mental model that a traditional programmer needs can be replaced with data visualizations in Playgrounds. Programming is an iterative process, and any strain that can be reduced or used to complement the creative process will make programmers more productive and free them to solve bigger problems, rather than focusing on boring details that traditional compilers have imposed on programmers.

To draw the conclusion, one can say that, Swift is full-featured and  highly approachable  programming language to allow iPhone developers to create next generation iPhone apps as well as iPhone apps that supporting solely the Apple Watch and other wearable devices applications in cost-effective  and with ease ways. If you have any app idea for such next generation iPhone application developmentAltabel Group has solid team of iPhone app developers with expertise in Swift and other latest modern iOS development techniques, tools and technologies.

 

Svetlana Pozdnyakova

Business Development Manager

 

altabel

Altabel Group

Professional Software Development

E-mail: contact@altabel.com
www.altabel.com


%d bloggers like this: