What is Embedded Development?
While software applications for general purpose PCs are designed to function on a broad range of computers, built by different manufacturers that meet general requirements (such as processor speed, available memory, and storage), embedded development for the embedded device is intended for one specific model or category of devices.
Comparing to software for general purpose PCs, following are the main differences for embedded development:
– Designed to operate on hardware with limited resources.
– Application codes are tightly coupled with hardware.
– Errors and exceptions can’t be thrown to the user.
The Bobylog team can assist you in the process of embedded development that is permanently stored in an electronic device based on the technologies described below.
- Windows CE: .Net Compact Framework (.net CF);
- Microsoft Platform Builder: Windows CE, Embedded Visual C++;
- .Net Micro Framework (.net MF);
- Android OS: XAmarin;
- Microcontrollers: Microchip, Texas Instruments;
- ARM circuit board design: Eagle;
- Board prototype;
- PCB production;
WINDOWS EMBEDDED (Windows CE) is a 32-bit, small-footprint, hard real-time operating system (OS) with great graphics and multimedia support, developed by Microsoft to support handheld, mobile, automotive, multimedia, retail, medical, industrial, robotics, and other embedded devices. It’s designed to support multiple processor architectures, including ARM, MIPS, and x86.
Windows Embedded Compact development supports subsets of Win32, .NET Framework, and Silverlight and uses the popular Visual Studio integrated development environment to provide a developer-friendly environment to develop embedded applications.
The first version initially released to the public in 1996 as Windows CE; Microsoft subsequently changed the product name to Windows Embedded Compact for the current release. This OS platform has cumulated more than 15 years of continuous development and improvement and evolved to become a mature and robust OS platform. Along with the effi cient and developerfriendly environment, Windows Embedded Compact provides the latest networking, multimedia, Silverlight for Windows Embedded, and application development framework that enables the product development team to rapidly develop smart, connected, and service-oriented devices with an exciting and visually compelling user interface.
New Generation of Embedded Devices
During the past three decades, technology has been through a phenomenal growth and is one of the key contributing factors that helped to improve our lives. As technology evolves, new generations of System-on-Chip (SoC) are being built with faster and more powerful processors. Each new generation of SoC is designed with additional integrated peripherals in a smaller package with more built-in features. Although the SoC becomes faster, more powerful, and has more built-in features, the increased demand in the market helps lower the cost. As a new generation of SoC evolves, it enables developers to design and deliver to consumers a new generation of embedded devices with far more capability, at a lower cost than its predecessors. Computers, smartphones, media players, navigation devices, and game consoles are just some of the prime examples.
Aside from the consumer market, a new generation of SoC provides the core engine that enables developers to create a new generation of medical, retail, industrial, robotic, and communication devices that are the critical building blocks to help shape the living environment around us.
Embedded devices are everywhere. Knowingly and unknowingly, we use and interact with embedded devices throughout our daily living, as we travel, work, and go about our everyday life. Think about the ATM, gas pump, ticketing machine, credit card terminal, vending machine, digital camera, remote control, security alarm system, mobile phone, GPS navigation device, and more.
New Generation of Development Platform
As the evolving technology enables a new generation of embedded devices to be built with more functions and features, it also raises consumers’ expectation for better products. To keep up with customers’ demands and remain competitive in the market, many legacy device manufacturers have to find an efficient and effective development platform to redesign their product with new technology to incorporate additional features and functions, to meet their customers’ expectations.
Different embedded development environments require different tools. The environment needed to develop aerospace technology has a different focus than the environment needed to develop general consumer devices. Like an ancient saying in Asia, you do not use a butcher knife to kill a mosquito. To be an efficient and productive developer, you need to identify and select the right development tools for the project.
The Windows Compact Embedded development platform provides the proper balance between the need for a small-footprint OS with hard real-time capability and ease of development, where you can use native code to develop highly efficient applications to meet hard real-time requirements as well as a high-level language such as Visual Basic and C# to rapidly develop applications for different types of devices, servicing the following markets:
– Consumer and entertainment;
– Engineering and scientific instrument;
– Home and building automation;
– Industrial automation, process control, and manufacturing;
– Information kiosk and self-serve terminal;
– Mobile phone and communication;
– Office equipment;
– Retail and hospitality;
In the fast-paced and unforgiving technology market, rapid application development, fast time-to-market, and the ability to manage development risk and minimize cost are key factors contributing to a successful project.
Windows Embedded Compact provides an efficient and effective development environment that helps developers simplify complex tasks and enables project managers to establish a manageable development plan and schedule.
What Is the .NET Micro Framework?
The Microsoft .NET Micro Framework is a small and efficient .NET runtime environment used to run managed code on devices that are too small and resource constrained for Windows CE and the .NET Compact Framework.
The .NET Micro Framework enables you to write embedded applications for small, connected, embedded devices with Visual Studio and C#. That means you can now use the same development tools and language that you use to build desktop and smart device (PDA and smartphone) applications to develop applications for microcontrollers. The .NET Micro Framework also provides an extensible hardware emulator for rapid prototyping and debugging.
The .NET Micro Framework requires no underlying operating system. A scaled-down version of the Common Language Runtime (TinyCLR) sits directly on the hardware, so the framework is often called a bootable runtime. The runtime has a small footprint; it uses only a few hundred kilobytes of RAM and does not require the processor to have a memory management unit (MMU).
Therefore, the .NET Micro Framework can run on small and inexpensive 32-bit processors
without consuming a lot of power.
Benefits of the .NET Micro Framework
As stated earlier, the .NET Micro Framework contains the TinyCLR. Code that targets the CLR is referred to as managed code, whereas code that does not target the CLR is known as unmanaged (native) code. The CLR executes intermediate-language code and provides the following core services and benefits:
• Automatic memory management using a garbage collector
• Thread management and synchronization
• Exception handling
• Strict type safety
• Secure and robust managed code
• Debugging services
The CLR uses a garbage collector that automatically frees unused memory blocks and manages threads by providing time slices to the individual threads and methods to synchronize access to shared resources. Since managed code is executed under the control of the CLR, which takes care of references to objects, you do not have to deal with the unsafe pointers that are common with native programming. With managed code, you can’t access memory blocks once they’ve been disposed of, because the CLR frees objects only when they are not referenced anymore. It also enforces strict type safety, and the TinyCLR prevents execution of unsafe, custom, native code. Together with exception handling, a modern way to handle errors, managed code enables secure and robust applications.
Managed code assemblies contain much information (metadata). Therefore, using managed code also allows you to use static code analysis tools like FxCop to detect and enforce the following to write better code:
• Enforcing consistent naming of classes and methods
• Detecting unused code
• Detecting performance issues
• Detecting design issues