How to create a stm32 project? And do the experiment of toggling LED :
Step 1: Select that STM32CubeMX
Step 2: In this screen, you select the new project. After selecting a new project you get this screen.
Step 3: In this screen, you can select required STM board. Now here I am going to select an STM32f0R8 series.
Step 4: Wow!!! Successfully you created STM32 bored. Ok, now you to select gpio pins. Select on gpio pin on this board, you can get a menu. From that, you select whichever you required.
Step 5: Now we are going to select the gpio pin. I have selected 9th pin as an output pin.
Step 6: Now we are generating the source code based on the user setting.
Step 7: Now we have to save our project. Give project name and browse the location where you want you save it.
Select the toolchain/ IDE which you are using, I am using MDK-ARM V5. OTHER SETTINGS ARE KEPT AS IT IS. CHECK BELOW FIGURE.
Step 8: Now our code is generated. We will open the project directly through keil.
Step 9: In this keil select the Application/user- main.c.
In main.c we can write the program.
Connect the stm32f0308 kit with computer.
After finishing program, build the program(shortcut press key-F7)- load(F8)-start/stop debug the program (ctrl+F5).
we got the disassembly screen. Here we can run the program
Run the program(F5)
Wowwwww…!!!!!! We got the output of toggling led.
Embedded in Automobile:
Embedded systems control engine management systems in automobiles, monitor home heating systems and regulate the quiet operation and the even distribution of laundry in washing machines. They are the heart of toys like Furry and Tamagotchi, of golf balls that cannot get lost and of gas pumps at gas online stations that advertise nearby restaurants on video. Above all, state-of-the-art communications equipment like WAP mobile telephones, MP3 players, set-top boxes and Net devices would not be possible without these powerful miniature brains.
Embedded system application in automobile:
A embedded system is an electronic or computer system which is designed to control, access the data in electronics based systems. This system includes a single chip microcontroller such as cortex, ARM and also microprocessors, FPGAs, DSPs, and ASICs. Nowadays the usage of embedded systems is widespread. But the software that is programmed into the microcontroller is capable of solving only a limited range of problems.
An advanced embedded system in automobiles has increased rapidly in the past two decades. Every year automobile manufacturers pack embedded systems into their cars for different functionalities like ignition, security and audio systems. The technological innovations of the embedded system within the vehicle are being ambitiously challenged to make the vehicle energy efficient, network savvy and safer. In 1968, the Volkswagen used first embedded system in the automobile industry.
Embedded Systems’ Applications:
Embedded systems have a huge variety of applications that vary from low to high-cost consumer electronics to industrial equipment, medical devices to weapon control systems, aerospace systems and entertainment devices to academic equipment, and so on. Embedded systems span all features of our present life.
- Home Appliances: Washing machines, microwave appliances, security systems, dishwashers, DVD, HV and AC systems, etc.
- Automobile: Airbag systems, GPS, anti-locking brake system, fuel injection controller devices, etc.
- Office Automation: Copy Machine, Fax, modem, smartphone system, printer, and scanners.
- Entertainment: Video games, mp3, Mindstorm, smart toy, etc.
- Security: Building security system, face recognition, airport security system, eye recognition system, alarm system, finger recognition systems, etc.
- Industrial automation: Voltage, temperature, current, and hazard detecting systems, data collection systems, assembly line, monitoring systems on pressure.
- Aerospace: Flight attitude controllers, space robotics, automatic landing systems, navigational systems, space explorer, etc.
- Medical: Medical diagnostic devices: ECG, EMG, MRI, EEG, CT scanner, BP Monitor, Glucose monitor.
- Banking and Finance: Share market, cash register, smart vendor machine, ATM
- Telecommunication: Cellular phone, web camera, hub, router, IP Phone
- Personal: Data organizer, iPhone, PDA, palmtop.
Introduction to Automobiles Industry :
As far as automobile industry is concerned, a wide range of industries and companies are involved in the development, designing manufacturing and selling of cars, bikes, buses, etc. India represents one of the world’s largest automobile markets. From the past few years, even the middle-class has started showing interest in buying a vast range of cars or vehicles. The growth of the Indian automobile industry has recorded tremendous potential over the years.
The industry’s financial record is almost 7% of the country’s gross domestic product and both directly or indirectly, automobile industry employs about 19 million people. Moreover, with the government support and a special focus on exports of two and three wheelers, small cars, auto components and multi-utility vehicles, the automobile industry produced 1.73 million vehicles in February 2013 alone including commercial, two wheeler and three wheeler vehicles and passenger vehicles as well. In February 2014, the industry produced 1.81 million vehicles.
Embedded Systems in Automobiles
In automotive systems, more and more equipment is being changed from the mechanical systems to electronic systems. Embedded system is the heart of a vehicle’s electronic system because of its versatility and flexibility. The revolution of electronics has manipulated in automotive design including the fuel combustion, powertrain crash protection, etc. Advanced usage of the embedded system in the vehicle can help in controlling the pollution, increasing the facility to provide systems monitoring features that consumers demand. Today a typical vehicle contains around 25 to 35 microcontrollers, and some luxury vehicles contain approximately 60 to 70 microcontrollers per vehicle.
Today, a typical automobile on the road has computer controlled electronic systems, and the most commonly used embedded system in a vehicle includes Airbags, anti-lock braking system, black box, adaptive cruise control, drive by wire, satellite radio, telematics, emission control, traction control,automobile parking, in-vehicle entertainment systems, night vision, heads-up display, back up collision sensors, navigational systems, tyre pressure monitor, climate control, etc.
1. Embedded Airbag System
The below figure shows an embedded airbag system – an important safety device that provides extra protection against head-on crash – for the front seat occupants. This System works on the commands from the microcontroller The controller of this system gets the power from the battery. If the sensors detect accident, this microcontroller operates the airbag system by operating alternator.
2. Embedded Navigation System
Another advancement of the embedded system in automobiles is the navigation system using GPS. This navigational system consists of an embedded circuitry built with a GPS receiver, a gyroscope, a DVD-ROM, main controller and a display system as shown in the figure. The GPS receiver receives the current longitude and latitude values that are compared with the stored map. The Gyroscope and other sensors provide the road direction and speed. From all the information gathered at the main controller, the display system displays a navigation or route map of the destination in the display screen.
3. Adaptive Cruise Control
The innovation of the embedded system used in automobiles is Adaptive Cruise Control technology. By using this technology we can also make driverless vehicle control in a reality and many automobile manufacturers are also already engaged in work on these concepts. This adaptive cruise control allows cars to keep safe distances from other vehicles on the busy highway roads. The driver of the car can set the speed of his vehicle and the distance between his car and other vehicles. When the traffic slows down, ACC changes vehicle speed using moderate braking.
Each car has a laser transceiver or a microwave radar unit which is fixed in front of the car to find out the speed and distance of any other vehicle in the pathway. This is works on the principle of Doppler Effect; it is nothing but change in frequency of the waves.
4. Embedded Rain-Sensing System
Embedded rain-sensing system in automobiles is another automation system implemented with the use of an electronic system. In this, an optical sensor is placed on a small area of the front windshield glass (opposite to rear-view mirror). This optical sensor is placed at an angle to emit the infrared light which then reads the amount of light by it when the light is reflected back. This light is reflected in cases where the windshield is wet or dirty. Thus the optical sensor determines the necessary speed and frequency of windshield wiper depends on reflected light into the sensor.
5. Embedded Based Automatic Parking System
This automatic parking system is an independent car manipulation system that moves a car from traffic lane into a parking spot to perform the parallel parking, perpendicular parking and angle parking. This system mainly uses different methods to detect objects around the car. Sensors installed on the front of the vehicle and rear bumpers act as both a transmitter and receiver. These sensors send a signal that will be replicated back when it meets an obstacle near the vehicle, and then the carputer will receive the time signal and bumper will use the radar to decide the position of the obstacle. The car will sense the parking space and distance from the side of the road then drive the car to the parking place.
Thus, the modern day’s embedded systems have marked a revolutionary change in every aspect of the automobile designing and manufacturing processes because of their adaptability and flexibility. Now the question is: Have you got the basic concept of embedded systems in automobiles? If you have got some basic understanding of this concept with a little bit of doubt on this topic, you can give your feedback and suggestions in the comment section below, and let us know how would you like to get some help or assistance from us.
Use of Linux in Embedded:
Linux as a free software, get a great deal of development, embedded systems and Linux combination is increasingly being optimistic. Linux has its own set of the toolchain, easy to create your own embedded system development environment and cross-operating environment, and embedded system development across the simulation tools obstacles. Linux kernel has a small, high efficiency, open source.
Linux device drivers can be either built into the kernel itself or can be built as modules. When built into the kernel, the device driver is always loaded and ready to be used. If built as a module, the device driver will have to be installed before attempting to use the device. This can be done automatically using scripts, manually from the command line, or the kernel can automatically load modules as needed.
Embedded Linux is increasingly popular Linux operating system modified so that it can be cut in the embedded computer system running an embedded Linux operating system on the Internet not only inherited the unlimited resources but also has embedded the open source operating system characteristics.
Advantages of Linux as an embedded system:
Linux can be applied to a variety of hardware platforms. Linux uses a unified framework to manage the hardware, from one hardware platform to another hardware platform changes and the upper application-independent.
Linux can be freely configured, does not require any license or business relationship, the source code is freely available. This makes the use of Linux as the operating system does not have any copyright disputes, which will save a lot of development costs.
Linux is similar to kernel-based, with full memory access control, supports a large number of hardware and other characteristics of a common operating system. All of its open source programs, anyone can modify and GUN General Public License issued under. In this way, developers can customize the operating system to meet their special needs.
Linux users are familiar with the complete development tools, almost all Unix systems applications have been ported to Linux. Linux also provides a powerful networking feature, a variety of optional window manager (X Windows).
The Linux powerful language compiler GCC, C++, etc. can also be very easy to get, not only sophisticated but easy to use.
The advantages of embedded Linux over embedded operating systems include multiple suppliers for software, development, and support; no royalties or licensing fees; a stable kernel; the ability to read, modify and redistribute the source code. The disadvantages are a comparatively large memory footprint complexities of user mode and kernel mode memory access.
Now let’s see in which all embedded system linux is used.
Nspire CAS CX Calculator: this is a simple calculator yet powerful. It is an ARM-based graph calculator that is powered by Linux.
Linux has proved itself to be a more stable operating environment; its functions are stable enough that seldom does one encounter screen freezes, repeated boot-ups, etc.
the Linux OS handles different functions through the kernel in a different way compared to Windows. This creates a faster system that is even closer to UNIX (it actual parent system).
Smart Tv: Ubuntu is powering Smart Tv.
Different versions of Linux
Blue Cat Linux at http://www.lynuxworks.com,
Hard Hat Linux at http://www.mvista.com,
RT-Linux at http://www.rtlinux.com,
ThinLinux at http://www.thinlinux.org,
White Dwarf Linux at http://www.emjembedded.com/linux/dimmpc.html, and
Linux Embedded at http://linux-embedded.com.
Embedded C Coding Standard was developed to minimize bugs in firmware by fixating on practical rules that keep bugs out–while additionally ameliorating the maintainability and portability of embedded software. A C coding standard can avail keep bugs out of embedded software by leveraging prevalent language features and development tools.
Embedded C coding standard
The C was developed by Dennis Ritchie between 1969 and 1973 at Bell Labs. It was widely accepted by almost all the professional programmers, and they started making their own additions to it. After a few years, there were a lot of C variants available for a programmer to choose from. The C Programming Language’, published in 1978 by Brian Kernighan and Dennis Ritchie; hence, the name K&R after Kernighan and Ritchie.
That time K&R C acted as an informal standards specification for C but also added language features like the new data types long int and unsigned int and the compound assignment operator.
The K&R C proposed a standardized I/O library. Since the most popular C standard followed in India was still ANSI C, the main differences between K&R C and ANSI C. There are 32 keywords in C.
According to K&R C, there are only 28 keywords in C. One keyword was called entry, which was neither implemented at that point in time by any of the compilers nor accepted into the list of keywords in ANSI C.
The other major difference is the definition of the function. A function definition in K&R C has the parameter types declared on separate lines. Consider the following lines of code showing a function definition in K&R C:
|float fun( a, b )|
c = a * b;
The function fun( ) accepts an integer and a floating-point variable, and returns the product. This is not the style for function definition in ANSI C.
The first line of the function definition in ANSI C will be
float fun( int a, float b ).
The gcc does not have an option to specify compilation in the K&R C standard. But programs written in K&R C will also be compiled without any errors because gcc compiler is backward compatible with K&R C.
The K&R C was accepted by many programmers a standard of C, but no one was ready to accept it as the official standard of C.
The American National Standards Institute (ANSI) addressed this issue in 1983 by forming a committee, and the final draft of the standards it formulated was released in 1989. This is the reason why ANSI C is also called C89.
ANSI C is depends on the POSIX standard. POSIX is the Portable Operating System Interface, a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. The same standard proposed by ANSI was adopted by ISO officially as ISO/IEC 9899:1990 in 1990. This is the reason why ANSI C is also called as ISO C and C90. for one standard and the four different names were given.
The five keywords const, enum, signed, void and volatile were added, and the keyword entry was dropped in ANSI C. The option -ansi from gcc compiler will compile programs in the ANSI C standard.
The options -std=c89 and -std=c90 will also compile programs in ANSI C. Since gcc is a backward compatible compiler, the above given options will result in successful compilation of programs with K&R C features. Almost all the popular C compilers support ANSI C features. These include compilers like gccfrom GCC, Portable C Compiler (PCC), Clang from LLVM, etc.
C99 is the informal name given to the ISO/IEC 9899:1999 standards specification for C that was adopted in 1999. The C99 standard added five more keywords to ANSI C, and the total number of keywords became 37.
The keywords added in C99 are _Bool, _Complex, _Imaginary, inline and restrict.
- The keyword _Bool is used to declare a new integer type capable of storing 0 and 1.
- The keywords _Complex and _Imaginary are used to declare complex and imaginary floating point type variables to handle complex numbers.
- The keyword inline is used to declare inline functions in C, similar to C++ inline functions.
- The keyword restrict is used to tell the compiler that for the lifetime of the pointer, only the pointer itself or a value directly derived from it will be used to access the object to which it points.
New header files like <stdbool.h>, <complex.h>, <tgmath.h>, <inttypes.h>, etc, were also added in C99. A new integer data type called long long int with a minimum size of 8 bytes was added in C99.
In gcc compiler long long int usually takes 8 bytes. The C99 program named factorial.c given below to finds the factorial of 20. A program using the data type long int with the usual minimum size of 4 bytes will given the answer as -2102132736 due to overflow.
int main( )
long long int f=1;
for(i=1; i<=a; i++)
f = f * i;
printf(“the factorial of %d is %lld\n”,a, f);
The program can be compiled by executing the command gcc -std=c99 fact.c or the command gcc fact.c on the terminal.The second command works due to ,by default, gcc compiler supports long long int.
The Features like variable length arrays, better support for IEEE floating point standard, macros with variable number of arguments, support for C++ style one line comments (//) many more, were added in C99.
The official documentation of gcc: ‘ISO C99. This standard is substantially completely supported’. The legal term ‘substantially complete’ is slightly confusing but I believe it means that the gcc compiler supports almost all the features proposed by the standards documentation of C99.
The current and latest standard of the C programming language is C11 and, as the name indicates, this standard was adopted in 2011. The formal document describing the C11 standard is called ISO/IEC 9899:2011.
To C11, seven more keywords were added to the C programming language, thereby making the total number of keywords, 44. The seven keywords added to C99 are _Alignas, _Alignof, _Atomic, _Generic, _Noreturn, _Static_assert and _Thread_local. Consider the C11 program noreturn.c shown below, which uses the keyword _Noreturn.
_Noreturn fun( )
printf(“\nI TOO WILL BE PRINTED 🙂 \n\n”);
int main( )
printf(“\nI WILL BE PRINTED 🙂 \n”);
printf(“\nI WILL NOT BE PRINTED 🙁 WHY? \n”);
There are a few warnings because the main( ) has one more line of code after the completion of the function fun( ). he last printf( ) in main( ) not is printed This is due to the difference between a function returning void and a function with the _Noreturn attribute. The keyword void only means that the function does not return any values to the called function, but when the called function terminates the program, the program counter register makes sure that the execution continues with the called function.
But in case of a function with the _Noreturn attribute, the whole program terminates after the completion of the called function. This is the reason why the statements after the function call of fun( ) didn’t get executed.
The function gets( ) caused a lot of mayhem and so was deprecated in C99, and completely removed in C11. Header files like <stdnoreturn.h> are also added in C11. Support for concurrent programming is another important feature added by the C11 standard.
Anonymous structures and unions are also supported in C11. But unlike C99, where the implementation of variable length arrays was mandatory, in C11, this is an optional feature. So even C11-compatible compilers may not have this feature.
The official documentation of gcc again says that ‘ISO C11, the 2011 revision of the ISO C standard. This standard is substantially completely supported’. the gcc compiler supports most of the features proposed by the C11 standard documentation. The option –std=c11 of gcc will compile programs in C11 standard.
The embedded C standard is different from all other c standards that is from K&R to C11, based on user requirements the programming languages are changed.
The standard known as Embedded C is slightly different from all the others. C from K&R C to C11 depicts the changes of a programming language over time, based on user requirements.
Embedded C is a standard that is being developed in parallel with c standards. A lot of non-standard features were used in C programs written for embedded systems. in 2008, the C Standards committee came up with a standardisation document called embedded C.
Embedded C has the syntax and semantics of normal C with additional features like , named address spaces,fixed-point arithmetic, and basic I/O hardware addressing.
The keywords _Fract and _Accum are used in Embedded C.
New header files like <iohw.h> have also been proposed by the Embedded C standards committee. To support fixed-point arithmetic two groups of fixed-point data types called the fract types and the accum types were added to the C language. The main advantage of the Embedded C standard is that it is simpler and easier to learn than traditional C.
Embedded aerospace system
An embedded control system is a sophisticated technique to Control the desired section in Aerospace application. It finds its way almost in all sub-systems and min systems including Engine control, Temperature control, Speed control etc. The beauty of the control system model is it takes all inputs from all the Sensors, does all the math to acquire desired gain out of the equation.
How embedded system is working in aerospace:
By “embedded system” we normally (but not necessarily) mean “digital computer system.”
First, it is very important to know about a common misunderstanding of the term “embedded system.” There is the literal meaning, and the typical meaning, of “embedded (computing) system.” The distinction between them has a major impact on the practice of embedded computing, as we will see in this answer, so we need a very brief tutorial.
The literal meaning is exactly what the term says: a computing system that is embedded in an application system. An “embedded” system is essentially an invisible black box that performs some functionality for the application system. The users of the application system might be aware of the embedded computing system, but they have no direct visibility or control of it—as far as they know, the embedded computer’s functionality could theoretically be performed by relays or trained monkeys or even by magic. The users of the application system see and use the human interface provided for them by the application system. The literal meaning is the general case.
Most often, an embedded system’s functionality includes both computation and reaction. Generically, the functionality can be thought of as performing some mix of closed loop and open loop control of devices that are part of or exogenous to the application system. For closed loops, the embedded computer receives data and signals from the application system and the application system’s environment, performs some computations, and outputs data and signals to the application system and the application system’s environment. The operation of open loops follows self-evidently. This is similar to the familiar interaction between a regular desktop or laptop PC and devices inside it (e.g., drives) and external to it (e.g., scanner, camera). Clearly, in some cases, the PC user is involved in some reactive behavior, and in other cases the user is not. However, standalone computers are ordinarily considered as primarily computational or transformational instead of reactive.
It has been asked on Quora how embedded systems relate to real-time systems. My reply is posted elsewhere, but here suffice it to say that “real-time system” is not as “all-or-nothing” or “hard” vs. “soft” as popularly imagined—systems are real-time in various ways and degrees—cf. Many application systems include functionality and devices that are considered to be real-time in the usual sense that correctness requires satisfaction of constraints on the timeliness and predictability of the application and hence on the reactive interactions by the embedded system. Other application systems with embedded systems have the different objective of maximal performance (e.g., throughput, non-starvation).
A major distinction between an embedded system and a non-embedded one is that the developers of embedded systems hardware and software usually need (potentially quite a lot of) understanding about the application system functionality and design, and of the devices therein that it is interacting with. Indeed, often that embedded system hardware and software must be co-designed at a low level of detail (ordinarily the application system’s hardware and software are a given), calling for the education and experience of computer engineering as well as of computer science.
All of that having been said, what is the widespread misunderstanding about embedded systems? It is what was not said.
The typical meaning of “embedded system” is a special case of the literal meaning. It adds a lot of explicit and even implicit assumptions—about the embedded computer, and about the application system, and about the application system’s devices. Most notably, the use of the term “embedded system” almost always incorrectly assumes that the embedded computer is very small scale in size/weight/power, that the embedded computer software is small size, and that the application system is also relatively small scale and simple. Those assumptions are often correct, and everyone can immediately think of many examples.
(As a partial digression: it can be (and is) argued that a smartphone is an application system that has an embedded system—and conversely, that it is not but instead a handheld computer like a desktop or laptop PC. I leave that as a Quorum discussion if it has not already been adequately covered.)
The typical meaning of “embedded system” overlooks the fact that they may be, and are, not just only small scale, but of various scales in capabilities and size/weight/power consumption—all the way up to real-time supercomputers and distributed real-time systems having nodes of various complexities. They are embedded in application systems of various scales, including very large complex ones—e.g., aircraft carriers, military jumbo jets. Such application systems almost always include multiple embedded systems of different scales. Most embedded system developers have not been exposed to, or even heard of, large complex real-time embedded systems and application systems.
That background was needed for me to give my answer to the question, because my experience and expertise in embedded systems is mostly in the literal sense, especially including large, complex, dynamic real-time ones. Those are primarily for military application systems, which are the most wickedly challenging ones due to being engaged in combat and to the “fog of war.” In addition, such systems are unlikely to be mentioned in other replies (which will use the typical meaning of embedded system) to the question.
A real but simplified example from personal experience is modern AESA multi-mission multimode radars on large surveillance airplanes and large warships. Such radars can be expected to have embedded multiprocessor/multicore computers in the multi-million US$ price range, running multi-million lines of software to control the radar and perform the kill chain (tracking, engagement, etc.), and consume vast amounts of power. The radar (on-board and ground-based) users certainly know there is an embedded computer in their radar system, but they do not directly see or control it—they see the application system (radar) user interfaces.
Another example I am very knowledgeable about is application systems for the cruise and ballistic missile defense. Some of these have real-time embedded systems that are supercomputers, that the users do not directly interface with.
You probably will be surprised to hear that some of the companies that make large-scale real-time embedded computers are familiar only in the non-real-time non-embedded contexts (e.g., HP, IBM). Probably you have not heard of most others (e.g., Mercury).
Embedded Systems in Aerospace and Defence Applications :
Aerospace and defence has always been at the forefront of technological excellence and many spin-off technologies have resulted. In fact over $5.2bn worth over the years. Structures, engines, mechanics and all have a vital role to play in these great industries. However arguably its electronics that makes the magic happen. Technology has moved at a Phenomenal pace over the last 20 years Especially in A&D. think Civil Aircraft Inflight entertainment systems. Audio Visual on Demand (AVOD) is now commonplace on long-haul airline fleets around the Globe with touch screens. Even aircraft lavatories are becoming automated with touchless flush buttons. As for the military we will never truly know or understand the level of detail that embedded systems are present in these complex systems so we have to look at what the market currently offers. Still after 20 years Of service PCMCIA, ATA Flash And SRAM cards, which are legacy memory Tech ,are still in operation with plethora airlines. Why? They have far fewer components, are robust and Draw little power. A the time these cards for the only ones available on the market suited to the aircrafts requirements, be it Flight Data recorders, flight deck or avionics. 10 years ago there were around 50 Manufacturers For these cards, today There are are less than 5 as there is a shrinking market. Or is there? Until Aircraft and helicopters are retired or scrapped airline fleets And helicopter operators upgrade to newer aircraft there will still be a demand for these cards. Upgrading flight decks in fixed and rotary wing aircraft is a costly and time consuming job. The more the aircraft is on the ground the less it is earning and with margins tight especially for Airlines they can ill afford to be unnecessarily grounded. Its only recently we heard that the American B52 bomber will continue flying. That will be nearly 100 years of service which seems incredible but it comes down to the points made earlier. Structure engines, mechanical and electrics all will have had to go through strategic upgrades and maintenance at some point. Looking at even Older technology 3.5” floppy disks in particular there is still a healthy demand but getting hold Of them is a different matter. Why are these still around? They don’t break, they work every time and there is a minuscule change of cyber-Attack as the memory is not sufficient enough to host a bug. And for that reason the US Air Force still use these for their nuclear missile silos. Tried and tested works. On the other end of the scale And turning our attention to the latest technology we seeing some Incredible advancements in NAND Flash which if according to Manufacturers and early reports, Will be the staple of memory for years to come. But what about capacity? Only 11 years ago we saw 128MB micro SD cards, now 128GB is the norm.
Embedded application in the military :
A new generation of experts in the embedded computing industry is making yet another attempt to craft industry standards to reduce costs and ease upgrades and life cycle support of military embedded systems.
The HOST program seeks to decompose military embedded systems into functional blocks to ease system design and reuse of embedded computing hardware and software. It’s intended to open systems for several different vendors and avoid locking single vendors into large system designs, Collier told ETT attendees.
The SOSA project, meanwhile, focuses on single-board computers and how they can be integrated into sensor platforms, Collier says. It involves a standardized approach to how embedded systems interrogate sensor data to distill actionable information.
The HOST and SOSA projects are relatively new, yet Navy leaders are starting to push HOST standards on Navy programs, as well as on Navy vendors, Collier says.
Creating embedded computing architecture standards and encouraging industry to use them is a commendable endeavor. It does hold the promise of reducing complexity, cutting system costs, and easing systems upgrades and life cycle support over the long term.
Historically, however, a big problem with military-imposed design standards has been enforcement. The military talks about the need for cutting costs through standard design approaches, yet military program managers want unique capabilities, while military suppliers want value-added designs. A commodity approach rarely achieves these ends.
Military design standards, moreover, have been tried time and again, going back decades to Navy efforts in the early 1990s involving the Next-Generation Computer Resources Program (NGCR), the Army’s Standard Army Vetronics Architecture (SAVA), and the Air Force’s Joint Integrated Avionics Working Group (JIAWG).
Don’t feel bad if you’ve never heard of these initiatives. They were sort-lived, and had little long-term influence on military systems designs. Technology and industry-backed standards overtook them and quickly made them irrelevant. Today essentially they’re forgotten.
The speed of technology presents a formidable challenge to the creation of military and industry design standards. People often criticize how the long duration of military program development often fields obsolete technologies. Standards authorities have to be wary of the same thing: what good is it to standardize on obsolete technology?
It’s easy to be cynical about continuing generations of military electronic design standards. Might the HOST and SOSA projects go anywhere? Says Collier himself, “only time will tell.”
If we choose to be optimistic, then perhaps the HOST and SOSA projects will have some influence. “There are design intersections where working together will work,” Collier says, and I can’t disagree. Most likely these programs on their own will have little influence, but perhaps their legacies will help evolve industry attitudes toward working together as a military establishment and its supplier base.
“People want to work together to make technology stronger for everyone,” Collier says. History has shown that companies will work together only so far as competition will allow. People can voice support for standards, but ultimately each company wants to win the contract, sell the most boards, and promote the best solutions.
We have to consider if competition, not collaboration, is actually what creates the best technologies. Maybe this true, but it comes at a price. Competition generally bubbles the best solutions to the top, but it’s expensive. U.S. military technology can be the best in the world, but it costs hundreds of billions of dollars every year. Is that sustainable in the long term? Probably not in today’s environment.
So that brings us back to cooperation and industry standards. Is this the full answer? Probably not, but maybe it’s a start. There’s a chance that the culture of the military and the embedded computing industry could be changing, albeit slowly.
When it comes to industry associations and standards bodies, “there is more participation than I’ve ever seen before,” says Jerry Gipper, executive director of the VITA Open Standards and Open Markets embedded industry trade group, which puts the ETT conference together.
“Technology changes, and so do business models,” Gipper says. “It may just work this time. I do think we are going in the right direction.”
Of course, there are different grades and specifications of memory and storage, the Commercial of the Shelf (COTS) that you can buy in any good high street or web store to the premium end of the market – the industrial grade. IT is here the aerospace and defence industries where industrial grade memory and storage sits. There is a requirement to store large amounts of data; securely, in harsh temperature environments ranging from -40°C to 85°C often for long periods of time. The difference is often underneath the casing (although rugged metal casing is not uncommon) and the difference can vary dramatically depending on the manufacturer. Power protection, SMART Monitoring, AES 256 bit encryption, conformal coating, hardware and firmware alterations and more importantly NAND FLASH all vary differently as do the Capacities Of Storage devices. The holy grail of achieving 1TB storage in an industrial grade SSD has been achieved by many who are now starting to push the boundaries even further by introducing 2TB and in some cases 4TB. Interestingly a Korean company, Novachips is Slowly introducing an 8TB SSD which is Primarily for the military market. Early indications from a selection of clients show that the SSD has ‘groundbreaking performance’. So just how good is it? For the military Key Characteristics of any type of storage technology should have;
- 2.5”7mm height
- MIL-STD-810F/G compliant
- Military Secure Erase protocol supported
- 256-BIT AES Encryption, Secure Erase and Write protect supported
- Adaptive thermal control
- Fixed BOM (Controller, NAND, and Firmware)
- Constant write performance.
- On-board Capacitor Sudden Power off Protection,
- End-to-End data protection
- An ultra-rugged robust metal casing
- Wide operating temperature-40°C to 85°C
EMBEDDED BSP :
In embedded system Board support package(BSP) is a layer of software containing hardware specific drivers and routines which allows real-time operating system to work under particular hardware system that may be computer or CPU card. The hardware system is integrated with RTOS itself.
BSP supports standard interface between hardware and operating system.
The operation performed by BSP are
- Interrupt controller initialization.
- The Processor initialization.
- Segment configuration.
- The Bus initialization.
- Clock initialization.
- Initialization of RAM setting.
- It will load and run bootloader from FLash.
A Board Support Package (BSP) is used to start up and run the embedded target processor and is fundamental software for use with the evaluation board and its OOBE. The BSP does not include much more than what is needed to support a minimum number of peripherals on an eval board; only enough so that the user can at least demonstrate that the SoC peripherals work and that the SoC can be easily programmed to carry out the main features that the vendor advertises.
A board support package is one of the first software packages that is developed for use with a particular chip or its evaluation board.
The BSP has a boot-up program called the “boot loader” or a boot manager, and there’s a different BSP for different operating systems since the BSP contains drivers that enable the peripherals to communicate with the operating system.
The BSP provides a file structure and will initialize several systems, including the processor, any communication buses, clocks, and memory, as well as start up the boot loader. The BSP may also initialize peripherals and set some environmental parameters for working with the embedded operating system (OS).
A Board Support Package (BSP) provides a standardized interface between hardware and the operating system. A BSP does not directly access hardware. Although a BSP does provide an interface to device drivers which in turn allows the kernel to communicate with the hardware’s assets such as device controllers, the microprocessor (CPU), memory, internal and external busses. .
The BSP provides a common application programming interface (API) and a stable environment for the real-time operating system. The standard interface defines both BSP conventions and validation procedures.
Wind River provides a standardized BSP validation procedure for engineers who are developing their own BSP’s. Validation is very efficient with a BSP designed for VxWorks because the BSP testing can be performed without having to test the operating system at the same time.
Unlike Wind River’s real-time operating systems, most operating systems can not separate the testing of the BSP from the testing of the operating system itself making code coverage during testing a much larger and more inaccurate process.
The BSP validation test suite provided by Wind River is repeatable and as such can be performed by the company developing a BSP as well as by others because of this standard. Wind River’s partners can request that the WindLink partner program grant “Tornado Certified” status to a new BSP after passing the validation procedure as part of an overall certification process.
The validation procedures include tests for:
- Package validation
- Installation tests
- Functional test Code review process including certification from the WindLink partner program The Tornado BSP standard includes conventions to be used by developers that fall into four main categories:
- Coding Conventions
- Documentation guidelines
- BSP Packaging
Driver guidelines One strength of VxWorks is that it provides a high degree of architectural and hardware independence for application code because of this API. Application code and VxWorks can both migrate from one architecture to another because the BSP and related device drivers offer a consistent interface and modular design.
To further illustrate the BSP’s ability to interface hardware to software: Those construction workers that lay carpet for our floors use another example of this type of API in the home and office.
The carpet layer uses two-sided sticky tape to quickly attach just about any style carpet to any architectural floor plan beneath it. The BSP acts like this two-sided sticky tape attaching the embedded hardware to the operating system that uses it.
Description of BSP technical features :
There is a file named target.nr defined in the BSP documentation standards containing a list of technical features supported and unsupported for a particular COTS or reference board.
The list of features describes what a BSP is expected to do during hardware initialization when the CPU executes its first instructions as well as what hardware assets should be presented to the operating system. This information is summarized here. Boot Monitor
- Describe the methods and devices available for booting RTOS on this board. (sm, SCSI, Ethernet, vendor-bug ROMs, open firmware, visionWARE, etc).
- Describe the network support available for booting; bootp, proxy-arp, etc… Default Ram size Additional supported memory options Cache support Flash and ROM memory • How are ROMs made and installed. (How do they split.) Can FLASH ROMs be burned on board. If so, how. Timer support in addition to the system clock
- Describe routines that are associated with the speed of CPU and Timers Devices supported:
- The chip drivers included are:
templateSio.c – template serial driver .
templateTimer.c – template timer driver
templateVme.c – template VMEbus driver
templateNvram.c – template non-volatile RAM driver
Advantage of assembly language:
1. The symbolic programming of Assembly Language is easier to understand and saves a lot of time and effort of the programmer.
2.it is easier to correct errors and modify program instructions.
3. Assembly Language has the same efficiency of execution as the machine level language. Because this is a one-to-one translator between assembly language program and its corresponding machine language program.
All of the advantages and disadvantages can be summarized in one bullet each.
- You directly control the exact instruction sequences the processor executes.
An application has as much control as the system allows over what instructions and features are used.
This permits one to locally optimize code to a great degree (or at least to the extent of the knowledge and ability of the coders involved). There are many tricks that someone intimately familiar with the task that a program implements would utilize that general code optimizers cannot. Additionally, having knowledge of the structure of the data provides other avenues of attack. Furthermore, one had direct access to system-level features without the need for going through other interfaces.
In this vein, one firm I worked at was able to provide their customers with an (assembler-coded) program that directly interfaced to system character set code pages (and was tailored to their needs) without their having to purchase an expensive vendor-supplied package for doing so. And, of course, it was faster too.
- Debugging and verifying. Looking at compiler-generated assembly code or the disassembly window in a debugger is useful for finding errors and for checking how well a compiler optimizes a particular piece of code.
- Makingcompilers.Understanding assembly coding techniques are necessary for making compilers, debuggers and other development tools.
- Embedded systems. Small embedded systems have fewer resources than PCs and mainframes. Assembly programming can be necessary for optimizing code for speed or size in small embedded systems.
- Hardware drivers and system code. Accessing hardware, system control registers etc. may sometimes be difficult or impossible with high-level code.
- Accessing instructions that are not accessible from a high-level language. Certain assembly instructions have no high-level language equivalent.
- Self-modifying code. Self-modifying code is generally not profitable because it interferes with efficient code caching. It may, however, be advantageous, for example, to include a small compiler in math programs where a user-defined function has to be calculated many times.
- Optimizing code for size. Storage, space, and memory are so cheap nowadays that it is not worth the effort to use assembly language for reducing code size. However, cache size is still such a critical resource that it may be useful in some cases to optimize a critical piece of code for size in order to make it fit into the code cache.
- Optimizing code for speed. Modern C++ compilers generally optimize code quite well in most cases. But there are still cases where compilers perform poorly and where dramatic increases in speed can be achieved by careful assembly programming.
- Function libraries. The total benefit of optimizing code is higher in function libraries that are used by many programmers.
- Making function libraries compatible with multiple compilers and operating systems. It is possible to make library functions with multiple entries that are compatible with different compilers and different operating systems. This requires assembly programming.
Embedded system is the combination of hardware and software, it is designed for specific functions within in the larger system.
Embedded system consists of 3 things:
1. Input Device
2. Microcontroller (The Brain)
3. Output Device
Input device collects input from the user. It can be done via a sensor or a remote control. A microcontroller can be called as the brain, it is the processing unit. It collects information from an input device and performs the output as per the logic defined inside it.
Output device collects the instructions from the microcontroller and perform accordingly
Embedded systems have accentuated technology’s growth by manifold With growth and advancements in the field of electronics, wireless communications, networking, cognitive and affective computing and robotics, devices around you communicate in more ways than you ever imagined.
Apart from that most companies inventing automation products so in the Embedded field gives good growth based on their performance. Apart from that most companies inventing automation products so in the Embedded field gives good growth based on their performance.
After some years, Embedded systems are going to be everywhere – On every floor, every wall, public transports, cars, homes, offices, airplanes. Looking at the numerous possible applications it has and the awesome projects that are already in pipeline, it is safe to say that Embedded Systems will be one of the most sought-after fields of study and hence would require a lot of talented minds. And it is also important to note that as an Embedded systems Engineer, one would be dealing with some of the most advanced and complicated technologies while working on systems that would revolutionize the way we look and feel this world. So, choosing this field as a career option now would be a smart option for people who always were interested in Electronics and Electrical Engineering.
From smart clothing to smart banking, embedded systems have accentuated technology’s growth by manifold With growth and advancements in the field of
- Wireless communications,
- Medical Electronics
- Food industry
- Consumer Electronics
- Industrial machines
We can in all most all fields embedded system is used.
The devices around you communicate in more ways than you ever imagined. Those times are not very distant when every object around us will have a small processor/sensor embedded within itself, invisible to us but still communicating with all other devices around, making our lives more connected and accessible than ever before.
Many career opportunities are available in embedded systems. Some of them are listed below :
- Embedded Software Engineer (firmware)
- Application Software Engineer (device drivers)
- System Software Engineer (kernel & RTOS)
- Software Test Engineer.
- Embedded System Trainer.
- Embedded Hardware Engineer.
- Marketing & Sales Executive.
The experienced embedded system developers have very high demand in India. To have a good carrier in Embedded system the skills required are
- Software Skills
- Embedded C Programming on Microcontrollers (AVR, PIC, ARM)
- Device Drivers
- Real-Time Operating Systems (RTOS)
- interfacing microcontrollers with different sensors and peripherals
- Kernel Programming
- Innovative Thinking
- Hardware Skills
- Electronic Circuit Designing
- Power Supply Circuit Designing
- PCB Designing
- Troubleshooting Skills
- Other Skills
- Learning new microcontroller interfacing yourself
- Learning new hardware yourself
- Reading Datasheets
- Documentation as per company norms
- Following SDLC
- Working in a Team
- Completing Work in Deadlines
- Making Reports as per the Company Requirement
Grab all above skills if you want to achieve high level in your career.
Embedded C Dynamic Memory Allocation:
The high cost of RAM ensures that most embedded systems will carry on with to experience a scarcity of memory, The software you use to gadget these systems will use queues, linked lists, task-control blocks, messages, I/O buffers, and other structures that require memory only for a short time and that may return it to work for other functions. This is known as dynamic memory allocation. If you’re programming in C, this may be using the memory allocation and release functions, malloc() and free().
Dynamic memory allocation and the structures that utensil, it in C are so universal that they’re customarily treated as a black box. In the real world of embedded systems, however, that may not always be sensible or even feasible. Not all vendors of C compilers for embedded systems provide the memory allocation and release functions. We recently confront a compiler that especially falsely to have them but didn’t document their interfaces. Because we needed tight control over the memory allocation process, Unfortunately, the functions presented in that inestimable resource are meant to interface to an operating system that will supply large blocks of memory on request. The code works for two-byte address pointers but can easily be modified to handle any size. Dynamic memory allocation and the structures that utensil, it in C are so universal that they’re customarily treated as a black box. In the real world of embedded systems, however, that may not always be sensible or even feasible. Not all vendors of C compilers for embedded systems provide the memory allocation and release functions. We recently confront a compiler that especially falsely to have them but didn’t document their interfaces. Because we needed tight control over the memory allocation process, Unfortunately, the functions presented in that inestimable resource are meant to interface to an operating system that will supply large blocks of memory on request. The code works for two-byte address pointers but can easily be modified to handle any size.
A dynamic memory allocator should meet certain minimum requirements:
- All internal structures and linkage must be hidden from the call-only the number of bytes required should have to state.
- The order of calls to malloc() and free() shouldn’t matter (the order of calls to free() need not be the reverse of the order of calls to malloc()).
- free() must prevent fragmentation of freed memory; all small, freed blocks must be combined into larger, contiguous blocks where possible.
- Aloft in memory and execution time must be minimized.
- An error condition must be returned if no memory is available.
The main Objectives is to understand the operation of logic gates.
Logic Gates are used to build digital systems. The basic gates are AND, OR, NOT, NOR, NAND, EXOR and EXNOR gates. NAND and NOR gates are called universal gates as these gates can implement any Boolean function without any use of other gates. The basic operations of gates are explained below with truth table and gate symbol.
The AND Gate is an electronic circuit which gives high output only when all of its inputs are high, in all other cases output is low. The logical equation for AND gate is
Y=A.B where Y is output and A and B are inputs.The dot (.) symbol is used to indicate AND operation.
Pin Configuration of AND gate
The OR gate is an electronic circuit, that gives output high when any one or more inputs are high, in all other cases output is low. The logical equation for OR gate is X= A+ B.Where X is output and A and B are inputs.The plus (+) symbol is used to indicate OR operation.
Pin configuration of OR gate
The NOT gate is an electronic circuit, that produces output which is inverted version of input. It is also called as inverter. The logical equation for NOT gate is X= ~X.
Pin Configuration of NOT gate
The NAND gate is electronic circuit, that gives output low when all of its inputs are high, in all other cases output is high. The logical equation for NAND gate is X= ~ (AB).
Pin configuration of NAND gate.
The NOR gate is electronic circuit, which gives output high when all of its inputs are low, in all other cases output is low. The logical equation for NOR gate is Q= ~ (A+B). Where Q is output and A and B are inputs.
Pin Configuration of NOR Gate
The XOR gate is electronic circuit, which gives output high only when any one of its input is high, in all other cases output is low. The logical equation for XOR gate is X= A⊕B. Where x is output and A and B are inputs.
The symbol is used to indicate XOR operation.
Pin Configuration of XOR gate
The XNOR gate is electronic circuit, which gives output high only when all of its inputs are identical, in all other cases output is low. The logical equation for XNOR gate is Y= ~(AxorB). Where Y is output and A and B are inputs.
Logical Symbol of XNOR Gate:
Pin Configuration of XNOR gate: