Errata

Programming Embedded Systems in C and C++

Errata for Programming Embedded Systems in C and C++

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date submitted Date corrected
Printed
Page xvi
The ftp URL given was incorrect. The examples directory is

under pub/ so the URL now reads:

ftp://ftp.oreilly.com/pub/examples/nutshell/embedded_c/

Anonymous    Jun 01, 1999
Printed
Page xvi-xvii

The "How to Contact Us" section was updated to read:

"How to Contact Us

We have tested and verified all the information in this book
to the best of our ability, but you may find that features
have changed (or even that we have made mistakes!). Please
let us know about any errors you find, as well as your
suggestions for future editions, by writing to:

O'Reilly & Associates
101 Morris Street
Sebastopol, CA 95472
800-998-9938 (in the U.S. or Canada)
707-829-0515 (international/local)
707-829-0104 (FAX)

You can also send us messages electronically. To be put on
the mailing list or request a catalog, send email to:

info@oreilly.com

To ask technical questions or comment on the book, send email to:

bookquestions@oreilly.com

We have a web site for the book, where we'll list examples,
errata, and any plans for future editions. You can access
this page at:

http://www.oreilly.com/catalog/9781565923546/

For more information about this book and others, see the
O'Reilly web site:

http://www.oreilly.com"

Anonymous    Mar 01, 2000
Printed
Page 28
2nd paragraph, first sentence

"As I have implemented it, the Blinking LED example
consists of three source modules: led.c and block.c."

This is indeed a bug. The phrasing was changed to:

"As I have implemented it, the Blinking LED example
consists of three source modules: led.c, blink.c, and
startup.asm."

Anonymous    Jan 01, 2001
Printed
Page 53
2nd paragraph under "Study the External Peripherals"

The text sayd "ASICs (Application-Specific Generated Circuits)". It now reads
"Integrated Circuit".

Anonymous    May 01, 2001
Printed
Page 69
The following text was deleted

"If the address bus test fails, the address at which the
first error was detected will be returned. Otherwise, this
function returns NULL to indicate success"

Anonymous    Mar 01, 2000
Printed
Page 69

The text used to read:

datum*
memTestAddressBus(volatile datum * baseAddress,unsigned long nBytes)
{
unsigned long offset;
unsigned long testOffset;

datum pattern = 0xAA;
datum antipattern = 0x55;

It now reads:

datum *
memTestAddressBus(volatile datum * baseAddress, unsigned long nBytes)
{
unsigned long offset;
unsigned long testOffset;

datum pattern = 0xAA;
datum antipattern = 0x55;

/*
* Set the address mask that will be used as a stop condition.
*/
unsigned long addressMask = (nBytes - 1);
int busWidth = 8 * sizeof(datum);

switch (busWidth)
{
case 8: break;
case 16: addressMask >>= 1; break;
case 32: addressMask >>= 2; break;
case 64: addressMask >>= 3; break;
}

/*
* Write the default pattern at each of the power-of-two offsets.
*/

Anonymous    Mar 01, 2000
Printed
Page 69-72
All instances of

/*
* (Text)
*/

in the code were changed to:

/*(Text)*/

Anonymous    Mar 01, 2000
Printed
Page 69
2nd paragraph

The following was added to the end of the paragraph:

If the address bus test fails, the address at which the
first error was detected will be returned. Otherwise, this
function returns NULL to indicate success.

The code used to read:

datum *
memTestAddressBus(volatile datum * baseAddress, unsigned long nBytes)
{
unsigned long offset;
unsigned long testOffset;

datum pattern = 0xAA;

datum antipattern = 0x55;

/*
* Set the address mask that will be used as a stop condition.
*/
unsigned long addressMask = (nBytes - 1);
int busWidth = 8 * sizeof(datum);

switch (busWidth)
{
case 8: break;
case 16: addressMask >>= 1; break;
case 32: addressMask >>= 2; break;
case 64: addressMask >>= 3; break;
}

/*
* Write the default pattern at each of the power-of-two offsets.
*/

It now reads:

datum*
memTestAddressBus(volatile datum * baseAddress, unsigned long nBytes)
{
unsigned long addressMask = (nBytes - 1);
unsigned long offset;
unsigned long testOffset;

datum pattern = (datum) 0xAAAAAAAA;
datum antipattern = (datum) 0x55555555;

/*
* Write the default pattern at each of the power-of-two offsets.
*/

Anonymous    Jun 01, 2000
Printed
Page 69-72
All instances of

/*(Text)*/

in the code were changed back to:

/*
* (Text)
*/

as they were in the original printing.


NOTE that these changes undo some of the changes that were made in
the 3/00 reprint. Those previous changes broke the code, and are now
corrected.

Anonymous    Jun 01, 2000
Printed
Page 72
3rd Paragraph

The following sentence contains the following:
" ... DSPs from Texax Instruments ..."
It should read:
" ... DSPs from Texas Instruments ..."

Anonymous   
Printed
Page 141

The code used to read:

int (*func) () nodeFunctions[] = {processNodeA,...};

It now reads:

int (* nodeFunctions[])() = {processNodeA,...};

Anonymous    Mar 01, 2000
Printed
Page 144
3rd paragraph

Where the text read "(%f and %d)", it now reads "(%f and %g)".

Anonymous    May 01, 2001
Printed
Page 167

The URL for the CPU Info Center used to read:

(http://infopad.eecs.berkeley.edu/CIC/)

It now reads:

(http://bwrc.eecs.berkeley.edu/CIC/)

Anonymous    Mar 01, 2000