0% found this document useful (0 votes)
68 views31 pages

EMBL01E-Module 4

The document discusses trends in embedded systems and tools for embedded software development. It notes that embedded processors are becoming more powerful yet cheaper to produce. Code sizes for embedded applications are increasing and there is more reuse of hardware and software components. Integrated development environments help simplify the development process by combining necessary tools like editors, compilers, debuggers, and linkers into one package. Popular IDEs for embedded software development include Eclipse, MPLAB X, Qt Creator, and Visual Studio.

Uploaded by

Ronny Fae Fabon
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
68 views31 pages

EMBL01E-Module 4

The document discusses trends in embedded systems and tools for embedded software development. It notes that embedded processors are becoming more powerful yet cheaper to produce. Code sizes for embedded applications are increasing and there is more reuse of hardware and software components. Integrated development environments help simplify the development process by combining necessary tools like editors, compilers, debuggers, and linkers into one package. Popular IDEs for embedded software development include Eclipse, MPLAB X, Qt Creator, and Visual Studio.

Uploaded by

Ronny Fae Fabon
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 31

Basic Software Techniques for

Embedded Applications
Embedded Processor Market
Tied to Advances in Semiconductors

 A typical chip in near future


 50 square millimeters
 50 million transistors
 1-10 GHz, 100-1000 MOP/sq mm, 10-100 MIPS/mW
 Cost is almost independent of functionality
 10,000 units/wafer, 20K wafers/month
 Processor, MEMS(micro-electromechanical system), Networking, Wireless,
Memory

 So there is a strong incentive to port your application, system, box to the “chip”
Trends in Embedded Systems
 Increasing code size
 average code size: 16-64KB in 1992, 64K-512KB in 1996
 migration from hand (assembly) coding to high-level languages
 Reuse of hardware and software components
 processors (micro-controllers, DSPs)
 software components (drivers)
 Increasing integration and system complexity
 integration of RF, DSP, network interfaces
 32-bit processors, IO processors (I2O)

 Structured design and composition methods are essential.


Embedded Software Development Tools and
Processes
Hardware & Software
Hardware – Host development system
Software – Compilers, simulators, etc.
Target systems
PC or similar with I/O cards
PC or similar with custom I/O
COTS(Commercial of the Shelf) boards
Custom designed boards, interfaces, etc.
Software Development

 Native Compiler – Host and Target same uP


 Cross Compiler – Host develops code for a different target uP
 Process
 Edit source files – code versioning systems
 compile to relocatable object code (*.obj files)
 link & locate – link obj files with library code to produce absolute object code
file.
 convert object code to Intel hex format or other formats for programming
memory device
 Program target
Programming Target system

 Most programs stored in Flash memory


 On-Chip flash – in-circuit serial programming
 External memory devices – Separate programmer device required
 External programmer – parallel and gang programmers
Testing & Debugging

 Simulator – limited usage


 Monitor program – linked with application program,
 In- circuit emulator – less used nowadays
 Logic analyzer – more a hardware tool
 JTAG (Joint Test Action Group) emulation and debugging – used for
microcontrollers and SOC's (system on chip) where P is not directly
accessible.
Testing & Debugging features

 Run program
 Step single instruction or single HLL statement
 Trace execution
 Monitor uP registers and memory contents
 Disassemble machine code to assembly language
 Watch variables (i.e. memory contents)
 Breakpoints – stop execution
 Advance breakpoints – conditional
 Code coverage and performance analysis
 Execute in realtime and capture information.
Types of Embedded Software
Development Tools
Editor

 A text editor is the first tool you need to begin creating an embedded
system. It is used to write source code in programming languages C
and C++ and save this code as a text file.
 A good example of a text editor is Geany. This is a small and
lightweight environment that uses the GTK+ toolkit. Geany supports
C, Java, PHP, HTML, Python, Perl, Pascal and other types of files.
 Basic functions of Geany: Syntax highlighting, Code folding, Symbol
