This page will try to discuss some of the different, important terminology, and it may even contain a listing of some of the acronyms used in this book.
Types of Chips
There are a number of different types of chips that we will discuss here.
- These chips contain a processing core, and occasionally a few integrated peripherals. In a different sense, Microprocessors are simply CPUs found in desktops.
- These chips are all-in-one computer chips. They contain a processing core, memory, and integrated peripherals. In a broader sense, a microcontroller is a CPU that is used in an embedded system.
- Digital Signal Processor (DSP)
- DSPs are the "best of the best" when it comes to processing signals. DSPs frequently run very quickly, and have immense processing power (for an embedded chip). Digital Signal Processors, and the field of Digital Signal Processing is so large and involved, that it warrants its own book -- Digital Signal Processing.
Grades of Microcontrollers
Microcontrollers can be divided up into different categories, depending on several parameters such as bus-width (8 bit, 16 bit, etc...), amount of memory, speed, and the number of I/O pins:
- Low-end chips are frequently used in simple situations, where speed and power are not a factor. Low-end chips are the cheapest of the bunch, and can usually cost less than a dollar, depending on the quantity in which they are purchased. Low-end chips rarely have many I/O pins (4 or 8, total), and rarely have any special capabilities. Almost all low-end chips are 8 bits or smaller.
- Mid-level chips
- mid-level chips are the "basic" microcontroller units. They don't suffer from the drawbacks of the low-end chips, but at the same time they are more expensive and larger. Mid-level chips are 8 bits or 16 bits wide, and frequently have a number of available I/O pins to play with. Mid-level chips may come with ADC, voltage regulators, OpAmps, etc... Mid-level chips can cost anywhere between $1 and $10 for reasonable chips.
- High-end chips
- High end chips are used in situations where power and speed are a must, but a conventional microprocessor board (think a computer motherboard) is too large or expensive. High-end chips will have a number of fancy features, more available memory, and a larger addressable memory range. High end chips can come in 8 bit, 16 bit, 32 bit or even 64 bit, and can cost anywhere between $10 to $100 each.
This will be a functional list of most of the acronyms used in this book
- ADC stands for Analog to Digital Converter. ADCs are also written as "A/D" or "A2D" in other literature.
- The exact opposite of an ADC, a DAC stands for Digital to Analog Converter. May also be called "D/A" or "D2A"
- Random-Access Memory. RAM is the memory that a microcontroller uses to store information when the power is on. When the power goes off, RAM is erased.
- Read-Only Memory, ROM is memory that can be read, but it can't be written or erased. ROM is cheaper than RAM, and it doesnt lose its information when the power is turned off.
- OTP means One-Time Programmable. OTP chips can be programmed once, and only once, usually by a physical process or burning extra wires inside the chip. If an OTP chip is programmed incorrectly, it can't be fixed, so be careful with them.
In this book, the terms "burning", "flashing", "installing", or "downloading" all mean the same thing—the (semi-)automated process of putting the executable image into the non-volatile memory of the embedded system.
After a person tweaks the source code and compiles a new executable image on the PC, that person connects a downloader between the PC and the embedded system, and clicks the "go" button. Then the PC streams the image into the downloader, and the downloader burns the image into the embedded system.
A downloader is variously called a "downloader", "burner", "flasher", "flash downloader", "programming interface", or—confusingly—a "programmer".
There are many similarities between a desktop PC and an embedded system, including the terminology used. Unfortunately some terms have wildly different meanings when used in each of these domains. The word "programming" is one such term.
In the desktop PC world, "programming" means the overall process of a person writing software on a PC, going through many edit-compile-test cycles, to create an executable image. The person accomplishing this task is called the "programmer".
For embedded systems the word "programming" usually means the specific steps for transferring the executable image to the device ('installing' in PC terms). The "programmer" is a device for burning the compiled code into the chip. The person that writes the code for the device is generally called the developer.
In this book, we use the term "programming" to describe what a human being does to create and test software source code.
Be aware that other texts may use the term "programming"—such as when talking about "high-voltage programming", "gang programming", etc. -- to describe what we would call "installing".
Texts that talk about "C++ programming", "assembly programming", "pair programming" etc. -- use "programming" the same way we do. "C++ programmer", "Python programmer", "pair programmer", etc. refer to human beings that do the programming.
- We mentioned op amps. A long time ago, "analog computers" were once built entirely out of such operational amplifiers, resistors and capacitors. Today most embedded systems have few, if any op-amps—they are still useful for some sensor signal amplifiers, anti-aliasing filters before the ADC, anti-aliasing filters after the DAC, and a few op-amps embedded in power supply circuits.