Software Development Environment
Document Sample


Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 1 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
Intuitive Surgical, Inc.
Project: Da Vinci A4A5.x (IS1200IS2000)
Software Development Environment
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 2 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
Table of Contents
1. PURPOSE .......... ERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
2. SCOPE ................ ERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
3. REFERENCES .. ERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
4. OVERVIEW ...... ERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
5. TOOLS ............... ERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
5.1 COMMON TO ALL SOFTWARE DEVELOPMENTERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
5.2 MONITORING NETWORK SOFTWARE DEVELOPMENTERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
5.3 DSP SOFTWARE DEVELOPMENTERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
5.4 SYSTEM SUPERVISORY CONTROLLER SOFTWARE DEVELOPMENTERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
5.5 DAFD SOFTWARE DEVELOPMENTERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
6. SOFTWARE DEVELOPMENT ENVIRONMENT STRUCTUREERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
6.1 DA VINCI SOFTWARE STRUCTUREERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
6.2 PROJECT ENVIRONMENTSERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.1. PURPOSE 5
2. SCOPE ....................................................................................................................................................5
3. REFERENCES ...................................................................................................................................... 5
4. OVERVIEW .......................................................................................................................................... 6
5. TOOLS ...................................................................................................................................................7
5.1 COMMON TO ALL SOFTWARE DEVELOPMENT ......................................................................................7
5.2 MONITORING NETWORK SOFTWARE DEVELOPMENT ............................................................................ 7
5.3 DSP SOFTWARE DEVELOPMENT........................................................................................................... 9
5.4 LAPTOP SOFTWARE DEVELOPMENT.................................................................................................... 10
5.5 DAFD SOFTWARE DEVELOPMENT ..................................................................................................... 11
6. SOFTWARE DEVELOPMENT ENVIRONMENT STRUCTURE ...............................................12
6.1 DA VINCI SOFTWARE STRUCTURE ....................................................................................................... 12
6.2 PROJECT ENVIRONMENTS ...................................................................................................................13
6.2.1 Da Vinci Tools Environment ................................................................................................. 1516
6.2.2 Monitoring Network Project Environments ........................................................................... 1819
6.2.3 DSP Network Project Environment .......................................................................................2021
6.2.4 Laptop Project Environment ................................................................................................. 2223
6.2.5 Monitor DSP Project Environment .......................................................................................2526
6.2.6 Target Drive Environment ..................................................................................................... 2728
6.3 CONFIGURATION MANAGEMENT ..................................................................................................... 3132
6.3.1 Overview of Configuration Management ..............................................................................3132
6.3.2 Mnet Specific Configuration Management ............................................................................ 3132
6.3.3 DSPnet Specific Configuration Management ........................................................................ 3233
6.3.4 Laptop Specific Configuration Management ......................................................................... 3334
6.3.5 Monitor DSP Specific Configuration Management ...............................................................3436
7. PROJECT BUILDING ...................................................................................................................3537
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 3 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.1 MONITORING NETWORK PROJECT ENVIRONMENT BUILDS .............................................................3537
7.1.1 Overview ................................................................................................................................3537
7.1.2 Generalized Makefile Rules ................................................................................................... 3537
7.1.3 Major components of a node makefile ...................................................................................3638
7.1.3.1 Overview .......................................................................................................................................... 3638
7.1.3.2 Macros used by the generalized makefile ......................................................................................... 3739
7.1.3.3 Including the generalized makefile ................................................................................................... 3739
7.1.3.4 Macros specifying Compiler, Assembler, Linker, and PC-Lint flags ............................................... 3840
7.1.3.5 Macros specifying File list................................................................................................................ 3840
7.1.3.6 Specifying the main target ................................................................................................................ 3840
7.1.3.7 Specifying the object file dependencies ............................................................................................ 3840
7.1.4 Building a given node ............................................................................................................ 3941
7.2 DIGITAL SIGNAL PROCESSING NETWORK PROJECT ENVIRONMENT BUILDS .................................... 4042
7.2.1 Overview ................................................................................................................................4042
7.2.2 Generalized Makefile Rules ................................................................................................... 4042
7.2.3 Major components of a node makefile ...................................................................................4143
7.2.3.1 Overview .......................................................................................................................................... 4143
7.2.3.2 Macros used by the generalized makefile ......................................................................................... 4143
7.2.3.3 Including the generalized makefile ................................................................................................... 4143
7.2.3.4 Macros specifying Compiler, Assembler, Linker, and PC-Lint flags ............................................... 4345
7.2.3.5 Macros specifying File list................................................................................................................ 4345
7.2.3.6 Macros specifying special Files and corresponding set of Compiler Flags ...................................... 4345
7.2.3.7 Specifying the main target ................................................................................................................ 4446
7.2.3.8 Specifying the object file dependencies ............................................................................................ 4446
7.2.4 Building a given node ............................................................................................................ 4446
7.3 MONITOR DSP PROJECT ENVIRONMENT BUILDS............................................................................ 4547
7.3.1 Overview ................................................................................................................................4547
7.3.2 Generalized Makefile Rules ................................................................................................... 4547
7.3.3 Major components of a node makefile ...................................................................................4648
7.3.3.1 Overview .......................................................................................................................................... 4648
7.3.3.2 Macros used by the generalized makefile ......................................................................................... 4648
7.3.3.3 Including the generalized makefile ................................................................................................... 4648
7.3.3.4 Macros specifying Compiler, Assembler, Linker, and PC-Lint flags ............................................... 4749
7.3.3.5 Macros specifying File list................................................................................................................ 4749
7.3.3.6 Specifying the main target ................................................................................................................ 4749
7.3.3.7 Specifying the object file dependencies ............................................................................................ 4749
7.3.4 Building the Monitor DSP node ............................................................................................4850
7.4 LAPTOP PROJECT ENVIRONMENT BUILDS .......................................................................................4951
7.4.1 Overview ................................................................................................................................4951
7.4.2 Generalized Makefile Rules ................................................................................................... 4951
7.4.3 Major components of a node makefile ...................................................................................5052
7.4.3.1 Overview .......................................................................................................................................... 5052
7.4.3.2 Macros used by the generalized makefile ......................................................................................... 5153
7.4.3.3 Including the generalized makefile ................................................................................................... 5153
7.4.3.4 Macros specifying Compiler, Assembler, Linker, and PC-Lint flags ............................................... 5153
7.4.3.5 Macros specifying File list................................................................................................................ 5153
7.4.3.6 Macros specifying Alternate Library Files........................................................................................ 5254
7.4.3.7 Specifying the main target (MAIN_TARGET)................................................................................. 5355
7.4.3.8 Specifying the object file dependencies ............................................................................................ 5355
7.4.4 Building a given node ............................................................................................................ 5355
7.5 PROJECT RELEASE BUILDS AND OTHER AUXILIARY OPERATIONS ....................................................5456
7.5.1 Overview ................................................................................................................................5456
7.5.2 Generalized Makefile Rules ................................................................................................... 5456
7.5.2.1 Specifying path information ............................................................................................................. 5456
7.5.2.2 Defines.MAK, DEFS_EMBEDDED, DEFS_LOADER, and DEFS_LAPTOP ............................... 5557
7.5.2.3 Specifying Build Version number (xxx_BUILD_NUM macro) ....................................................... 5557
7.5.2.4 Specifying Software Release Version number (xxx_SWRLSE_VER macro) .................................. 5658
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 4 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.5.2.5 Verification of the Build and Software Release Version numbers ................................................... 5759
7.5.3 Functions performed by the Release Build ............................................................................ 5759
7.5.3.1 Building a software release ............................................................................................................... 5759
7.5.3.2 Other functions of the Release Build makefile ................................................................................. 6264
7.5.4 Major components of the Release Build makefile .................................................................. 6264
7.5.4.1 Overview .......................................................................................................................................... 6264
7.5.4.2 Specification of the Build and Release Revision INI Files ............................................................... 6264
7.5.4.3 Specification of the Shared Files ...................................................................................................... 6264
7.5.4.4 Specification of the Node makefiles ................................................................................................. 6466
7.5.4.5 Specification of Additional Directories for every node in a subsystem ............................................ 6567
7.5.4.6 Specification of Additional Directories and PVCS Logfiles for given nodes ................................... 6567
7.5.4.7 Specification of Directories and PVCS Logfiles to retrieve for Software Build ............................... 6567
7.5.4.8 Specification of the Target directories and corresponding Target files............................................. 6668
7.5.4.9 Specifying Version Numbers for individual nodes ........................................................................... 6870
7.5.4.10 Other Makefile Macros ................................................................................................................ 6871
7.5.5 Performing a Software Release .............................................................................................7072
7.5.6 Maintenance on the Release Build makefile .......................................................................... 7072
7.5.7 Other Functions of the Release Build makefile ..................................................................... 7173
7.5.7.1 Overview and use of explicit targets ................................................................................................. 7173
7.5.7.2 Building a directory tree for a given node ........................................................................................ 7173
7.5.7.3 Populating a set of Shared Directories from PVCS archives ............................................................ 7173
7.5.7.4 Building a list of PVCS archive filenames ....................................................................................... 7274
7.5.7.5 Applying a Version Number Label to PVCS archives...................................................................... 7274
7.5.7.6 Checking the nodes that utilize a given shared file ........................................................................... 7375
8. APPENDIX A: MNET MAKEFILE SAMPLE ........................................................................... 7476
9. APPENDIX B: DSPNET MAKEFILE SAMPLE ........................................................................ 7880
10. APPENDIX C: DAFD MAKEFILE SAMPLE ........................................................................ 8587
11. APPENDIX D: LAPTOP MAKEFILE SAMPLE .................................................................... 8789
12. APPENDIX E: RELEASE BUILD MAKEFILE ..................................................................... 8991
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 5 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
1. Purpose
This document describes the tools required for development of the Monitoring Network, the DSP Network,
and the Laptop application for the da Vinci project.
2. Scope
This document defines the software development environment, as a component of the da Vinci A5.x system
(IS1200). The previous version of this document (600001) should be used for the da Vinci A3.x systems
(IS1000).
3. References
1. Electronic Hardware Subsystem Architecture Specification, 813004-03
2. Operator Interface Specification, 813010-03
3. Mnet Software Architecture and Design Document, 813028-03
4. DSPnet Software Design Document, 813027-03
5. DAFD Firmware Design Document, 813035
6. Version Manager Configuration, 600005
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 6 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
4. Overview
Development of a software system involves the translation of specifications into executable software,
through a logical design and implementation process, with the following deliverables:
Finalized specifications: Since design is an iterative process, product and system specifications must be
updated during the design process. Updated requirement specifications are used to develop the Test
specifications that determine if the product meets its requirements in terms of performance, reliability,
safety, etc.
Design documentation: all the documents that describe HOW the system works, including architecture
and detailed design specifications, Hazard analysis (FTA and FMECA), development test reports,
prototype documentation, etc.
Software source code: properly documented source code files in assembly and/or higher level language
formats, ready for translation into executable code.
Software executables: in the form of executables for the windows environment, and in the form of
object files in an appropriate format for programming EPROMs and microcontroller PROMs in the
embedded environment.
Acceptance test results and report: Validation of the system through testing generates testing results
that are analyzed, and then summarized in an Validation Test Report. This VTR documents the
acceptability of the developed software product, as defined in the product specifications.
All deliverables from the development effort are processed according to a document control procedure, as
required by GMP regulations. A version control system (subversion) controls access to these documents
stored in a system design repository. A series of makefiles is used to perform program builds by preparing
software executables from the corresponding software source code modules.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 7 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
5. Tools
The following types of tools are required for development of da Vinci embedded software (refer to Figure Formatted: Font: Not Bold
1Figure 1):
5.1 Common to All Software Development
1. Version control software: The history of on-line documentation will be maintained with subversion
(SVN), a version control system software package. For complete information on SVN, please visit
http://subversion.tigris.org. A da_Vinci directory will be on the network, which contains the directory
structure listed in this document. Each developer will have a copy of this directory structure on his
local drive. The work directory for projects will point to the appropriate location in the overall
directory structure on the C: drive. This is where files will go for a given project when a checkout is
done. The directory structure on the network will be used to hold the most recent release of files for
the project.
2. COTS Libraries: Externally developed software libraries must be placed under revision control. If no
changes to such packages are made, certification of testing from the manufacturer may be obtained to
satisfy FDA/IEC requirements. Modification to the libraries requires that Intuitive Surgical re-establish
the acceptability of the modified software, either through regression testing or a re-validation of the
modified package.
3. Development Environment: To integrate the functionality of the version control, source code editing
and source code translation tools (assemblers, compilers, linkers), Premia’s CodeWright is utilized.
For program builds, Merant’s Configuration Builder (in conjunction with custom makefiles) is used.
Other development tools may be utilized on a project by project basis; exceptions will be noted in the
corresponding Software Development sections that follow. Gimpel Software’s PC-Lint is also used to
scrutinize C and C++ source code, in order to ferret out potential coding problems.
4. Custom Software Utilities: Custom utilities have been developed at Intuitive Surgical to facilitate the Formatted: Bullets and Numbering
software development process. These range from makefiles to PC based executable programs that are
either utilized by the makefiles (eg, the SetVer utility), employed for diagnostic or documentaiton
purposes (eg, the Error Parser utility), or used as part of the system deployment process (eg, Config
Loader). Appropriate unit testing has been performed to insure that these utilities function as intended.
5.2 Monitoring Network Software Development
1. COTS Libraries: Software functionality implemented with COTS libraries:
MNET network control: Cimetrics 9 bit network software libraries (Release 1.10 March 1983)
including some in-house developed modifications.
8051 Microcontroller task management and timing: FR51 - Keil RTX-51 real-time operating
system (Version 5.10a) Keil RTX-51 Tiny real-time operating system (Version 1.6)
Kadak’s AMX multi-tasking O/S Formatted: Bullets and Numbering
Kadak’s ethernet support
MetaWare High C/C++ PowerPC Toolset (including software emulation floating point)
3.2. 80C520 Family compiler, assembler, linker: Keil C cross compiler and assembler package (version Formatted: Bullets and Numbering
5.5). C source code may also be scrutinized with PC-Lint, by Gimpel Software, in order to isolate
potential coding problems.
4.3. PowerPC Family compiler, assembler, linker: The Power-PC cross compiler and assembler package
by Metaware (version 4.5). C source code may also be scrutinized with PC-Lint, by Gimpel Software,
in order to isolate potential coding problems.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 8 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
4. Metaware SeeCode Debugger: Metaware debug tool is used to develop and test the code Formatted: Bullets and Numbering
functionality
4.5. Rational Rose Realtime Professional Edition: A UML development tool used to specify the
embedded Supervisor (ver 6.4.87.0, build #2002.05.00.305.000)
5.6. Flash PROM considerations: Software executables that are not downloaded into embedded
processors over the UInet and USB port must be programmed into onboard microcontroller Flash
PROMs external EPROMs. A set of software “loader modules” has been developed to provide the
Flash PROM upgrade capability.
6.7. Ceibo DS-51 Emulator w/ 87C530 POD: An emulator will be used during development to simplify
monitoring and analysis of real time events. Includes Ceibo windows emulator interface tool (version
1.09N)
COTS Validation
Libraries Microcontroller/ Env ironme nt
Eprom
Programmer
Firmware Hex Files
Document System Design Programmed
s Repository Dev ices
Downloadable SW executables
Production
Hardw are
Ve rsion Acceptance
Control Test Test Setup/Results
Plans
Validation
Tests
Acceptance Test Report
Validation
Test
SW Analysis
Source Code Executables
& Sy mbols
Requirements
- Product specification Development
- System requirements Environment
Design Documentation CodeWright
- Hardw are Design
- Softw are Design
- Detailed Design Iteration Source Code FIles
- Hazards Analysis
Testing Plans SW Control
- Test Specifications Compiler / Prototype
Executables Emulator &
- etc. Linker & Sy mbols Results Hardw are
Figure 1: Monitoring Network Software Development Environment & Tools
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 9 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
5.3 DSP Software Development
1. COTS Libraries: Software functionality implemented with COTS libraries:
Analog Devices ADSP Sharc 21k Standard C Library (Version 4.11)
3.2. ADSP-210XX Family Visual DSP++ Development Software: Analog Devices family development Formatted: Bullets and Numbering
software (VDSP++ release 4.11) includes a C cross compiler (cc21k Version 6.0.9), an assembler
(easm21k, Version 2.1.2.0), a linker (Version 2.6.0.2), and a loader (elfloader, Version 4.1.3), which
are all used to develop the DSP code. Gimpel Software may also scrutinize C source code with PC-
Lint,, in order to ferret out potential coding problems.
4.3. ADSP-21060 Emulator: The Analog Devices Summit-ICE emulator is used during development to
test the algorithm code in the actual target system (the hardware development system)). The standard
emulator software enables any single SHARC to be monitored. The Analog Devices Visual DSP++
debugger enables multiple processors to be monitored simultaneously.
4. Flash PROM/Microcontroller considerations: Software executables that are not downloaded into
embedded processors over the UInet and USB port must be programmed into onboard microcontroller
Flash PROMs. A software “loader module” has been developed to provide the Flash PROM upgrade
capability.
COTS
Libraries
Document System Design
s Repository
Validation
Downloadable Env ironme nt
SW executables
Production
Hardware
Ve rsion Validation
Control Test Test Setup/Results
Plans
Validation
Tests
Validation Test Report
Validation
Test
SW Analysis
Source Code Executables
& Sy mbols
Requirements
- Product specification Development
- System requirements Environment
Design Documentation CodeWright
- Hardw are Design Simulator
- Softw are Design
- Detailed Design Iteration Source Code FIles
- Hazards Analysis
Testing Plans SW Control
- Test Specifications Compiler / Prototype
Executables Emulator &
- etc. Linker & Sy mbols Results Hardware
Figure 2: Sharc DSP Software Development Environment & Tools
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 10 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
5.4 Laptop Software Development
1. COTS Libraries: Software functionality implemented with COTS libraries:
MFC 6.0
LabWindows CVI 5.5
WIN2000 (5.00.2195)
2. Development Environment: To integrate the functionality of source code editing, source code
translation tools and debugging, Microsoft’s Visual C++ 6.0 or LabWindows CVI 5.5 is utilized.
COTS
Libraries Validation
Env ironme nt
Production
System Design SW executables Hardw are
Document
s Repository
Test Setup/Results
Validation
Test Validation
Plans Tests
Ve rsion
Control
VaildationTest Report
Validation
Test
Analysis
SW
Source Code Executables
& Sy mbols
Requirements
- Product specification Development
- System requirements Environment
Design Documentation Editor
- Hardw are Design
- Softw are Design
- Detailed Design Iteration Source Code FIles
- Hazards Analysis
Testing Plans SW
Compiler / IBM PC
- Test Specifications Executables
Linker Compatible
- etc. & Sy mbols
Figure 3: Laptop Software Development Environment & Tools
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 11 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
5.5 DAFD Software Development
1. COTS Libraries: No software functionality implemented with COTS libraries.
3.2. ADSP-21XX Family Assembler/Linker/System Builder: Analog Devices 21XX family development Formatted: Bullets and Numbering
software package, Visual DSP (version 6.0.2).
4.3. ADSP-21XX Simulator: The Analog Devices 21XX simulator (release 5.1) is used to develop and test
the code functionality which is independent of the MSD hardware, or for which the target hardware is
not yet available.
5.4. EPROM programmer: Software executables must be programmed into FLASH EEPROMs which
are then placed in sockets on each MSD board.
6.5. ADSP-21XX Emulator w/adapter: The Momentum Data Systems ADSP-218x family EZ-ICE
emulator (release 2.0.0.2) is used during development to test the algorithm code in the actual target
system.
COTS
Libraries Validation
EPROM Env ironme nt
Programmer
Firmware Hex Files
System Design
Documents
Repository Programmed Dev ices
Production
Hardw are
Ve rsion Validation
Control Test Test Setup/Results
Plans
Validation
Tests
Validation Test Report
Validation
Test
SW Analysis
Source Code Executables
& Sy mbols
Requirements
- Product specification Development
- System requirements Environment
Design Documentation CodeWright
- Hardw are Design Simulator
- Softw are Design
- Detailed Design Iteration Source Code FIles
- Hazards Analysis
Testing Plans SW Control
- Test Specifications Assembler / Prototype
Executables Emulator &
- etc. Linker & Sy mbols Results Hardw are
Figure 4: DAFD Software Development Environment & Tools
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 12 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
6. Software Development Environment Structure
6.1 da Vinci Software structure
The da Vinci product contains four major software components: the software controlling the DSP hardware,
the software for each of the nodes in the ISCnet, the software running on the DSPs on the MSD boards, and
the software running on the Laptop computer. Each of these components is managed as a single project,
with separate environments. Each environment defines an organization to the numerous files that comprise
the source code, documentation and executables for the project. Each of these projects is managed using
the Intersolv configuration management tools.
In the diagram below, it is important to note that a series of nodes are depicted for the Monitoring Network
project only. This set of nodes, subordinate to the Mnet project, is done to illustrate the manner in which
these components are segregated. Both the DSP and Laptop projects similarly contain individual nodes (at
present, the DAFD consists of a single node), but the diagram below was simplified for clarity.
Furthermore, some of the nodes may contain both an application and a loader. The loader is used to update
the Flash PROM which contains the corresponding application. Once again, in the diagram below, the RIA
node is depicted as having an App and Loader. Any node may be configured as such, but for the sake of
example, the RIA node was singled out to demonstrate this concept.
Product
(Da Vinci)
Project Project Project Project
DSP MNET Laptop DAFD
MDC IMC IOD PDC RIA MSD
Project Project Project Project Project Project
App Loader
Figure 5: Logical Project Structure
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 13 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
6.2 Project Environments
The software projects directory structure is embedded in the directory structure used by the software and
hardware groups. The structure is broken down by system boards. The top level is the “da Vinci” directory
named after the overall company project. This directory may include information stored by other
departments, therefore the hardware/software group directories are placed in a sub-directory titled “SYS”.
Below this are the board level directories.
The different directory structures shown in this document are all part of the same structure. For the sake of
illustration, some common sub-directories are only shown once, and some unique sub-directories are shown
on separate pages. Effectively, all of the directories can be “OR’ed” together to show the full picture.
The working sets of current directories for the project are located on in the SYS sub-directory
\\isifiles1\da_Vinci, which has been specified as Drive V on the company-wide networkrepository. Using
SVN via the command line or one of the GUI tools, one can populate a local directory tree or network
directory tree with a revision of the software. Typically, the trunk revision (ie, the most recently checked-in
version) of all files will be checked-out to an area on the user’s local hard drive. Having obtained the
current set of working files, one can perform a software build for the entire daVinci system, or for one or
more selected nodes.
There are several sub-directories that have special uses for the company project. The tools sub-directory of
\\isifiles1\da_Vinci, which has been specified as Drive V on the company-wide network contains files that
constitute the set of compilers,
There are several sub-directories that have special uses for the company project. The SYS\TOOLS and
SYS\shared sub-directories directory contains files that are utilized by several environments or by several
nodes for a given environment. An understanding of these sub-directories and how they are employed is
crucial to the comprehension of the software build process.
The SYS\toolS sub-directory is used to contain common tools used for the program build process. This
includes the C-compilers, Assemblers, Linkers, PC-Lint, and other sundry utilities (e.g., the hex file
conversion program, OH51). In order to insure that all components of the major environments use the same
version of these tools, this common set of sub-directories and associated files has been adopted for use.
The SYS\SHAREDshared sub-directory is used to contain common program files (developed at Intuitive
Surgical) that are used for more than one component of the major environments. In order to insure that the
same version of a given source file is used, this common set of sub-directories and files has been prepared.
A sample configuration is depicted below. Please be aware that thise diagram below is indicative of the
types of node directoriesfolders that appear in Tools, but it is not meant to be all-encompassing.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 14 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
daVinci
SYS
MSD
SCP
IOD
SCE
RIA
Board Level
Subdirectories
FPS
SHARED SRC
PPS
TVD _U
UIP
VSD _U
UIS
DOCS
VSD SCH
CPLD
TLN
DOCS
TD
SIM
LAPTOP
BRD
Note: Each node subdirectory, except
TOOLS
Tools, Shared, and Docs, has a set of
subsirectories as shown for the VDP
node, but have been omitted to reduce
the figure size.
Figure 6: daVinci System Environment Contents
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 15 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
6.2.1 Da Vinci Tools Environment
As mentioned previously, the Tools sub-directory contains the compilers, linkers, and other software
building tools that are used for creating executable files for the da Vinci project. There are multiple
subdirectories subordinate to the Tools sub-directory (SYS\TOOLS) that contain the various executables,
include files, library files, and parameter files that constitute the tools proper as shown in the following
figure. Once again, please be aware that the diagram below is indicative of the types of folders that appear
in Tools, but it is not meant to be all-encompassing.
SYS TOOLS
ADSP
ADI_DSP
LINT
ALEX
Shared
IDE
BATCH
UTILS
CIMETRIC
VC60
DK51
VDSPPP
WCI
Windows
Figure 7: daVinci System Tools Directory Structure
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 16 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
Within each of the Tools directories, additional subdirectories exist. This subdirectory structure is purely
arbitrary, and is usually dictated by the vendor who has supplied the compiler (or other tool) package. An
example of this subdirectory structure is shown in the following figure.
ADSP INCLUDE SY S
21K ETC
BIN
BIN
SY S
INC
ALEX 21K SH3000
LIB
BIN
ETC
Tools Subdirectory structure
FLASH
SH1000
INCLUDE
SH3000
WIN32LIB
BATCH
SERVER
ADI_DSP INCLUDE
21xx ETC
BIN
SY S
Figure 8: daVinci System Tools subdirectory structure example
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 17 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
The following table describes the major Tools and the Project Environment that utilizes these tools. Tools
that are designated as “Shared” are in fact utilized by any of the da Vinci projects.
Subdirectory Project
ADSP DSPNet
ADI_DSP DAFD
ALEX DSPNet
Batch Shared
Cimetric Mnet
Dk51 Mnet
hcppc Mnet
kadak Mnet
Lint Shared
Matlab Laptop
Measurement Laptop
Studio
SharedIDE Laptop
Utils Shared
VC60 Laptop
VDSPPP DSPNet
Windows Shared
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 18 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
6.2.2 Monitoring Network Project Environments
All of the projects involved in the development, qualification, and execution of the Mnet software are
contained within this category. The following describes a directory structure used to contain the projects
and files required by the Mnet.
Each Mnet node type (e.g. MSC, IMC, RIA, etc.), is a project. The directory for a given node falls under
the board level directory which the node is physically located on. (ISCnet and/or UInet node) node along
with a Shared subdirectory and a Tools subdirectory. Files specific to a particular ISCnet or UInet node will
be stored under that node’s subdirectory. Files that may be used by multiple Mnet nodes are stored under
the Shared subdirectory. Tools used for the development of the Mnet are stored in the Tools subdirectory.
Each node (ucontroller) sub-directory and shared ucontroller sub-directory is further divided into the
following subdirectories:
SRC Source code files (e.g. C and assembly source code and header files).
All files required to build the software for a particular ISCnet/UInet node reside here.
This includes source code files, make files, lint configuration files (if specific to a
particular executable or source code file), etc.
DOCS Design, implementation, test and validation documentation.
DAT Non-executable files of data necessary for the software to execute
OBJ Output from assemblers and compilers.
EXE Final output from linkers, locaters, etc. Files ready for execution or firmware
programming and Map files.
UTIL Auxiliary utility programs developed to assist in software development and testing.
TST Files related to software testing (e.g. test input data, etc.).
Once again, please be aware that the diagram below is indicative of the content of the Mnet subsystem, but
it is not meant to be all-encompassing.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 19 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
SW_DEV
SY S
DOCS SW_GRP MNET
MSD MSD_u
SRC
IOD IOD_u
DOCS
UIS_u UIS_u
DAT
RIA RIA_u
OBJ
IOP MDC_u
EXE
Board Lev el
Subdirectories IMC_u
showing Node Lev el
Subdirectories UTIL
UMC_u
TST
SJD SJD_u
Note: Each node subdirectory has
a set of sub-directories as shown
VSD VSD_u f or the MDC node, but they hav e
been omitted to reduce the f igure
size.
TVD_u
UIP UIP
FPS PDC_u
TOOLS
SLV_u
SHARED
MSTR_u
Figure 9: Mnet Environment Contents
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 20 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
6.2.3 DSP Network Project Environment
All of the files involved in the development, qualification, and execution of the DSPnet software are
contained within this project. The following describes a directory structure used to contain the project and
files required by the DSP network.
The four SHARCs are arranged in a Master/Slave configuration. One SHARC is the Master DSP, referred
to as the Control & Transform Processor. The remaining 7 SHARCs are the Slave DSPs, referred to as the
Compute Engines, all have identical application code downloaded to them. Therefore, the DSPnet software
is divided into two projects, one being the CTP project and the other being the CE project.
Since the da Vinci directory structure is divided according to hardware boards in the system, both of the
DSP projects are found under the same main directory, which is the SCE directory. The DSP directory will
contain the following directories: CTP, CE, Shared, and Docs. Files which are specific to either the CTP or
the CEs are stored under the specific subdirectory (i.e., the CTP or CE directory, respectively).
Common files are contained in a shared directory, either the DSPNet Shared sub-directory
(SCE\DSP\SHARED), or the Main Shared sub-directory (SYS\SHARED). The use of Shared directories is
as follows: files shared between the CTP and CE specifically are stored under the DSPNet Shared
subdirectory. Files which are common not only to the CTP and/or CE, but are also utilized by other
subsystems (such as the Laptop and/or Mnet), are stored on the main Shared directory (SYS\SHARED).
All documents specific to the DSPnet are stored under the Docs subdirectory.
The CTP, CE, and Shared subdirectories are further divided according to the following subdirectories:
SRC Source code files (e.g. C and assembly source code, and architectural files).
All files required to build the software for a particular CTP/CE node reside here. This
includes source code files, makefiles, lint configuration files (if specific to a particular
executable or source code file), etc., except for those files that appear in the INCLUDE
folder.
INCLUDE Header files for both C and Assembly Language programs
OBJ Output from assemblers and compilers.
EXE All output files from linkers, loaders, etc. (i.e. executable files, loader files, map files,
net files) which are executed on either the CTP or CE processor.
TST Files related to software testing (e.g. test input data, etc.).
The following subdirectories are used by the DSPNet, and are located subordinate to the main Tools
directory (SYS\TOOLS):
ADSP ADSP tools including the 21k DSP Library, 210xx Family Development Software,
21060 Simulator, 21060 Emulator (with Vista-ICE multi-emulator software)
LINT Gimpel PC-Lint software
The Docs subdirectory is further divided according to the following subdirectories:
DSGN Design and implementation documentation.
TST Test and validation documentation.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 21 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
Once again, please be aware that the diagram below is indicative of the content of the Mnet subsystem, but
it is not meant to be all-encompassing. Also, the CE project consists of three separate nodes: ECM, MTM,
and PSM (the Shared and Autogen files are “common” to all three nodes). Although it is not evident in the
diagram below, the MTM and PSM nodes contain the exact same sub-folder structure as the ECM node.
SYS SCP DSP
DSGN
DOCS
TST
SHARED SRC
CTP EXE
SRC
INCLUDE
Node Level
Subdirectories
OBJ
TST
CE ECM EXE
MTM OBJ
PSM SRC
Shared INCLUDE
AutoGen TST
Figure 10: DSPNet Environment Contents
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 22 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
6.2.4 Laptop Project Environment
All of the files involved in the development, qualification, and execution of the Laptop software are
contained within this category. There are five major subdirectories that comprise the Laptop software:
USBDLL, MEX, Apps, LoaderBuilder, and Shared. Files that are specific to either the Apps or Mex or
LoaderBuilder or USBDll are stored under the Apps, Mex, LdrBldr and USBDll subdirectories,
respectively. The Apps are highly dependant on the National Instruments Measurement Studio
environment. Furthermore, these major subdirectories contain additional subdirectories. For the Apps
folder, this includes a Shared subdirectory (which contains files common to two or more applications).
Common files are contained in a shared directory: the Laptop shared directory (Laptop\SHARED), or the
Main Shared sub-directory (SYS\SHARED). Files, which are common among two or more of the major
Laptop subsystems are stored in the Laptop specific Shared subdirectory. Files which are shared between
the Laptop, but are also utilized by other subsystems (such as the DSPNet and/or Mnet), are stored on the
main Shared directory (SYS\SHARED).
Compilers, Linkers, and other tools are stored on the System Tools directory (SYS\TOOLS). Laptop
targets (for ISA and PCI interfaces) are typically built with the Microsoft Visual C++ compiler and linker.
Even for the Laptop apps which use the Measurement Studio projects, Visual C++ is used to compile the
programs.
The Apps, MEX, USBDll, and LoaderBuilder interface subdirectories contain other directories. Each of
these directories (with the exception of the Shared directory) are used for building one or more given target
(i.e., a DLL or EXE file). The following figure provides a depiction of the projects that comprise the
Laptop.
SRC Source code files (e.g. C and assembly source code and header files).
All files required to build the software reside here. This includes source code files,
makesfiles, lint configuration files (if specific to a particular executable or source code
file), etc.
DOCS Design, implementation, test and validation documentation.
DAT Non-executable files of data necessary for the software to execute
OBJ Output from assemblers and compilers.
EXE Final output from linkers, locaters, etc. Files ready for execution or firmware
programming and Map files.
TST Files related to software testing (e.g. test input data, etc.).
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 23 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
SYS LAPTOP APPS
CONFIGURATION
DOWNLOAD
MAINTENANCE
STARTUP
SUPERVISOR
LIB
MEX
MEXUSBDLL
Several
EXE
DLL Files
MEXCFGLDR
SRC
Node Level
Subdirectories
OBJ
CfgBuilder
LDRBLDR
CfgLoader
USBDLL
SHARED
Figure 11: Laptop Environment Contents
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 24 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
The following describes a given directory structure used to contain the project and files required by the
Laptop. This set of sub-directories is typical for a given directory subordinate to the ISA or PCI directory.
SRC Source code files (e.g. C and assembly source code and header files). All files required
to build the software reside here. This includes source code files, makefiles, lint
configuration files (if specific to a particular executable or source code file), etc.
DOCS Design, implementation, test and validation documentation.
DAT Non-executable files of data necessary for the software to execute
OBJ Output from assemblers and compilers.
EXE Final output from linkers. Files ready for execution or debugging, including symbol
table and map files.
TST Files related to software testing (e.g. test input data, etc.).
SYS LAPTOP APPS
STARTUP
SRC
OBJ
EXE
TST
DAT
DOCS
Figure 12: Typical Directory Structure of daVinci Laptop Project Node
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 25 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
6.2.5 Monitor DSP Project Environment
All of the files involved in the development, qualification, and execution of the DAFD software are
contained within this project. The following describes a directory structure used to contain the project and
files required by the Monitor DSP (also known as the DAFD).
There is a single AD-2181DSP processor on the MSD board, therefore the software resides all in a single
project. Since the da Vinci directory structure is divided according to hardware boards in the system, this
project is found within the MSD directory structure. The DAFD directory contains the following
directories: Src, Obj, Tst, Exe, Tools, Docs. Finally, all documents specific to the DAFD are stored under
the Docs subdirectory.
SRC Source code files (e.g. assembly source code, header files, and architectural files). All
files required to build the software reside here. This includes source code files,
makefiles, lint configuration files, etc.
OBJ Output from assemblers.
EXE All output files from linkers, loaders, etc. (i.e. executable files, loader files, map files,
net files).
Docs Design, implementation, test and validation documentation.
DAT Non-executable files of data necessary for the software to execute.
UTIL Utility programs developed to assist in software development and testing.
TST Files related to software testing (e.g. test input data, etc.).
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 26 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
SY S
MSD DSP DAFD
SRC
EXE
Node Lev el OBJ
Subdirectories
Docs
DAT
UTIL
TST
Figure 13: Monitor DSP Environment Contents
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 27 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
6.2.6 Target Drive Environment
The purpose of Target Drive is to provide a central repository for the executable programs that result from
the Software Release procedure. This Target Drive is further segregated into subdirectories that are
indicative of the various executable files. The working sets of target drive directories for the project are
located on the DevAndTest sub-directory \\isifiles1\Dv_sw_rlse, which has been specified as Drive U on the
company-wide network.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 28 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
The following directories are used to contain the corresponding files created during the Software Release.
DATA Contains auxiliary data files used for the instrument (ie, calibration data, software
version data, etc).
EMBEDDED Contains the embedded software executables (ie, DSPNet,Mnet and DAFD executables)
LOADER Contains the software executables that are used for the various Embedded System
Loaders (ie, the files that are used to perform Flash PROM upgrades with new
Embedded System program files).
LAPTOP Contains the PC software executables (ie, Laptop executables, libraries and help files)
Within the DATA directory, the following directories are present
CfgData Contains a series of folders and files that are used for instrument configuration. Many
of these files are autogenerated from program source code or other files
DAFDData Contains version info and other data for DAFD
LanguageData Contains version information for the fonts in use
VSDData Contains calibration data, text data (in multiple languages) and other data used for the
instrument
Within the EMBEDDED directory, the following directories are present
Targets Contains the Mnet, DSPNet and DAFD executables (ie, EXE, HEX, S3 and ACH files)
Symbols Contains the corresponding symbols (as C #define macros) used for the given source
files
Release Contains the build and release version info files
Within the LOADER directory, the following directories are present
Targets Contains the Loader executables (ie, EXE and other related files)
Symbols Contains the corresponding symbols (as C #define macros) used for the given source
files
Release Contains the build and release version info files
Within the LAPTOP directory, the following files are present
RuntimeDLLs Contains the basic Laptop DLL files
Apps Contains the basic Laptop application files (ie, EXE and UIR files). This folder is
futher segregated, by having a sub-folder for each of the various applications.
Include Contains the Laptop library files (ie, LIB and associated INI files)
LdrBldr Contains the Config Loader and Config Builder utilities
Release Contains the build and release version info files
Targets Contains the CRC and version files for all executables
MexInterface Contains sub-folders for the Mex interface files
rs232dll
shared Contains shared source files for building the DLLs
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 29 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
udpdll
usbdll
virtualDaVinci
Within the Laptop\MexInterface directory, the following directories are present
CfgLdrDLL\exe Contains the Laptop Mex Configuration Loader DLL and Help Files in the respective
subdirectories (ie, DLL, INI and M files)
USBDLL\exe Contains the Laptop USB DLL and Help Files in the respective subdirectories (ie, DLL,
INI and M files)
DevAndTest
EMBEDDED
LAPTOP
DATA
LOADER
Figure 14: Target Drive Environment Overview
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 30 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
Because each of the major components described above contain additional folders, the directory tree can get
quite complex, and at first glance, it is a bit daunting. In the diagram below, there is a snapshot of part of
the directory structure that constitutes that targets from the build process. Again, this is not meant to be all-
encompassing, but rather, an indication of the complexity of the target drive contents.
DevAndTest
Release
EMBEDDED Targets
Symbols
MexInterface
LAPTOP
CfgLdrDll
EXE
Include
USBDll
Release
EXE
Apps
Configuration
Launch
Targets
... the list goes
on...
DATA
CfgData
DAFDData
... the list goes
on...
LOADER Release
Targets
Symbols
Figure 15: Target Drive Environment Contents
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 31 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
6.3 Configuration management
6.3.1 Overview of Configuration Management
Configuration management is performed using Intersolv’s Configuration Builder tool. Archive logfiles are
created which provide the means to retrieve the current revision of a given program file, as well as an
previous revision of the same file.
In order to maintain consistency within the project, the directory structure employed by the Configuration
Management is almost a mirror image of that used for the Software Development.
The working sets of current directories for the configuration management are located on the SYS sub-
directory of \\isifiles1\Pcvsarch\logs\da_Vinci, which has been specified as Drive W on the company-wide
network. The SYS subdirectory is further sub-divided into additional directories which reflect those on
Drive V. There is a one-to-one correspondence between the software development directories on Drive V
and those on Drive W. Similarly, there is an SA sub-directory of \\isifiles1\Pcvsarch\logs\da_Vinci, which
is used for the system analysis files. However, for the purpose of this document, the SA files will not be
considered as the information is in a constant state of flux, and the build processing no longer is contingent
upon these files.
Configuration management tools allow one to perform various operation on the logfiles, such as check-out
files, check-in files, lock or unlock files, report on previous logfile revisions, obtain previous file revisions,
tag version numbers, obtain files by version number, and a myriad of other operations. The Intersolv
Configuration Management documentation details these operations, and as such, this information is not
repeated here. The reader is expected to become familiar with the most common functions that one will use
in normal day to day operations.
6.3.2 Mnet Specific Configuration Management
The functionality of the Mnet will evolve through the life cycle of the da Vinci product. A version of the
Mnet (e.g. Mnet v2.1) consists of all the software required for each node of the ISCnet and each node of the
UInet. So, for example, Mnet version 2.1 may require RIA Version 2.3, SJD Version 1.0, UIS Version 4.2,
etc. Each of the node executables, in turn, is derived from a set of files (labeled “source code’, although
other executables, libraries, data files etc. are also included here), each with a particular revision number. A
hierarchy of configurations, from network down to source code, is created (refer to Figure 16: Mnet
ConfigurationsFigure 15: Mnet Configurations).
The configuration management tool must not only be able to manage the configuration of source code
revisions which make up a version of an executable, but also the configuration of executables that make up
the network configuration. It must be possible for a developer or auditor to select any node in this hierarchy,
and in response, be given by the CM tool, all the constituent files for that node in the hierarchy, whether
they be executables, or “source code”.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 32 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
Mnet
Network
Version x.y
RIA
Version a.b
MDC
Version c.d
MSD
Version e.f
IMC
Version g.h
... UIS
Version w.z
Mnet Node
Executables
Specific
revision of
Specific
revision of
Specific
revision of
Specific
revision of
... Specific
revision of
each file each file each file each file each file "Source Code"
required to required to required to required to required to
create an create an create an create an create an
RIA slave MDC slave MSD slave IMC slave UIS slave
node node node node node
Figure 1615: Mnet Configurations
6.3.3 DSPnet Specific Configuration Management
The DSP network software has a similar configuration management protocol as previously mentioned in the
Mnet description. The hierarchical configuration for the DSPnet project is shown in Figure 17: DSPNet
ConfigurationsFigure 16: DSPNet Configurations. As shown in the figure, a version of the DSPnet consists
of a specific CTP node executable and several CE node executables. Both the CTP and the set of CE
executables have a unique version number assigned to each. Also, both the CTP and various CE node
executables are created from their unique set of source code files which also each have their own specific
revision number.
DSP
Network
Version x.y
Node Executables
CTP
Version a.b
ECM
Version c.d ... PSM
Version e.f
Specific
revision of
each file
Specific
revision of
each file
... Specific
revision of
each file
"Source Code"
required to required to required to
create create create
CTP ECM PSM
Figure 1716: DSPNet Configurations
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 33 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
6.3.4 Laptop Specific Configuration Management
The Laptop files consist of a series of program files (DLL, EXE and LIB files) that are resident on a laptop
computer. There are various types of laptop files, ranging from the DLL to the so-called Mex Interface
files, to the Measurement Studio files, to Lib files , etc. While there are fundamental differences in the
types of files produced for each of the nodes, the one common factor is that they are all considered to be
laptop files, and therefore are built as a unit when the Laptop Build takes place. As shown in the figure, a
version of the Laptop consists of all of these nodes. All of these executables have a unique version number
assigned to each. Also, all of these executables are created from their unique set of source code files which
also each have their own specific revision number.
Laptop
Maint. App
Version a.b
... USB DLL
Version a.b
Executable
Specific
revision of
each file
... Specific
revision of
each file "Source Code"
required to required to
create create
SSC SSC
Figure 1817: Laptop Configurations
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 34 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
6.3.5 Monitor DSP Specific Configuration Management
The DAFD software has a similar configuration management protocol to the one previously mentioned in
the Mnet description. The hierarchical configuration for the DAFD project is shown in Figure 19: Monitor
DSP ConfigurationFigure 18: Monitor DSP Configuration. As shown in the figure, there is a single version
of the DAFD executable. The DAFD executable has a unique version number. The executable is created
from a unique set of source code files that also each have their own specific revision number.
DAFD
Executable
Version x.y
Specif ic
rev ision of
each f ile "Source Code"
required to
create the
DAFD
Figure 1918: Monitor DSP Configurations
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 35 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7. Project Building
Software development consists of program coding, building, testing, and release. This section addresses the
program building process and includes operational considerations, technical details, and maintenance
specifics. The reader is expected to be familiar with the directory structure and project environments
described in preceding sections.
Intersolv’s Configuration Builder is used for performing the program builds that convert the project source
code into the corresponding executable target. The Configuration Builder uses project makefiles that detail
the source files involved and the steps necessary to create the resultant target. The steps are prepared in
such a fashion as to process the source code via PC-Lint, the compiler or assembler, the linker, and any
auxiliary steps (such as the hex file converter).
The makefile for a given node is contained in the SRC sub-directory for that node. Since each node is
contained in a dedicated sub-directory, there is a unique makefile for each of the nodes. In keeping with the
convention that the node sub-directories are provided with unique names, the makefiles will also be
uniquely named. The extension for all makefiles is .MAK
7.1 Monitoring Network Project Environment Builds
7.1.1 Overview
Each Mnet node type is a separate project, and as such, there is an associated makefile for every node. The
makefile will typically have the same filename as the project sub-directory (e.g., the IOD makefile is named
IOD.MAK). The makefile contains information that is specific to the node being built. This information
must consist of the set of object files that are considered for the node, the set of dependencies for each of
these object files, and the name of the target .HEX file that is built.
7.1.2 Generalized Makefile Rules
Efforts have been made to consolidate the common rules for each of the Monitoring Network Projects into
one of two common makefiles, GEN_MNET.MAK, GEN_PPC.MAK (for the Power-PC nodes) or
GEN_8051.MAK, both of which reside on the SHARED\SRC directory.
The GEN_MNET.MAK, GEN_PPC.MAK and GEN_8051 files contain rules for compiling, assembling,
and linking. The GEN_MNET.MAK and GEN_8051.MAK use the Keil C-51 C-Compiler, Assembler,
Linker and Hex File Converter. The target file produced is a .HEX file, with an intermediate file that
contains no extension, but which is used as the input for the emulator/debugger.
The GEN_PPC.MAK file uses the Metaware Power-PC compiler and linker. Like the other Mnet nodes,
the target file produced is also a .HEX file.
The GEN_MNET.MAK, GEN_PPC.MAK and GEN_8051 files also contain rules to process the C-
programs using PC-Lint. If an error is detected during the PC-Lint, compile, assemble, or link process, then
the build is terminated so that the developer may correct any diagnostics.
The GEN_MNET.MAK, GEN_PPC.MAK and GEN_8051 files are also designed to utilize program files
from the SHARED directory and its associated sub-directories (i.e., common source or include files).
Under normal circumstances, no changes to the GEN_MNET.MAK, GEN_PPC.MAK and GEN_8051 files
are required. Fine-tuning can be performed using the DEFINES.MAK file, described below.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 36 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
In order to provide the means for drive and directory independence during the build process, a mechanism
has been provided to allow the developer to override the defaults that are automatically selected. These
defaults (in order of priority) are as follows:
BUILD_ROOT
C:\DA_VINCI\SYS (if currently on drive C) -or-
x:\SYS (where ‘x’ is current drive)
DEVELOP_ROOT
V:\SYS
If one wishes to override these default assignments, then the following steps are performed:
Create a file called DEFINES.MAK on the local SRC directory
Add a BUILD_ROOT macro set to the SYS directory on the local drive (e.g., D:\da_Vinci\Sys)
Add a DEVELOP_ROOT macro to the alternate directory (if any); note that this is only needed if
one wishes to use a directory structure other than the default on the company-wide network.
The DEFINES.MAK file is optional; if it is present, it will be used. If it is omitted, then the default
directory assignments are in effect. A sample DEFINES.MAK file appears below. This DEFINES.MAK
will have the following effect on the node that is being built (other macros that are specified will be
discussed later):
Set the drive and directory that is used for performing the build proper to drive E:
Set the drive and directory containing the Compilers, Linkers, and other tools to drive X:
Set other information that will be introduced at a later time in this document.
DEVELOP_ROOT=x:\testsys
BUILD_ROOT=e:\da_vinci\sys
SKIP_LINT_27183_DO_NOT_USE=Yes
Example 1: DEFINES.MAK for Mnet node makefile
7.1.3 Major components of a node makefile
7.1.3.1 Overview
As mentioned previously, each Mnet node contains a dedicated makefile that is used in conjunction with the
generalized-rules makefile (GEN_MNET.MAK). While there are differences in the node makefiles, they
do share a common structure and common components. This section will define those major sections, as
well as some generalized rules to node makefile maintenance.
The major sections of the node makefile subject to maintenance are:
Macros used by the generalized makefile
Macros specifying Compiler, Assembler, Linker, and PC-Lint flags
Macros specifying File list
Target file specification and dependencies
File list dependencies
It is important to note that the macro names that are defined in the node makefile are used by the
generalized makefile. Therefore, these macro names must conform to the names expected in the
generalized makefile. For reference, a sample node makefile (IOD) has been provided as an
attachment. Each of the components listed above are discussed in the following paragraphs
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 37 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.1.3.2 Macros used by the generalized makefile
The following macros must be defined for use by the generalized makefile. Citations to their use in the
sample makefile are provided.
Macro Name Line Description
Number(s)
PROJECT 61 This macro defines the project name. The project name is
used for certain files, most notably the local PC-Lint
options file.
MICRO_SPECIFIC 62 This macro specifies the sub-directory, subordinate to the
\SYS directory, where the source program files reside.
KNOWN_LINK_ N/A If this macro is defined (default condition is NOT
ERRORS defined), then Linker errors that are detected will be
permitted. The build will NOT terminate if an error is
detected, but a message will be generated instructing the
user to examine the Linker output to verify that expected
results have occurred. The linker cannot distinguish
warnings from errors encountered. To permit Linker
errors, code this macro as follows:
KNOWN_LINK_ERRORS=Yes
7.1.3.3 Including the generalized makefile
The generalized makefile exists on the \SHARED\SRC sub-directory and is named GEN_MNET.MAK (or
GEN_8051.MAK or GEN_PPC.MAK). This assignment can be changed via the GEN_MNET_MAK (or
GEN_8051_MAK or GEN_PPC_MAK) macro, which may appear in the environment or in the
DEFINES.MAK. Unless the general makefile is going to be modified, this macro should be undefined
(forcing the shared version in the network da_Vinci directory). To include an alternate generalized
makefile, this macro will contain the pathname. In the following example, the GEN_MNET.MAK file to
use is on the C:\Da_Vinci\sys\shared\src directory:
GEN_MNET_MAK = c:\da_vinci\sys\shared\src
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 38 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.1.3.4 Macros specifying Compiler, Assembler, Linker, and PC-Lint flags
The following macros specify the flags for the Compiler, Assembler, Linker, and PC-Lint. Citations to their
use in the sample makefile are provided.
Macro Name Line Description
Number(s)
A51FLAGS 82 This macro defines the flags used by the Keil 8051
Assembler.
CFLAGS 90 This macro defines the flags used by the Keil C Compiler.
LINKFLAGS 100 thru This macro defines the flags used by the Keil linker.
107
LINTDEFINES N/A Optional macro used to define additional PC-Lint
directives.
7.1.3.5 Macros specifying File list
The following macro is used to specify the list of files that are linked in producing the target. The sequence
of filenames specified is the sequence that the linker uses for producing the target file. This file list contains
filenames only (.OBJ files)
Macro Name Line Description
Number(s)
OBJS 116 thru This macro defines the object filenames that constitute the
134 target file
SRCLIST 140 This macro defines those source files that are compiled to
assembly language and then assembled to produce an
object file.
7.1.3.6 Specifying the main target
The main target is a hex-file and is produced from the object files. The target must be explicitly specified
by filename, via the MAIN_TARGET macro, and its dependencies must include the Object files and
Makefile. Additional dependencies may be specified if necessary. See line 66 in example provided in
appendix A for using the MAIN_TARGET macro, and line 170 for a sample of the dependency line
required. Note that the result of the link is a file with no extension of the same name as the main target.
This is the file that is used with emulators for development.
7.1.3.7 Specifying the object file dependencies
Many of the object file dependencies may be generated by the Scandeps utility provided by Intersolv. This
utility will insert the updated dependencies between the “#UPDATE#” (line 160) and “#ENDUPDATE#”
(line 189) comment lines in the makefile. As such, once setup for Scandeps is done, this list need not be
maintained by the developer. The only exception to this rule is the set of dependencies required for the
Assembler program files. Due to limitations of the Keil Assembler, the set of dependencies for these object
files must be defined explicitly as shown in lines 193 through 196 in the sample provided.
Scandeps is run from a batch file, which is present on the TOOLS\BATCH dirctory. DEPS.BAT requires a
single command line parameter, the makefile name (without the .MAK extension). This batch file will build
SCANLIST.TXT which contains the list of .C files for the project, and will then call ScanDeps proper to
update the project makefile. For example, to update the dependencies for the IOD.MAK file, located in
C:\da_Vinci\sys\iod\iod_u\src, DEPS would be called as follows:
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 39 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
C:\da_vinci\sys\iod\iod_u\src>v:\sys\tools\batch\deps iod
Dependencies for .a51 files must be entered by hand, since this list is used to generate an include file with
hard coded paths for the .a51 files. This is done due to a limitation in the assembler. You cannot specify a
list of directories for the assembler to search for include files.
7.1.4 Building a given node
To perform a build for a given Mnet node, the Configuration Builder is employed, using the makefile for
the node. Using CodeWright, or a DOS box, the build is invoked with the corresponding makefile specified
on the command line. For example, the IOD node (on drive C) is built as follows:
C:\da_vinci\sys\iod\iod_u\src>build iod.mak
The necessary object files are built (after running PC-Lint for the C/C++ programs), the linker is used to
create the debugger executable file, and the hex file converter is run to create the final target. If an error
occurs during the course of the build, the process is terminated.
The tools for this process are installed in their respective sub-directories under tools, as shown in the Mnet
directory structure. Environment variables are all declared in the makefile for the tools. These take
precedence over environment variables created when the tools are installed.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 40 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.2 Digital Signal Processing Network Project Environment Builds
7.2.1 Overview
Each DSPNet node type is a separate project, and as such, there is an associated makefile for every node.
The makefile will typically have the same filename as the project sub-directory (e.g., the CTP makefile is
named CTP.MAK). The makefile contains information that is specific to the node being built. This
information must consist of the set of object files that are considered for the node, the set of dependencies
for each of these object files, and the name of the target .LDR or .EXE file that is built.
7.2.2 Generalized Makefile Rules
Efforts have been made to consolidate the common rules for each of the DSP Network Projects into a
common makefile, GEN_SHARC.MAK, which resides on the SHARED\SRC directory.
The GEN_SHARC.MAK file contains rules for compiling, assembling, and linking using the Analog
Devices Sharc C-Compiler, Assembler, Linker and Loader. The target file produced is an .EXE and/or a
.LDR file.
The GEN_SHARC.MAK file also contains rules to process the C-programs using PC-Lint. If an error is
detected during the PC-Lint, compile, assemble, link, or load process, then the build is terminated so that
the developer may correct any diagnostics.
The GEN_SHARC.MAK file is also designed to utilize program files from the SHARED directory and its
associated sub-directories (i.e., common source or include files).
Under normal circumstances, no changes to the GEN_SHARC.MAK file are required. Fine-tuning can be
performed using the DEFINES.MAK file, described below.
In order to provide the means for drive and directory independence during the build process, a mechanism
has been provided to allow the developer to override the defaults that are automatically selected. These
defaults (in order of priority) are as follows:
BUILD_ROOT
C:\DA_VINCI\SYS (if currently on drive C) -or-
x:\SYS (where ‘x’ is current drive)
DEVELOP_ROOT
V:\SYS
If one wishes to override these default assignments, then the following steps are performed:
Create a file called DEFINES.MAK on the local SRC directory
Add a BUILD_ROOT macro set to the SYS directory on the local drive (e.g., D:\da_Vinci\Sys)
Add a DEVELOP_ROOT macro to the alternate directory (if any); note that this is only needed if
one wishes to use a directory structure other than the default on the company-wide network.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 41 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
The DEFINES.MAK file is optional; if it is present, it will be used. If it is omitted, then the default
directory assignments are in effect. A sample DEFINES.MAK file appears below. This DEFINES.MAK
will have the following effect on the node that is being built:
Set the drive and directory that is used for performing the build proper to drive D:
Set the drive and directory containing the Compilers, Linkers, and other tools to drive C:
DEVELOP_ROOT=c:\testsys
BUILD_ROOT=d:\da_vinci\sys
Example 2: DEFINES.MAK for DSPnet node makefile
7.2.3 Major components of a node makefile
7.2.3.1 Overview
As mentioned previously, each DSP node contains a dedicated makefile that is used in conjunction with the
generalized-rules makefile (GEN_SHARC.MAK). While there are differences in the node makefiles, they
do share a common structure and common components. This section will define those major sections, as
well as some generalized rules to node makefile maintenance.
The major sections of the node makefile subject to maintenance are:
Macros used by the generalized makefile
Macros specifying Compiler, Assembler, Linker, Loader, and PC-Lint flags
Macros specifying File list
Macros specifying exceptions to the set of Compiler Flags and corresponding Files
Target file specification and dependencies
File list dependencies
It is important to note that the macro names that are defined in the node makefile are used by the
generalized makefile. Therefore, these macro names must conform to the names expected in the
generalized makefile. For reference, a sample node makefile (CTP) has been provided as an
attachment. Each of the components listed above are discussed in the following paragraphs
7.2.3.2 Macros used by the generalized makefile
The following macros must be defined for use by the generalized makefile. Citations to their use in the
sample makefile are provided.
Macro Name Line Description
Number(s)
PROJECT 16 This macro defines the project name. The project name is
used for certain files, most notably the local PC-Lint
options file.
MICRO_SPECIFIC 18 This macro specifies the sub-directory, subordinate to the
\SYS directory, where the source program files reside.
7.2.3.3 Including the generalized makefile
The generalized makefile exists on the \SHARED\SRC sub-directory and is named GEN_SHARC.MAK.
This assignment can be changed via the GEN_SHARC_MAK macro, which may appear in the environment
or in the DEFINES.MAK. Unless the general makefile is going to be modified, this macro should be
undefined (forcing the shared version in the network da_Vinci directory). To include an alternate
generalized makefile, this macro will contain the pathname. In the following example, the
GEN_SHARC.MAK file to use is on the C:\Da_Vinci\sys\shared\src directory:
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 42 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
GEN_SHARC_MAK = c:\da_vinci\sys\shared\src
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 43 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.2.3.4 Macros specifying Compiler, Assembler, Linker, and PC-Lint flags
The following macros specify the flags for the Compiler, Assembler, Linker, and PC-Lint. Citations to their
use in the sample makefile are provided.
Macro Name Line Description
Number(s)
ASMOPTS 70 This macro defines the flags used by the Gnu Assembler.
CCOPTS 71 This macro defines the flags used by the Gnu C Compiler.
LDROPTS 69 This macro defines the flags used by the Gnu Loader
program
XFILES 209 This macro defines the flags used by the Gnu Linker.
This macro may be defined using other macros which
have previously been defined for this purpose.
LINTDEFINES N/A Optional macro used to define additional PC-Lint
directives.
7.2.3.5 Macros specifying File list
The following macro is used to specify the list of files that are linked in producing the target. The sequence
of filenames specified is the sequence that the linker uses for producing the target file. This file list contains
filenames only (.OBJ files)
Macro Name Line Description
Number(s)
OBJS 184 This macro defines the object filenames that constitute the
target file
SRCS 85 thru 104 This macro defines those source files that are compiled.
SCANDEPS_ 245 This macro defines those source files that are not
EXCEPTIONS considered when updating dependencies via the
ScanDeps batch file, DEPS.BAT
7.2.3.6 Macros specifying special Files and corresponding set of Compiler Flags
There may be a requirement that certain program files are compiled with additional compiler flags above
and beyond the base set of flags that are applied for the balance of the program files. A provision has been
made to specify up to 9 exceptions to the base set of flags, and to specify a set of corresponding program
files that utilize these flags. It is known that the CTP.MAK file utilizes this feature.
Macro Name Line Description
Number(s)
OPT1 145 This macro contains the set of alternate compiler flags
that are used as additions.
SRCS_WITH_OPT1 146 thru This macro specifies the set of filenames that must be
150 compiled with the additional compiler flags specified
above.
OPT2, OPT3, …, 154 thru These macros contain additional sets of alternate
OPT9 166 compiler flags, just as OPT1 was used above
SRCS_WITH_OPT2, 176 thru These macros specify the filenames that are used for
SRCS_WITH_OPT3, 181 OPT2 through OPT9.
…,
SRCS_WITH_OPT9
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 44 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.2.3.7 Specifying the main target
The main target is either a Loader file (.LDR) or an executable file (.EXE) and is produced from the object
files. The target must be explicitly specified by filename, and its dependencies must include the Object files
and Makefile. Additional dependencies may be specified if necessary. See line 148 in the example
provided in appendix A for a sample of this specification. Note that the result of the link is a file with no
extension of the same name as the main target. This is the file that is used with emulators for development.
7.2.3.8 Specifying the object file dependencies
Many of the object file dependencies may be generated by the Scandeps utility provided by Intersolv. This
utility will insert the updated dependencies between the “#UPDATE#” (line xxx) and “#ENDUPDATE#”
(line xxx) comment lines in the makefile. As such, once setup for Scandeps is done, this list need not be
maintained by the developer. The only exception to this rule is the set of dependencies required for the
Assembler program files. Due to limitations of the Keil Assembler, the set of dependencies for these object
files must be defined explicitly as shown in lines xxx through xxx in the sample provided.
Scandeps is run from a batch file, which is present on the TOOLS\BATCH dirctory. DEPS.BAT requires a
single command line parameter, the makefile name (without the .MAK extension). This batch file will build
SCANLIST.TXT which contains the list of .C files for the project, and will then call ScanDeps proper to
update the project makefile. For example, to update the dependencies for the CTP.MAK file, located in
C:\da_Vinci\sys\iod\iod_u\src, DEPS would be called as follows:
C:\da_vinci\sys\ scp\dsp\ctp\src>v:\sys\tools\batch\deps ctp
7.2.4 Building a given node
To perform a build for a given DSP node, the Configuration Builder is employed, using the makefile for the
node. Using CodeWright, or a DOS box, the build is invoked with the corresponding makefile specified on
the command line. For example, the CTP node (on drive C) is built as follows:
C:\da_vinci\sys\scp\dsp\ctp\src>build –f ctp.mak
The necessary object files are built (after running PC-Lint for the C/C++ programs), the linker is used to
create the debugger executable file, and the hex file converter is run to create the final target. If an error
occurs during the course of the build, the process is terminated.
The tools for this process are installed in their respective sub-directories under tools, as shown in the DSP
directory structure. Environment variables are all declared in the makefile for the tools. These take
precedence over environment variables created when the tools are installed.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 45 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.3 Monitor DSP Project Environment Builds
7.3.1 Overview
Each Monitor DSP node type is a separate project, and as such, there is an associated makefile for the node.
The makefile has the same filename as the project sub-directory, DAFD.MAK. The makefile contains
information that is specific to the DAFD node. This information must consist of the set of object files that
are considered for the node, the set of dependencies for each of these object files, and the name of the target
.S3 file that is built.
7.3.2 Generalized Makefile Rules
Efforts have been made to consolidate the common rules for MDSP Project into a common makefile,
GEN_DAFD.MAK, which resides on the SHARED\SRC directory.
The GEN_DAFD.MAK file contains rules for compiling, assembling, and linking using the Gnu C-
Compiler, 21xx Assembler, Linker and Loader. The target file produced is a .S3 file.
Under normal circumstances, no changes to the GEN_DAFD.MAK file are required. Fine-tuning can be
performed using the DEFINES.MAK file, described below.
In order to provide the means for drive and directory independence during the build process, a mechanism
has been provided to allow the developer to override the defaults that are automatically selected. These
defaults (in order of priority) are as follows:
BUILD_ROOT
C:\DA_VINCI\SYS (if currently on drive C) -or-
x:\SYS (where ‘x’ is current drive)
DEVELOP_ROOT
V:\SYS
If one wishes to override these default assignments, then the following steps are performed:
Create a file called DEFINES.MAK on the local SRC directory
Add a BUILD_ROOT macro set to the SYS directory on the local drive (e.g., D:\da_Vinci\Sys)
Add a DEVELOP_ROOT macro to the alternate directory (if any); note that this is only needed if
one wishes to use a directory structure other than the default on the company-wide network.
The DEFINES.MAK file is optional; if it is present, it will be used. If it is omitted, then the default
directory assignments are in effect. A sample DEFINES.MAK file appears below. This DEFINES.MAK
will have the following effect on the node that is being built:
Set the drive and directory that is used for performing the build proper to drive D:
Set the drive and directory containing the Compilers, Linkers, and other tools to drive C:
DEVELOP_ROOT=c:\testsys
BUILD_ROOT=d:\da_vinci\sys
Example 3: DEFINES.MAK for DAFD node makefile
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 46 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.3.3 Major components of a node makefile
7.3.3.1 Overview
As mentioned previously, the Monitor DSP node contains a dedicated makefile that is used in conjunction
with the generalized-rules makefile (GEN_DAFD.MAK). While there are differences between the Monitor
DSP makefile and node makefiles of the DSPnet, it does share a common structure and common
components. This section will define those major sections, as well as some generalized rules for node
makefile maintenance.
The major sections of the node makefile subject to maintenance are:
Macros used by the generalized makefile
Macros specifying Compiler, Assembler, Linker, Loader, and PC-Lint flags
Macros specifying File list
Macros specifying exceptions to the set of Compiler/Assembler Flags and corresponding Files
Target file specification and dependencies
File list dependencies
It is important to note that the macro names that are defined in the node makefile are used by the
generalized makefile. Therefore, these macro names must conform to the names expected in the
generalized makefile. For reference, a sample DAFD makefile has been provided in Appendix C.
Each of the components listed above are discussed in the following paragraphs
7.3.3.2 Macros used by the generalized makefile
The following macros must be defined for use by the generalized makefile. Citations to their use in the
sample makefile are provided.
Macro Name Line Description
Number(s)
PROJECT 27 This macro defines the project name. The project name is
used for certain files, most notably the local PC-Lint
options file.
SHARED_SRC This macro is used to define the alternate shared file
directory for the build
MICRO_SPECIFIC 29 This macro specifies the sub-directory, subordinate to the
\SYS directory, where the source program files reside.
7.3.3.3 Including the generalized makefile
The generalized makefile exists on the \SHARED\SRC sub-directory and is named GEN_DAFD.MAK.
This assignment can be changed via the GEN_DAFD_MAK macro, which may appear in the environment
or in the DEFINES.MAK. Unless the general makefile is going to be modified, this macro should be
undefined (forcing the shared version in the network da_Vinci directory). To include an alternate
generalized makefile, this macro will contain the pathname. In the following example, the
GEN_DAFD.MAK file to use is on the C:\Da_Vinci\sys\shared\src directory:
GEN_DAFD_MAK = c:\da_vinci\sys\shared\src
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 47 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.3.3.4 Macros specifying Compiler, Assembler, Linker, and PC-Lint flags
The following macros specify the flags for the Compiler, Assembler, Linker, and PC-Lint. Citations to their
use in the sample makefile are provided.
Macro Name Line Description
Number(s)
ASMOPTS 55 This macro defines the flags used by the Gnu Assembler.
CCOPTS 56 This macro defines the flags used by the Gnu C Compiler.
LDROPTS 54 This macro defines the flags used by the Gnu Loader
program
LINTDEFINES N/A Optional macro used to define additional PC-Lint
directives.
7.3.3.5 Macros specifying File list
The following macro is used to specify the list of files that are linked in producing the target. The sequence
of filenames specified is the sequence that the linker uses for producing the target file. This file list contains
filenames only (.DSP files).
Macro Name Line Description
Number(s)
SRCS 67 thru 76 This macro defines those source files that are compiled.
OBJS This macro defines the object filenames that constitute the
target file
SCANDEPS_ This macro defines those source files that are not
EXCEPTIONS considered when updating dependencies via the
ScanDeps batch file, DEPS_BAT
7.3.3.6 Specifying the main target
The main target is a S-record, executable file (.S3) and is produced from the object files. The target must
be explicitly specified by filename, and its dependencies must include the Object files and Makefile.
Additional dependencies may be specified if necessary. See lines 35 & 94 in the sample makefile provided
in appendix A for a sample of this specification. Note that the result of the link is a file with an extension of
.EXE of the same name as the main target. This is the file that is used with emulators for development.
7.3.3.7 Specifying the object file dependencies
Many of the object file dependencies may be generated by the Scandeps utility provided by Intersolv. This
utility will insert the updated dependencies between the “#UPDATE#” (line 104) and “#ENDUPDATE#”
(line 114) comment lines in the makefile. As such, once setup for Scandeps is done, this list need not be
maintained by the developer.
Scandeps is run from a batch file, which is present on the TOOLS\BATCH dirctory. DEPS.BAT requires a
single command line parameter, the makefile name (without the .MAK extension). This batch file will build
SCANLIST.TXT which contains the list of .C files for the project, and will then call ScanDeps proper to
update the project makefile. For example, to update the dependencies for the CTP.MAK file, located in
C:\da_Vinci\sys\iod\iod_u\src, DEPS would be called as follows:
C:\da_vinci\sys\msd\dsp\dafd\src>v:\sys\tools\batch\deps dafd
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 48 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.3.4 Building the Monitor DSP node
To perform a build for Monitor DSP node, the Configuration Builder is employed, using the makefile for
the node. Using CodeWright, or a DOS box, the build is invoked with the corresponding makefile specified
on the command line. The MDSP node (on drive C) is built as follows:
C:\da_vinci\sys\dsp\dafd\src>build –f dafd.mak
The necessary object files are built (after running PC-Lint for the C/C++ programs), the linker is used to
create the debugger executable file, and the .S3 final target file. If an error occurs during the course of the
build, the process is terminated.
The tools for this process are installed in their respective sub-directories under tools, as shown in the MDSP
directory structure. Environment variables are all declared in the makefile for the tools. These take
precedence over environment variables created when the tools are installed.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 49 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.4 Laptop Project Environment Builds
7.4.1 Overview
Each Laptop node type is a separate project, and as such, there is an associated makefile for every node.
The makefile will typically have the same filename as the project sub-directory (e.g., the DaVinciDLL
makefile is named DaVinci_A4.MAK). The makefile contains information that is specific to the node being
built. This information must consist of the set of object files that are considered for the node, the set of
dependencies for each of these object files, and the name of the target .DLL or .EXE file that is built.
7.4.2 Generalized Makefile Rules
Efforts have been made to consolidate the common rules for each of the Laptop Projects into a common
makefile, GEN_LAP.MAK, which resides on the SHARED\SRC directory.
The GEN_LAP.MAK file contains rules for compiling, assembling, and linking using the Gnu C-Compiler,
Assembler, Linker and Loader. The target file produced is an .EXE or a .DLL (and corresponding .LIB)
file.
The GEN_LAP.MAK file also contains rules to process the C or C++ programs using PC-Lint. If an error
is detected during the PC-Lint, compile, assemble, or link process, then the build is terminated so that the
developer may correct any diagnostics.
The GEN_LAP.MAK file is also designed to utilize program files from the SHARED directory and its
associated sub-directories (i.e., common source or include files).
Under normal circumstances, no changes to the GEN_LAP.MAK file are required. Fine-tuning can be
performed using the DEFINES.MAK file, described below.
In order to provide the means for drive and directory independence during the build process, a mechanism
has been provided to allow the developer to override the defaults that are automatically selected. These
defaults (in order of priority) are as follows:
BUILD_ROOT
C:\DA_VINCI\SYS (if currently on drive C) -or-
x:\SYS (where ‘x’ is current drive)
DEVELOP_ROOT
V:\SYS
If one wishes to override these default assignments, then the following steps are performed:
Create a file called DEFINES.MAK on the local SRC directory
Add a BUILD_ROOT macro set to the SYS directory on the local drive (e.g., D:\da_Vinci\Sys)
Add a DEVELOP_ROOT macro to the alternate directory (if any); note that this is only needed if
one wishes to use a directory structure other than the default on the company-wide network.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 50 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
The DEFINES.MAK file is optional; if it is present, it will be used. If it is omitted, then the default
directory assignments are in effect. A sample DEFINES.MAK file appears below. This DEFINES.MAK
will have the following effect on the node that is being built:
Set the drive and directory that is used for performing the build proper to drive E:
Set the drive and directory containing the Compilers, Linkers, and other tools to the default
(ie, drive V: is used)
BUILD_ROOT=E:\da_vinci\sys
Example 4: DEFINES.MAK for Laptop node makefile
7.4.3 Major components of a node makefile
7.4.3.1 Overview
As mentioned previously, each Laptop node contains a dedicated makefile that is used in conjunction with
the generalized-rules makefile (GEN_LAP.MAK). While there are differences in the node makefiles, they
do share a common structure and common components. This section will define those major sections, as
well as some generalized rules to node makefile maintenance.
The major sections of the node makefile subject to maintenance are:
Macros used by the generalized makefile
Macros specifying the alternate shared directory
Macros specifying Compiler, Assembler, Linker, and PC-Lint flags
Macros specifying alternate library files that are required
Macros specifying File list
Target file specification and dependencies
File list dependencies
It is important to note that the macro names that are defined in the node makefile are used by the
generalized makefile. Therefore, these macro names must conform to the names expected in the
generalized makefile. For reference, a sample node makefile (DownloadDLL) has been provided as
an attachment. Each of the components listed above are discussed in the following paragraphs
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 51 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.4.3.2 Macros used by the generalized makefile
The following macros must be defined for use by the generalized makefile. Citations to their use in the
sample makefile are provided.
Macro Name Line Description
Number(s)
PROJECT 13 This macro defines the project name. The project name is
used for certain files, most notably the local PC-Lint
options file.
EXE_DLL_VXD_ 15 This macro specifies the sub-directory, subordinate to the
ROOT \SYS directory, where the source, object, and executable
directories reside.
SHARED_SRC 16 This macro is used to define the alternate shared file
directory for the build.
MEX 18 If this macro is defined, then this node is identified as a
LabWindows interface module.
DEBUG N/A This macro is defined if debug information should be
compiled into the resultant OBJ files and target file.
7.4.3.3 Including the generalized makefile
The generalized makefile exists on the \SHARED\SRC sub-directory and is named GEN_LAP.MAK. This
assignment can be changed via the GEN_LAP_MAK macro, which may appear in the environment or in the
DEFINES.MAK. Unless the general makefile is going to be modified, this macro should be undefined
(forcing the shared version in the network da_Vinci directory). To include an alternate generalized
makefile, this macro will contain the pathname. In the following example, the GEN_LAP.MAK file to use
is on the C:\Da_Vinci\sys\shared\src directory:
GEN_LAP_MAK = c:\da_vinci\sys\shared\src
7.4.3.4 Macros specifying Compiler, Assembler, Linker, and PC-Lint flags
The following macros specify the flags for the Compiler, Assembler, Linker, and PC-Lint. Citations to their
use in the sample makefile are provided.
Macro Name Line Description
Number(s)
CFLAGS 27 This macro defines the flags used by the Microsoft Visual
C++ compiler
LIBFLAGS 28 This macro defines the flags used by the Microsoft
Librarian utility
LFLAGS 29 This macro defines the flags used by the Microsoft Linker
BFLAGS N/A This macro defines the flags used by the Microsoft BSC
Make utility (for creating debugger files). If this macro is
undefined, then the BSC Make utility is not invoked
LINTDEFINES 31 Optional macro used to define additional PC-Lint
directives.
7.4.3.5 Macros specifying File list
The following macro is used to specify the list of files that are linked in producing the target. The sequence
of filenames specified is the sequence that the linker uses for producing the target files. This file list
contains filenames only (.OBJ files)
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 52 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
Macro Name Line Description
Number(s)
SRCS 49 thru 60 This macro defines those source files that are compiled
produce a object files
DEFFILE N/A This macro defines the Definition file that is usd for
producing a DLL target. If no DEF file is required, then
this macro can be undefined (in the example, this macro
is undefined by commenting out the line)
OBJS 69 This macro defines the object filenames that constitute the
target file
SBRS N/A This macro defines the subroutine filenames that
constitute the BSC target file
BSC_TARGET N/A This macro defines the target file for the BSC file that is
produced for debugging.
RES_TARGET 66 This macro defines the Resource file that is generated (if
any) from the associated RC (Resource Compiler) file.
This macro may be omitted if not needed by the target
being built.
LIB_TARGET 65 This macro defines the library file that is generated (if
any). For DLL files, there is always a library file created
containing the same name as the target. The
LabWindows interface files use a dedicated name for the
library file due to the manner in which they are built.
SCANDEPS_ N/A This macro defines those source files that are not
EXCEPTIONS considered when updating dependencies via the
ScanDeps batch file, DEPS.BAT
ADDL_TOOLS_DIR N/A This macro defines additional source file paths that may
apply for building the node. For example, the CERTIFY
utility source code is linked into at least one DLL module
in order to provide the File CRC check that is required.
By specifying an additional pathname with this macro, the
current CERTIFY source program file can be used intact
for the DLL’s program build.
7.4.3.6 Macros specifying Alternate Library Files
The following macros are used to specify the set of alternate library files that are linked in producing the
target. The sequence of directories specified is the sequence that the linker uses for searching for the library
files proper. The sequence of library files in unimportant. This set of library files does NOT include library
files that are part of the Microsoft Visual C++ package.
Macro Name Line Description
Number(s)
ADDL_LIB_PATH 17 This macro specifies the sub-directory, subordinate to the
\SYS directory, where the alternate library files reside.
More than one directory may be specified, separated by
semi-colons.
LIBS 62 This macro specifies the list of alternate library filenames,
separated by blanks.
NODEFAULTLIBS 63 This macro specifies the list of library filenames that
should be specified as “non-defaults” for the Microsoft
Linker.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 53 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.4.3.7 Specifying the main target (MAIN_TARGET)
The main target is an EXE, DLL, or VXD file and is produced from the object files. The target must be
explicitly specified by filename, and its dependencies must include the Object files and Makefile.
Additional dependencies may be specified if necessary. See line 71 in the example provided in appendix C
for a sample of this specification. This is a LabWindows interface file which employs a scheme whereby
there are multiply DLLs built. In this case, there is a one-to-one correspondence between source files
provided and DLL files generated. Lines 77 through 82 are used to generate the necessary filenames and
dependencies.
For most DLL files that are build, a BSC file and a PDB are produced as a by-product of the link. These
files are used for debugging during the development phase and are considered non-production files.
7.4.3.8 Specifying the object file dependencies
Many of the object file dependencies may be generated by the Scandeps utility provided by Intersolv. This
utility will insert the updated dependencies between the “#UPDATE#” (line 98) and “#ENDUPDATE#”
(line 107) comment lines in the makefile. As such, once setup for Scandeps is done, this list need not be
maintained by the developer.
Scandeps is run from a batch file, which is present on the TOOLS\BATCH dirctory. DEPS.BAT requires a
single command line parameter, the makefile name (without the .MAK extension). This batch file will build
SCANLIST.TXT which contains the list of .C files for the project, and will then call ScanDeps proper to
update the project makefile. For example, to update the dependencies for the USBDLL.MAK file, located
in C:\da_Vinci\sys\ Laptop\USBDll\src, DEPS would be called as follows:
C:\da_vinci\sys\Laptop\USBDll\src>v:\sys\tools\batch\deps USBDll
Dependencies for .a51 files must be entered by hand, since this list is used to generate an include file with
hard coded paths for the .a51 files. This is done due to a limitation in the assembler. You cannot specify a
list of directories for the assembler to search for include files.
7.4.4 Building a given node
To perform a build for a given Laptop node, the Configuration Builder is employed, using the makefile for
the node. Using CodeWright, or a DOS box, the build is invoked with the corresponding makefile specified
on the command line. For example, the Maintenance App node (on drive C) is built as follows:
C:\da_vinci\sys\Laptop\apps\Maintenance\src>build MaintenanceApp.mak
The necessary object files are built (after running PC-Lint for the C/C++ programs), and the linker is used
to create the resultant DLL (or Executable) file, which is the final target. If an error occurs during the
course of the build, the process is terminated.
The tools for this process are installed in their respective sub-directories under tools. These take
precedence over environment variables created when the tools are installed.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 54 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.5 Project Release Builds and other auxiliary operations
7.5.1 Overview
While all the nodes for the Mnet, DSPNet, DAFD, and Laptop are segregated into separate directories with
dedicated makefiles, there is a project makefile, named DaVinci_A4.MAK, whose purpose is to perform a
Software Release by utilizing these various makefiles, in addition to performing other sundry tasks.
This makefile contains information that is necessary to build the various directory trees for the Mnet,
DSPNet, DAFD, and Laptop components, populate those directories from the PVCS archives, and perform
program builds by invoking the corresponding makefiles for each and every node. Finally, this release
build process will perform some post-processing steps to migrate files to a dedicated area on the company-
wide network.
The DaVinci_A4.MAK makefile contains information regarding the relative path locations for the various
Mnet, DSPNet, DAFD, and Laptop nodes, the corresponding makefile names, the resultant target files that
are to be copied, as well as directory and filename information for the Shared files. The following sections
will serve to detail the mechanics and fine-tuning that can be performed in producing a Software Release.
It should also be noted that the Release Build makefile, which is responsible for performing this Software
Release, can be used for other auxiliary functions. The functions that are performed, and the mechanics of
their operations are presented accordingly.
Beginning with the A4 release, the approach to the manner in which the Release Build has been performed,
changed significantly. Previously, the Release Build would build all software nodes whenever it was
invoked.
Presently, the Release Build has been designed to build a set of nodes based on the node’s classification as
an Embedded, Loader, or Laptop node. Obviously, all the Laptop nodes are considered part of the Laptop
Build. The Mnet, DSPNet, and DAFD nodes consist of nodes that are considered Embedded or Loader (at
present, the only DAFD node is an Embedded node, but future changes may result in a Loader node being
created). When a Release Build is performed, one and only one type of build is performed (Embedded,
Loader, or Laptop).
7.5.2 Generalized Makefile Rules
7.5.2.1 Specifying path information
In order to provide the means for drive and directory independence during the build process, a mechanism
has been provided to allow the developer to override the defaults that are automatically selected. These
defaults (in order of priority) are as follows:
BUILD_ROOT
C:\DA_VINCI\SYS (if currently on drive C) -or-
x:\SYS (where ‘x’ is current drive)
DEVELOP_ROOT
V:\SYS
TARGET_ROOT
U:\DevAndTest_A4
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 55 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.5.2.2 Defines.MAK, DEFS_EMBEDDED, DEFS_LOADER, and DEFS_LAPTOP
If one wishes to override these default assignments, then the following steps are performed. Note that this is
only needed if one wishes to use a directory other than the default specified above.
Create a file called DEFINES.MAK on the local SRC directory
Add a BUILD_ROOT macro set to the SYS directory on the local drive (e.g.,
D:\da_Vinci\Sys)
Add a DEVELOP_ROOT macro set to the alternate directory (if any).
Add a TARGET_ROOT macro set to the alternate directory for copying the set of target files.
The DEFINES.MAK file is optional; if it is present, it will be used. If it is omitted, then the default
directory assignments are in effect. A sample DEFINES.MAK file appears below. This DEFINES.MAK
will have the following effect on the Software Release (other macros that are specified will be discussed
later):
Set the Build Type to be an Embedded software build
Set the drive and directory containing the Compilers, Linkers, and other tools to drive F:
Set the drive and directory that is used for creating the individual node directory trees and
populating these directories from the PVCS archives to drive E:
Set the drive and directory to which the resultant targets are ultimately resident to drive D:
Set other information that will be introduced at a later time in this document.
BUILD_TYPE=Embedded
DEVELOP_ROOT=f:\da_vinci\sys
BUILD_ROOT=e:\da_vinci\sys
TARGET_ROOT=d:\da_vinci\release
SKIP_MNET_NODES=Yes
EMBEDDED_BUILD_NUM=A40.010
EMBEDDED_SWRLSE_VER=X1.$(EMBEDDED
_BUILD_NUM).020a
Example 5: DEFINES.MAK for Release Build makefile
There is another item of importance with respect to the DEFINES.MAK file: due to the number of macros
that have been specified in this file, a set of “included define” makefiles now exists. These files are
DEFS_EMBEDDED.MAK (for the Embedded Build), DEFS_LOADER.MAK (for the Loader Build), and
DEFS_LAPTOP.MAK (for the Laptop Build). By segregating these macros into one of these three
included defines files, the task of updating the items for a build is facilitated. In general, the node version
numbers (see Section 7.5.4.9 Specifying Version Numbers for individual nodes) are defined in these
included define files.
7.5.2.3 Specifying Build Version number (xxx_BUILD_NUM macro)
Another piece of information for the release build is the Build Version number. This field is a required
element which is used to identify the version that has been built by creating an SwBuild.INI file during the
post-processing phase. The version number is specified by the xxx_BUILD_NUM macro. This macro may
be defined on the command line for the build, in the DEFINES.MAK file, or as an environment variable.
This macro name is contingent upon the type of build being performed (Embedded, Loader, or Laptop).
For the Embedded software, the build version number is specified using the EMBEDDED_BUILD_NUM
macro. For the Loader software, the build version number is specified using the LOADER_BUILD_NUM
macro. And for the Laptop software, the build version number is specified using the
LAPTOP_BUILD_NUM macro.
Typically, the xxx_BUILD_NUM macro is specified on the command line, such as
EMBEDDED_BUILD_NUM=A40.010, but can be specified in the DEFINES.MAK file as shown in the
previous section.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 56 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
There is a specific format for the Build Version number: the version number must consist of two three-
character elements separated by periods (as shown in the example above). In addition, characters of the
Build Version number must correspond to the Software Release Version number specified (see 7.5.2.4
Specifying Software Release Version number on page 5657). The format of the Build Version number is
checked for validity and an error message is generated if the format is improper.
Finally, the Laptop build requires that the Embedded build version number be specified as well as the
Laptop build version number.
7.5.2.4 Specifying Software Release Version number (xxx_SWRLSE_VER macro)
Another piece of information for the release build is the Software Release Version number. This field is a
required element which is used to identify the Software Release Version that has been built by creating an
SwRlse.INI file during the post-processing phase. The version number is specified by the
xxx_SWRLSE_VER macro. This macro may be defined on the command line for the build, in the
DEFINES.MAK file, or as an environment variable.
This macro name is contingent upon the type of build being performed (Embedded, Loader, or Laptop).
For the Embedded software, the software release version number is specified using the
EMBEDDED_SWRLSE_VER macro. For the Loader software, the software release version number is
specified using the LOADER_SWRLSE_VER macro. And for the Laptop software, the software release
version number is specified using the LAPTOP_SWRLSE_VER macro.
Typically, the xxx_SWRLSE_VER macro is specified on the command line, such as
LOADER_SWRLSEVER=X1.D40.010, but can be specified in the DEFINES.MAK file as shown in the
previous section.
There is a specific format for the Software Release Version number. However, this format differs based
upon the build type that is being performed. The following table describes the format of the software
release version number for each of the three build types.
BUILD_TYPE xxx_SWRLSE_VER format Notes
Embedded AA.BBB.CCC.DDDD BBB.CCC is the same as the
Build version number
DDDD is a free-format string
of indeterminate length
Loader AA.BBB.CCC.DDDD BBB.CCC is the same as the
Build version number
DDDD is a free-format string
of indeterminate length
Laptop AA.BBB.CCC.DDD.EEEE BBB.CCC is the same as the
Build version number
EEEE is a free-format string of
indeterminate length
The Embedded Build Version
number must also be specified.
Table 1: Software Release Version Number guidelines
The format of the Software Release Version number is checked for validity and an error message is
generated if the format is improper.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 57 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.5.2.5 Verification of the Build and Software Release Version numbers
Specific elements Build Version number must correspond to specific elements of the Software Release
Version number as detailed in this section. Consider the following two version numbers:
LAPTOP_BUILD_NUM = A40.012
LAPTOP_SWRLSE_VER = X1.A40.012.003.024a
If the first character of each version number is designated as character one, then the following verification
tests are performed:
For the Build Version number (xxx_BUILD_NUM), periods must appear as character 4 .
For the Software Release Version number (xxx_SWRLSE_VER), periods must appear as
shown in Table 1 on page 5658.
For the Embedded and Loader builds, characters 1 thru 7 of the Build Version number must
equal characters 4 thru 10 of the Software Release Version number.
For the Laptop build, characters 5 thru 7 of the Build Version number must equal characters
12 thru 14 of the Software Release Version number and characters 1 thru 7 of the Build
Version number must equal characters 4 thru 10 of the Embedded Software Release Version
number.
If any of these tests fail, then the build is terminated and an error message is presented.
7.5.3 Functions performed by the Release Build
7.5.3.1 Building a software release
The Software Release is the primary function of the Release Build makefile. This release process is
designed to populate all source directories from the PVCS archives, build all program nodes, and then copy
designated target files to the release directory.
As discussed in previous sections, the release build will be performed for either the Embedded, Loader, or
Laptop components. Regardless of which release build is performed, there is a common set of operations
that occur.
A version number for the Release Build is required, as this version is used to create an INI file that has the
version information included (this INI file also has a CRC supplied, to avoid circumventing this automatic
process).
In order to provide a facility for rebuilding a previous version of software, version numbers for the
individual programs (ie, Mnet nodes, DSP nodes, DAFD nodes and Laptop nodes) can be provided. This is
an optional feature, and can be restricted to select nodes only (the balance of the nodes would be built using
the tip revision of the corresponding PVCS archives).
The following flowcharts describes the operations that are performed during the Release Build process:
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 58 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
Start Release Build
xxx_BUILD_NUM
No
macro defined?
Include
DEFINES.MAK if
present Yes
xxx_SWRLSE_VER
No
macro defined?
Check for OverRide of
the followiing macros:
BUILD_ROOT
DEVELOP_ROOT Yes
TARGET_ROOT
Build and
S/W Release
No
Version numbers
valid?
Setup paths for ATTRIB
and DELTREE Windows
utilities
Proceed with Display error
remainder of message for missing
Check for OverRide of
Release Build Version number
paths for Generic
Makefiles via macros:
GEN_MNET_MAK,
GEN_DSP_MAK , etc
End of build process Abort build process
Figure 2019: daVinci Release Build: High-Level processing logic
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 59 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
Remainder of Release
Build
Copy files from Node
Build System-wide directories to Target
Shared Directory directories using the
Tree(s) approrpriate macros
defined for this purpose
Get files and do
Node Builds for Update the Revision
those nodes that Information INI file with
comprise the Version number supplied
type of build
being performed
CERTIFY utility to
add CRC to INI file
Build Target
Directory Tree(s)
End of build process
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 60 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
Remainder of Release
Build
Build embedded
Build System-wide shared directory tree
laptop
Shared Directory and embedded
build
Tree shared files by build
version label
embedded or loader
Get files and do Node
Builds for those nodes
that comprise the type of
build being performed
Build type? laptop
Buik Target Directory
Tree (s)
embedded & loader
Create Copy all needed runtime
Copy output files from <buildtype>_Targets.txt symbols and auxiliary
Node directories to file that summarizes node files to "Release" target
Target directories using versions and CRCs folder
the appropriate macros
defined for this purpose
Check node symbol files
into PVCS and place a
Update the Build & build number version
Release revision label on them
information ini files with
the version number
supplied
(embedded only)
Label all shared archive
folders with the
embedded build version
label
CERTIFY utility to
add CRC to INI files
End of build process
Figure 2120: daVinci Release Build: Remainder of High-level processing logic
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 61 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
Building Mnet, DSP,
DAFD or Laptop nodes
Macro specified to
"skip" this set of
nodes?
No
Build node-specific
directory tree(s)
Version specified for
Yes No
this node? this path is not
used for a
controlled build
Specific version for
Get System and No
previous node?
Yes Subsystem-specific
Shared Files with
specified version
No
Yes
Build the node using Get "tip revision" of all
the node's makefiles Shared files
Last node for this
subsystem?
Yes
Done with this subsystem
Figure 2221: daVinci Release Build: Subsystem (Mnet, DSP, or Laptop) processing logic
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 62 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.5.3.2 Other functions of the Release Build makefile
As mentioned, performing a software release is the major function of the Release Build makefile. However,
in order to consolidate many of the path settings and PVCS archive information, there are several other
functions that may be performed via the Release Build makefile. These operations are performed through
the use of “explicit targets”. The following list briefly describes the most commonly used operations that
can be performed using the Release Build makefile via explicit targets:
Building a directory tree for a given node
Populating a shared directory tree (for System, Mnet, DSP, or Laptop shared files) from the
PVCS archives, using an optional version number.
Building a list of logfile names (using filename “wildcards”) that constitute the system or a
given node; this includes any shared files that the node may require
Applying a version number label to the PVCS archives for a set of nodes; this includes any
shared files that the node may require
These explicit targets and any auxiliary macro names that are required are discussed in greater detail later in
this document.
7.5.4 Major components of the Release Build makefile
7.5.4.1 Overview
The name of the Release Build makefile is DaVinci_A4.MAK. Please refer to Appendix D for a sample
DaVinci_A4.MAK. While this example is indicative of the production makefile, the evolution of the
Release Build makefile is dynamic, and changes can be expected. The purpose of the components
described in this section is to detail the macros that may need maintenance in the future if nodes, directories,
filetypes, etc. are added to, changed, or deleted from, the Release Build. One need not be concerned with
the balance of the Release Build makefile in order to perform maintenance on the items described in the
following sections.
7.5.4.2 Specification of the Build and Release Revision INI Files
The BUILD_REVISION_INI_FILE macro (line 231) is used to list the files that will have Build Version
included as a line item. One filename is required, but others may be specified. The directory location for
these files is specified by the BUILD_REVISION_INI_TARGET_DIR macro (line 230).
The RELEASE_REVISION_INI_FILE macro (line 235) is used to list the files that will have Build Version
included as a line item. One filename is required, but others may be specified. The directory location for
these files is specified by the RELEASE_REVISION_INI_TARGET_DIR macro (line 234).
7.5.4.3 Specification of the Shared Files
There are two categories of shared directories and files, referred to collectively as the Shared Files: One
group consists of the System Shared Files. The System Shared Files are those directories and files that are
used by more than one subsystem (i.e., used by a combination of Mnet, DSPNet, DAFD, or Laptop nodes).
The Mnet, DSPNet, DAFD, and Laptop Shared Files are those directories and files that are used by more
than one node within the given subsystem. The following macros are used to define the set of directories
and the set of corresponding file extensions that comprise the PVCS archives for these shared files.
Citations to their use in the Release Build makefile are provided.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 63 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
Macro Name Line Description
Number(s)
SYSTEM_SHARED_ 244 thru This macro defines the directory (or directories) that are
NODES 245 created as part of the System Shared Files
SYSTEM_SHARED_ 247 thru This macro defines the file extensions that are used for
SRC_ARCHIVES 257 retrieval of the PVCS archives for the System Shared files
MNET_SHARED_ 307 thru This macro defines the directory (or directories) that are
NODES 309 created as part of the Mnet Shared Files
MNET_SRC_ 313 thru This macro defines the file extensions that are used for
ARCHIVES 323 retrieval of the PVCS archives for the Mnet Source files.
Note that this pertains not only to Shared Files, but also to
source files for the nodes proper.
MNET_LOADER_ 383 This macro defines the directory (or directories) that are
SHARED_NODES created as part of the Mnet Loader Shared Files
MNET_LOADER_ 385 This macro defines the file extensions that are used for
SRC_ARCHIVES retrieval of the PVCS archives for the Mnet Loader Source
files. Note that this pertains not only to Shared Files, but
also to source files for the nodes proper.
DSP_SHARED_ 419 thru This macro defines the directory (or directories) that are
NODES 421 created as part of the DSPNet Shared Files
DSP_SRC_ 452 thru This macro defines the file extensions that are used for
ARCHIVES 457 retrieval of the PVCS archives for the DSPNet Source
files. Note that this pertains not only to Shared Files, but
also to source files for the nodes proper.
CTP_SHARED_ 423 thru This macro defines the directory (or directories) that are
NODES 425 created as part of the CTP type of DSPNet Shared Files
CE_SHARED_ 459 thru This macro defines the directory (or directories) that are
NODES 466 created as part of the CE type of DSPNet Shared Files
DSP_LOADER_ 518 thru This macro defines the directory (or directories) that are
SHARED_NODES 520 created as part of the DSPNet Shared Files
DSP_LOADER_ 522 This macro defines the file extensions that are used for
SRC_ARCHIVES retrieval of the PVCS archives for the DSPNet Source
files. Note that this pertains not only to Shared Files, but
also to source files for the nodes proper.
MDSP_SHARED_ 563 This macro defines the directory (or directories) that are
NODES created as part of the DAFD Shared Files
NOTE: Since DAFD does not really employ shared files,
this macro is simply included for compatability with the
other subsystems.
MDSP_SRC_ 582 thru This macro defines the file extensions that are used for
ARCHIVES 587 retrieval of the PVCS archives for the DAFD Source files.
Note that this pertains not only to Shared Files, but also to
source files for the nodes proper.
MDSP_LOADER_ 600 This macro defines the directory (or directories) that are
SHARED_NODES created as part of the DAFD Loader Shared Files
NOTE: Since DAFD does not have a loader at this time,
this macro is simply included for compatability with the
other “embedded” type of subsystems.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 64 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
Macro Name Line Description
Number(s)
LAPTOP_SHARED_ 621 thru This macro defines the directory (or directories) that are
NODES 623 created as part of the Laptop Shared Files
LAPTOP_SRC_ 706 thru This macro defines the file extensions that are used for
ARCHIVES 714 retrieval of the PVCS archives for the Laptop Source files.
Note that this pertains not only to Shared Files, but also to
source files for the nodes proper.
7.5.4.4 Specification of the Node makefiles
The node makefiles are used to perform the program builds for the corresponding nodes proper. These
node makefiles are specified as a full directory path (subordinate to BUILD_ROOT). In addition, the node
makefile names are important because this name is used to ascertain whether a version label has been
provided for the Release Build process (more on this later).
Care should be taken to insure that the node makefiles have unique names, even though the
directories may be unique. Duplicate makefile names will undermine some of the principles
employed by the Release Build makefile.
The following macros are used to define the set of directories and the set of corresponding filenames that
comprise the makefiles for the individual nodes. Citations to their use in the Release Build makefile are
provided.
Macro Name Line Description
Number(s)
MNET_NODES 312 thru This macro defines the directories and filenames for the
323 Mnet node makefiles
MNET_LOADER_ 389 thru This macro defines the directories and filenames for the
NODES 395 Mnet Loader node makefiles
DSP_NODES 427 thru This macro defines the directories and filenames for the
431 DSPNet node makefiles
DSP_LOADER_ 525 thru This macro defines the directories and filenames for the
NODES 526 DSPNet Loader node makefiles
LAPTOP_NODES 634 thru This macro defines the directories and filenames for the
644 Laptop node makefiles
MDSP_NODES 565 thru This macro defines the directories and filenames for the
566 MDSP node makefiles
MDSP_LOADER_ 604 This macro defines the directories and filenames for the
NODES MDSP Loader node makefiles
NOTE: Since DAFD does not have a loader at this time,
this macro is simply included for compatability with the
other “embedded” type of subsystems.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 65 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.5.4.5 Specification of Additional Directories for every node in a subsystem
As a by-product of creating the directory tree for the individual nodes, additional directories are created.
The following macros are used to define the set of additional directories that are created on a node-by-node
basis based on the particular subsystem to which the node belongs. Note that these are relative path names
from the node makefile paths. Citations to their use in the Release Build makefile are provided.
Macro Name Line Description
Number(s)
MNET_ADDITIONAL_ 346 thru This macro defines the additional directories for each
SUBDIRS 348 Mnet node.
DSP_ADDITIONAL_ 448 thru This macro defines the additional directories for each
SUBDIRS 450 DSPNet node.
LAPTOP_ADDITIONAL 702 thru This macro defines the additional directories for each
_ SUBDIRS 704 Laptop node.
MDSP_ADDITIONAL_ 578 thru This macro defines the additional directories for each
SUBDIRS 580 MDSP node.
7.5.4.6 Specification of Additional Directories and PVCS Logfiles for given nodes
There are instances where a given node may need to have an additional subdirectory created. A macro
may be specified, based on the node name, which will designate an additional subdirectory that will be
created for the node. In addition, the corresponding PVCS logfiles which are retrieved into this
subdirectory are specified based on a similar macro (derived from the node name). Note that these are
absolute path names from the BUILD_ROOT path. Citations to their use in the Release Build makefile are
provided.
Macro Name Line Description
Number(s)
XXX_OTHER_ 368 thru This macro defines the additional subdirectory for a given
ARCHIVE_ SUBDIR 369 node. The “XXX” is replaced with the node name (in the
example, the MSC node name is used).
XXX_OTHER_ 370 This macro defines the additional PVCS logfile names to
ARCHIVES be retrieved into the subdirectory for a given node. The
“XXX” is replaced with the node name (in the example,
the MSC node name is used).
For another instance where this feature is employed, refer to the section of the DaVinci_A4.mak beginning
on line 472 as the various nodes of the DSPNet all appear to use this facility.
7.5.4.7 Specification of Directories and PVCS Logfiles to retrieve for Software Build
There may be instances where additional subdirectories must be created in order to retrieve files from the
PVCS archives. The following macros are used to define the set of additional directories that are created,
and the corresponding PVCS Logfiles that are retrieved, on a node-by-node basis, based on the particular
subsystem to which the node belongs.
For example, each Laptop node may require that *.m_v files are retrieved into the ..\exe subdirectory. The
use of these macros provides for this capability. Note that the subdirectories are relative path names from
the node makefile paths.
Up to 10 such subdirectories and logfile names may be specified in this fashion on a subsystem-by-
subsystem basis. This feature is presently employed for the Laptop subsystem, and examples to their use in
the Release Build makefile are provided.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 66 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
Macro Name Line Description
Number(s)
MNET_OTHER_ N/A These macros defines the additional directories for each
ARCHIVE_ SUBDIR1 thru Mnet node which are created for the sole purpose of
MNET_OTHER_ populating the directory with files from the PVCS
ARCHIVE_ SUBDIR9 archives.
MNET_OTHER_ N/A These macros defines the corresponding PVCS logfile
ARCHIVES1 thru names for each of the Mnet subdirectories as specified
MNET_OTHER_ above. For example, MNET_OTHER_ARCHIVES1
ARCHIVES10 specifies the logfiles that are retrieved into the
MNET_OTHER_ ARCHIVE_SUBDIR1 subdirectory.
Similarly, MNET_OTHER_ARCHIVES2 would
specify the logfiles that are retrieved into the
MNET_OTHER_ ARCHIVE_SUBDIR2 subdirectory
and so on.
DSP_OTHER_ N/A These macros defines the additional directories for each
ARCHIVE_ SUBDIR1 thru DSPNet node which are created for the sole purpose of
DSP_OTHER_ populating the directory with files from the PVCS
ARCHIVE_ SUBDIR10 archives.
DSP_OTHER_ N/A These macros defines the corresponding PVCS logfile
ARCHIVES1 thru names for each of the DSPNet subdirectories as
DSP_OTHER_ specified above.
ARCHIVES10
LAPTOP_OTHER_ 721 thre These macros defines the additional directories for each
ARCHIVE_ SUBDIR1 thru 722 Laptop node which are created for the sole purpose of
LAPTOP_OTHER_ populating the directory with files from the PVCS
ARCHIVE_ SUBDIR10 archives.
LAPTOP_OTHER_ 724 thru These macros defines the corresponding PVCS logfile
ARCHIVES1 thru 726 names for each of the Laptop subdirectories as
LAPTOP_OTHER_ specified above.
ARCHIVES10
MDSP_OTHER_ N/A These macros defines the additional directories for each
ARCHIVE_ SUBDIR1 thru DAFD node which are created for the sole purpose of
MDSP_OTHER_ populating the directory with files from the PVCS
ARCHIVE_ SUBDIR10 archives.
MDSP_OTHER_ N/A These macros defines the corresponding PVCS logfile
ARCHIVES1 thru names for each of the DAFD subdirectories as specified
MDSP_OTHER_ above.
ARCHIVES10
7.5.4.8 Specification of the Target directories and corresponding Target files
Having performed the program builds for each of the nodes that comprise the system, the target files are
copied to directories subordinate to the TARGET_ROOT. There are several macros that are defined for the
purpose of identifying the target files to be copied and their corresponding destination directories. The
following macros are used, and citations to their use in the Release Build makefile are provided.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 67 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
Macro Name Line Description
Number(s)
MNET_TARGET_ 330 This macro defines the target directories for any Mnet
DIRECTORY target files.
MNET_TARGETS 333 thru This macro defines the Mnet target files (relative to
344 BUILD_ROOT) that are to be copied to the directory
referenced above.
MNET_LOADER_ 403 This macro defines the target directories for any Mnet
TARGET_ DIRECTORY Loader target files.
MNET_LOADER_ 406 thru This macro defines the Mnet Loader target files (relative
TARGETS 412 to BUILD_ROOT) that are to be copied to the directory
referenced above.
DSP_TARGET_ 438 This macro defines the target directories for any DSPNet
DIRECTORY target files.
DSP_TARGETS 441 thru This macro defines the DSPNet target files (relative to
445 BUILD_ROOT) that are to be copied to the directory
referenced above.
DSP_LOADER_ 552 This macro defines the target directories for any DSPNet
TARGET_ DIRECTORY Loader target files.
DSP_LOADER_ 555 thru This macro defines the DSPNet Loader target files
TARGETS 556 (relative to BUILD_ROOT) that are to be copied to the
directory referenced above.
LAPTOP_DLL_TARGET 660 This macro defines the target directories for any Laptop
_ DIRECTORY DLL files.
LAPTOP_DLL_TARGET 655 thru This macro defines the Laptop DLL target files (relative
S 658 to BUILD_ROOT) that are to be copied to the directory
referenced above.
LAPTOP_APP_NODES 663 thru This macro defines the various application nodes (in this
666 case these nodes refer to the folder names under
Laptop\Apps). This macro is used not only for building
the LAPTOP_APP_TARGET_DIRECTORIES macro
(see below), but it is also used when files are copied to
the respective target directories
LAPTOP_APP_TARGET_ 667 thru This macro defines the target directories for any Laptop
DIRECTORIES 670 Application files. In the makefile, a “loop” is used to
assign the various directory names
LAPTOP_APP_TARGET_ 655 thru This macro defines the Laptop Application target files
EXTENSIONS 658 (relative to BUILD_ROOT) by specifying the file
extensions that are to be copied.
LAPTOP_LIBRARY_ 675 This macro defines the target directories for any Laptop
DIRECTORY library target files.
LAPTOP_LIBRARYS 676 thru This macro defines the Laptop library target files
680 (relative to BUILD_ROOT) that are to be copied to the
directory referenced above.
LAPTOP_MEX_TARGET 693 thru This macro defines the target directories for any Laptop
_ DIRECTORIES 699 Mex Interface files. In the makefile, a “loop” is used to
assign the various directory names
LAPTOP_MEX_TARGET 683 and These macros specify the target directories for the
_ DIRECTORY1 thru 688 corresponding “Mex Interface” files. There may be up
LAPTOP_MEX_TARGET to 10 such target directories as segregation of the Mex
_ DIRECTORY10 Interface files is performed by design.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 68 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
Macro Name Line Description
Number(s)
Laptop_MEX_TARGETS1 684 thru These macros specify the corresponding Mex Interface
thru 691 (with target files for each of the like-numbered directories
Laptop_MEX_TARGETS1 “gaps”) specified above. The examples in the Release Build
0 makefile which are cited provide a vivid example of the
use of this and the preceding macros.
MDSP_TARGET_ 572 This macro defines the target directories for any DAFD
DIRECTORY target files.
MDSP_TARGETS 576 thru This macro defines the DAFD target files (relative to
576 BUILD_ROOT) that are to be copied to the directory
defined above.
MDSP_LOADER_ 612 This macro defines the target directories for any DAFD
TARGET_ DIRECTORY Loader target files.
MDSP_LOADER_ 614 This macro defines the DAFD Loader target files
TARGETS (relative to BUILD_ROOT) that are to be copied to the
directory referenced above.
7.5.4.9 Specifying Version Numbers for individual nodes
Under default circumstances, the “tip” revision is retrieved as directories are populated from the PVCS
archives. There are times when a specific version is required on a node-by-node basis. This version
number specification can be accomplished through the use of macros, whose name is related to the name of
the corresponding makefile for the node.
The macro name is formed by using the node’s makefile name (without the directory and extension
information) and appending “_VERSION_LABEL” to form a unique macro name. For example, referring
to line 152 in the Release Build makefile, MDC_VERSION_LABEL would be the macro name that would
be set to the version number required for building this node. This macro would be set in DEFINES.MAK
to the desired version number in the PVCS archives, as shown below:
MDC_VERSION_LABEL = A2.X3.01
Example 6: Sample Node-Specific Version Number specification
This macro specification will force the PVCS archives for the MDC node to be retrieved with the version
number of “MDC A2.X3.01”. This version number also applies to the System and Subsystem (in this case,
Mnet) shared files. Because each of the xxx_VERSION_LABEL macros is unique for each of the nodes
that are built, any number of different versions can be specified on a node-by-node basis.
This technique of node-specific version specification is also used for setting the version number labels as
described later in this document.
Finally, it is important to note that rather than define these version number macros in DEFINES.MAK,
convention dictates that the associated version number macros appear in the appropriate “included defines”
file.
7.5.4.10 Other Makefile Macros
There are other miscellaneous macros which are used to control the manner in which the Software Release
is performed. These macros are not specifically set in the Release Build makefile, but rather, are set in
DEFINES.MAK as a means of fine-tuning the build process. These macros are discussed here. Examples
will be provided as part of this presentation. These macros are all optional. If the macro is not specified,
then the resultant effect that this macro would perform is omitted, and the Software Release is performed
under the default conditions.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 69 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
Macro Name Settings Description
Outfile Filename This macro is used to redirect the output that is produced,
during the build process for each node, to the filename
specified. If this macro is specified, then a file with the
given filename is created on each node’s “makefile”
directory containing the results of the program build.
This way, error messages that may scroll off the screen
can be captured for review.
GEN_MNET_MAK Directory This macro is used to set the directory for the Generic
Mnet makefile to a different location other than the
default chosen by the Release Build. There are two type
GEN_8051_MAK Directory This macro is used to set the directory for the Generic
8051 makefile (for the Mnet nodes that use this
processor) to a different location other than the default
chosen by the Release Build.
GEN_PPC_MAK Directory This macro is used to set the directory for the Generic
Power-PC makefile (for the Mnet nodes that use this
processor) to a different location other than the default
chosen by the Release Build.
GEN_SHARC_MAK Directory This macro is used to set the directory for the Generic
DSPNet makefile to a different location other than the
default chosen by the Release Build.
GEN_LAP_MAK Directory This macro is used to set the directory for the Generic
Laptop makefile to a different location other than the
default chosen by the Release Build.
GEN_DAFD_MAK Directory This macro is used to set the directory for the Generic
MDSP makefile to a different location other than the
default chosen by the Release Build.
SKIPGET NO If this macro is defined, and not equal to “NO”, then no
files are retrieved from the PVCS archives whatsoever, as
YES
part of the Software Release.
SKIP_MNET_ NODES “Defined” If this macro is defined, then the Software Release will
not rebuild directories or targets for any Mnet nodes.
SKIP_DSP_ NODES “Defined” If this macro is defined, then the Software Release will
not rebuild directories or targets for any DSP nodes.
SKIP_LAPTOP_ “Defined” If this macro is defined, then the Software Release will
NODES not rebuild directories or targets for any Laptop nodes.
SKIP_MDSP_NODES “Defined” If this macro is defined, then the Software Release will
not rebuild directories or targets for any Laptop nodes.
SKIP_LINT_27183_ “Defined” If this macro is defined, then PC-Lint is not run
DO_NOT_USE whatsoever, for any C or C++ program file.
DEBUG_MAKEFILE Command line This macro may be set to additional command line
Parameters for parameters for the Intersolv Configuration Builder. For
Configuration Builder example, “-p” is used to print the results of macro settings
as part of the output produced by the BUILD program.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 70 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.5.5 Performing a Software Release
In order to perform a Software Release, the following prerequisites must be performed:
The DaVinci_A4.MAK file must be resident on the appropriate directory in which the build is
to take place.
The BUILD_ROOT must be defined, either in the DOS environment, or in the
DEFINES.MAK file.
The “build” version and software release version numbers, that are applied, must be known.
The build type (Embedded, Loader, or Laptop) must be specified
Any other macros and/or options that must be set should be incorporated into the
DEFINES.MAK file.
The build is then performed using the DaVinci_A4.MAK; for example, to build Version 01.A2.X1.03, the
following command-line could be used:
C:\da_vinci\sys\>build VER=01.A2.X1.03 DaVinci_A4.mak
Some detailed examples are provided in the Da Vinci Software Development Operations Document.
7.5.6 Maintenance on the Release Build makefile
The Release Build makefile is designed to be maintained without having intimate knowledge on the
specifics of makefile development. The goal is to allow nodes and directories to be easily added, changed,
or deleted with minimal effort. The following guidelines are provided as specifics for performing makefile
maintenance. As a general rule, the makefile will typically undergo changes to add a given node. Hence,
the information presented in the following list pertains to adding a node. Similar actions would pertain to
changing a node’s name, or removing a node.
If a new shared directory is being added, then update the MNET_SHARED_NODES,
MNET_LOADER_SHARED_NODES, DSP_SHARED_NODES,
DSP_LOADER_SHARED_NODES, MDSP_SHARED_NODES, ,
MDSP_LOADER_SHARED_NODES, or LAPTOP_SHARED_NODES macro.
If a new type of source file is being added, then update the
SYSTEM_SHARED_SRC_ARCHIVES, MNET_SRC_ARCHIVES,
MNET_LOADER_SRC_ARCHIVES, DSP_SRC_ARCHIVES,
DSP_LOADER_SRC_ARCHIVES, MDSP_SRC_ARCHIVES,
MDSP_LOADER_SRC_ARCHIVES, or LAPTOP_SRC_ARCHIVES macro.
If a node is being added, what subsystem does the node belong to? Modify the
MNET_NODES, MNET_LOADER_NODES, DSP_NODES, DSP_LOADER_NODES,
MDSP_NODES, MDSP_LOADER_NODES, LAPTOP_NODES and MNET_TARGETS,
DSP_TARGETS, MDSP_TARGETS, LAPTOP_TARGETS macros respectively.
If the node is an Laptop item, then the LAPTOP_LIBRARYS macro may also need to be
updated.
If the node is an Laptop “Mex Interface” item, then new
LAPTOP_MEX_TARGET_DIRECTORYx and LAPTOP_MEX_TARGETSx macros may
need to be defined.
If there are special non-source files that are required for the build, then
XXX_OTHER_ARCHIVE_SUBDIR and XXX_OTHER_ARCHIVES macros may be
required.
These items listed above are provided as a guideline. In some cases, the changes to the Release Build
makefile may address some more fundamental changes, such as the inclusion of a new type of file that
would require adding/changing the MNET_OTHER_ARCHIVE_SUBDIR1 (thru SUBDIR10),
DSP_OTHER_ARCHIVE_SUBDIR1 (thru SUBDIR10) and LAPTOP_OTHER_ARCHIVE_SUBDIR1
(thru SUBDIR10) and corresponding MNET/DSP/LAPTOP_OTHER_ARCHIVES1 (thru ARCHIVES10)
macros. Of course, each case must be carefully scrutinized when modifying the Release Build makefile.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 71 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.5.7 Other Functions of the Release Build makefile
7.5.7.1 Overview and use of explicit targets
The Release Build makefile can be used to perform other auxiliary functions as they related to the system as
a whole. The advantage in placing this burden of responsibility on the makefile is that the makefile
becomes the one central location where common maintenance items (such as adding, changing, or deleting
nodes, PVCS archive types, shared directories, etc.) are performed. This alleviates the need to have this
maintenance information spread among several files, and alleviates the need to have a multi-step procedure
for an otherwise simple update.
Explicit Targets are target names specified for the build process, which serve the function of performing a
sequence of operations that deviate from the Software Release process. An explicit target is specified by
listing it as a parameter on the command line. For example, to specify an explicit target designed to build
the list of PVCS archive filenames (target name of build_logfile_list), the following command-line could
be used:
C:\da_vinci\sys\>build DaVinci_A4.MAK build_logfile_list
The explicit targets, their corresponding functions, and any parameters or other macros required, are
detailed in the following sections. Note that the macros which are used to supply further information for the
these explicit target operations can be specified in the DOS environment or in the DEFINES.MAK file.
7.5.7.2 Building a directory tree for a given node
The path for a node can be built by the Release Build makefile using the build_dir_tree explicit target.
This target requires that the DIR macro be set to the appropriate path name, subordinate to the
BUILD_ROOT. All intermediate directories are created in order to create the named directory. For
example, to build the directory tree for the UIMC node (see line 155), DIR is set as follows:
DIR = vsd\umc_u\src
Example 7: Sample Directory specification for build_dir_tree target
7.5.7.3 Populating a set of Shared Directories from PVCS archives
All the shared files for a given node may be retrieved from the PVCS archives using one of the following
explicit targets, depending on the subsystem:
get_system_shared_dir for System shared files only
get_mnet_shared_dir for Mnet shared files only
get_dsp_shared_dir for DSPNet shared files only
get_Laptop_shared_dir for Laptop shared files only
get_mdsp_shared_dir for MDSP shared files only
If a particular version is required for PVCS logfile retrieval, then the GETFLAGS macro must be set to
reflect the version information required, as well as any other options that may be required, as shown in the
following:
GETFLAGS = -n -v”BUILD 02.A2.X1.04”
Example 8: Sample GETFLAGS specification for get_mnet_shared_dir target
In this example, the “answer No to queries” option (“N”) and the Version number of BUILD 02.A2.X1.04
(“V” option) have been specified in preparation for performing the get_XXX_shared_dir operation.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 72 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.5.7.4 Building a list of PVCS archive filenames
In order to apply PVCS commands to a list of files for a given node, or to all the system files, the
build_logfile_list explicit target may be used. This operation will simply generate a list of filenames, using
wildcards, and output the list to a file named FILELIST.TXT, suitable for use by many of the PVCS
commands. For example, if a Logfile List (using the VLOG utility) is desired for the VSDDLL node (see
line 275), then this explicit target may be used to generate FILELIST.TXT, which can be used, in turn, as
an option for the Vlog utility as follows:
C:\da_vinci\sys\>vlog @filelist.txt
The default condition for the build_logfile_list explicit target is to generate a list of filenames for the entire
project. To specify a single node, use the NODE_LOGFILE macro to specify the node name. The CTP
node is specified in the following example:
NODE_LOGFILE = CTP
Example 9: Sample NODE_LOGFILE specification for build_logfile_list target
7.5.7.5 Applying a Version Number Label to PVCS archives
In order to appy a PVCS version number to a set of logfiles, the set_logfile_versions explicit target is used.
This operation is used in conjunction with the xxx_VERSION_LABEL macros (see Specifying Version
Numbers for individual nodes on page 6869) to determine the nodes and the corresponding version numbers
that are to be assigned. All shared files that may be used for the specified nodes will likewise be labeled
(i.e., if an Mnet node is specified, the System and Mnet shared files have the version number assigned, as
well as the node-specific files). Any number of xxx_VERSION_LABEL macros may be specified in order
to effect a label on several sets of files with a single build. The xxx_VERSION_LABEL macros should be
placed in DEFINES.MAK for ease of operation. The following example demonstrates this principle:
CTP_VERSION_LABEL=A3.X3.01
IOD_VERSION_LABEL=A2.X1.00
USBDLL_VERSION_LABEL=B2.X1.02
Example 10: xxx_VERSION_LABEL macros for set_logfile_versions target
There is another macro used in conjunction with the set_logfile_versions explicit target, the
xxx_SOURCE_VERSION_LABEL macro. This macro is used for the PVCS “branching” feature. The
PVCS documentation provides information on the branching operation, but in essence, the principle is as
follows: one or more development paths from a common base may occur. This is referred to as branching.
In order to allow PVCS to maintain segregate “branches” from a base file, the existing version number must
be specified when creating a new version number. For each xxx_SOURCE_VERSION_LABEL macro that
is specified, the new branch label is applied. The following example demonstrates this principle:
CTP_VERSION_LABEL=A3.X3.01
CTP_SOURCE VERSION_LABEL=A2.X1.00
Example 11: xxx_SOURCE_VERSION_LABEL macros for set_logfile_versions target
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 73 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
7.5.7.6 Checking the nodes that utilize a given shared file
It is useful to know which nodes are affected when one considers changes to a shared file. This is true
regardless of whether the shared file is a system shared file or a shared file related to a given subsystem. In
order to produce a text file that contains a list of nodes utilizing a given shared file, the check_shared_file
explicit target is used. This operation will utilize the SHARED_FILENAME macro (which contains the
name of the shared file in question), and will produce a text file, called FILELIST.TXT, on the directory
specified as the BUILD_ROOT. The contents of FILELIST.TXT will be a list of node names (if any) that
utilize the named shared file. Comment lines are generated at the start and end of the list to avoid confusion
in the event that there are no nodes that are affected.
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 74 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
8. Appendix A: Mnet Makefile Sample
1 ###############################################################################
2 #
3 # Makefile for Building Mnet IOD
4 # with ** Version Manager **
5 #
6 #
7 ###############################################################################
8 #
9 # If a C source file is in the "SRCLIST" it will be compiled to an assembly
10 # file and then assembled. This is to support in-line assembly code for
11 # the Keil compiler and assembler.
12 #
13 # This makefile will lint each C source module before compiling. At link
14 # time, all of the .lob files generated from the unit lint of each C file
15 # will be linted together.
16 #
17 ###############################################################################
18 #
19 # PVCS Log
20 #
21 # $Log: W:\logs\da_Vinci\sys\iod\iod_u\src\iod.mav $
22 #
23 # Rev 1.13 08 Dec 1997 13:10:18 tedw
24 # Made changes for new shared makefile
25 #
26 # Rev 1.10 04 Nov 1997 17:52:20 tedw
27 # Update node to work with UInet and ISCnet message formats
28 #
29 # Rev 1.9 15 Oct 1997 11:07:24 tedw
30 # Updated config info read for Dallas part
31 #
32 # Rev 1.8 22 Sep 1997 16:53:38 tedw
33 # Updated to use Dallas read block function
34 #
35 # Rev 1.7 11 Sep 1997 16:43:52 tedw
36 # Updated low level drivers for board bringup testing
37 #
38 # Rev 1.6 22 Aug 1997 07:34:40 nealo
39 # Changes to support generic .a51 makefile rules
40 #
41 # Rev 1.5 06 Aug 1997 17:18:26 tedw
42 # Updated to new sfr include file.
43 #
44 # Rev 1.4 04 Aug 1997 16:51:50 tedw
45 # Changed OBJs to local
46 #
47 # Rev 1.3 01 Aug 1997 14:17:36 tedw
48 # Removed ismemcpy
49 #
50 # Rev 1.2 01 Aug 1997 10:36:44 tedw
51 # Set build path to V:
52 #
53 # Rev 1.1 01 Aug 1997 10:33:12 tedw
54 # Continued development
55 #
56 ###############################################################################
57
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 75 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
58
59 ###############################################################################
60 #
61 # Define macros that are used by the included makefile
62 #
63
64 PROJECT = iod
65 MICRO_SPECIFIC = iod\iod_u\src
66 MAIN_TARGET = main_iod.hex
67
68
69 # This path may be changed as needed for each makefile
70 # While it would be nice to have this path located automatically
71 # we are willing to sacrifice a little bit of flexibility here
72 %If %Defined(GEN_MNET_MAK)
73 .Include $(GEN_MNET_MAK)\gen_mnet.mak
74 %Else
75 .Include v:\sys\shared\src\gen_mnet.mak
76 %Endif
77
78
79 ###############################################################################
80 #
81 # Flags
82 #
83
84 # assemble options: Intel emulator DB (DEBUG),
85 # inhibit A51 from implicitly defining labels
86 # for special function registers (NOMO) we
87 # are including files in which these are
88 # predefined.
89 # include CPU definition file (for 87C520)
90
91 A51FLAGS = DB NOMO
92
93 # compile options: large model LA (LARGE),
94 # Intel emulator DB (DEBUG),
95 # disable absolute register addressing (NOAREGS)
96 # absolute register addressing was conflicting
97 # with the RTX kernal
98
99 CFLAGS = LA OE DB NOAREGS DF (TINY_KERNAL)
100
101 # RTX51TNY: Link the RTX Tiny library
102 # RS(256): Use 256 bytes of internal data
103 # IDATA (?STACK (80H)): Force the stack segment to 80H in IDATA
104 # OL ... : Tell the overaly processor that marchxram is not called by test_ram
105 # so we do not get a warning about multiple calls.
106 # The startup CPLD stuff needs to be ignored.
107 #
108 # Note: RTX51TINY makes a call to an external function from the module conf_tny.a51 when it determines
109 # that a stack overrun has occured. It does not use the correct conventions for C functions, so
110 # you get a warning about the STACK_ERROR_HANDLER C function being ignored for the overlay
process.
111 # To get rid of this warning, a C callable function is made in conf_tny.a51 so we can make it a root to
112 # to the overlay processor. Then, it thinks that STACK_ERROR_HANDLER is being called. It is
handled
113 # separately from the rest of the overlay processing.
114
115 LINKFLAGS = RTX51TINY RS(256) IDATA (?STACK (80H)) \
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 76 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
116 OL (?PR?_ISCNETNODESPECIFICHANDLING?IOD_ISC ~
?PR?NSPCODE?SOFTWARE_RESET, \
117 ?PR?LOAD_REVISION_INFORMATION?POST ~
?PR?_OPERATE_ON_A_BIT_STREAM?IOD_CPLD, \
118 ?PR?INIT_SYSTEM_INFO?MAIN_IOD ~
?PR?_OPERATE_ON_A_CPLD_REGISTER?IOD_CPLD,\
119 ?PR?LOAD_REVISION_INFORMATION?POST
~?PR?_OPERATE_ON_A_CPLD_REGISTER?IOD_CPLD, \
120 ?PR?LOAD_REVISION_INFORMATION?POST ~
?PR?_SET_BIT_STREAM_MODE?IOD_CPLD, \
121 ?PR?LOAD_REVISION_INFORMATION?POST ~
?PR?_ISCNET_STATUS_CHANGE?IOD_ISC, \
122 ?PR?STACK_ERROR_HANDLER?POST ~ ?PR?_ERROR_HANDLER?ERR_HDLR, \
123 * ! ?PR?SE_HANDLER?C_STACK_ERROR_HAN)
124
125
126 LINTDEFINES = -dTINY_KERNAL
127
128 #
129 ###############################################################################
130 #
131 # File Lists
132 #
133
134 # Source file list specified so it can be utilized by SCANDEPS also
135 SRCS = main_iod.c \
136 conf_tny.a51 \
137 isc_slv.a51 \
138 ui_slv.a51 \
139 crc16tbl.c \
140 crc16fcn.c \
141 err_hdlr.c \
142 iod_isc.c \
143 isc_comt.c \
144 ui_comt.c \
145 rsrctest.c \
146 post.c \
147 iod_info.c \
148 iod_ui.c \
149 iod_cpld.c \
150 adc_2543.c \
151 adc_hdlr.c \
152 rd_dals.c \
153 hlth_mon.c \
154 startup.a51
155
156 # Build list of OBJ files from SRC and SRCLIST files
157 OBJS = $[Filename,,$(SRCS),obj]
158
159 # Files in this list include in-line assembly, and must be
160 # compiled to a .a51 source file and then assembled.
161 # This file list is in addition to the SRCS above
162 SRCLIST = rd_dals.c
163
164
165 ###############################################################################
166 #
167 # Main Target
168 #
169
170 main_iod.hex: $(OBJS) $(MKF)
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 77 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
171
172
173 ###############################################################################
174 #
175 # Dependencies
176 #
177
178 # main must depend on .a51 .obj files. If only a .a51 file is assembled, and it is not compiled,
179 # RTX51 Lib will not link in properly.
180
181 #UPDATE#
182 main_iod.obj: sfrusage.h sfrdef.h general.h vartypes.h config.h \
183 sys_defs.h isc_mip.h crc16.h isc_slv.h ui_slv.h err_hdlr.h \
184 err_code.h err_defs.h post.h rsrctest.h iod_isc.h iod_cpld.h \
185 adc_hdlr.h adc_2543.h rd_dals.h hlth_mon.h
186 crc16tbl.obj: general.h vartypes.h crc16.h
187 crc16fcn.obj: vartypes.h crc16.h general.h
188 err_hdlr.obj: sfrusage.h sfrdef.h vartypes.h general.h err_hdlr.h \
189 err_code.h isc_mip.h sys_defs.h err_defs.h isc_slv.h \
190 startup.h
191 iod_isc.obj: general.h vartypes.h config.h sfrusage.h sfrdef.h \
192 sys_defs.h mip.h isc_mip.h err_hdlr.h err_code.h err_defs.h \
193 crc16.h isc_slv.h ui_slv.h iod_isc.h startup.h post.h \
194 iod_cpld.h
195 isc_comt.obj: config.h sfrusage.h sfrdef.h sys_defs.h vartypes.h \
196 general.h isc_slv.h
197 ui_comt.obj: sfrusage.h sfrdef.h config.h sys_defs.h vartypes.h \
198 general.h ui_slv.h
199 rsrctest.obj: post.h vartypes.h config.h sfrusage.h sfrdef.h \
200 sys_defs.h general.h rsrctest.h
201 post.obj: rtx51tny.h config.h sfrusage.h sfrdef.h sys_defs.h \
202 vartypes.h general.h rsrctest.h err_hdlr.h err_code.h \
203 isc_mip.h err_defs.h isc_slv.h iod_cpld.h rd_dals.h iod_isc.h
204 iod_info.obj: config.h sfrusage.h sfrdef.h sys_defs.h vartypes.h \
205 general.h
206 iod_ui.obj: general.h vartypes.h config.h sfrusage.h sfrdef.h \
207 sys_defs.h mip.h isc_mip.h ui_mip.h nspfns.h nsptypes.h \
208 err_defs.h crc16.h isc_slv.h ui_slv.h iod_cpld.h hlth_mon.h
209 iod_cpld.obj: config.h sfrusage.h sfrdef.h sys_defs.h vartypes.h \
210 general.h iod_cpld.h
211 adc_2543.obj: vartypes.h config.h sfrusage.h sfrdef.h sys_defs.h \
212 general.h adc_2543.h
213 adc_hdlr.obj: config.h sfrusage.h sfrdef.h sys_defs.h vartypes.h \214 general.h adc_2543.h
adc_hdlr.h iod_cpld.h
215 rd_dals.obj: sfrusage.h sfrdef.h vartypes.h config.h sys_defs.h \
216 general.h rd_dals.h crc16.h
217 hlth_mon.obj: config.h sfrusage.h sfrdef.h sys_defs.h vartypes.h \
218 general.h adc_hdlr.h iod_isc.h iod_cpld.h
219 rd_dals.obj: sfrusage.h sfrdef.h vartypes.h config.h sys_defs.h \
220 general.h rd_dals.h crc16.h
221 #ENDUPDATE#
222
223 # Do not need the .a51 files here, just the include files
224 # Also, add all .inc files
225 startup.obj: reg520.inc mem_cfg.inc
226 isc_slv.obj: reg520.inc NODE_CFG.INC
227 ui_slv.obj: reg520.inc NODE_CFG.INC
228 conf_tny.obj: REG520.INC
229
230 ################################################################################
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 78 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
9. Appendix B: DSPNet Makefile Sample
1 ###############################################################################
2#
3# Makefile for Building CTP code
4#
5 ###############################################################################
6
7 .Memswap
8 .PermitComments
9
10
11 ###############################################################################
12 #
13 # Environment Vars
14 #
15
16 DSP_SUBDIR = ctp
17 PROJECT = ctp
18 MICRO_BASE = scp\dsp\ctp\app
19 MICRO_SPECIFIC = $(MICRO_BASE)\src
20 MAIN_TARGET = $(PROJECT).txt
21 MAIN_TARGET_DXE = $(PROJECT).dxe
22 OBJEXTENSION = doj
23
24 ###############################################################################
25 #
26 # This path is specified by an environment variable or the default working driv
e
27 #
28 %If %Defined(GEN_SHARC_MAK)
29 .Include $(GEN_SHARC_MAK)\gen_sharc.mak
30 %Else
31 .Include v:\sys\shared\src\gen_sharc.mak
32 %Endif
33
34
35
36 ###############################################################################
37 #
38 # Flags and Library specifications
39 #
40
41 ASMOPTS += -21062 -g
42
43 # We shall assume no optimations for now, but correct this later (see OPT1 and
OPT2 below)
44 CCOPTS += -reserve ustat2,i0,i8 -21062
45
46 # Note that definitions are separate from compiler options so that Lint can use
them too
47 DEFS += -D_SHARC_PROCESSOR_ -D_KERNEL_TEST_MODE -DENABLE_MD_ERROR_TRACE
48
49 LIBS = lib060.dlb \
50 libio32.dlb \
51 libc.dlb
52
53 LINKFLAGS = -21062 -L ..\obj -flags-link -warnonce
54 LDR_FLAGS = -blink -fascii -t32768 -DADSP-21062 -p0x0
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 79 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
55 DMP_FLAGS = -ix 3-10
56
57 LINTDEFINES = -zero
58
59
60 ###############################################################################
61 #
62 # File Lists
63 #
64
65 # Source file list specified so it can be utilized by SCANDEPS also
66 # Keep boot_ce.s as the file first in list!!
67 SRCS = \
68 boot_ce_asm.s \
69 addr_arrays.c \
70 boot_ce.c \
71 bp_que.c \
72 ctp.c \
73 ctp_brake.c \
74 ctp_ce.c \
75 ctp_errlog.c \
76 ctp_flash.c \
77 ctp_frl.c \
78 ctp_irq1.c \
79 ctp_irq2.c \
80 ctp_irq2_asm.s \
81 ctp_msc.c \
82 ctp_msc_que.c \
83 ctp_startup.s \
84 ctp_trace.c \
85 ctp_util.c \
86 dsp_crc.c \
87 dsp_dual_port.c \
88 dsp_msg_que.c \
89 dsp_util.c \
90 dsp_util_asm.s \
91 dv_event.c \
92 dv_peek.c \
93 dv_poke.c \
94 flash_util.c \
95 flash_util_asm.s \
96 mat_lib.c \
97 MdAccessFcns.c \
98 MdBBLoaders.c \
99 MdBBs.c \
100 MdBBUtils.c \
101 MdBlocks.c \
102 MdBPs.c \
103 MdEmbed.c \
104 MdFlashAccess.c \
105 MdInterMMComm.c \
106 MdMain.c \
107 MdMathFcns.c \
108 MdReaders.c \
109 MdRoutines.c \
110 MdSharedHelpers.c \
111 MdTrace.c \
112 MdUtils.c \
113 nrc_svd.c \
114 nvsram.c \
115 nvsram_asm.s \
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 80 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
116 ram_test.c \
117 ram_test_asm.s \
118 vec_lib.c
119
120
121 # This list simply specifies any source files that must be compiled with specif
ic compiler options
122 # In this case, we want to distinguish those files with Optimizations vs. those
without Optimizations
123 # If a .C file is in the following list, then enable optimizations
124 OPT1 = -O1
125 SRCS_WITH_OPT1 = \
126 ctp_irq2.c
127
128 # If a .C file is NOT in the preceding list, then disable optimizations
129 # DO NOT USE -O0, it causes the compiler to generate bad assembly code!
130 OPT2 =
131 SRCS_WITH_OPT2 =
132
133 %ForEach FILE in $(SRCS)
134 %If !%Member($(FILE),$(SRCS_WITH_OPT1))
135 %Set SRCS_WITH_OPT2 += $(FILE)
136 %Endif
137 %EndFor
138
139
140 # Build list of DOJ files from SRC and SRCLIST files
141 OBJS = $[Filename,,$(SRCS),doj]
142
143 LDF_FILE = ctp.ldf
144
145 LINK_DOJ_FILE = $(ADI_TOOLS)\21k\lib\060_hdr.doj
146
147
148 ###############################################################################
149 #
150 # Main Target must be specified before the .Include for GEN_SHARC.MAK
151 #
152 $(MAIN_TARGET): $(MAIN_TARGET_DXE)
153 $(MAIN_TARGET_DXE) : $(OBJS) $(MKF) $(LINK_DOJ_FILE) $(LDF_FILE)
154
155 ############################################################################
156 #
157 # Dependencies
158 #
159
160 #UPDATE#
161 boot_ce_asm.doj: dsp_defs.h dsp_comm_defs.h ctp_mem_defs.h \
162 boot_ce_defs.h flash_mem_defs.h
163 addr_arrays.doj: vartypes.h addr_arrays.h dsp_servo_defs.h \
164 dsp_servo_data.h dsp_comm_defs.h ctp_mem_servo_defs.h \
165 ctp_mem_asa_defs.h
166 boot_ce.doj: vartypes.h boot_ce.h boot_ce_asm.h dsp_comm_defs.h \
167 ctp_util.h
168 bp_que.doj: vartypes.h dsp_defs.h ctp_msc.h ctp_msc_comm_data.h \
169 ctp_msc_comm_defs.h bp_que.h ctp_util.h ctp_mem_defs.h \
170 bp_que_data.h ManipDefs.h
171 ctp.doj: vartypes.h dsp_defs.h ctp_defs.h ctp.h dsp_comm_defs.h \
172 dsp_comm_data.h dsp_isr_macros.h ctp_startup.h ram_test.h \
173 ctp_util.h ctp_ce.h ctp_ce_que.h dsp_que_data.h \
174 dsp_que_defs.h ctp_msc.h ctp_msc_comm_data.h \
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 81 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
175 ctp_msc_comm_defs.h ctp_msc_que.h boot_ce.h ctp_irq1.h \
176 ctp_irq2.h flash_util.h flash_util_asm.h ctp_errlog.h \
177 ctp_error.h ctp_frl.h ctp_mem_frl_defs.h bp_que.h
178 ctp_brake.doj: vartypes.h dsp_defs.h ctp_defs.h ctp_util.h ctp.h \
179 ctp_brake.h ctp_msc_comm_data.h ctp_msc_comm_defs.h ctp_msc.h \
180 ctp_msc_que.h ctp_irq2.h ctp_mem_frl_defs.h \
181 ctp_mem_ctrl_defs.h ctp_errlog.h ctp_frl.h ctp_msc_macros.h
182 ctp_ce.doj: vartypes.h dsp_defs.h ctp_ce.h dsp_comm_data.h \
183 dsp_comm_defs.h ctp_ce_que.h dsp_que_data.h dsp_que_defs.h \
184 ctp_util.h dsp_util_asm.h ctp_mem_defs.h \
185 da_vinci_event_data.h da_vinci_event_defs.h dv_event.h \
186 MdShare.h dsp_dual_port.h dsp_servo_data.h dsp_servo_defs.h
187 ctp_errlog.doj: vartypes.h dsp_defs.h sys_ids.h ctp_util.h err_code.h \
188 ctp_msc.h ctp_msc_comm_data.h ctp_msc_comm_defs.h \
189 dv_log_data.h dv_log_defs.h
190 ctp_flash.doj: vartypes.h dsp_defs.h ctp_util.h flash_util.h \
191 dsp_isr_macros.h ctp_msc.h ctp_msc_comm_data.h \
192 ctp_msc_comm_defs.h ctp_msc_macros.h
193 ctp_frl.doj: vartypes.h dsp_defs.h sys_ids.h ctp_util.h ctp_frl.h \
194 dsp_comm_defs.h dsp_comm_data.h ctp_msc.h ctp_msc_comm_data.h \
195 ctp_msc_comm_defs.h ctp_msc_que.h ctp_mem_frl_defs.h \
196 MdErrors.h ctp_error.h MdTrace.h param_def.h ManipDefs.h \
197 kernel_shared_defs.h mtm_defs.h psm_defs.h ecm_defs.h \
198 MdStruct.h Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h \
199 PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h \
200 kevent_defs.h eevent_defs.h
201 ctp_irq1.doj: vartypes.h dsp_defs.h dsp_isr_macros.h dsp_comm_defs.h \
202 ctp_irq1.h ctp_util.h ctp_ce.h dsp_comm_data.h ctp_msc.h \
203 ctp_msc_comm_data.h ctp_msc_comm_defs.h ctp_mem_defs.h \
204 ctp_mem_irq_defs.h ctp_mem_frl_defs.h
205 ctp_irq2.doj: vartypes.h dsp_defs.h ctp_defs.h ctp.h ctp_irq2.h \
206 ctp_msc_comm_defs.h ctp_msc_comm_data.h dsp_util.h \
207 dsp_util_asm.h ctp_util.h dsp_isr_macros.h ctp_ce.h \
208 dsp_comm_data.h dsp_comm_defs.h dsp_servo_data.h \
209 dsp_servo_defs.h ctp_mem_ctrl_defs.h ctp_mem_irq_defs.h \
210 ctp_mem_servo_defs.h ctp_mem_asa_defs.h ctp_msc.h \
211 addr_arrays.h ctp_errlog.h ctp_error.h ctp_brake.h ctp_frl.h \
212 dsp_dual_port.h dsp_que_data.h dsp_que_defs.h \
213 da_vinci_event_data.h da_vinci_event_defs.h
214 ctp_irq2_asm.doj: dsp_defs.h ctp_mem_defs.h ctp_mem_servo_defs.h \
215 ctp_mem_asa_defs.h dsp_comm_defs.h dsp_servo_defs.h
216 ctp_msc.doj: vartypes.h dsp_defs.h sys_ids.h ctp.h ctp_irq2.h \
217 ctp_msc_comm_defs.h ctp_msc_comm_data.h ctp_util.h ram_test.h \
218 ctp_ce.h dsp_comm_data.h dsp_comm_defs.h ctp_ce_que.h \
219 dsp_que_data.h dsp_que_defs.h ctp_msc.h ctp_msc_que.h \
220 dv_event.h da_vinci_event_defs.h da_vinci_event_data.h \
221 ctp_mem_defs.h ctp_mem_ctrl_defs.h dv_pptr_data.h \
222 dv_pptr_defs.h dv_poke.h dv_peek.h dv_log_data.h \
223 dv_log_defs.h ctp_error.h ctp_errlog.h ctp_flash.h \
224 ctp_brake.h ctp_trace.h ctp_msc_macros.h ctp_frl.h sysdata.h \
225 ManipDefs.h bp_que.h MdEmbed.h param_def.h \
226 kernel_shared_defs.h mtm_defs.h psm_defs.h ecm_defs.h \
227 MdStruct.h Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h \
228 PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h \
229 MdErrors.h MdTrace.h kevent_defs.h eevent_defs.h MdBPs.h \
230 MdTimer.h MdSharedHelpers.h MdAccessFcns.h krnlintf.h \
231 KernKeys.h bp_que_data.h
232 ctp_msc_que.doj: vartypes.h dsp_defs.h ctp_msc.h ctp_msc_comm_data.h \
233 ctp_msc_comm_defs.h ctp_msc_que.h ctp_util.h ctp_mem_defs.h \
234 ctp_msc_que_data.h
235 ctp_startup.doj: dsp_defs.h ctp_mem_defs.h ctp_mem_ctrl_defs.h \
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 82 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
236 flash_mem_defs.h
237 ctp_trace.doj: vartypes.h dsp_defs.h dsp_comm_defs.h dsp_comm_data.h \
238 ctp_msc_comm_defs.h ctp_msc_comm_data.h dv_pptr_defs.h \
239 dv_pptr_data.h ctp_msc_macros.h
240 ctp_util.doj: vartypes.h ctp_util.h ctp_defs.h ctp_mem_ctrl_defs.h
241 dsp_crc.doj: vartypes.h dsp_crc.h
242 dsp_dual_port.doj: vartypes.h dsp_defs.h dsp_que_defs.h dsp_que_data.h \
243 dsp_comm_data.h dsp_comm_defs.h dsp_dual_port.h \
244 dsp_servo_data.h dsp_servo_defs.h da_vinci_event_data.h \
245 da_vinci_event_defs.h
246 dsp_msg_que.doj: vartypes.h dsp_defs.h dsp_que_defs.h dsp_que_data.h \
247 dsp_comm_data.h dsp_comm_defs.h dsp_dual_port.h \
248 dsp_servo_data.h dsp_servo_defs.h da_vinci_event_data.h \
249 da_vinci_event_defs.h
250 dsp_util.doj: dsp_util.h
251 dv_event.doj: dsp_defs.h vartypes.h ctp_util.h dv_event.h \
252 da_vinci_event_defs.h da_vinci_event_data.h
253 dv_peek.doj: dsp_defs.h dv_peek.h ctp_ce.h dsp_comm_data.h vartypes.h \
254 dsp_comm_defs.h ctp_ce_que.h dsp_que_data.h dsp_que_defs.h \
255 dv_pptr_data.h dv_pptr_defs.h ManipDefs.h ctp_util.h
256 dv_poke.doj: dsp_defs.h dv_poke.h ctp_ce.h dsp_comm_data.h vartypes.h \
257 dsp_comm_defs.h ctp_ce_que.h dsp_que_data.h dsp_que_defs.h \
258 dv_pptr_data.h dv_pptr_defs.h ManipDefs.h ctp_util.h
259 flash_util.doj: vartypes.h dsp_defs.h ctp_util.h flash_util.h \
260 flash_util_asm.h ctp_mem_defs.h ctp_mem_ctrl_defs.h \
261 flash_mem_defs.h flash_util_defs.h
262 flash_util_asm.doj: dsp_defs.h ctp_mem_defs.h flash_mem_defs.h
263 mat_lib.doj: MathLib.h VarTypes.h vec_lib.h mat_lib.h
264 MdAccessFcns.doj: VarTypes.h param_def.h ManipDefs.h \
265 kernel_shared_defs.h mtm_defs.h psm_defs.h ecm_defs.h \
266 MdStruct.h Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h \
267 PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h \
268 MdAccessFcns.h MdErrors.h ctp_error.h MdTrace.h kevent_defs.h \
269 eevent_defs.h MdSharedHelpers.h
270 MdBBLoaders.doj: VarTypes.h param_def.h ManipDefs.h \
271 kernel_shared_defs.h mtm_defs.h psm_defs.h ecm_defs.h \
272 MdStruct.h Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h \
273 PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h \
274 MdErrors.h ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h \
275 MdUtils.h KernKeys.h MdBBLoaders.h MdBBUtils.h \
276 MdSharedHelpers.h MdMathFcns.h MathLib.h vec_lib.h mat_lib.h \
277 MdAccessFcns.h MdReaders.h MdBlocks.h krnlintf.h \
278 MdInterMMComm.h nrc_svd.h
279 MdBBs.doj: VarTypes.h param_def.h ManipDefs.h kernel_shared_defs.h \
280 mtm_defs.h psm_defs.h ecm_defs.h MdStruct.h Cfg_Param.h \
281 PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h PsmToolCfgDefs.h \
282 EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h MdErrors.h \
283 ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h MdBlocks.h \
284 MdBBs.h MdUtils.h KernKeys.h MdSharedHelpers.h MdBBLoaders.h \
285 MdBBUtils.h MdAccessFcns.h krnlintf.h MathLib.h vec_lib.h \
286 mat_lib.h
287 MdBBUtils.doj: VarTypes.h param_def.h ManipDefs.h kernel_shared_defs.h \
288 mtm_defs.h psm_defs.h ecm_defs.h MdStruct.h Cfg_Param.h \
289 PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h PsmToolCfgDefs.h \
290 EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h MdErrors.h \
291 ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h MdBBUtils.h \
292 MathLib.h vec_lib.h mat_lib.h MdUtils.h KernKeys.h \
293 MdSharedHelpers.h MdAccessFcns.h krnlintf.h nrc_svd.h \
294 MdMathFcns.h MdBBs.h MdInterMMComm.h
295 MdBlocks.doj: VarTypes.h param_def.h ManipDefs.h kernel_shared_defs.h \
296 mtm_defs.h psm_defs.h ecm_defs.h MdStruct.h Cfg_Param.h \
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 83 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
297 PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h PsmToolCfgDefs.h \
298 EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h MdErrors.h \
299 ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h MdBlocks.h \
300 MdInterMMComm.h MdSharedHelpers.h MdAccessFcns.h MdBBUtils.h \
301 MdMathFcns.h MathLib.h vec_lib.h mat_lib.h MdReaders.h \
302 MdBBs.h MdUtils.h KernKeys.h krnlintf.h ToolDefs.h \
303 UtilMacros.h MdEmbed.h MdBPs.h MdTimer.h ctp_msc.h \
304 ctp_msc_comm_data.h ctp_msc_comm_defs.h dv_poke.h dv_peek.h \
305 bp_que_data.h dsp_defs.h ctp_msc_macros.h ctp_util.h
306 MdBPs.doj: VarTypes.h param_def.h ManipDefs.h kernel_shared_defs.h \
307 mtm_defs.h psm_defs.h ecm_defs.h MdStruct.h Cfg_Param.h \
308 PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h PsmToolCfgDefs.h \
309 EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h MdErrors.h \
310 ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h MdBPs.h \
311 MdBlocks.h MdBBs.h MdUtils.h KernKeys.h MdSharedHelpers.h \
312 MdAccessFcns.h MdBBLoaders.h MdBBUtils.h MdReaders.h \
313 MdMathFcns.h MathLib.h vec_lib.h mat_lib.h MdInterMMComm.h \
314 MdRoutines.h krnlintf.h MdEmbed.h MdTimer.h ctp_msc.h \
315 ctp_msc_comm_data.h ctp_msc_comm_defs.h dv_poke.h dv_peek.h \
316 bp_que_data.h dsp_defs.h ctp_msc_macros.h ctp_util.h
317 MdEmbed.doj: vartypes.h param_def.h ManipDefs.h kernel_shared_defs.h \
318 mtm_defs.h psm_defs.h ecm_defs.h MdStruct.h Cfg_Param.h \
319 PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h PsmToolCfgDefs.h \
320 EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h MdErrors.h \
321 ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h MdBPs.h \
322 MdTimer.h MdSharedHelpers.h MdAccessFcns.h ctp_msc.h \
323 ctp_msc_comm_data.h ctp_msc_comm_defs.h krnlintf.h KernKeys.h \
324 dv_poke.h dv_peek.h MdEmbed.h bp_que_data.h dsp_defs.h \
325 ctp_msc_macros.h ctp_util.h dsp_crc.h sysdata.h ToolDefs.h \
326 MathLib.h vec_lib.h mat_lib.h
327 MdFlashAccess.doj: VarTypes.h param_def.h ManipDefs.h \
328 kernel_shared_defs.h mtm_defs.h psm_defs.h ecm_defs.h \
329 Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h \
330 PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h MdStruct.h MdDefs.h \
331 MdShare.h MdErrors.h ctp_error.h MdTrace.h kevent_defs.h \
332 eevent_defs.h MdFlashAccess.h
333 MdInterMMComm.doj: VarTypes.h param_def.h ManipDefs.h \
334 kernel_shared_defs.h mtm_defs.h psm_defs.h ecm_defs.h \
335 MdStruct.h Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h \
336 PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h \
337 MdErrors.h ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h \
338 MdInterMMComm.h MdSharedHelpers.h MdAccessFcns.h MdBBUtils.h \
339 MdMathFcns.h MathLib.h vec_lib.h mat_lib.h krnlintf.h \
340 KernKeys.h MdBlocks.h MdUtils.h
341 MdMain.doj: VarTypes.h param_def.h ManipDefs.h kernel_shared_defs.h \
342 mtm_defs.h psm_defs.h ecm_defs.h MdStruct.h Cfg_Param.h \
343 PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h PsmToolCfgDefs.h \
344 EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h MdErrors.h \
345 ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h MdBPs.h \
346 MdTimer.h MdSharedHelpers.h MdAccessFcns.h MdBBs.h MdBlocks.h \
347 MdRoutines.h krnlintf.h KernKeys.h MdEmbed.h ctp_msc.h \
348 ctp_msc_comm_data.h ctp_msc_comm_defs.h dv_poke.h dv_peek.h \
349 bp_que_data.h dsp_defs.h ctp_msc_macros.h ctp_util.h
350 MdMathFcns.doj: VarTypes.h MdDefs.h param_def.h ManipDefs.h \
351 kernel_shared_defs.h mtm_defs.h psm_defs.h ecm_defs.h \
352 MdErrors.h ctp_error.h MdTrace.h MdStruct.h Cfg_Param.h \
353 PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h PsmToolCfgDefs.h \
354 EcmCamCfgDefs.h BPDefs.h MdShare.h kevent_defs.h \
355 eevent_defs.h MathLib.h vec_lib.h mat_lib.h MdMathFcns.h \
356 MdBlocks.h MdAccessFcns.h MdSharedHelpers.h
357 MdReaders.doj: VarTypes.h param_def.h ManipDefs.h kernel_shared_defs.h \
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 84 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
358 mtm_defs.h psm_defs.h ecm_defs.h MdDefs.h MdStruct.h \
359 Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h \
360 PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h MdShare.h MathLib.h \
361 vec_lib.h mat_lib.h MdErrors.h ctp_error.h MdTrace.h \
362 kevent_defs.h eevent_defs.h MdReaders.h MdUtils.h KernKeys.h \
363 krnlintf.h MdMathFcns.h MdSharedHelpers.h
364 MdRoutines.doj: VarTypes.h param_def.h ManipDefs.h \
365 kernel_shared_defs.h mtm_defs.h psm_defs.h ecm_defs.h \
366 MdStruct.h Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h \
367 PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h \
368 MdErrors.h ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h \
369 MdRoutines.h MdInterMMComm.h MdMathFcns.h MathLib.h vec_lib.h \
370 mat_lib.h MdSharedHelpers.h MdAccessFcns.h MdReaders.h \
371 MdBlocks.h MdBBs.h MdBBLoaders.h MdUtils.h KernKeys.h \
372 krnlintf.h ToolDefs.h MdFlashAccess.h MdEmbed.h MdBPs.h \
373 MdTimer.h ctp_msc.h ctp_msc_comm_data.h ctp_msc_comm_defs.h \
374 dv_poke.h dv_peek.h bp_que_data.h dsp_defs.h ctp_msc_macros.h \
375 ctp_util.h
376 MdSharedHelpers.doj: VarTypes.h param_def.h ManipDefs.h \
377 kernel_shared_defs.h mtm_defs.h psm_defs.h ecm_defs.h \
378 MdDefs.h MdStruct.h Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h \
379 EcmCfgDefs.h PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h \
380 MdShare.h MdSharedHelpers.h MathLib.h vec_lib.h mat_lib.h \
381 MdErrors.h ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h
382 MdTrace.doj: VarTypes.h param_def.h ManipDefs.h kernel_shared_defs.h \
383 mtm_defs.h psm_defs.h ecm_defs.h MdStruct.h Cfg_Param.h \
384 PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h PsmToolCfgDefs.h \
385 EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h MdErrors.h \
386 ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h \
387 UtilMacros.h MathLib.h vec_lib.h mat_lib.h
388 MdUtils.doj: VarTypes.h MathLib.h vec_lib.h mat_lib.h MdDefs.h \
389 param_def.h ManipDefs.h kernel_shared_defs.h mtm_defs.h \
390 psm_defs.h ecm_defs.h MdUtils.h KernKeys.h MdErrors.h \
391 ctp_error.h MdTrace.h MdStruct.h Cfg_Param.h PsmCfgDefs.h \
392 MtmCfgDefs.h EcmCfgDefs.h PsmToolCfgDefs.h EcmCamCfgDefs.h \
393 BPDefs.h MdShare.h kevent_defs.h eevent_defs.h krnlintf.h
394 nrc_svd.doj: MathLib.h VarTypes.h vec_lib.h mat_lib.h MdDefs.h \
395 param_def.h ManipDefs.h kernel_shared_defs.h mtm_defs.h \
396 psm_defs.h ecm_defs.h ctp_error.h MdErrors.h MdTrace.h \
397 MdStruct.h Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h \
398 PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h MdShare.h \
399 kevent_defs.h eevent_defs.h nrc_svd.h
400 nvsram.doj: vartypes.h dsp_defs.h nvsram.h nvsram_asm.h ctp_util.h \
401 ctp_mem_defs.h
402 nvsram_asm.doj: dsp_defs.h ctp_mem_defs.h
403 ram_test.doj: vartypes.h ram_test.h ram_test_asm.h ctp_mem_defs.h
404 ram_test_asm.doj: dsp_defs.h ctp_mem_defs.h flash_mem_defs.h
405 vec_lib.doj: MathLib.h VarTypes.h vec_lib.h mat_lib.h
406 #ENDUPDATE#
407
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 85 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
10. Appendix C: DAFD Makefile Sample
1 #####################################################################
2 #
3 # Makefile for Building DAFD code
4 #
5 #####################################################################
6 #
7 # PVCS Log
8 #
9 # $Log: W:\logs\da_Vinci\sys\msd\dsp\dafd\src\dafd.mvk $
10 #
11 # Rev 1.2 15 Jun 1998 15:34:28 nealo
12 # Changed reference to GEN_DSP_MAK to GEN_DAFD_MAK
13 #
14 # Rev 1.1 15 Jun 1998 15:18:04 nealo
15 # Removed extraneous definition for GEN_DAFD_MAK
16 #
17 # Rev 1.0 12 Jun 1998 14:42:12 nealo
18 # Initial checkin of new, standard makefile
19 #
20 #####################################################################
21
22 #####################################################################
23 #
24 # Environment Vars
25 #
26
27 PROJECT = dafd
28 MICRO_BASE = msd\dsp\dafd
29 MICRO_SPECIFIC = msd\dsp\dafd\src
30
31 SKIP_LINT_27183_DO_NOT_USE = 1
32
33 DEFS =
34
35 MAIN_TARGET = dafd.s3
36
37
38 #####################################################################
39 #
40 # This path is specified by an environment variable or the default wo
41 #
42 %If %Defined(GEN_DAFD_MAK)
43 .Include $(GEN_DAFD_MAK)\gen_dafd.mak
44 %Else
45 .Include v:\sys\shared\src\gen_dafd.mak
46 %Endif
47
48
49 #####################################################################
50 #
51 # Flags
52 #
53
54 LDROPTS = -g -x
55 ASMOPTS = -c -2181
56 CCOPTS =
57
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 86 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
58 LINTDEFINES = -zero
59
60
61 #####################################################################
62 #
63 # File Lists
64 #
65
66 # Source file list specified so it can be utilized by SCANDEPS also
67 SRCS = \
68 main.dsp \
69 dafdutil.dsp \
70 intvecs.dsp \
71 vardefs.dsp \
72 isr.dsp \
73 tempcalc.dsp \
74 pwrcalc.dsp \
75 comm.dsp \
76 cmdresp.dsp
77
78 # Add the "-g" option to any file not referenced in OPT2
79 OPT3 = -g
80
81 # Build list of OBJ files from SRC and SRCLIST files
82 OBJS = $[Filename,,$(SRCS),obj]
83
84 # Pick the proper architecture file
85 ACHFILE = ..\exe\dafd.ach
86
87 XFILES = -nomem -runhdr $(LIBS)
88
89
90 #####################################################################
91 #
92 # Main Target
93 #
94 $(MAIN_TARGET): $(OBJS) $(MKF) $(ACHFILE)
95
96
97 #####################################################################
98 #
99 # Dependencies
100 #
101
102 dafd.ach: dafd.sys $(MKF)
103
104 #UPDATE#
105 main.obj: portdefs.h vardefs.h dafdutil.h $(MKF)
106 intvecs.obj: $(MKF)
107 vardefs.obj: consts.h vardefs.h $(MKF)
108 isr.obj: portdefs.h vardefs.h dafdutil.h $(MKF)
109 tempcalc.obj: portdefs.h vardefs.h dafdutil.h $(MKF)
110 pwrcalc.obj: portdefs.h vardefs.h $(MKF)
111 comm.obj: portdefs.h vardefs.h $(MKF)
112 cmdresp.obj: portdefs.h vardefs.h dafdutil.h $(MKF)
113 dafdutil.obj: portdefs.h vardefs.h dafdutil.h $(MKF)
114 #ENDUPDATE#
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 87 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
11. Appendix D: Laptop Makefile Sample
1 ###############################################################################
2 #
3 # Makefile for Building Mex interface files for CfgLoader.DLL
4 #
5 ###############################################################################
6
7
8 ###############################################################################
9 #
10 # Environment Vars
11 #
12
13 PROJECT = MexVsdDll
14 MKF = $(PROJECT).mak
15 EXE_DLL_VXD_ROOT = Laptop\mex\VsdDLL
16 SHARED_SOURCE = Laptop\isa\shared\src
17 ADDL_LIB_PATH = Laptop\isa\vsddll\exe
18 MEX = YES
19
20
21
22 ###############################################################################
23 #
24 # Flags and Library specifications
25 #
26
27 CFLAGS = /nologo /W3 /G5 /Zp8 /O2 /D"MATLAB_PROC" /D "MATLAB_MEX_FILE"
28 LIBFLAGS = /nologo /machine:ix86
29 LFLAGS = /nologo /dll
30
31 LINTDEFINES = -zero -DMATLAB_PROC -DMATLAB_MEX_FILE
32
33
34 # Add debug options to Compiler/Lint/Linker Flags if needed
35 %If %Defined(DEBUG)
36 CFLAGS += /D "_DEBUG"
37 LINTDEFINES += -D_DEBUG
38 LFLAGS += /debug
39 %Endif
40
41
42 ###############################################################################
43 #
44 # File Lists
45 #
46
47 # Source file list specified so it can be utilized by SCANDEPS also
48 SRCS = \
49 ActivateCamera.cpp \
50 DisplayTarget.cpp \
51 GetConst.cpp \
52 LdUIMCDr.cpp \
53 ReadRia.cpp \
54 RemoveTarget.cpp \
55 SetSJBrakeSwitch.cpp \
56 VideoInfo.cpp \
57 VidFilt3Field.cpp \
58 VidFiltMesh.cpp \
59 VidNormal.cpp \
60 VidReverse.cpp
61
62 LIBS = VsdDll.lib nafxcw.lib libcmt.lib
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 88 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
63 NODEFAULTLIBS = msvcrt.lib
64
65 LIB_TARGET = $(PROJECT).lib66 RES_TARGET = Mexversion.res
67
68 # Build list of OBJ and SBR files from SRC and SRCLIST files
69 OBJS = $[Filename,,$(SRCS),obj]
70 DLLS = $[Filename,,$(SRCS),dll]
71 MAIN_TARGET = All_The_DLLs_must_be_built.
72
73 ###############################################################################
74 #
75 # Main Target must be specified before the .Include for GEN_LAP.MAK
76 #
77 All_The_DLLs_must_be_built : $(DLLS)
78 .KeepIntermediate: $(DLLS)
79
80 %Foreach targetName in $(DLLS)
81 $(targetName) : $[Base,$(targetName)].obj $(MKF) $(LIB_TARGET) $(RES_TARGET) $(MKF)
82 %Endfor
83
84 $(RES_TARGET): mexversion.rc
85 $(LIB_TARGET): matlab.def
86
87 ###############################################################################
88 #
89 # This path is specified by an environment variable or the default working drive
90 #
91 %If %Defined(GEN_LAP_MAK)
92 .Include $(GEN_LAP_MAK)\gen_Laptop.mak
93 %Else
94 .Include v:\sys\shared\src\gen_Laptop.mak
95 %Endif
96
97
98 #############################################################################
99 #
100 # Dependencies
101 #
102
103 #UPDATE#
104 ActivateCamera.obj: Interface.h
105 DisplayTarget.obj: Interface.h
106 LdUIMCDr.obj: interface.h
107 ReadRia.obj: interface.h
108 RemoveTarget.obj: Interface.h
109 SetSJBrakeSwitch.obj: Interface.h Arm_Defs.h
110 VideoInfo.obj: vartypes.h video.h Interface.h
111 VidFilt3Field.obj: Interface.h
112 VidFiltMesh.obj: Interface.h
113 VidNormal.obj: Interface.h
114 VidReverse.obj: Interface.h
115 #ENDUPDATE#
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 89 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
12. Appendix E: Release Build Makefile
1 ###############################################################################
2#
3# Makefile for Building Release version of Da-Vinci software
4#
5#
6 ###############################################################################
7#
8 # PVCS Log
9#
10 # $Log: W:\logs\da_Vinci\sys\davinci_a4.mav $
11 #
12 # Rev 1.27 12 Apr 2002 14:48:30 GregoryT
13 # Mods for target destinations to help download app. All targets now in "Targ
ets" dir. Version output file in targets directory, changes order of first two
items, removes path from targets.
14 #
15 # Rev 1.26 11 Apr 2002 19:08:48 GregoryT
16 # Added auto-generation of version number output file for download app.
17 #
18 # Rev 1.25 11 Apr 2002 16:07:14 GregoryT
19 # Fixed target name for ctp app, should have been .txt, not .dxe
20 #
21 # Rev 1.24 11 Apr 2002 11:30:14 AdnanK
22 # Adjusted del options to prevent echoing to logs
23 #
24 # Rev 1.23 11 Apr 2002 10:45:36 AdnanK
25 # Corrected bug for location of DLL ini files.
26 # Made all GEN_XXX_MAK items environment variables (now that they are set only
locally in defines.mak
27 # Disabled delete of directory tree for _OTHER_ARCHIVE_SUBDIRS. Now it simply
deletes the files inside those folders. The delete was destroying kernel targ
et directories when the next kernel node was being built due to sharing in the
tree.
28 #
29 #
30 # Rev 1.22 10 Apr 2002 16:45:56 AdnanK
31 # Rearranged the order of directory creation to prevent accidental destruction
of previously created directories. Works now for Kernel nodes, currently unte
sted for laptop.
32 #
33 # Rev 1.21 10 Apr 2002 14:43:18 AdnanK
34 # Fixed minor bug in copy of targets & also change case of target directories
to be uppercase.
35 #
36 # Rev 1.20 10 Apr 2002 14:23:10 AdnanK
37 # Added SetEnv for BUILD_ROOT & TARGET_ROOT and also echo their values to the
screen.
38 #
39 # Rev 1.19 10 Apr 2002 13:42:48 GregoryT
40 # Added support for additonal build/release numbers per build type and the ext
ra checking that goes with it.
41 #
42 # Rev 1.18 09 Apr 2002 10:23:06 GregoryT
43 # Inconsequential bug fix
44 #
45 # Rev 1.17 08 Apr 2002 14:26:46 GregoryT
46 # Added support for ini file targets for all dll's and lib's
47 #
48 # Rev 1.16 08 Apr 2002 12:45:50 AdnanK
49 # Made output laptop directory name lower case
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 90 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
50 #
51 # Rev 1.15 08 Apr 2002 12:44:02 AdnanK
52 # Added support for multiple laptop targets.
53 # Added support for multiple "release" folders and build ini names.
54 #
55 # Rev 1.14 05 Apr 2002 18:06:14 AdnanK
56 # Removed unused shared/fsms folder references.
57 # Added additional MexUsbDLL targets.
58 # Added folders for CfgLoader tmpl & middleman includes.
59 # Added Supervisor lib target (but did not test). All but mex stuff builds.
60 #
61 # Rev 1.13 05 Apr 2002 16:23:20 AdnanK
62 # Added rcv archives to laptops and removed unused .xlv from mex.
63 #
64 # Rev 1.12 05 Apr 2002 14:38:42 AdnanK
65 # Minor change to DSPNet loader target directory
66 #
67 # Rev 1.11 05 Apr 2002 14:37:26 AdnanK
68 # Minor change to MDSP loader target directory
69 #
70 # Rev 1.10 05 Apr 2002 14:00:40 GregoryT
71 # Added back in .mvk extension for DAFD only.
72 # Changed TVD app target from main_tvd.hex to tvd_app.hex.
73 #
74 # Rev 1.9 05 Apr 2002 12:13:14 AdnanK
75 # Modified target names for embedded mnet to match app/ldr split. Note: TVD i
s still main_tvd.hex, needs to change with tvd.mak
76 #
77 # Rev 1.8 05 Apr 2002 10:23:58 GregoryT
78 # Removed mvk from DSPNEt archive list - unneeded in A4.0 - all should be .mav
now
79 #
80 # Rev 1.7 05 Apr 2002 10:19:30 GregoryT
81 # Tightened DSPNet directory lists using Macros.
82 # Changed format of SW build & release number to new format.
83 #
84 # Rev 1.6 04 Apr 2002 16:58:14 AdnanK
85 # Cleanups from suggestions by CAA
86 #
87 # Rev 1.5 04 Apr 2002 14:56:14 AdnanK
88 # Remove Mdsp loader get section of code, cleaned up some comments
89 #
90 # Rev 1.4 04 Apr 2002 13:42:10 AdnanK
91 # Many changes by CAA/AK previous to 4/4/02 to get DSP and laptop to build.
92 #
93 # GKT: Added dxv extension to dsp list for CEs
94 # Added ldv for CTP path, scp\dsp\ctp\app
95 # Removed Monitor DSP Loader (non-existant)
96 # Added missing GEN_8051_MAK define
97 #
98 # Rev 1.3 14 Mar 2002 13:43:48 CraigA
99 # Updates for Loader build
100 #
101 # Rev 1.2 14 Mar 2002 11:01:22 CraigA
102 # Updated for setting version labels and to provide samples for defines.mak
103 #
104 # Rev 1.1 13 Mar 2002 18:54:50 CraigA
105 # Updated for CVI laptop builds
106 # Corrected other minor errors
107 #
108 # Rev 1.0 19 Feb 2002 15:46:06 GregoryT
109 # Initial revision.
110 #
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 91 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
111 ###############################################################################
112
113 .PermitComments
114 .Memswap
115
116
117 ###############################################################################
118 #
119 # Environment Vars
120 #
121
122 MKF = DAVINCI_A4.MAK # this file
123 DVMAK_VERSION = 1.1A # software version for tracking
124
125 VALID_BUILD_TYPES = EMBEDDED LOADER LAPTOP
126 ALL_SUBSYS_TYPES = MNET DSP MDSP MNET_LOADER DSP_LOADER MDSP_LOADER LAPTOP
127 # NOTE: MDSP_LOADER is not currently active!
128
129 %If %Exists(defines.mak)
130 .Include defines.mak
131 MKF += defines.mak
132 %Endif
133
134
135 %If %Defined(VERBOSE)
136 SILENT=
137 %Else
138 SILENT=(Silent)
139 %Endif
140
141 %If %Defined(OUTFILE)
142 DALL = -DirectAll $(OUTFILE)
143 %Endif
144
145 %If %Defined(DEBUG_MAKEFILE)
146 DBG_MKF_FLAGS = -Summary -View $(DEBUG_MAKEFILE)
147 %Endif
148
149 %If !%Defined(DEVELOP_ROOT)
150 DEVELOP_ROOT = V:\SYS
151 %Endif
152 %Echo DEVELOP_ROOT is $(DEVELOP_ROOT)
153
154 # if you are on drive C, use da_vinci in the path. If you are on a
155 # shared drive, just use the drive letter and start at \sys
156
157 %If !%Defined(BUILD_ROOT)
158 %If $[Drive,$(_Cwd)] == C
159 BUILD_ROOT = C:\DA_VINCI\SYS
160 %Else
161 BUILD_ROOT = $[Drive,$(_Cwd)]:\SYS
162 %Endif
163 %Endif
164 %Echo BUILD_ROOT is $(BUILD_ROOT)
165
166 %If !%Defined(LOGFILE_ROOT)
167 LOGFILE_ROOT = w:\logs\da_vinci\sys
168 %Endif
169
170 %If !%Defined(TARGET_ROOT)
171 TARGET_ROOT = u:\DevAndTest_A4
172 %Endif
173 %Echo TARGET_ROOT is $(TARGET_ROOT)
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 92 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
174
175 %If !%Defined(GETFLAGS)
176 GETFLAGS =-q -y
177 %Endif
178
179 PREV_VERSION_LABEL = None
180 GET = get
181
182 %Setenv DEVELOP_ROOT=$(DEVELOP_ROOT)
183 %Setenv BUILD_ROOT=$(BUILD_ROOT)
184 %Setenv TARGET_ROOT=$(TARGET_ROOT)
185 %Setenv BATCH_DIR=$(DEVELOP_ROOT)\tools\batch
186 %Setenv GETFLAGS=$(GETFLAGS)
187
188 # Certify utility built by CAA for adding CRCs to INI files
189 CERTIFY = $(DEVELOP_ROOT)\tools\utils\certify\exe\certify
190
191 # Certify utility built by CAA for adding CRCs to INI files
192 SETVER = $(DEVELOP_ROOT)\tools\utils\setver\exe\setver
193
194 %If "$[Clip,$(_System),1,11]" != "Windows NT/"
195 ATTRIB = $(DEVELOP_ROOT)\tools\windows\command\attrib
196 DELTREE = $(DEVELOP_ROOT)\tools\windows\command\deltree /y
197 %Else
198 ATTRIB = $(DEVELOP_ROOT)\tools\winnt\system32\attrib
199 DELTREE = $(DEVELOP_ROOT)\tools\winnt\batch\deltree
200 %Endif
201
202 # These macros are used by Set_Logfile_Versions explicit target
203 BATCH_DIR = $(DEVELOP_ROOT)\tools\batch
204 VCS_LOGFILE = $(BUILD_ROOT)\vcslog.txt
205 VCS=vcs
206 %If !%Defined(VCSFLAGS)
207 VCSFLAGS = -q -n
208 %Endif
209
210 # Set environment vars so macro values are retained in subordinate makefiles
211 %SetEnv BATCH_DIR=$(BATCH_DIR)
212 %SetEnv VCS_LOGFILE=$(VCS_LOGFILE)
213 %SetEnv VCS=$(VCS)
214 %SetEnv VCSFLAGS=$(VCSFLAGS)
215 %SetEnv SETVER=$(SETVER)
216
217 %If %Defined(RESTART)
218 Restart_Done = 0
219 %Else
220 Restart_Done = 1
221 %Endif
222
223 ###############################################################################
#
224 #
225 # This defines the filename for the Revision file(s)
226 #
227
228 RELEASE_TARGET_DIRECTORY = $(TARGET_ROOT)\$(BUILD_TYPE)\Release
229
230 BUILD_REVISION_INI_TARGET_DIR = $(RELEASE_TARGET_DIRECTORY)
231 BUILD_REVISION_INI_FILE = $(BUILD_TYPE)_Build.INI
232
233
234 RELEASE_REVISION_INI_TARGET_DIR = $(RELEASE_TARGET_DIRECTORY)
235 RELEASE_REVISION_INI_FILE = $(BUILD_TYPE)_Rlse.INI
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 93 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
236
237 STANDARD_TARGET_DIRECTORY = $(TARGET_ROOT)\$(BUILD_TYPE)\Targets
238
239 ###############################################################################
#
240 #
241 # These nodes have files that are shared between more than one project type
242 #
243 SYSTEM_SHARED_NODES = \
244 shared\src
245
246
247 SYSTEM_SHARED_SRC_ARCHIVES = \
248 a5v \
249 asv \
250 c_v \
251 cpv \
252 dcv \
253 dev \
254 mav \
255 h_v \
256 inv \
257 lnv
258
259 # Specify directory where Generic makefiles reside
260 #
261 # Remember, We only need to know about Embedded makefiles for EMBEDDED Build
262 # Loader makefiles for LOADER Build
263 # and Laptop makefiles for LAPTOP Build
264 #
265 # For now, it does not matter if we assign macros for those included makefiles
266 # whether we use them or not. We shall make that determination later.
267 #
268 %If !%Defined(GEN_MNET_MAK)
269 GEN_MNET_MAK = $(BUILD_ROOT)\shared\src
270 %Endif
271 %Setenv GEN_MNET_MAK = $(GEN_MNET_MAK)
272
273 %If !%Defined(GEN_8051_MAK)
274 GEN_8051_MAK = $(BUILD_ROOT)\shared\src
275 %Endif
276 %Setenv GEN_8051_MAK = $(GEN_8051_MAK)
277
278 %If !%Defined(GEN_PPC_MAK)
279 GEN_PPC_MAK = $(BUILD_ROOT)\shared\src
280 %Endif
281 %Setenv GEN_PPC_MAK = $(GEN_PPC_MAK)
282
283 %If !%Defined(GEN_SHARC_MAK)
284 GEN_SHARC_MAK = $(BUILD_ROOT)\shared\src
285 %Endif
286 %Setenv GEN_SHARC_MAK = $(GEN_SHARC_MAK)
287
288 %If !%Defined(GEN_LAP_MAK)
289 GEN_LAP_MAK = $(BUILD_ROOT)\shared\src
290 %Endif
291 %Setenv GEN_LAP_MAK = $(GEN_LAP_MAK)
292
293 %If !%Defined(GEN_DAFD_MAK)
294 GEN_DAFD_MAK = $(BUILD_ROOT)\shared\src
295 %Endif
296 %Setenv GEN_DAFD_MAK = $(GEN_DAFD_MAK)
297
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 94 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
298 %If !%Defined(GENERAL_MAK)
299 GENERAL_MAK = $(BUILD_ROOT)\shared\src
300 %Endif
301 %Setenv GENERAL_MAK = $(GENERAL_MAK)
302
303 ###############################################################################
#
304 #
305 # Mnet Embedded build macros
306 #
307 MNET_SHARED_NODES = \
308 shared\mstr_u\src \
309 shared\slv_u\src
310
311 # For ease of maintenance, these dirs/files are in alphabetical sequence
312 MNET_NODES = \
313 iod\iod_u\src\iod.mak \
314 fps\pdc_u\src\pdc.mak \
315 msd\msd_u\src\msd.mak \
316 ria\ria_u\app\src\ria.mak \
317 scp\imc_u\app\src\imc.mak \
318 scp\umc_u\app\src\umc.mak \
319 scp\msc_u\app\src\msc.mak \
320 uip\uip_u\src\uip.mak \
321 uis\uis_u\src\uis.mak \
322 vsd\tvd_u\app\src\tvd.mak \
323 vsd\vsd_u\app\src\vsn.mak
324
325
326 ###############################################################################
#
327 #
328 # This defines the target directory and target files to be copied
329 #
330 MNET_TARGET_DIRECTORY = $(STANDARD_TARGET_DIRECTORY)
331
332 # Note: these targets must be kept in sync with makefiles above!
333 MNET_TARGETS = \
334 iod\iod_u\exe\main_iod.hex \
335 fps\pdc_u\exe\main_pdc.hex \
336 msd\msd_u\exe\main_msd.hex \
337 ria\ria_u\app\exe\ria_app.hex \
338 scp\imc_u\app\exe\imc_app.hex \
339 scp\umc_u\app\exe\umc_app.hex \
340 scp\msc_u\app\exe\msc_app.hex \
341 uip\uip_u\exe\main_uip.hex \
342 uis\uis_u\exe\main_uis.hex \
343 vsd\tvd_u\app\exe\tvd_app.hex \
344 vsd\vsd_u\app\exe\vsn_app.hex
345
346 MNET_ADDITIONAL_SUBDIRS = \
347 ..\obj \
348 ..\exe
349
350 MNET_SRC_ARCHIVES = \
351 a5v \
352 cmv \
353 c_v \
354 dcv \
355 dev \
356 h_v \
357 mav \
358 inv \
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 95 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
359 lnv \
360 s_v
361
362 #
363 # Optionally, other PVCS archives are retrieved into the corresponding director
y
364 # This occurs on a node-by-node basis
365 #
366
367 # Additional MSC directories for library archives
368 MSC_OTHER_ARCHIVE_SUBDIRS = scp\msc_u\app\pcm\exe \
369 scp\msc_u\app\roselib\exe
370 MSC_OTHER_ARCHIVES = liv
371
372
373 ###############################################################################
#
374 #
375 # Mnet Loader build macros
376 #
377
378 ###############################################################################
#
379 #
380 # This defines the Mnet Loader target directory and target files to be copied
381 #
382
383 MNET_LOADER_SHARED_NODES = $(MNET_SHARED_NODES)
384
385 MNET_LOADER_SRC_ARCHIVES = $(MNET_SRC_ARCHIVES)
386
387
388 # For ease of maintenance, these dirs/files are in alphabetical sequence
389 MNET_LOADER_NODES = \
390 ria\ria_u\ldr\src\ria_ldr.mak \
391 scp\imc_u\ldr\src\imc_ldr.mak \
392 scp\umc_u\ldr\src\umc_ldr.mak \
393 scp\msc_u\ldr\src\msc_ldr.mak \
394 vsd\tvd_u\ldr\src\tvd_ldr.mak \
395 vsd\vsd_u\ldr\src\vsn_ldr.mak
396
397
398 ###############################################################################
#
399 #
400 # This defines the Mnet Loader target directory and target files to be copied
401 #
402
403 MNET_LOADER_TARGET_DIRECTORY = $(STANDARD_TARGET_DIRECTORY)
404
405 # Note: these targets must be kept in sync with makefiles above!
406 MNET_LOADER_TARGETS = \
407 ria\ria_u\ldr\exe\ria_ldr.hex \
408 scp\imc_u\ldr\exe\imc_ldr.hex \
409 scp\umc_u\ldr\exe\umc_ldr.hex \
410 scp\msc_u\ldr\exe\msc_ldr.hex \
411 vsd\tvd_u\ldr\exe\tvd_ldr.hex \
412 vsd\vsd_u\ldr\exe\vsn_ldr.hex \
413
414
415 ###############################################################################
#
416 #
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 96 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
417 # DSP macros
418 #
419 DSP_SHARED_NODES = \
420 scp\dsp\shared\include \
421 scp\dsp\shared\src
422
423 CTP_SHARED_NODES = \
424 scp\dsp\ctp\shared\include \
425 scp\dsp\ctp\shared\src
426
427 DSP_NODES = \
428 scp\dsp\ce\src\kernel\ecm\src\ecm.mak \
429 scp\dsp\ce\src\kernel\mtm\src\mtm.mak \
430 scp\dsp\ce\src\kernel\psm\src\psm.mak \
431 scp\dsp\ctp\app\src\ctp.mak
432
433
434 ###############################################################################
#
435 #
436 # This defined the target directory and target files to be copied
437 #
438 DSP_TARGET_DIRECTORY = $(STANDARD_TARGET_DIRECTORY)
439
440 # Note: these targets must be kept in sync with makefiles above!
441 DSP_TARGETS = \
442 scp\dsp\ce\src\kernel\ecm\exe\ce_ecm.ldr \
443 scp\dsp\ce\src\kernel\mtm\exe\ce_mtm.ldr \
444 scp\dsp\ce\src\kernel\psm\exe\ce_psm.ldr \
445 scp\dsp\ctp\app\exe\ctp.txt
446
447
448 DSP_ADDITIONAL_SUBDIRS = \
449 ..\obj \
450 ..\exe
451
452 DSP_SRC_ARCHIVES = \
453 acv \
454 c_v \
455 h_v \
456 mav \
457 s_v
458
459 CE_SHARED_NODES = \
460 scp\dsp\ce \
461 scp\dsp\ce\include \
462 scp\dsp\ce\src \
463 scp\dsp\ce\src\kernel \
464 scp\dsp\ce\src\kernel\autogen \
465 scp\dsp\ce\src\kernel\shared\include \
466 scp\dsp\ce\src\kernel\shared\src
467
468 #
469 # Optionally, other PVCS archives are retrieved into the corresponding director
y
470 # This occurs on a node-by-node basis
471 #
472 ECM_OTHER_ARCHIVE_SUBDIRS = $(CE_SHARED_NODES) \
473 scp\dsp\ce\src\kernel\ecm\include
474 ECM_OTHER_ARCHIVES = $(DSP_SRC_ARCHIVES)
475
476 MTM_OTHER_ARCHIVE_SUBDIRS = $(CE_SHARED_NODES) \
477 scp\dsp\ce\src\kernel\mtm\include
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 97 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
478 MTM_OTHER_ARCHIVES = $(DSP_SRC_ARCHIVES)
479
480 PSM_OTHER_ARCHIVE_SUBDIRS = $(CE_SHARED_NODES) \
481 scp\dsp\ce\src\kernel\psm\include
482 PSM_OTHER_ARCHIVES = $(DSP_SRC_ARCHIVES)
483
484 CTP_OTHER_ARCHIVE_SUBDIRS = $(CTP_SHARED_NODES) \
485 scp\dsp\ctp\app\include \
486 scp\dsp\ctp\app\middleman\include \
487 scp\dsp\ctp\app\middleman\src
488 CTP_OTHER_ARCHIVES = $(DSP_SRC_ARCHIVES)
489
490
491 #
492 # Optionally, other PVCS archives are retrieved into the corresponding director
y
493 # This occurs on a node-by-node basis
494 #
495 # FOR CES: scp/dsp/ce
496 DSP_OTHER_ARCHIVE_SUBDIR1 = ..\..\..\..
497
498 DSP_OTHER_ARCHIVES1 = \
499 ldv \
500 DXv
501
502 # FOR CTP APP: scp/dsp/ctp/app
503 DSP_OTHER_ARCHIVE_SUBDIR2 = ..\
504
505 DSP_OTHER_ARCHIVES2 = \
506 ldv
507
508 ###############################################################################
#
509 #
510 # DSP Loader build macros
511 #
512
513 ###############################################################################
#
514 #
515 # This defines the Mnet Loader target directory and target files to be copied
516 #
517
518 DSP_LOADER_SHARED_NODES = \
519 $(DSP_SHARED_NODES) \
520 $(CTP_SHARED_NODES)
521
522 DSP_LOADER_SRC_ARCHIVES = $(DSP_SRC_ARCHIVES)
523
524
525 DSP_LOADER_NODES = \
526 scp\dsp\ctp\ldr\src\ctp_ldr.mak
527
528
529 #
530 # Optionally, other PVCS archives are retrieved into the corresponding director
y
531 # This occurs on a node-by-node basis
532 #
533 CTP_LDR_OTHER_ARCHIVE_SUBDIRS = scp\dsp\ctp\ldr\include
534
535 CTP_LDR_OTHER_ARCHIVES = \
536 h_v
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 98 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
537 #
538 # Optionally, other PVCS archives are retrieved into the corresponding director
y
539 # This occurs on a node-by-node basis
540 #
541 # For CTP_LDR: scp\dsp\ctp\ldr
542 DSP_LOADER_OTHER_ARCHIVE_SUBDIR1 = ..\
543
544 DSP_LOADER_OTHER_ARCHIVES1 = \
545 ldv
546
547 ###############################################################################
#
548 #
549 # This defines the Mnet Loader target directory and target files to be copied
550 #
551
552 DSP_LOADER_TARGET_DIRECTORY = $(STANDARD_TARGET_DIRECTORY)
553
554 # Note: these targets must be kept in sync with makefiles above!
555 DSP_LOADER_TARGETS = \
556 scp\dsp\ctp\ldr\exe\ctp_ldr.dxe
557
558
559 ###############################################################################
#
560 #
561 # Monitor DSP macros
562 #
563 MDSP_SHARED_NODES =
564
565 MDSP_NODES = \
566 msd\dsp\dafd\src\dafd.mak
567
568 ###############################################################################
#
569 #
570 # This defined the target directory and target files to be copied
571 #
572 MDSP_TARGET_DIRECTORY = $(STANDARD_TARGET_DIRECTORY)
573
574 # Note: these targets must be kept in sync with makefiles above!
575 MDSP_TARGETS = \
576 msd\dsp\dafd\exe\dafd.s3
577
578 MDSP_ADDITIONAL_SUBDIRS = \
579 ..\obj \
580 ..\exe
581
582 MDSP_SRC_ARCHIVES = \
583 dsv \
584 mav \
585 h_v \
586 mvk \
587 syv
588
589
590 ###############################################################################
#
591 #
592 # Monitor DSP Loader build macros
593 #
594
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 99 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
595 ###############################################################################
#
596 #
597 # This defines the Mnet Loader target directory and target files to be copied
598 #
599
600 MDSP_LOADER_SHARED_NODES =
601
602 MDSP_LOADER_SHARED_SRC_ARCHIVES =
603
604 MDSP_LOADER_NODES =
605
606
607 ###############################################################################
#
608 #
609 # This defines the Mnet Loader target directory and target files to be copied
610 #
611
612 MDSP_LOADER_TARGET_DIRECTORY = $(STANDARD_TARGET_DIRECTORY)
613
614 MDSP_LOADER_TARGETS =
615
616
617 ###############################################################################
#
618 #
619 # LAPTOP macros
620 #
621 LAPTOP_SHARED_NODES = \
622 laptop\shared\src \
623 laptop\apps\shared\src
624
625 # NOTE: The USBDLL is used for building the Laptop Apps
626 # Therefore, insure that this DLL is the first item in the list below
627 #
628 # NOTE: For LAPTOP, CfgBuilder must be built before CfgLoader
629 # Make sure that this macro lists CfgBuilder BEFORE CfgLoader
630 #
631 # NOTE: Mex files are dependent on the CfgLoader, UsbDll & SupervisorLib
632 # Make sure that they are built last
633
634 LAPTOP_NODES = \
635 laptop\UsbDll\src\UsbDll.mak \
636 laptop\apps\Configuration\src\ConfigurationApp.mak \
637 laptop\apps\Download\src\DownloadApp.mak \
638 laptop\apps\Maintenance\src\MaintenanceApp.mak \
639 laptop\apps\Startup\src\StartupApp.mak \
640 laptop\LdrBldr\CfgBuilder\src\CfgBuilder.mak \
641 laptop\LdrBldr\CfgLoader\src\CfgLoader.mak \
642 laptop\apps\SupervisorLib\src\SupervisorLib.mak \
643 laptop\mex\UsbDll\src\MexUsbDll.mak \
644 laptop\mex\CfgLdrDll\src\MexCfgLdr.mak
645
646 ###############################################################################
#
647 #
648 # This defined the target/library directories and target/library files to be co
pied
649 #
650 # LAPTOP has individual directories for each target type, see below!
651 #LAPTOP_TARGET_DIRECTORY =
652 #LAPTOP_TARGETS =
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 100 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
653
654 # LAPTOP DLL TARGETS:
655 LAPTOP_DLL_TARGETS = laptop\UsbDll\exe\UsbDll.dll \
656 laptop\UsbDll\src\UsbDll.ini \
657 laptop\LdrBldr\CfgLoader\exe\CfgLoader.dll \
658 laptop\LdrBldr\CfgLoader\src\CfgLoader.ini
659
660 LAPTOP_DLL_TARGET_DIRECTORY = $(TARGET_ROOT)\LAPTOP\RuntimeDLLs
661
662 # LAPTOP APPLICATION TARGETS:
663 LAPTOP_APP_NODES = Configuration \
664 Download \
665 Maintenance \
666 Startup
667 LAPTOP_APP_TARGET_DIRECTORIES =
668 % Foreach appnode in $(LAPTOP_APP_NODES)
669 %Set LAPTOP_APP_TARGET_DIRECTORIES += $(TARGET_ROOT)\LAPTOP\Apps\$(appnode)
670 % Endfor
671 LAPTOP_APP_TARGET_EXTENSIONS = *.exe \
672 *.uir
673
674 # LAPTOP LIBRARY TARGETS:
675 LAPTOP_LIBRARY_DIRECTORY = $(TARGET_ROOT)\LAPTOP\Include
676 LAPTOP_LIBRARIES = \
677 laptop\UsbDll\exe\UsbDll.lib \
678 laptop\LdrBldr\CfgLoader\exe\CfgLoader.lib \
679 laptop\apps\SupervisorLib\exe\SupervisorLib.lib \
680 laptop\apps\SupervisorLib\src\SupervisorLib.ini
681
682 # LAPTOP MEX TARGETS:
683 LAPTOP_MEX_TARGET_DIRECTORY1 = $(TARGET_ROOT)\LAPTOP\MexInterface\CfgLdrDLL\exe
684 LAPTOP_MEX_TARGETS1 = laptop\mex\CfgLdrDLL\exe\*.dll \
685 laptop\mex\CfgLdrDLL\exe\*.m \
686 laptop\mex\CfgLdrDll\src\MexCfgLdr.ini
687
688 LAPTOP_MEX_TARGET_DIRECTORY2 = $(TARGET_ROOT)\LAPTOP\MexInterface\USBDLL\exe
689 LAPTOP_MEX_TARGETS2 = laptop\mex\USBDLL\exe\*.dll \
690 laptop\mex\USBDLL\exe\*.m \
691 laptop\mex\USBDLL\src\MexUsbDll.ini
692
693 LAPTOP_MEX_TARGET_DIRECTORIES =
694 %Foreach dirnum in 1 2 3 4 5 6 7 8 9 10
695 %Set tempDir = LAPTOP_MEX_TARGET_DIRECTORY$(dirnum)
696 %If %Defined($(tempDir))
697 %Set LAPTOP_MEX_TARGET_DIRECTORIES += $($(tempDir))
698 %Endif
699 %Endfor
700
701
702 LAPTOP_ADDITIONAL_SUBDIRS = \
703 ..\obj \
704 ..\exe
705
706 LAPTOP_SRC_ARCHIVES = \
707 c_v \
708 cpv \
709 dev \
710 mav \
711 h_v \
712 icv \
713 inv \
714 rcv
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 101 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
715
716 #
717 # Optionally, other PVCS archives are retrieved into the corresponding director
y
718 # This occurs on a node-by-node basis
719 #
720 # m_v for mex DLL help files, uiv for CVI App uir's
721 LAPTOP_OTHER_ARCHIVE_SUBDIR1 = \
722 ..\exe
723
724 LAPTOP_OTHER_ARCHIVES1 = \
725 m_v \
726 uiv
727
728 #
729 # Other PVCS archives are retrieved into the corresponding directory per Subsys
tem
730 # NOTE: The VXDs are no longer used
731 LAPTOP_OTHER_FILES =
732
733
734 #
735 # If additional subdirectories and archives are needed for a given node
736 # Then they must be defined here
737 #
738 CFGLOADER_OTHER_ARCHIVE_SUBDIRS = \
739 laptop\LdrBldr\CfgLoader\tmpl \
740 scp\dsp\ctp\app\middleman\include
741 CFGLOADER_OTHER_ARCHIVES = \
742 lsv \
743 tmvl \
744 h_v
745
746 SUPERVISORLIB_OTHER_ARCHIVE_SUBDIRS = \
747 laptop\apps\SupervisorLib\include
748 SUPERVISORLIB_OTHER_ARCHIVES = \
749 h_v
750
751 MEXUSBDLL_OTHER_ARCHIVE_SUBDIRS = \
752 laptop\apps\SupervisorLib\include
753 MEXUSBDLL_OTHER_ARCHIVES = \
754 h_v
755
756 # MEXDAVINCI IS CURRENTLY NOT USED-RENAME WHEN READY!! (GKT 4/5/02)
757 #MEXDAVINCI_OTHER_ARCHIVE_SUBDIRS = laptop\mex\Decls
758 #MEXDAVINCI_OTHER_ARCHIVES = \
759 # m_v
760
761 ###############################################################################
#
762 #
763 # Additional target directories appear here
764 # (more than one directory may be provided)
765 #
766
767 ADDL_TARGET_DIRECTORIES =
768 #$(TARGET_ROOT)\HardDisk\MfgBin\maintutil
769
770
771 ###############################################################################
772
773 #
774 # "Release" build must do the following:
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 102 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
775 # - Verify that the required Version number macros specified
776 # and valid.
777 # - Make sure that the proper build type (EMBEDDED, LOADER or LAPTOP)
778 # is specified and valid
779 # - For each system shared sub-directory
780 # - Create the shared directory
781 # - Retrieve all the shared directory archives
782 # - If EMBEDDED Build:
783 # - For each Mnet shared sub-directory
784 # - Create the shared directory
785 # - Retrieve all the shared directory archives
786 # - For each Mnet node sub-directory
787 # - Create the Mnet nodes sub-directory
788 # - Get the associated archives
789 # - Build the node
790 # - For each DSP shared sub-directory
791 # - Create the shared directory
792 # - Retrieve all the shared directory archives
793 # - For each DSP node sub-directory
794 # - Create the DSP nodes sub-directory
795 # - Get the associated archives
796 # - Build the node
797 # - For each Monitor DSP shared sub-directory
798 # - Create the shared directory
799 # - Retrieve all the shared directory archives
800 # - For each Monitor DSP node sub-directory
801 # - Create the Monitor DSP nodes sub-directory
802 # - Get the associated archives
803 # - Build the node
804 # - Else, If LOADER Build:
805 # - For each Mnet Loader shared sub-directory
806 # - Create the shared directory
807 # - Retrieve all the shared directory archives
808 # - For each Mnet Loader node sub-directory
809 # - Create the Mnet nodes sub-directory
810 # - Get the associated archives
811 # - Build the node
812 # - For each DSP Loader shared sub-directory
813 # - Create the shared directory
814 # - Retrieve all the shared directory archives
815 # - For each DSP Loader node sub-directory
816 # - Create the DSP nodes sub-directory
817 # - Get the associated archives
818 # - Build the node
819 # - For each Monitor DSP Loader shared sub-directory
820 # - Create the shared directory
821 # - Retrieve all the shared directory archives
822 # - For each Monitor DSP Loader node sub-directory
823 # - Create the Monitor DSP nodes sub-directory
824 # - Get the associated archives
825 # - Build the node
826 # - Otherwise, This is a LATOP Build and the following is performed:
827 # - For each Laptop shared sub-directory
828 # - Create the shared directory
829 # - Retrieve all the shared directory archives
830 # - For each Laptop node sub-directory
831 # - Create the Laptop nodes sub-directory
832 # - Get the associated archives
833 # - Build the node
834 #
835
836 release:
837 %SetEnv RELEASE=YES
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 103 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
838
839 # Make sure the Build Type is specified and valid
840 %If !%Defined(BUILD_TYPE)
841 %Echo ERROR: Build Type, "BUILD_TYPE" not defined, build terminated
842 %Abort 95
843 %Endif
844
845 %Set BUILD_TYPE = $[Upper,$(BUILD_TYPE)]
846 %If !%Member($(BUILD_TYPE),$(VALID_BUILD_TYPES))
847 %Echo ERROR: Build Type "$(BUILD_TYPE)" invalid, must be one of the fol
lowing:
848 %Foreach bt in $(VALID_BUILD_TYPES)
849 %Echo $(bt)
850 %Endfor
851 %Abort 96
852 %Endif
853
854 # Make sure the Build Version number is defined for the release build
855 %If !%Defined($(BUILD_TYPE)_BUILD_NUM)
856 %Echo ERROR: Build Version Number, "$(BUILD_TYPE)_BUILD_NUM" not define
d, build terminated
857 %Abort 90
858 %Endif
859 %Set THIS_BUILD_NUM=$($(BUILD_TYPE)_BUILD_NUM)
860
861 # Validate the Build version number to a certain extent
862 # FORMAT: A4X.CCC or D4x.CCC
863 %If "$[Clip,$(THIS_BUILD_NUM),4,4]" != "."
864 %Echo ERROR: Build Version, "$(THIS_BUILD_NUM)" format invalid, build t
erminated
865 %Abort 91
866 %Endif
867
868 # Make sure the Software Version number is defined for the release build
869 %If !%Defined($(BUILD_TYPE)_SWRLSE_VER)
870 %Echo ERROR: Software Release Version "$(BUILD_TYPE)_SWRLSE_VER" not de
fined, build terminated
871 %Abort 92
872 %Endif
873 %Set THIS_SWRLSE_VER=$($(BUILD_TYPE)_SWRLSE_VER)
874
875 # If LAPTOP build, make sure EMBEDDED_BUILD_NUM is also defined!
876 %If "$(BUILD_TYPE)" == "LAPTOP"
877 %If !%Defined(EMBEDDED_BUILD_NUM)
878 %Echo ERROR: Laptop build requires EMBEDDED_BUILD_NUM to be defined
as well!
879 Abort 102
880 %Endif
881 %Endif
882
883 # Validate the Software Release version number to a certain extent
884 # & make sure the Software Release version is compatable with Build #version
885 %If "$(BUILD_TYPE)" == "LOADER"
886 # FORMAT: LL.A4X.CCC
887 %If "$[Clip,$(THIS_SWRLSE_VER),3,3]" != "." || "$[Clip,$(THIS_SWRLSE_VE
R),7,7]" != "."
888 %Echo ERROR: Loader SW Release version, "$(THIS_SWRLSE_VER)" format
invalid, build terminated
889 %Abort 93
890 %Endif
891
892 # Make sure the Software Release version is compatable with Build Numbe
r
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 104 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
893 %If "$[Clip,$(THIS_BUILD_NUM),1,7]" != "$[Clip,$(THIS_SWRLSE_VER),4,10]
"
894 %Echo ERROR: Incompatable versions, build terminated
895 %Echo Loader Software Release version is "$(THIS_SWRLSE_VER)"
896 %Echo Loader Software Build version is "$(THIS_BUILD_NUM)"
897 %Abort 94
898 %Endif
899
900 %Elseif "$(BUILD_TYPE)" == "EMBEDDED"
901 # FORMAT: LL.A4X.CCC.DDD
902 %If "$[Clip,$(THIS_SWRLSE_VER),3,3]" != "." || "$[Clip,$(THIS_SWRLSE_VE
R),7,7]" != "." || "$[Clip,$(THIS_SWRLSE_VER),11,11]" != "."
903 %Echo ERROR: Embedded SW Release version, "$(THIS_SWRLSE_VER)" form
at invalid, build terminated
904 %Abort 93
905 %Endif
906
907 # Make sure the Software Release version is compatable with Build Numbe
r
908 %If "$[Clip,$(THIS_BUILD_NUM),1,7]" != "$[Clip,$(THIS_SWRLSE_VER),4,10]
"
909 %Echo ERROR: Incompatable versions, build terminated
910 %Echo Embedded Software Release version is "$(THIS_SWRLSE_VER)"
911 %Echo Embedded Software Build version is "$(THIS_BUILD_NUM)"
912 %Abort 94
913 %Endif
914
915 %Elseif "$(BUILD_TYPE)" == "LAPTOP"
916 # FORMAT: LL.A4X.CCC.DDD.EEE
917 %If "$[Clip,$(THIS_SWRLSE_VER),3,3]" != "." || "$[Clip,$(THIS_SWRLSE_VE
R),7,7]" != "." || "$[Clip,$(THIS_SWRLSE_VER),11,11]" != "." || "$[Clip,$(THIS_
SWRLSE_VER),15,15]" != "."
918 %Echo ERROR: Laptop SW Release version, "$(THIS_SWRLSE_VER)" format
invalid, build terminated
919 %Abort 93
920 %Endif
921
922 # Make sure the Software Release version is compatable with Build Numbe
r
923 %If "$[Clip,$(THIS_BUILD_NUM),5,7]" != "$[Clip,$(THIS_SWRLSE_VER),12,14
]"
924 %Echo ERROR: Incompatable versions, build terminated
925 %Echo Laptop Software Release version is "$(THIS_SWRLSE_VER)"
926 %Echo Laptop Software Build version is "$(THIS_BUILD_NUM)"
927 %Abort 94
928 %Endif
929
930 # Make sure the Embedded Software Build version is compatable with the
Laptop Release Number
931 %If "$[Clip,$(EMBEDDED_BUILD_NUM),1,7]" != "$[Clip,$(THIS_SWRLSE_VER),4
,10]"
932 %Echo ERROR: Incompatable versions, build terminated
933 %Echo Laptop Software Release version is "$(THIS_SWRLSE_VER)"
934 %Echo Embedded Software Build version is "$(EMBEDDED_BUILD_NUM)"
935 %Abort 103
936 %Endif
937 %Endif
938
939 # Build the System Shared directory tree
940 %Foreach sharedDir in $(SYSTEM_SHARED_NODES)
941 $(SILENT)%Set DIR=$(BUILD_ROOT)\$(sharedDir)
942 %Do build_dir_tree
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 105 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
943 %Endfor
944
945
946 ######################################################################
947 #
948 # Create Subsystem Types based on the BUILD_TYPE
949 #
950 %If "$(BUILD_TYPE)" == "EMBEDDED"
951 %Set SUBSYS_TYPES = MNET DSP MDSP
952 %Set TARGET_DIRS = \
953 $(MNET_TARGET_DIRECTORY) \
954 $(DSP_TARGET_DIRECTORY) \
955 $(MDSP_TARGET_DIRECTORY) \
956 $(RELEASE_TARGET_DIRECTORY)
957
958 %Elseif "$(BUILD_TYPE)" == "LOADER"
959 %Set SUBSYS_TYPES = MNET_LOADER DSP_LOADER MDSP_LOADER
960 %Set TARGET_DIRS = \
961 $(MNET_LOADER_TARGET_DIRECTORY) \
962 $(DSP_LOADER_TARGET_DIRECTORY) \
963 $(MDSP_LOADER_TARGET_DIRECTORY) \
964 $(RELEASE_TARGET_DIRECTORY)
965
966 %Else
967 %Set SUBSYS_TYPES = LAPTOP
968 %Set TARGET_DIRS = \
969 $(LAPTOP_DLL_TARGET_DIRECTORY) \
970 $(LAPTOP_LIBRARY_DIRECTORY) \
971 $(LAPTOP_MEX_TARGET_DIRECTORIES) \
972 $(LAPTOP_APP_TARGET_DIRECTORIES) \
973 $(RELEASE_TARGET_DIRECTORY)
974 %Endif
975
976 ######################################################################
977 #
978 # Process Mnet, DSPnet, Laptop and Monitor-DSP nodes in that order
979 #
980 %Foreach SUBSYS in $(SUBSYS_TYPES)
981 %Do Process_Subsystem
982 %Endfor
983
984
985 ###############################################################################
#
986 # If control gets here, then the build completed without error
987 #
988 # Post-processing consists of copying the targets to the appropriate directorie
s
989 #
990
991 # Build the Target directory trees
992 %Foreach targetDir in $(TARGET_DIRS) $(ADDL_TARGET_DIRECTORIES)
993
994 # Delete any files that exist in the target directories by removing target dire
ctories
995 %If %Exists($(targetDir))
996 $(SILENT)$(DELTREE) $(targetDir)
997 %Endif
998 $(SILENT)%Set DIR=$(targetDir)
999 %Do build_dir_tree
1000 %Endfor
1001
1002 # Copy target files for all subsystems (that have defined target dirs)
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 106 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
1003 %Foreach SUBSYS in $(SUBSYS_TYPES)
1004 %If %Defined($(SUBSYS)_TARGETS)
1005 %Foreach targetFile in $($(SUBSYS)_TARGETS)
1006 $(SILENT)copy $(BUILD_ROOT)\$(targetFile) $($(SUBSYS)_TARGET_DI
RECTORY)
1007 %Endfor
1008 %Endif
1009 %Endfor
1010
1011 ###############################################################################
#
1012 #
1013 # Special processing for Laptop Build only
1014 #
1015
1016 %If "$(BUILD_TYPE)" == "LAPTOP"
1017
1018 # Laptop DLL targets
1019 %Foreach dlltarget in $(LAPTOP_DLL_TARGETS)
1020 $(SILENT)copy $(BUILD_ROOT)\$(dlltarget) $(LAPTOP_DLL_TARGET_DIRECT
ORY)
1021 %Endfor
1022
1023 # Laptop Application executables and uirs
1024 %Foreach appnode in $(LAPTOP_APP_NODES)
1025 %Foreach targetFile in $(LAPTOP_APP_TARGET_EXTENSIONS)
1026 $(SILENT)copy $(BUILD_ROOT)\laptop\apps\$(appnode)\exe\$(target
File) $(TARGET_ROOT)\LAPTOP\Apps\$(appnode)
1027 %Endfor
1028 %Endfor
1029
1030 # Laptop Library files
1031 %Foreach targetFile in $(LAPTOP_LIBRARIES)
1032 $(SILENT)copy $(BUILD_ROOT)\$(targetFile) $(LAPTOP_LIBRARY_DIRECTOR
Y)
1033 %Endfor
1034
1035 # Mex Files
1036 %Foreach dirnum in 1 2 3 4 5 6 7 8 9 10
1037 %Set tempDir = LAPTOP_MEX_TARGET_DIRECTORY$(dirnum)
1038 %If %Defined($(tempDir))
1039 $(SILENT)%Set targetDir = $($(tempDir))
1040 %Foreach targetFile in $(LAPTOP_MEX_TARGETS$(dirnum))
1041 $(SILENT)copy $(BUILD_ROOT)\$(targetFile) $(targetDir)
1042 %Endfor
1043 %Endif
1044 %Endfor
1045
1046 %Endif
1047
1048 ###############################################################################
#
1049 #
1050 # At this point, build the Software Build and Software Release INI files
1051 #
1052 $(SILENT)%Set DIR=$(BUILD_REVISION_INI_TARGET_DIR)
1053 %Do build_dir_tree
1054
1055 $(SILENT)%Set iniFile=$(BUILD_REVISION_INI_TARGET_DIR)\$(BUILD_REVISION
_INI_FILE)
1056 %If %Exists($(iniFile))
1057 $(SILENT)$(ATTRIB) -r $(iniFile)
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 107 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
1058 $(SILENT)del $(iniFile)
1059 %Endif
1060 $(SILENT)echo [Revision] > $(iniFile)
1061 $(SILENT)echo RevisionLevel=$(THIS_BUILD_NUM) >> $(iniFile)
1062 $(SILENT)$(CERTIFY) $(iniFile)
1063
1064 $(SILENT)%Set DIR=$(RELEASE_REVISION_INI_TARGET_DIR)
1065 %Do build_dir_tree
1066
1067 $(SILENT)%Set iniFile=$(RELEASE_REVISION_INI_TARGET_DIR)\$(RELEASE_REVI
SION_INI_FILE)
1068 %If %Exists($(iniFile))
1069 $(SILENT)$(ATTRIB) -r $(iniFile)
1070 $(SILENT)del $(iniFile)
1071 %Endif
1072 $(SILENT)echo [Revision] > $(iniFile)
1073 $(SILENT)echo RevisionLevel=$(THIS_SWRLSE_VER) >> $(iniFile)
1074 # Also add embedded build number ini for laptop builds
1075 %If "$(BUILD_TYPE)" == "LAPTOP"
1076 $(SILENT)echo >> $(initFile)
1077 $(SILENT)echo [EmbeddedBuild] >> $(iniFile)
1078 $(SILENT)echo EmbeddedBuild=$(EMBEDDED_BUILD_NUM) >> $(iniFile)
1079 %Endif
1080 $(SILENT)$(CERTIFY) $(iniFile)
1081
1082 ###############################################################################
#
1083 #
1084 # At this point, Generate the build version output file listing all versions
1085 # (the embedded one is used by the DownloadApp)
1086
1087 # Skip for laptop nodes, they aren't consistent enough for this
1088 %If "$(BUILD_TYPE)" != "LAPTOP"
1089 %Echo Generating Version Number File
1090
1091 $(SILENT)%Set DIR=$(STANDARD_TARGET_DIRECTORY)
1092 %Do build_dir_tree
1093
1094 $(SILENT)%Set verFile=$(STANDARD_TARGET_DIRECTORY)\$(BUILD_TYPE)_Ve
rsions.txt
1095 %If %Exists($(verFile))
1096 $(SILENT)$(ATTRIB) -r $(verFile)
1097 $(SILENT)del $(verFile)
1098 %Endif
1099 $(SILENT)echo RELEASE $(THIS_SWRLSE_VER) >> $(verFile)
1100 $(SILENT)echo BUILD $(THIS_BUILD_NUM) >> $(verFile)
1101 # Loop over subsystems
1102 %Foreach subSys in $(SUBSYS_TYPES)
1103
1104 # Loop over subsystem targets, saving names
1105 $(SILENT)%Set tcntr = 0
1106 %Foreach target in $($(subSys)_TARGETS)
1107 $(SILENT)%Set tcntr = $[Expr, $(tcntr) + 1]
1108 #$(SILENT)%Set targetPath = ..\$[Base,$($(subSys)_TARGET_DI
RECTORY)]
1109 $(SILENT)%Set targetNum$(tcntr) = $[Filename,,$[Base,$(targ
et)],$[Extension,$(target)]]
1110 %Endfor
1111
1112 # Loop over subsystem nodes
1113 $(SILENT)%Set ncntr = 0
1114 %Foreach node in $(ALL_$(subSys)_NODES)
1115 $(SILENT)%Set ncntr = $[Expr, $(ncntr) + 1]
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 108 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
1116 $(SILENT)%Set nodeName=$[Upper,$[Base,$(node)]]
1117 %If %defined($(nodeName)_VERSION_LABEL)
1118 $(SILENT)%Set versionNum=$($(nodeName)_VERSION_LABEL)
1119 %Else
1120 $(SILENT)%Set versionNum=TOP_OF_ARCHIVE
1121 %Endif
1122 $(SILENT)echo $(nodeName) $(versionNum) $(targetNum$(n
cntr)) >> $(verFile)
1123 %Endfor
1124
1125 # Now make sure the number of nodes and targets match!
1126 %If $(tcntr) != $(ncntr)
1127 %Echo The number of nodes $(ncntr) and targets $(tcntr) do
not match
1128 %Echo for subsystem $(subSys) preventing version file gener
ation.
1129 %Abort 104
1130 %Endif
1131
1132 %Endfor
1133 $(SILENT)$(CERTIFY) $(verFile)
1134 %Endif
1135
1136
1137 ######################################################################
1138 # Build directory for shared files and get files from PVCS
1139 # Technique is similar to that for System Shared files (see above)
1140 #
1141 Process_Subsystem:
1142 # Save ALL sub system nodes for later use since restart can clear list!
1143 $(SILENT)%Set ALL_$(SUBSYS)_NODES = $($(SUBSYS)_NODES)
1144
1145 %If !%Defined(SKIP_$(SUBSYS)_NODES)
1146
1147 %If "$(Restart_Done)" == "0"
1148 $(SILENT)%Set MATCH_NODES =
1149 %Foreach Node in $($(SUBSYS)_NODES)
1150 $(SILENT)%Set MATCH_NODES += $[Base,$(Node)]
1151 %Endfor
1152
1153 %If %Defined(RESTART)
1154 %Echo Attempting RESTART with node $(RESTART)
1155 %If %Member($(RESTART),$(MATCH_NODES))
1156 $(SILENT)%Set matchNodes =
1157 $(SILENT)%Set nodeFound = 0
1158 %Foreach node in $($(SUBSYS)_NODES)
1159 %If "$(nodeFound)" == "1"
1160 $(SILENT)%Set matchNodes += $(node)
1161 %Elseif $[Upper,$(RESTART)] == $[Upper,$[Base,$(node)]]
1162 $(SILENT)%Set matchNodes = $(node)
1163 $(SILENT)%Set nodeFound = 1
1164 %Endif
1165 %Endfor
1166 $(SILENT)%Set $(SUBSYS)_NODES = $(matchNodes)
1167 $(SILENT)%Set Restart_Done = 1
1168 %Else
1169 $(SILENT)%Set $(SUBSYS)_NODES =
1170 %Endif
1171 %Endif
1172 %Endif
1173
1174 %If "$($(SUBSYS)_SHARED_NODES)" != ""
1175 %Echo Building Shared Directory tree
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 109 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
1176 %Foreach sharedDir in $($(SUBSYS)_SHARED_NODES)
1177 %If !%Exists($(sharedDir))
1178 $(SILENT)%Set DIR=$(BUILD_ROOT)\$(sharedDir)
1179 %Do build_dir_tree
1180 %Endif
1181 %Endfor
1182 %Endif
1183
1184 # For each node, build directory tree, get files from PVCS, and do a program bu
ild
1185 # This first section is very similar to the technique used for Shared directori
es/files
1186 %Foreach nodeMakefile in $($(SUBSYS)_NODES)
1187 %Echo Building Directory Tree for $(nodeMakefile)
1188 $(SILENT)%Set nodeDir = $[Directory,$(nodeMakefile)]
1189
1190 # Build additional node specific directories
1191 $(SILENT)%Set Nodename = $[Upper,$[Base,$(nodeMakefile)]]
1192 %If %Defined($(Nodename)_OTHER_ARCHIVE_SUBDIRS)
1193 %Foreach addlDir in $($(Nodename)_OTHER_ARCHIVE_SUBDIRS)
1194 $(SILENT)%Set nodeOperationalDir = $(BUILD_ROOT)\$(addlDir)
1195 %If %Exists($(nodeOperationalDir))
1196 # GKT 04/11/02 Disabled delete of directory tree, instead d
elete files!
1197 # Was causing loss of kernel targets during other target bu
ilds!
1198 #$(SILENT)$(DELTREE) $(nodeOperationalDir)
1199 $(SILENT)(Ignore)del /F /Q $(nodeOperationalDir)\*.*
1200 %Endif
1201 $(SILENT)%Set DIR=$(nodeOperationalDir)
1202 %Do build_dir_tree
1203 %Endfor
1204 %Endif
1205
1206 # Build source directory (after additional - assume lower in path!)
1207 $(SILENT)%Set DIR=$(BUILD_ROOT)\$(nodeDir)
1208 %Do build_dir_tree
1209
1210 # Build any other directories that are needed (obj and exe)
1211 %Foreach nodeAddlDir in $($(SUBSYS)_ADDITIONAL_SUBDIRS)
1212 $(SILENT)%Set nodeOperationalDir = $(BUILD_ROOT)\$(nodeDir)\$(nodeA
ddlDir)
1213 %If %Exists($(nodeOperationalDir))
1214 $(SILENT)$(DELTREE) $(nodeOperationalDir)
1215 %Endif
1216 $(SILENT)mkdir $(nodeOperationalDir)
1217 %EndFor
1218
1219 #
1220 # Get other files for this subsystem
1221 #
1222 %If %Defined($(SUBSYS)_OTHER_FILES)
1223 %Echo Get Other Subsystem files
1224 %Foreach targetFile in $($(SUBSYS)_OTHER_FILES)
1225 $(SILENT)%Set DIR=$[Directory,$(BUILD_ROOT)\$(targetFile)]
1226 %Do build_dir_tree
1227 $(SILENT)%Set extension = .$[Extension,$(targetFile)]
1228 %Do get_pvcs_extension
1229 $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$[Directory
,$(targetFile)]\$[Base,$(targetFile)].$(pvcsExtension)($(DIR))
1230 %Endfor
1231 %Endif
1232
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 110 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
1233 # Get all PVCS logfiles for this node
1234 %Echo Getting files from PVCS for $(nodeMakefile)
1235 %Do Get_Node_Logfiles
1236
1237 # Now perform the build for the given node
1238 $(SILENT)%Echo Building $(BUILD_ROOT)\$(nodeMakefile)
1239
1240 # Make sure there is no defines.mak, as DEVELOP_ROOT and BUILD_ROOT are inherit
ed from this makefile
1241 %If %Exists($(BUILD_ROOT)\$(nodeDir)\defines.mak)
1242 $(SILENT)$(ATTRIB) -r $(BUILD_ROOT)\$(nodeDir)\defines.mak
1243 $(SILENT)del $(BUILD_ROOT)\$(nodeDir)\defines.mak
1244 %Endif
1245
1246 # Do the build proper
1247 %Cd $(BUILD_ROOT)\$(nodeDir)
1248 %Setenv GETFLAGS=$(GETFLAGS)
1249 %If %Defined(SKIP_LINT_27183_DO_NOT_USE)
1250 %Setenv SKIP_LINT_27183_DO_NOT_USE=Yes
1251 %Endif
1252 %If %Defined(SKIPGET)
1253 %Setenv SKIPGET=Yes
1254 %Endif
1255 $(SILENT)$(_Exe) $(DBG_MKF_FLAGS) $(_FlagsMacros) $(BUILD_ROOT)\$(nodeM
akefile) $(DALL)
1256 $(SILENT)%Set GETFLAGS=$(SAVE_GETFLAGS)
1257
1258 %Endfor
1259
1260 %Endif
1261
1262
1263 ###############################################################################
1264 #
1265 # Explicit target for getting System Shared Directory Files:
1266 # This operation assumes that the shared directory tree is already present
1267 #
1268 get_system_shared_dir:
1269 %Foreach sharedDir in $(SYSTEM_SHARED_NODES)
1270 $(SILENT)%Echo Getting $(BUILD_ROOT)\$(sharedDir) archives
1271 $(SILENT)(Ignore)$(ATTRIB) -r $(BUILD_ROOT)\$(sharedDir)\*.*
1272 $(SILENT)(Ignore)echo y | del $(BUILD_ROOT)\$(sharedDir)\*.*
1273 %Foreach archiveExt in $(SYSTEM_SHARED_SRC_ARCHIVES)
1274 $(SILENT)%Echo Getting *.$(archiveExt) files
1275 $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(sharedDir)\*.
$(archiveExt)($(BUILD_ROOT)\$(sharedDir))
1276 %Endfor
1277 %Endfor
1278
1279
1280 ###############################################################################
1281 #
1282 # Explicit target for getting Mnet Shared Directory Files:
1283 # This operation assumes that the shared directory tree is already present
1284 #
1285 get_mnet_shared_dir:
1286 %Do get_system_shared_dir
1287 %Foreach sharedDir in $(MNET_SHARED_NODES)
1288 $(SILENT)%Echo Getting $(BUILD_ROOT)\$(sharedDir) archives
1289 $(SILENT)(Ignore)$(ATTRIB) -r $(BUILD_ROOT)\$(sharedDir)\*.*
1290 $(SILENT)(Ignore)echo y | del $(BUILD_ROOT)\$(sharedDir)\*.*
1291 %Foreach archiveExt in $(MNET_SRC_ARCHIVES)
1292 $(SILENT)%Echo Getting *.$(archiveExt) files
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 111 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
1293 $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(sharedDir)\*.
$(archiveExt)($(BUILD_ROOT)\$(sharedDir))
1294 %Endfor
1295 %Endfor
1296
1297
1298 ###############################################################################
1299 #
1300 # Explicit target for getting DSP Shared Directory Files:
1301 # This operation assumes that the shared directory tree is already present
1302 #
1303 get_dsp_shared_dir:
1304 %Do get_system_shared_dir
1305 %Foreach sharedDir in $(DSP_SHARED_NODES)
1306 $(SILENT)%Echo Getting $(BUILD_ROOT)\$(sharedDir) archives
1307 $(SILENT)(Ignore)$(ATTRIB) -r $(BUILD_ROOT)\$(sharedDir)\*.*
1308 $(SILENT)(Ignore)echo y | del $(BUILD_ROOT)\$(sharedDir)\*.*
1309 %Foreach archiveExt in $(DSP_SRC_ARCHIVES)
1310 $(SILENT)%Echo Getting *.$(archiveExt) files
1311 $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(sharedDir)\*.
$(archiveExt)($(BUILD_ROOT)\$(sharedDir))
1312 %Endfor
1313 %Endfor
1314
1315
1316 ###############################################################################
1317 #
1318 # Explicit target for getting Laptop Shared Directory Files:
1319 # This operation assumes that the shared directory tree is already present
1320 #
1321 get_laptop_shared_dir:
1322 %Do get_system_shared_dir
1323 %Foreach sharedDir in $(LAPTOP_SHARED_NODES)
1324 $(SILENT)%Echo Getting $(BUILD_ROOT)\$(sharedDir) archives
1325 $(SILENT)(Ignore)$(ATTRIB) -r $(BUILD_ROOT)\$(sharedDir)\*.*
1326 $(SILENT)(Ignore)echo y | del $(BUILD_ROOT)\$(sharedDir)\*.*
1327 %Foreach archiveExt in $(LAPTOP_SRC_ARCHIVES)
1328 $(SILENT)%Echo Getting *.$(archiveExt) files
1329 $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(sharedDir)\*.
$(archiveExt)($(BUILD_ROOT)\$(sharedDir))
1330 %Endfor
1331 %Endfor
1332
1333
1334 ###############################################################################
1335 #
1336 # Explicit target for getting MDSP Shared Directory Files:
1337 # This operation assumes that the shared directory tree is already present
1338 #
1339 get_mdsp_shared_dir:
1340 %Do get_system_shared_dir
1341 %Foreach sharedDir in $(MDSP_SHARED_NODES)
1342 $(SILENT)%Echo Getting $(BUILD_ROOT)\$(sharedDir) archives
1343 $(SILENT)(Ignore)$(ATTRIB) -r $(BUILD_ROOT)\$(sharedDir)\*.*
1344 $(SILENT)(Ignore)echo y | del $(BUILD_ROOT)\$(sharedDir)\*.*
1345 %Foreach archiveExt in $(MDSP_SRC_ARCHIVES)
1346 $(SILENT)%Echo Getting *.$(archiveExt) files
1347 $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(sharedDir)\*.
$(archiveExt)($(BUILD_ROOT)\$(sharedDir))
1348 %Endfor
1349 %Endfor
1350
1351
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 112 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
1352
1353 ###############################################################################
1354 #
1355 # Explicit target for getting Mnet Loader Shared Directory Files:
1356 # This operation assumes that the shared directory tree is already present
1357 #
1358 get_mnet_loader_shared_dir:
1359 %Do get_system_shared_dir
1360 %Foreach sharedDir in $(MNET_LOADER_SHARED_NODES)
1361 $(SILENT)%Echo Getting $(BUILD_ROOT)\$(sharedDir) archives
1362 $(SILENT)(Ignore)$(ATTRIB) -r $(BUILD_ROOT)\$(sharedDir)\*.*
1363 $(SILENT)(Ignore)echo y | del $(BUILD_ROOT)\$(sharedDir)\*.*
1364 %Foreach archiveExt in $(MNET_LOADER_SRC_ARCHIVES)
1365 $(SILENT)%Echo Getting *.$(archiveExt) files
1366 $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(sharedDir)\*.
$(archiveExt)($(BUILD_ROOT)\$(sharedDir))
1367 %Endfor
1368 %Endfor
1369
1370
1371
1372 ###############################################################################
1373 #
1374 # Explicit target for getting DSP Loader Shared Directory Files:
1375 # This operation assumes that the shared directory tree is already present
1376 #
1377 get_dsp_loader_shared_dir:
1378 %Do get_system_shared_dir
1379 %Foreach sharedDir in $(DSP_LOADER_SHARED_NODES)
1380 $(SILENT)%Echo Getting $(BUILD_ROOT)\$(sharedDir) archives
1381 $(SILENT)(Ignore)$(ATTRIB) -r $(BUILD_ROOT)\$(sharedDir)\*.*
1382 $(SILENT)(Ignore)echo y | del $(BUILD_ROOT)\$(sharedDir)\*.*
1383 %Foreach archiveExt in $(DSP_LOADER_SRC_ARCHIVES)
1384 $(SILENT)%Echo Getting *.$(archiveExt) files
1385 $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(sharedDir)\*.
$(archiveExt)($(BUILD_ROOT)\$(sharedDir))
1386 %Endfor
1387 %Endfor
1388
1389
1390
1391
1392 ###############################################################################
1393 #
1394 # Explicit target for getting Mnet Shared Directory Files:
1395 # This operation assumes that the shared directory tree is already present
1396 #
1397 get_mdsp_loader_shared_dir:
1398 %Do get_system_shared_dir
1399 %Foreach sharedDir in $(MDSP_LOADER_SHARED_NODES)
1400 $(SILENT)%Echo Getting $(BUILD_ROOT)\$(sharedDir) archives
1401 $(SILENT)(Ignore)$(ATTRIB) -r $(BUILD_ROOT)\$(sharedDir)\*.*
1402 $(SILENT)(Ignore)echo y | del $(BUILD_ROOT)\$(sharedDir)\*.*
1403 %Foreach archiveExt in $(MDSP_LOADER_SRC_ARCHIVES)
1404 $(SILENT)%Echo Getting *.$(archiveExt) files
1405 $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(sharedDir)\*.
$(archiveExt)($(BUILD_ROOT)\$(sharedDir))
1406 %Endfor
1407 %Endfor
1408
1409 ###############################################################################
1410 #
1411 # Explicit target for getting Node Logfiles given SUBSYS, nodeDir, and Nodename
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 113 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
1412 #
1413 Get_Node_Logfiles:
1414 $(SILENT)%Set SAVE_GETFLAGS=$(GETFLAGS)
1415 $(SILENT)%Set NodeVersion = $(Nodename)_VERSION_LABEL
1416 %If %Defined($(NodeVersion))
1417
1418 # We must GET all shared files affecting the build
1419 %If !%Defined(SKIPGET) || ("$[Upper,$(SKIPGET)]" == "NO")
1420 $(SILENT)%Set PREV_VERSION_LABEL = $(Nodename) $($(NodeVersion)
)
1421 $(SILENT)%Set GETFLAGS += -v"$(PREV_VERSION_LABEL)"
1422 %Setenv GETFLAGS=$(GETFLAGS)
1423 %Do get_$[Lower,$(SUBSYS)]_shared_dir
1424 %Endif
1425 %Else
1426 %If "$(PREV_VERSION_LABEL)" != ""
1427 # Force latest revision of all shared files
1428 $(SILENT)%Set GETFLAGS += -u
1429 %Setenv GETFLAGS=$(GETFLAGS)
1430 %Do get_$[Lower,$(SUBSYS)]_shared_dir
1431 %Endif
1432 $(SILENT)%Set PREV_VERSION_LABEL =
1433 %Endif
1434
1435 # For testing, we may want to skip the GETs
1436 %If !%Defined(SKIPGET) || ("$[Upper,$(SKIPGET)]" == "NO")
1437
1438 # Get all the files from the node proper
1439 $(SILENT)%Echo Getting $(BUILD_ROOT)\$(nodeDir) archives
1440 %Foreach archiveExt in $($(SUBSYS)_SRC_ARCHIVES)
1441 $(SILENT)%Echo Getting *.$(archiveExt) files
1442 $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(nodeDir)\
*.$(archiveExt)($(BUILD_ROOT)\$(nodeDir))
1443 %Endfor
1444
1445 %Foreach dirnum in 1 2 3 4 5 6 7 8 9 10
1446 $(SILENT)%Set addlDir = $(SUBSYS)_OTHER_ARCHIVE_SUBDIR$(dirnum)
1447 %If %Defined($(addlDir))
1448 $(SILENT)%Set addlDir = $($(addlDir))
1449 %Foreach archiveExt in $($(SUBSYS)_OTHER_ARCHIVES$(dirnum))
1450 $(SILENT)%Echo Getting *.$(archiveExt) files for $(add
lDir)
1451 $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(
nodeDir)\$(addlDir)\*.$(archiveExt)($(BUILD_ROOT)\$(nodeDir)\$(addlDir))
1452 %Endfor
1453 %Endif
1454 %Endfor
1455
1456 %If %Defined($(Nodename)_OTHER_ARCHIVE_SUBDIRS)
1457 %Foreach addlDir in $($(Nodename)_OTHER_ARCHIVE_SUBDIRS)
1458 %Foreach archiveExt in $($(Nodename)_OTHER_ARCHIVES)
1459 $(SILENT)%Echo Getting *.$(archiveExt) files for $(addl
Dir)
1460 $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(a
ddlDir)\*.$(archiveExt)($(BUILD_ROOT)\$(addlDir))
1461 %Endfor
1462 %EndFor
1463 %Endif
1464
1465 %Endif
1466
1467 ###############################################################################
1468 #
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 114 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
1469 # Explicit target for getting Logfiles given NODENAME
1470 #
1471 Get_Logfiles:
1472 %If %Defined(NODENAME)
1473 # Build Logfile list for a specific node only
1474 %Set NODENAME = $[Upper,$(NODENAME)]
1475 %Set nodefound = 0
1476 %Foreach SUBSYS in $(SUBSYS_TYPES)
1477 %If "$(nodefound)" == "0"
1478 %Foreach nodename in $($(SUBSYS)_NODES)
1479 %If $[Upper,$[Base,$(nodename)]] == $(NODENAME)
1480 %Set nodefound = $(nodename)
1481 %Set nodeType = $(SUBSYS)
1482 %Endif
1483 %EndFor
1484 %Endif
1485 %Endfor
1486
1487 %If "$(nodefound)" == "0"
1488 %Echo ERROR: Invalid NODENAME specified, $(NODENAME)
1489 %Abort 89
1490 %Endif
1491
1492 $(SILENT)%Set SUBSYS = $(nodeType)
1493 $(SILENT)%Set nodeDir = $[Directory,$(nodefound)]
1494 $(SILENT)%Set Nodename = $(NODENAME)
1495 %Do Get_Node_Logfiles
1496 %Else
1497 %Echo ERROR: No NODENAME specified, operation cancelled
1498 %Abort 88
1499 %Endif
1500
1501 ###############################################################################
1502 #
1503 # Explicit target for building a directory tree
1504 #
1505 build_dir_tree:
1506 $(SILENT)%Echo Making $(DIR)
1507 $(SILENT)%Set pathComponents = $[Translate,"\\"," ",$(DIR)]
1508 $(SILENT)%Set pathname =
1509 $(SILENT)%Set firstTime = 1
1510 %Foreach pathPortion in $(pathComponents)
1511 %If "$(pathname)" != ""
1512 $(SILENT)%Set pathname+=\\
1513
1514 %Endif
1515
1516 $(SILENT)%Set pathname+=$(pathPortion)
1517 %If $(firstTime) != 1
1518 %If !%Exists($(pathname))
1519 $(SILENT)mkdir $(pathname)
1520 %Endif
1521 %Else
1522 $(SILENT)%Set firstTime = 0
1523 %Endif
1524 %EndFor
1525
1526 ###############################################################################
1527 #
1528 # Explicit target for building file list of all logfiles for node/system
1529 #
1530 build_logfile_list:
1531 %If %Defined(NODE_LOGFILE)
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 115 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
1532 # Build Logfile list for a specific node only
1533 %Set NODE_LOGFILE = $[Upper,$(NODE_LOGFILE)]
1534 %Set nodefound = 0
1535 %Foreach SUBSYS in $(SUBSYS_TYPES)
1536 %If "$(nodefound)" == "0"
1537 %Foreach nodename in $($(SUBSYS)_NODES)
1538 %If $[Upper,$[Base,$(nodename)]] == $(NODE_LOGFILE)
1539 %Set nodefound = $(nodename)
1540 %Set nodeType = $(SUBSYS)
1541 %Endif
1542 %Endfor
1543 %Endif
1544 %Endfor
1545
1546 %If "$(nodefound)" == "0"
1547 %Echo ERROR: Invalid NODE_LOGFILE specified, $(NODE_LOGFILE)
1548 %Abort 89
1549 %Endif
1550
1551 $(SILENT)echo.>Filelist.txt
1552 %Foreach sharedNode in $(SYSTEM_SHARED_NODES)
1553 %Foreach sharedExt in $(SYSTEM_SHARED_SRC_ARCHIVES)
1554 $(SILENT)Echo $(LOGFILE_ROOT)\$(sharedNode)\*.$(sharedExt) >> F
ilelist.txt
1555 %Endfor
1556 %Endfor
1557 %Foreach sharedNode in $($(nodeType)_SHARED_NODES)
1558 %Foreach sharedExt in $($(nodeType)_SRC_ARCHIVES)
1559 $(SILENT)Echo $(LOGFILE_ROOT)\$(sharedNode)\*.$(sharedExt) >> F
ilelist.txt
1560 %Endfor
1561 %Endfor
1562 %Foreach nodeExt in $($(nodeType)_SRC_ARCHIVES)
1563 $(SILENT)Echo $(LOGFILE_ROOT)\$[Path,$(nodefound)]*.$(nodeExt) >> F
ilelist.txt
1564 %Endfor
1565
1566 %Else
1567 $(SILENT)echo.>Filelist.txt
1568 %Foreach sharedNode in $(SYSTEM_SHARED_NODES)
1569 %Foreach sharedExt in $(SYSTEM_SHARED_SRC_ARCHIVES)
1570 $(SILENT)Echo $(LOGFILE_ROOT)\$(sharedNode)\*.$(sharedExt) >> F
ilelist.txt
1571 %Endfor
1572 %Endfor
1573 %Foreach SUBSYS in $(SUBSYS_TYPES)
1574 %Foreach sharedNode in $($(SUBSYS)_SHARED_NODES)
1575 %Foreach sharedExt in $($(SUBSYS)_SRC_ARCHIVES)
1576 $(SILENT)Echo $(LOGFILE_ROOT)\$(sharedNode)\*.$(sharedExt)
>> Filelist.txt
1577 %Endfor
1578 %Endfor
1579 %Foreach nodeName in $($(SUBSYS)_NODES)
1580 %Foreach nodeExt in $($(SUBSYS)_SRC_ARCHIVES)
1581 $(SILENT)Echo $(LOGFILE_ROOT)\$[Path,$(nodeName)]*.$(nodeEx
t) >> Filelist.txt
1582 %Endfor
1583 %Endfor
1584 %Endfor
1585 %Endif
1586
1587
1588
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 116 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
1589 ###############################################################################
1590 #
1591 # Explicit target for setting logfile version numbers for selected nodes
1592 #
1593 set_version_label:
1594 (Ignore)$(BATCH_DIR)\set_ver.bat $(VERSION_LABEL) $(FILE)
1595
1596
1597 ###############################################################################
1598 #
1599 # Explicit target for setting logfile version numbers for selected nodes
1600 #
1601 set_logfile_versions:
1602 %Echo Setting Version Numbers for PVCS archives
1603 #
1604 # Process Mnet, DSPnet, Laptop, Monitor DSP and Loader nodes
1605 #
1606 $(SILENT)echo Setting Logfile Versions... > $(VCS_LOGFILE)
1607 %Foreach SUBSYS in $(ALL_SUBSYS_TYPES)
1608 %Do Logfiles_Subsystem
1609 %Endfor
1610 $(SILENT)echo Operation Complete... >> $(VCS_LOGFILE)
1611
1612
1613 ###############################################################################
1614 #
1615 # Explicit target for setting logfile version numbers for selected subsystem
1616 #
1617 Logfiles_Subsystem:
1618 %If !%Defined(SKIP_$(SUBSYS)_NODES)
1619
1620 # For each node, check for the existance of the nodes _VERSION_LABEL macro
1621 # If the version label is defined, then tag the version for all affected source
files
1622 %Foreach nodeMakefile in $($(SUBSYS)_NODES)
1623 $(SILENT)%Set Nodename = $[Upper,$[Base,$(nodeMakefile)]]
1624 $(SILENT)%Set NodeVersion = $(Nodename)_VERSION_LABEL
1625 $(SILENT)%Set NodeExistingVersion = $(Nodename)_SOURCE_VERSION_LABEL
1626 %If %Defined($(NodeVersion))
1627 $(SILENT)%Set nodeDir = $[Directory,$(nodeMakefile)]
1628 %If %Defined($(NodeExistingVersion))
1629 $(SILENT)%Set VERSION_LABEL="$(Nodename) $($(NodeVersion)):$(No
dename) $($(NodeExistingVersion))"
1630 %Else
1631 $(SILENT)%Set VERSION_LABEL="$(Nodename) $($(NodeVersion))"
1632 %Endif
1633 %Echo Setting $(Nodename) files to version $(VERSION_LABEL)
1634 %Foreach directory in $(SYSTEM_SHARED_NODES)
1635 %Foreach extension in $(SYSTEM_SHARED_SRC_ARCHIVES)
1636 $(SILENT)%Set FILE=$(LOGFILE_ROOT)\$(directory)\*.$(extensi
on)
1637 %Do set_version_label
1638 %Endfor
1639 %Endfor
1640
1641 $(SILENT)%Set nodes = $($(SUBSYS)_SHARED_NODES) $(nodeDir)
1642 %Foreach directory in $(nodes)
1643 %Foreach extension in $($(SUBSYS)_SRC_ARCHIVES)
1644 $(SILENT)%Set FILE=$(LOGFILE_ROOT)\$(directory)\*.$(extensi
on)
1645 %Do set_version_label
1646 %Endfor
1647 %Endfor
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 117 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
1648
1649 %If %Defined($(Nodename)_OTHER_ARCHIVE_SUBDIRS)
1650 %Foreach directory in $($(Nodename)_OTHER_ARCHIVE_SUBDIRS)
1651 %Foreach extension in $($(Nodename)_OTHER_ARCHIVES)
1652 $(SILENT)%Set FILE=$(LOGFILE_ROOT)\$(directory)\*.$(ext
ension)
1653 %Do set_version_label
1654 %Endfor
1655 %Endfor
1656 %Endif
1657
1658 %Foreach dirnum in 1 2 3 4 5 6 7 8 9 10
1659 %Set addlDir = $(SUBSYS)_OTHER_ARCHIVE_SUBDIR$(dirnum)
1660 %If %Defined($(addlDir))
1661 %Foreach extension in $($(SUBSYS)_OTHER_ARCHIVES$(dirnum))
1662 $(SILENT)%Set FILE=$(LOGFILE_ROOT)\$(nodeDir)\$($(addlD
ir))\*.$(extension)
1663 %Do set_version_label
1664 %Endfor
1665 %Endif
1666 %Endfor
1667
1668 %Endif
1669 %Endfor
1670
1671 %Endif
1672
1673
1674 ###############################################################################
1675 #
1676 # Explicit target for checking which nodes utilize a given shared file
1677 #
1678 check_shared_file:
1679 %If !%Defined(SHARED_FILENAME)
1680 %Echo ERROR: SHARED_FILENAME is not defined
1681 %Abort 98
1682 %Endif
1683 %Setenv SHARED_FILENAME=$(SHARED_FILENAME)
1684 %Setenv NODE_FILELIST=$(BUILD_ROOT)\Filelist.txt
1685 %Setenv CHECK_SHARED_FILES=Yes
1686 $(SILENT)Echo List of makefiles using $(SHARED_FILENAME) > $(NODE_FILELIST)
1687 %Foreach subsystem in $(ALL_SUBSYS_TYPES)
1688 %Foreach nodeMakefile in $($(subsystem)_NODES)
1689 $(SILENT)%Set nodeDir = $[Directory,$(nodeMakefile)]
1690 $(SILENT)%Set DIR=$(BUILD_ROOT)\$(nodeDir)
1691 %Do build_dir_tree
1692 $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(nodeDir)\*.ma
v($(BUILD_ROOT)\$(nodeDir)) $(LOGFILE_ROOT)\$(nodeDir)\*.mkv($(BUILD_ROOT)\$(no
deDir))
1693 $(SILENT)$(_Exe) $(DBG_MKF_FLAGS) $(_FlagsMacros) $(BUILD_ROOT)\$(n
odeMakefile) $(DALL) checkfile
1694 %Endfor
1695 %Endfor
1696 %Echo Scan complete
1697
1698
1699 ##############################################################################
1700 #
1701 # Useful procedure for deriving PVCS file extension from workfile extension
1702 #
1703 get_pvcs_extension:
1704 %If "$[Clip,$(extension),2,2]" == ""
1705 $(SILENT)%Set pvcsExtension = __v
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A Intuitive Surgical, Inc.–Confidential Page 118 of 118
Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.
1706 %Elseif "$[Clip,$(extension),3,3]" == ""
1707 $(SILENT)%Set pvcsExtension = $[Clip,$(extension),2,2]_v
1708 %Elseif "$[Clip,$(extension),4,4]" == ""
1709 $(SILENT)%Set pvcsExtension = $[Clip,$(extension),2,3]v
1710 %Elseif "$[Clip,$(extension),5,5]" == ""
1711 $(SILENT)%Set pvcsExtension = $[Clip,$(extension),2,3]v
1712 %Else
1713 $(SILENT)%Set pvcsExtension = $[Clip,$(extension),2,3]v$[Clip,$(extension),
5,5]
1714 %Endif
1715
1716 ##############################################################################
1717 #
1718 # Just a message for tracking purposes
1719 #
1720 .Init:
1721 $(SILENT)%Echo $(MKF) Version is $(DVMAK_VERSION)
1722 $(SILENT)%Echo OS Version, _System = $(_System)
Changes to this Document May be Viewed on the ECO Releasing it
7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Get documents about "