Errata

Programming Embedded Systems

Errata for Programming Embedded Systems, Second Edition

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 v
Dedication page

The new dedication should read:

This book is dedicated to
my beautiful and wonderful daughters, Katie and Ashley.
You mean everything to me. I love you.
--Anthony Massa

Anonymous   
Printed
Page xviii
Comments and Questions

the wrong web site is listed, it should be - http://www.oreilly.com/catalog/9780596009830/

Anonymous   
Page Chapter 2
"Initialize the hardware" section

In Chapter 2, under "Initialize the hardware" section below text is mentioned:

As per above text, address 0x00000000 belongs to flash memory on the Arcom board.
But in Chapter 2, under "Examine the Landscape" section below memory map has been mentioned.

As per above memory map, address 0x00000000 belongs to SDRAM on Arcom board.
The text mentions address 0x00000000 as flash memory but memory map mentions it as SDRAM memory. Both are not aligning with each other. Request you to provide resolution on this issue.

Note from the Author or Editor:
Thank you for your feedback. I looked into this and you are correct, this is confusing.

The memory map shown on page 32 is for the Arcom Target188EB hardware board, including the Figure 2-6 memory map. You can see this by checking the source code examples including from Chapter 5.

The Viper-Lite memory map is not the same, using the PXA255 process.

/**********************************************************************
*
* Filename: tgt188eb.h
*
* Description: Header file for Arcom's Target188EB hardware.
*
* Notes:
*
*
* Copyright (c) 1998 by Michael Barr. This software is placed into
* the public domain and may be used for any purpose. However, this
* notice must not be changed or removed and no warranty is either
* expressed or implied by its publication or distribution.
**********************************************************************/

#ifndef _TGT188EB_H
#define _TGT188EB_H


/**********************************************************************
*
* Memory Map
*
* Base Address Size Description
* -------------- ----- ------------------------------------
* 0000:0000h 128K SRAM
* 2000:0000h Unused
* 7000:0000h Zilog SCC Registers
* 7000:1000h Zilog SCC Interrupt Acknowledge
* 7000:2000h Unused
* C000:0000h 128K Flash
* E000:0000h 128K EPROM
*
**********************************************************************/

#define SRAM_BASE (void *) 0x00000000
#define SCC_BASE (void *) 0x70000000
#define SCC_INTACK (void *) 0x70001000
#define FLASH_BASE (void *) 0xC0000000
#define EPROM_BASE (void *) 0xE0000000

Anonymous  Mar 22, 2023 
Page 24
ist paragraph

Text syas "For example, in Figure 2.4, resistor R39 has a value of 680 ohm". In fact both resistors labelled as R39 in figure 2.4 have a value of 33 ohm (shown in diagram as 33R) - this is also probably an error, it is certainly unusual for a circuit diagram to show two resistors with the same identifier (unless the resistor is part of a pack, in which case the diagram would show which part of the pack is used).

Note from the Author or Editor:
Thank you for the feedback, Martin.

Best,
Anthony

Martin King  Jan 10, 2009 
Page 74
File transfer using minicom on Linux is not covered.

After:
(in minicom)
RedBoot> load -x modem

CTRL-A Z to get Minicom Command Summary.

Choose S to send files.

[Upload] Choose xmodem.

Use arrow keyes and space (possibly need to hit space twice) to navigate to blink.exe in your
directory structure. Select blink.exe and hit Enter. This begins the trasfer. If all goes well, you
see:

┌───────────[xmodem upload
- Press CTRL-C to
quit]────────────┐
|Retry 0: NAK on sector │
│Retry 0: NAK on sector │
│Bytes Sent: 3328 BPS:1259 │
│ │
│Transfer complete │
│ │
│ READY: press any key to continue... │
└─────────────&
#9472;─────────────&#
9472;─────────────
472;─────────────^
72;─────┘

And then, beneath:

RedBoot> load -m xmodem

which you had typed earlier, you'll see:

CEntry point: 0x00400180, address range: 0x00400000-0x004001d4
xyzModem - CRC mode, 28(SOH)/0(STX)/0(CAN) packets, 5 retries

PS: I'm using gcc-4.2.1

Note from the Author or Editor:
Thank you for the feedback.

Best,
Anthony

Anonymous   
Page 79
GDB Connection Problems

This is not an error, but a suggestion to include the suggestion to:

set remotebaud 115200

in GDB. It helped fix some unrecognized packet/connection timed out kind
of error I was having (but unfortunately now I am not able to reproduce the problem).

Note from the Author or Editor:
Thank you for the feedback.

Best,
Anthony

Anonymous   
Page 109-110
source code: memtestAddressBus

I believe the function memtestAddressBus() contains two misleading source code comments:

The code section labelled with "Check for address bits stuck high" does not only detect "stuck high" errors, but also detects "stuck low" errors (because both errors result in aliasing of a non-zero address with address 0).

The following section, labelled with "Check for address bits stuck low or shorted", cannot detect "stuck low" errors (because it does not check address 0), but instead only checks for "shorted address line" errors.

Note from the Author or Editor:
Thank you for the feedback, Christof.

Best,
Anthony

Christof Efkemann  Jun 24, 2014 
Page 127
"Bitfields" subsection

"Here’s how to test a wider field (such as two bits) using a bitfield:"
should be
"Here’s how to test a wider field (such as four bits) using a bitfield:"

Note from the Author or Editor:
Thank you for the feedback, Dmytro.

Best,
Anthony

Dmytro Vashkevych  Jul 11, 2020 
Page 161
Second line

Second line reads:

TIMER_STATUS = TIMER_0_MATCH;

There is no reference to register TIMER_STATUS on page 37 where others registers are defined. After reading many pages of this book, I found:

//resources.oreilly.com/examples/9780596009830/-/blob/master/chapter8/timer.c

which states correct line as:

TIMER_STATUS_REG = TIMER_0_MATCH;

So, when will you correct the error on page 161?

Note from the Author or Editor:
Colin,

Thanks for your feedback and finding the typo in the Programming Embedded Systems book. Not sure if it will be corrected.

Need to port the examples to a better (much, much cheaper) development board.

Thanks,
Anthony

Colin Gates  Feb 20, 2023 
Page 181
Figure 10-5, list item 6

I believe that list item 6 should read: "The operating system scheduler code exits.", not "...scheduler code exists."

Note from the Author or Editor:
Thank you for the feedback.

Best,
Anthony

Anonymous  Dec 13, 2013 
Page 265
3rd Paragraph

Today's (4-10-08) price for the VIPER-Lite Embedded Linux Development Kit is US$598.00 including discount. I was concerned the Arcom rep and I were not talking about the same product until I checked back on the review page for this book and saw an anonymous reviewer who was quoted full boat of $997.00.

May I suggest in the next printing you change "$295 (plus shipping)" to "40% discount".

Note from the Author or Editor:
Thank you for the feedback.

Definitely need to find a cheaper alternative and port the examples to a new board.

Best,
Anthony

Anonymous