Page 218 - The Art of Designing Embedded Systems
P. 218
A Firmware Standards Manual 205
"/ram-name" is the name of the ROM the code pertains to. One
project may involve several microprocessors, each of which has
its own set of ROMs and code. Or a single project may have
multiple binary images, each of which goes into its own set of
ROMs.
Required directories:
/projects/project-name/tools--compilers. linkers, assemblers used
by this project. All tools will be checked into the VCS so in 5 to
10 years, when a change is required, the (now obsolete and un-
obtainable) tools will still be around. It’s impossible to recompile
and retest the project code every time a new version of the com-
piler or assembler comes out; the only alternative is to preserve
old versions, forever, in the VCS.
/projects/project-name/rom-name/headers-all header files, such
as .h or assemble include files, go here.
/projects/project-namehorn-name/source-source code. This may
be further broken down into header, C, and assembly directories.
The MAKE files are also stored here.
/projects/project-name/rom-name/object-object code, including
compiler/assembler objects and the linked and located binaries.
/projects/project-namehorn-namehest-This directory is the one,
and only one, that is not checked into the VCS and whose
subdirectory layout is entirely up to the individual programmer.
It contains work-in-progress, which is generally restricted to a
single module. When the module is released to the VCS or the
rest of the development team, the developer must clean out the
directory and eliminate any file that is duplicated in the VCS.
Version File
Each project will have a special module that provides firmware version
name, version date, and part number (typically the part number on the ROM
chips). This module will list, in order (with the newest changes at the top of
the file), all changes made from version to version of the released code.
Remember that the production or repair departments may have to sup-
port these products for years or decades. Documentation gets lost and ROM
labels may come adrift. To make it possible to correlate problems to ROM
versions, even after the version label is long gone, the version file should
generate only one bit of “code”-a string that indicates, in ASCII, the cur-
rent ROM version. Some day in the future a technician-or yourself!-may