name auto-completion, Snippets, Auto-closing of XML and HTML
tags, Code navigation
Compiler

 Source code is written in a high-level programming language. A


compiler is a tool for transforming the code into a low-level machine
language code — the one that a machine can understand.
 Keil C51 is a popular compiler that creates apps for 8051
microcontrollers and translates source code written in the C language.
Assembler

 The function of this tool is to convert a human-written code into a


machine language. In comparison with a compiler, which can do so
directly, an assembler initially converts source code into object code,
and then to a machine language.
 GNU Assembler (GAS) is widely used for Linux operating systems
and can be found in the Macintosh tools package.
Debugger

 This is a critical tool for testing. It goes through the code and
eliminates bugs and errors, notifying places where they occur. Precisely,
debuggers pinpoint the lines where issues are found, so programmers
can address them quickly.
 A good debugger tool is IDA Pro that works on Linux, Windows and
Mac OS X operating systems. It has both free and commercial
versions and is highly popular among developers.
Linker

 Traditionally, code is written into small pieces and modules. A linker is


a tool that combines all these pieces together, creating a single
executable program.
 GNU ld is one of the linker tools.
Emulator

 An emulator is a replication of the target system with identical


functionality and components. This tool is needed to simulate software
performance and to see how the code will work in the real-time
environment.
 Using emulators, programmers can change values in order to reach the
ideal performance of the code. Once the code is fully checked, it can
be embedded in the device.
Integrated Development Environment (IDE)

 Talking about the list of embedded software development tools, we


cannot but mention integrated development environments. All the
above-mentioned tools are needed for creating your embedded
software. But it would be extremely inconvenient to use them
separately, adding another layer of complexity to the project.
 Hence, to simplify the development process, it is highly recommended
to use integrated environments. IDE is software that provides a set of
necessary tools in one package.
Embedded Software Development
Tools List
PyCharm

 A Czech company JetBrains created this IDE specifically for developers


working with Python. Nevertheless, PyCharm is suitable for cross-platform
development as it supports JavaScript, CoffeeScript, TypeScript, Cython, SQL,
HTML/CSS, AngularJS, Node.js, template languages, and more, together with
Windows, macOS and Linux operating systems.
 PyCharm provides everything you need for productive embedded software
development: Intelligent code completion, Error highlighting and fixing,
Automated code refactoring, Easy project navigation, Support for web
development frameworks such as Django, Flask, Google App Engine,
Pyramid, and web2py, Integrated testing, Remote development on virtual
machines
 PyCharm offers the community, professional and educational editions, proving
to be a perfect tool for various programming purposes.
WebStorm

 Another IDE from JetBrains is WebStorm, used for creating


JavaScript, CSS and HTML solutions.
 WebStorm performs autocompletion, on-the-fly code analysis, code
navigation, refactoring, debugging and integration with version control
systems. It also supports multiple nesting e.g. when a JS script is
embedded in an HTML document, in which another HTML code is
embedded, inside which JavaScript is embedded. The organization of
information in these layers provides correct refactoring.
Qt Creator

 Qt integrated development environment has a comprehensive set of


libraries, APIs and tools to create software for embedded devices in
C++, JavaScript and QML.
 Features: Cross-compiling, Autocompletion, Syntax highlighting,
Virtual keyboard, On-device debugging, Functional safety, 3D/2D
user interfaces
 The leading embedded systems manufacturers across more than 70
industries, including automotive, automation, medical, TV and
STB, Internet of Things, mobile apps and more, choose Qt Creator to
build their products.
MPLAB X

 MPLAB X is the latest version of an integrated development environment MPLAB created by


Microchip Technology company. The software is based on the open-source NetBeans platform and is
designed to create applications for various types of PIC microcontrollers and digital signal controllers.
 The software runs on a personal computer and includes cross-platform support for Windows, Mac
