Posts Tagged ‘operating system’
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.
- 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.
Business Development Manager
Professional Software Development
If you’re old enough to have been around back then, you might remember Java’s early, epic peak. It left the labs, and its hype meter pinned. Everyone saw it as a revolution that would stop at nothing less than a total takeover of computing. That prediction ended up being only partially correct. Today, Java dominates Android phones, enterprise computing, and some embedded worlds like Blu-ray disks.
For all its success, though, Java never established much traction on the desktop or in the browser. People touted the power of applets and Java-based tools, but gunk always glitches up these combinations. Servers became Java’s sweet spot.
Where Java wins:
1. Rock-solid foundation
2. Better IDEs
Java developers have Eclipse, NetBeans, or IntelliJ, three top-notch tools that are well-integrated with debuggers, decompilers, and servers. Each has years of development, dedicated users, and solid ecosystems filled with plug-ins.
Meanwhile, most Node.js developers type words into the command line and code into their favorite text editor. Some use Eclipse or Visual Studio, both of which support Node.js. Of course, the surge of interest in Node.js means new tools are arriving, some of which, offer intriguing approaches, but they’re still a long way from being as complete as Eclipse.
Of course, if you’re looking for an IDE that edits and juggles tools, the new tools that support Node.js are good enough. But if you ask your IDE to let you edit while you operate on the running source code like a heart surgeon slices open a chest, well, Java tools are much more powerful. It’s all there, and it’s all local.
3. Remote debugging
Java boasts incredible tools for monitoring clusters of machines. There are deep hooks into the JVM and elaborate profiling tools to help identify bottlenecks and failures. The Java enterprise stack runs some of the most sophisticated servers on the planet, and the companies that use those servers have demanded the very best in telemetry. All of these monitoring and debugging tools are quite mature and ready for you to deploy.
Fast code is great, but it’s usually more important that it be correct. Here is where Java’s extra features make sense.
Java’s Web servers are multithreaded. Creating multiple threads may take time and memory, but it pays off. If one thread deadlocks, the others continue. If one thread requires longer computation, the other threads aren’t starved for attention (usually).
If one Node.js request runs too slowly, everything slows down. There’s only one thread in Node.js, and it will get to your event when it’s good and ready. It may look superfast, but underneath it uses the same architecture as a one-window post office in the week before Christmas.
There have been decades of work devoted to building smart operating systems that can juggle many different processes at the same time. Why go back in time to the ’60s when computers could handle only one thread?
Where Node wins:
2. Build process simplified by using same language
Complicated build tools like Ant and Maven have revolutionized Java programming. But there’s only one issue. You write the specification in XML, a data format that wasn’t designed to support programming logic. Sure, it’s relatively easy to express branching with nested tags, but there’s still something annoying about switching gears from Java to XML merely to build something.
3. Database queries
Meanwhile, many Java developers use SQL. Even when they use the Java DB (formerly Derby), a database written in Java for Java developers, they write their queries in SQL. You would think they would simply call Java methods, but you’d be wrong. You have to write your database code in SQL, then let Derby parse the SQL. It’s a nice language, but it’s completely different and many development teams need different people to write SQL and Java.
When databases spit out answers, Java goes to elaborate lengths to turn the results into Java objects. Developers will argue for hours about POJO mappings, Hibernate, and other tools. Configuring them can take hours or even days. Eventually, the Java code gets Java objects after all of the conversion.
People love to praise the speed of Node.js. The data comes in and the answers come out like lightning. Node.js doesn’t mess around with setting up separate threads with all of the locking headaches. There’s no overhead to slow down anything. You write simple code and Node.js takes the right step as quickly as possible.
This praise comes with a caveat. Your Node.js code better be simple and it better work correctly. If it deadlocks, the entire server could lock up. Operating system developers have pulled their hair out creating safety nets that can withstand programming mistakes, but Node.js throws away these nets.
Where both win: Cross-compiling from one to the other
What is your opinion on what to choose Java or Node.js?
For years Microsoft has been the de facto desktop operating system. Now Apple is using its mobile devices to steal market and mindshare.
Pundits have long expected Apple to integrate its desktop and mobile operating systems; however, recent announcements at Apple’s Worldwide Developers Conference (WWDC) show that the company is doing far more than borrowing user interface elements. After some tentative starts, Apple has embarked on a full-scale integration between the company’s phone and desktop devices. With new releases of the software powering each, your laptop will soon be answering phone calls, and your phone will share text messages with your desktop, allowing you to fire off a missive from your MacBook to a colleague’s Android smartphone using standard text messaging. While not totally unexpected, the depth of integration is fairly impressive, and doubly so since I couldn’t help wondering during the announcements: why hadn’t Microsoft done this?
A constantly unfinished puzzle
By nearly any metric, Microsoft was years ahead of Apple in the smartphone and tablet space. While Apple was restructuring a fractured business and “playing” with handheld devices in the form of the Newton, Microsoft had produced several generations of its own PDA, and eventually a full-fledged smartphone that was feature rich, but failed to build a compelling user interface around its advanced feature set. Over half a decade before the iPhone launched, a lifetime in mobile technology, Microsoft was introducing tablets, only to be wiped off the face of the map by the iPad. Microsoft’s most obvious advantage in the mobile space was its dominance of the desktop.
If anyone built a mobile device that integrated tightly with the desktop, it should have been Microsoft.
Technology versus usability
While Microsoft may have missed a historic opportunity, more recently the company has been touting its merging of significant portions of its mobile and desktop code. Even user interface elements have begun to cross-pollinate, with the “modern” user interface that first appeared in Windows Phone featuring prominently on desktops and tablets. However, this technical integration is indicative of Microsoft’s larger problem.
As a company, Microsoft’s Achilles’ heel has been an inability to fully integrate different elements of its computing empire, and to present a user experience tailored to the task at hand, not pounded into a contrived, pre-existing Windows metaphor. From the Start button and stylus on a mobile phone, to its most recent technical integration of its environments that completely lacks in end-user benefit, Microsoft is missing the boat on developing a holistic computing experience. Frankly, I don’t care if my desktop and smartphone are running completely incompatible code from totally different vendors, as long as they’ll share information and work seamlessly together.
The Switzerland of computing?
While Microsoft may have missed this opportunity for its own devices, it still represents a key player in the overall computing landscape, and the long-predicted “demise of Windows” is likely several years away, if it occurs at all. An integrated experience between Microsoft smartphones and Windows desktops won’t meet with much excitement, primarily due to the limited market penetration of Windows phones. What would be interesting, however, is if Microsoft were to use its desktop dominance to integrate tightly with devices from Apple, Google, and others.
Such integration might seem far-fetched, but Microsoft already does this to an extent, with its Exchange server happily sharing mail, contacts, and calendars between everything from phones and tablets to laptops and web apps. Microsoft also has decades of experience integrating diverse hardware, and producing operating systems that run well on millions of combinations of hardware is no small feat. Just as Apple’s original iPod hit its stride when the company made it available for PCs, Microsoft could accelerate its cloud services and desktop OS, and ultimately make a compelling case for Windows Phone by providing tight integration with several mobile vendors.
In the mid and long terms, “winning” the mobility wars is not going to be about who sells the most devices, especially as computing transitions away from single devices and into a multi-platform, multi-device world. Microsoft has a chance to regain lost ground by tightly integrating its desktop and cloud services with today’s devices, allowing it to define tomorrow’s computing experience.
Professional Software Development
The next version of Android 4.0 operating system (Ice Cream Sandwich) will combine the best of the previous versions 2.0 and 3.0. Let’s see what innovative features it will include.
This is one of the best improvements Android Smartphone users will appreciate. Instead of long-pressing the home button to bring up a list of most recently used applications, just tap the multitasking button to reveal all currently opened apps and select the app you want to bring to the fore.
Another outstanding feature, coming over from the tablet interface, is the ability to resize widgets. In the 2.x version of Android, widgets could not be resized. Yes, some widgets offered various sizes to add to the desktop, but even that could be limiting. Now, however, a widget can be placed on a desktop and then resized to precisely fit the desktop in exactly the way you want it.
Better spell checking
Android 4.0 adds a new spell checker into the mix to attempt to improve this feature. This spell check will work across applications (and is not limited to only SMS messaging).
Finally. No more using the Dalvek Debug tool or rooting a phone just to be able to get screenshots. Now, all you will have to do is press the home button and the volume down button to save a snapshot of your screen.
With 4.0 the camera response time is instant. The instant reaction is not associated with the amount of time the camera app opens, but how quickly the picture is taken after pressing the shutter button.
The notification system on the Smartphone version of 4.0 will get some nice improvements. One of the major improvements is that notifications can be seen without having to unlock the phone. The current iteration allows you to see that you have a notification but not the contents. The upgrade will allow for the viewing of the contents of the notification.
Finally, copy and paste will be even easier. All you will need to do is highlight the text to be copied and drag the text to where you want it.
Data Tracking Tool
This will come in handy for anyone that needs to keep constant track of their data. The tool will tell you exactly which apps are using how much data. That way, when you’re going beyond your plan’s allotted data, you can easily figure out why!
Update to Android 4.0 will be important for a mere consumer. The new Android will be not only more attractive in appearance; it will be more user-friendly and easier and more flexible. The exact release date of new Android OS is unknown, it will be in 2012
Professional Software Development