OS and Linux. MPLAB X allows project managing, code writing, editing and debugging.
 The main advantages that may sway you in the direction of choosing this IDE are:
 Ease of use — you can easily customize the front panel and put frequently used tools there
 Auto-completion — this feature is used to complete known header files automatically, without
having to type them in
 Mark occurrences — if you highlight any variable with the cursor, all the instances of this
variable in the file are shown, which is extremely helpful in debugging
 Live syntax checker — this feature is able to detect common errors, reducing the total number
of errors at the end of the compilation
 Dashboard window — contains useful information on the project properties
Visual Studio

 A popular integrated development environment by Microsoft —


Visual Studio — is used to build not only computer programs and
mobile apps, but embedded software as well. The extension Visual
C++ for IoT development enables programmers to debug native
C/C++ code either locally on Windows, or on microcontrollers, or on
remote Linux machines. Using Visual Studio for IoT, you can build,
edit and debug devices running on Linux.
 VisualGDB provides an interface between Visual Studio and the GNU
toolchain to build and debug embedded firmware. Thus, you can
configure your project by implementing third-party compilers and
tools.
Eclipse

 Initially, the Eclipse integrated development environment was created


for Java applications, and now it is the most widely used solution by
Java programmers. Nevertheless, Eclipse can work with other
programming languages (Ada, ABAP, C, C++, C#, Python, PHP, etc.)
via plug-ins.
 A separate package — Eclipse IDE for Automotive Software
Developers — contains tools and frameworks for quick and easy
creation of embedded automotive software.
NetBeans
 A free and open-source IDE for Java 8 development, NetBeans is
supported by a large community of developers and users. It also
encompasses PHP and C/C++ tools and allows for creating apps with
CSS, JavaScript and HTML.
 Basic NetBeans features:
 Fast and smart code editing
 Easy and efficient project management
 Rapid UI development
 Debugging
 Support for multiple languages
 Cross-platform support
 Rich set of plugins
MATLAB

 MATLAB is a package of tools and a programming language designed for numerical


computing. Developers in different areas use MATLAB to create user interfaces,
implement algorithms, work with data plots, functions, matrices, graphs, etc. This
environment enables interfacing with programs written in C, C++, C#, Java, Python and
other languages.
 Additional software Simulink that comes with MATLAB is used to create simulations.
The combination of MATLAB and Simulink is useful for embedded software developers,
as it allows them to design and code an embedded system from prototyping to
production.
 The advantages are:
 Robust and easy-to-use debugging tools
 Rich and efficient library of mathematical and statistical functions
 A solid user community
 Well-developed literature on all tools
Arduino

 The open-source IDE Arduino helps create programs for Arduino


microcontrollers. It provides a range of features and libraries that
make the life of embedded programmers easier.
 The main advantages are:
 Ready-to-use boards with all needed components
 Libraries with examples of codes
 Open-source and extensible hardware and software
 Cross-platform support for Windows, Mac OS and Linux
 Access to a large community
 Easy to learn and use
ARM Keil

 ARM Keil development tools provide a complete environment for creating embedded applications
for the widest range of ARM-based devices. The software package includes leading C/C++
compilers, simulation models, debuggers, linkers, assemblers, middleware libraries.
 In addition, ARM Keil offers evaluation boards for the most popular devices based on Cortex and
ARM processors.
 Advantages:
 Easy to learn and use
 Intuitive interface
 Integration with third-party tools
 Code templates
 Example projects
 Technical support by ARM experts
 Suitable both for professionals and beginners
 Embedded systems and IoT solutions are applied in numerous areas
and undoubtedly increase productivity and save expenses. At the same
time, they add complexity to processes and create additional challenges
for personnel.

 There is no way to say which tool you should choose for creating
embedded software, since their number is enormous. We may say that
it all depends on the programmer’s skills and preferences, as well as on
the project needs.
Reference:

https://slideplayer.com/slide/5175993/
https://www.sam-solutions.com/blog/top-ten-embedded-
software-development-tools/

https://youtu.be/mve884mPysg

You might also like