Engineer-to-Engineer Note

Size: px
Start display at page:

Download "Engineer-to-Engineer Note"

Transcription

1 Engineer-to-Engineer Note a EE-237 Technical notes on using Analog Devices DSPs, processors and development tools Contact our technical support at dsp.support@analog.com and at dsptools.support@analog.com Or visit our on-line resources and Guide to Blackfin Processor LDF Files Contributed by Steve K Rev 1 May 18, 2004 Introduction This document describes the Linker Description Files (.LDF) supplied with VisualDSP It is intended for readers who are familiar with.ldf files and are interested in customizing a Blackfin processor.ldf file by modifying an existing file or by writing one from scratch. The document begins by explaining the intentions behind the various.ldf files included in VisualDSP Then it discusses concepts behind the elements of the Blackfin processor s.ldf files and examines the ADSP-BF533 Blackfin processor s default.ldf file in detail. The document does not address the.ldf files for the ADSP-BF561 Blackfin processor or those for use in VDK applications. Default.LDF Files For each of the following devices, VisualDSP++ provides four.ldf files: ADSP-BF531 Blackfin processors ADSP-BF532 Blackfin processors ADSP-BF533 Blackfin processors ADSP-BF535 Blackfin processors AD6532 processors The name of each.ldf file indicates the intended processor (e.g., ADSP-BF531.ldf) and may include an optional suffix (e.g., ADSP-BF533_C.ldf). If the.ldf file name has no suffix, it is the default.ldf file. That is, when no.ldf file is explicitly specified, the default file is used to link an application when building for that processor. For example, ADSP-BF531.ldf is the default.ldf file for the ADSP-BF531 Blackfin processor. If no.ldf file is specified explicitly via the T command-line switch, the compiler driver selects the default.ldf file for the target processor. The first of the following commands uses the default.ldf file, and the second uses a userspecified file: ccblkfn proc ADSP-BF531 hello.c ccblkfn proc ADSP-BF531 hello.c T./my.ldf # uses default ADSP-BF531.ldf # uses./my.ldf Copyright 2004, Analog Devices, Inc. All rights reserved. Analog Devices assumes no responsibility for customer product design or the use or application of customers products or for any infringements of patents or rights of others which may result from Analog Devices assistance. All trademarks and logos are property of their respective holders. Information furnished by Analog Devices applications and development tools engineers is believed to be accurate and reliable, however no responsibility is assumed by Analog Devices regarding technical accuracy and topicality of the content provided in Analog Devices Engineer-to-Engineer Notes.

2 For each processor, there are three.ldf files with suffixes _C, _CPP, and _ASM (e.g., ADSP-BF533_C.ldf). These.LDF files are templates for the Expert Linker. If you use the Expert Linker to create a custom.ldf file for your project, the Expert Linker will do so by querying you for the kind of.ldf file you want to create (Asm, C, or C++) and then copying one of the above templates. The suffixes indicate the kind of.ldf files they support. The CPP template is a superset of the C template, and the C template is a superset of the ASM template. The differences are as follows: The CPP template links against C++ run-time libraries, C++ exception libraries, and the run-time headers built to initialize C++ constructors. It maps data sections that contain information controlling how thrown exceptions are caught. The C template is currently identical to the CPP template, since a C project may link against local or system libraries that have been implemented in C++; there may be differences in a future release. The ASM template does not include a run-time header, and does not permit command-line arguments to applications. The ASM template is not suitable for use with the compiler s Profile-Guided Optimization. Since the ASM template has no run-time header, it does not mandate a start symbol resolved to the Reset address. It does not map the C++ exception sections into memory. Blackfin Processor.LDF Concepts The Blackfin processor s.ldf files can be divided into five main areas: Preamble Library selection Run-time header selection Memory declaration Code/data-to-memory mapping Each.LDF file handles a variety of demands, allowing applications to be built in multiple configurations, merely by supplying a few command-line options. This flexibility is achieved by extensive use of preprocessor macros within the.ldf file. Macros serve as flags to indicate one choice or another, and as variables within the.ldf file to hold the name of a chosen file or other link-time parameter. This reliance on preprocessor operation can make the.ldf file seem an imposing sight. Command-Line Options In simple terms, different.ldf file configurations are selected by defining preprocessor macros on the linker command line. This can be specified from the Link tab of the IDDE s Project Options dialog box or directly from the command line; for example: ccblkfn proc ADSP-BF533 prog.c flags-link MDUSE_CACHE The command above defines the USE_CACHE macro during linking, and hence selects the.ldf file configuration that allows for L1 code and data cache operation. In contrast, leaving the macro undefined: Guide to Blackfin Processor LDF Files (EE-237) Page 2 of 12

3 ccblkfn proc ADSP-BF533 prog.c specifies the default configuration, which assumes that code and data caches will not be enabled. Macros may be defined in other ways. For example, under the Processor category of the Link tab (Project Options dialog box), selection options include: use of various libraries, choice of floating-point library, and what L1 memory is to be used. Ultimately, these selections define a macro during linking so that the appropriate.ldf file option is selected. The L1 Memory Usage option provides two choices: Instruction and Data RAM Cache (sets USE_CACHE macro) As the name implies, the second choice sets the USE_CACHE macro, and the first choice leaves it unset, thus achieving the same effect as the example above. Other choices are more indirect, but operate in the same manner. The Floating-point option also has two choices: High performance Strict IEEE conformance The second choice invokes the compiler driver with the -ieee-fp switch; the first choice invokes the compiler without a floating-point switch, which selects the default behavior of -fast-fp. These compiler switches are effected by defining the IEEEFP macro at link-time, or by leaving it undefined. Other compiler switches are also implemented by passing macros to the linker to select.ldf file options. Build Variants and File Naming The pre-built Blackfin processor libraries and run-time headers are available in numerous configurations, and the various LDF options select between them. A naming scheme is used to append suffixes to the libraries names, so that the.ldf file can choose between them. First, each file is built for a particular processor, or for a particular core. The majority of files are built for a particular core, namely the ADSP-BF535 Blackfin processor or an ADSP-BF532 processor compatible core. Such files have a suffix of 535 or 532. Some files (such as cplbtab531.doj) are built for particular processors, which (as its name shows) was built for the ADSP-BF531 Blackfin processor. In general, the processor/core naming does not count as one of the LDF options, because each.ldf file is dedicated to a particular processor already and refers to libraries using the appropriate processor/core suffix. Other suffixes do count as options, however, and the naming is slightly different between libraries and run-time headers. The library suffixes are shown in Table 1. Guide to Blackfin Processor LDF Files (EE-237) Page 3 of 12

4 d x y mt The library was built with symbolic information for debugging. The library was built with C++ exceptions enabled (that is, -eh ). The library was built with all workarounds enabled (that is, with -workaround all ). The library was built with any multi-threading support present enabled (that is, with -threads ). Table 1. C Library File Suffixes The only.ldf files to use the libraries built with multi-threading support (-threads) are the VDK.LDF files, which are not covered in this document. The run-time header file suffixes are shown in Table 2. c f mt n p s y The header will initialize C++ constructors File I/O support is included Built with any multi-threading support enabled Not a run-time header; end-of-table marker for C++ constructor table Instrumented-code profiling included Leaves processor in Supervisor mode when calling main() Built with workarounds enabled. Table 2. Run-Time Header File Suffixes The.LDF file uses these suffixes in conjunction with command-line macros to determine which files to link against. For example: #ifdef WORKAROUNDS_ENABLED /* { */ #define LIBSMALL libsmall532y.dlb, #else #define LIBSMALL libsmall532.dlb, #endif /* } */ The WORKAROUNDS_ENABLED macro is set by the compiler s -workaround switch, and the LIBSMALL macro is set to a value according to whether this switch is used. Later in the.ldf file, LIBSMALL is used in the list of libraries to link against. C++ Constructor Table C++ objects that exist at global scope must be constructed before main() is invoked, so their constructors must be invoked from the run-time header. For each compiled C++ module, the compiler creates a special data section, called ctor. This data section consists of pointers to the constructor functions for the global-scope objects. The.LDF files arrange for the list of objects to be: Guide to Blackfin Processor LDF Files (EE-237) Page 4 of 12

5 run-time header, command-line objects, ctor-terminator The run-time header places a label into ctor. Since the linker respects the ordering of objects, this label is resolved to the start of the ctor section. Any ctor pointers to constructors from the command-line objects follow, with the ctor terminator (a NULL pointer) bringing up the rear. This means that the ctor section is assembled into a table of pointers-to-constructors that the run-time header walks through and processes. Profile-Guided Optimization Support Profile-Guided Optimization (PGO) is the process of gathering information about a running application over many invocations of the executable with different input data, and then re-optimizing it using that gathered information. The process relies upon the same application being run with different data sets, which often means that the application acts upon sample data sets stored in files. More specifically, it means that the application is instructed to process each file via command-line options passed to main(). The.LDF files and the IDDE collaborate to provide support for command-line arguments. Under normal circumstances, a typical embedded program is not interested in command-line arguments, and receives none. In these normal cases, the run-time header invokes a function to parse a global string argv_string[] and finds it empty. To support PGO, the LDF option IDDE_ARGS can be used to define a memory section called MEM_ARGV, and argv_string[] is mapped directly to the start of this section. The IDDE follows the convention that command-line arguments can be passed to an application by writing the argument string into memory starting at the beginning of MEM_ARGV. Memory Usage The.LDF files define memory areas for all defined spaces on the processor. 1 Not all of these memory areas are used within the.ldf files. Instead, the.ldf files provide two basic memory configurations: The default configuration specifies that only internal memory is available and caching is disabled. Thus, no code or data is mapped to SDRAM unless explicitly placed there, and all of the available L1 space is used for code or data. The USE_CACHE option selects the alternative configuration, where code and data caches are enabled and external SDRAM is used. Code and data are mapped into L1 where possible, but the Cache/SRAM areas are left empty; any spill-over goes into the lower 32 MB area of SDRAM. If USE_CACHE is used, caches may safely be turned on, because doing so will not corrupt code or data. Selecting this option does not actually enable the caches that must be done separately (for example, through the cplb_ctrl configuration variable). Instead, this option ensures that the memory layout allows caches to be enabled later. Note that the SDRAM is not enabled automatically when USE_CACHE is enabled. A common user error is to enable cache despite not having specified USE_CACHE, which would lead to code or data corruption as cache activity overwrites the contents of SRAM. Therefore, the.ldf files use the following guard symbols : 1 With the exception of the core MMRs, which the linker considers out of bounds. Guide to Blackfin Processor LDF Files (EE-237) Page 5 of 12

6 l1_code_cache l1_data_cache_a l1_data_cache_b a These symbols are defined by the.ldf files and are given values (i.e., resolved to addresses 0 or 1), depending on whether USE_CACHE is defined. The run-time library examines these symbols when cache configuration is requested, and refuses to enable a cache if the corresponding guard symbol is zero, indicating that valid information already occupies this space. Input Sections This section describes the content and intent of the various code and data sections generated by the compiler and libraries, and mapped by the.ldf files into memory areas. The.LDF files use the following code sections: L1_code: by default, the compiler does not generate code here. The.LDF files map this section so that the code that must go into L1 Instruction SRAM is placed there explicitly using the section directive. This section is always the first section mapped into L1 Instruction SRAM. cplb_code: the run-time library s CPLB management routines are here. It is usually mapped into L1 Instruction SRAM. In particular, if CPLB-replacement is a possibility, this section must be mapped to memory that is guaranteed to always available; this means that it must be addressed by a locked CPLB. program: the default code section generated by the compiler. If possible, code in this section will be mapped into L1 Instruction memory; however, code will spill into slower memory if there is not enough space. The.LDF files use the following data sections: L1_data_a: by default, the compiler does not generate data here. This section is analogous to L1_code in that it exists to allow data to be mapped explicitly into L1 Data A SRAM using the section directive. L1_data_b: similar to L1_data_a, except that it is used to map data into L1 Data B SRAM. cplb_data: the run-time library s CPLB management routines use CPLB configuration tables, which are placed here. In particular, the cplbtabx.doj files (where x indicates the target) mapped by the.ldf files are placed into this section. It must be mapped to a data area that is always available. If CPLB replacement is a possibility, this section must be mapped into memory that is covered by a locked CPLB. data1: the default section used for compiler-generated global data. voldata: the compiler does not generate data for this section. It exists for data that may change due to external influences (such as DMA), and should not be placed into cached data areas. constdata: used for global data which is declared as constant, and for literal constants such as strings and array initializers. The compiler s default behavior is to assume that const data will remain constant, and therefore can be mapped into read-only memory (although the default.ldf files do not do this). The compiler s behavior is different from the ANSI C Standard in this respect: under ANSI C Guide to Blackfin Processor LDF Files (EE-237) Page 6 of 12

7 such const data could be altered by other means. For details, refer to the -const-read-write switch in the VisualDSP C/C++ Compiler and Library Manual for Blackfin Processors [1]. bsz: used for global uninitialized data, which is implicitly initialized to zeros, when the -bss switch is specified. This section does not actually contain data; it is zero-filled upon loading via the IDDE, or when processed by the loader. This section is not generated when the -no-bss switch is used. bsz_init: holds a pointer to run-time initialization data generated by the Memory Initializer utility. It is expected that this section will be mapped into read-only memory. When a.dxe file has been processed by the Memory Initializer utility and the program starts running, other data sections (such as data1 and constdata) are initialized by data copied to from this section. If the Memory Initializer utility is not being used, this section may be mapped to RAM. The.LDF files use the following generic sections: cplb: this section is historical, and is no longer used. It has been replaced with cplb_code and cplb_data. sdram0: this section allows code or data to be mapped explicitly into external memory by using the section directive. This can be used to place large, infrequently used data or functions into external memory to free up valuable internal memory. The.LDF files use the following table sections. In all cases, these sections may be mapped into readonly memory. For a given section s and its terminating section sl, the terminating section sl must be mapped immediately after the section s. ctor: this section contains pointers to constructors for C++ objects. It is used to invoke the constructors before main() is called. It must be contiguous in memory. ctorl: this section contains the terminator for the ctor table section. It must be mapped immediately after the ctor section..gdt: Global Dispatch Table. Used by the C++ Exception Library to determine which area of code to which a particular address belongs. This section must be contiguous in memory..gdtl: this section contains the terminator for the.gdt table section. It must be mapped immediately after the.gdt section..edt: Exception Dispatch Table. Used by the C++ Exception Library to map from try blocks to catch blocks..cht: Catch Handler Types table. This is used to map to the RTTI type information. The C++ Exception Library uses it to determine the types that correspond to catch entries for a try block..frt: Function Range Table. This is used by the C++ Exception Library during exception processing to unwind the stack of active functions..frtl: this section contains the terminator for the.frt table section. It must be mapped immediately after the.frt section. Guide to Blackfin Processor LDF Files (EE-237) Page 7 of 12

8 ADSP-BF533.LDF in Detail a Preamble The.LDF file begins with a brief comment that describes the options available within the.ldf file (as determined by linker preprocessor macros). These options are explained in detail at the relevant stages within the.ldf file. The ARCHITECTURE directive specifies that this.ldf file is for the ADSP-BF533 Blackfin processor. All of the Blackfin processor.ldf files are targeted specifically at a single processor. The SEARCH_DIR directive identifies the location of the standard run-time libraries as being the Blackfin\lib subdirectory of the VisualDSP++ installation directory. The linker sets $ADI_DSP to be the VisualDSP++ installation directory. The SEARCH_DIR directive is not included if the NO_STD_LIB option is selected, which means that the linker will have no default place to search for run-time libraries. This option is selected by the -no-std-lib compiler switch, which ensures that the application is being linked against user-supplied libraries only. Library Selection This stage of the.ldf file builds up various macros and variables with the aim of producing the $LIBRARIES list, a list of the library and object files searched to resolve references, in the required order. Some of the options specify the selection of one library over another (e.g., the workarounds-enabled version versus the normal version) and other options specify the selection of one library ordering over another (e.g., the selection of fully-compliant IEEE floating-point support versus the higher-performance version). The USE_FILEIO option is forcibly defined. This is necessary for printf() and other stdio-related functions that are employed through much of the development cycle. Disabling the USE_FILEIO option disables all stdio-related I/O operations. A number of options relate to the instrumented-code profiler. The compiler has three switches for the profiler: -p, -p1, and p2. For all three switches, the compiler instruments the code in the same way, causing it to invoke the profiling library at the start and end of each instrumented function to gather statistics. The three switches differ in how the resulting application reports its gathered data. The -p1 switch writes the data to the mon.out file; the p2 switch writes it to the standard output stream; the -p switch writes the data to both places. This difference in behavior is achieved by linking in different object files, which is controlled by.ldf file options. The switches select the following LDF options: -p selects USE_PROFILER -p1 selects USE_PROFILER1 -p2 selects USE_PROFILER2 An additional option, USE_PROFILER0, is set by the prelinker when it detects that an input object file has been instrumented for profiling. This indicates that the profiling library must be linked against even if no Guide to Blackfin Processor LDF Files (EE-237) Page 8 of 12

9 profiling switches were specified at link-time. USE_PROFILER is used to set USE_PROFILER0, interpreting the lack of any link-time profiling switches as indicating that both output methods should be used. The output method selection is determined by linking against a small object file that contains two global variables. These variables indicate whether each output method has been selected. Several different object files define the permutations of the two variables (see Table 2). Like other object files, several variants of these files exist, such as the normal and workarounds-enabled variants. When an object is built with workarounds enabled, different code is generated to work around known silicon anomalies. When the object contains data only (no code), as in this particular case, the workarounds-enabled switches have no effect and the variants are identical. These redundant multiple variants are still built to maintain the naming conventions. PROFFLAG is defined to be the name of one of these object files, should profiling be required. If it is not required, PROFFLAG is left undefined. OMEGA is the name of the file containing the idle routine. This routine is reached if the application terminates voluntarily, such as by returning from main() or by calling exit(). The WORKAROUNDS_ENABLED option is defined by the compiler driver whenever workarounds have been requested at link-time; although there are options for selecting each available workaround individually when compiling, it is infeasible to provide pre-built libraries for all combinations of workarounds. Therefore, there is a single workarounds-enabled version of each library and object, built with all workarounds selected. MEMINIT holds the name of the object file that contains the pointer to any initialization data created by the Memory Initializer utility. This pointer is a NULL pointer unless the resulting application is processed by the Memory Initializer. There are no variants of this file. LIBSMALL is defined to be the name of the supervisor-mode library. The M3_RESERVED option is for the emulator. By default, the emulator uses the Blackfin processor s stack for workspace, but there is an option to use the M3 register instead. The run-time libraries are built with the -reserve m3 switch to allow this, but there are a small number of routines that require additional handling. For example, interrupt handlers may not save and restore M3 if it is reserved, but they must do so if it is not. Therefore, two variants of some libraries are supplied to handle each case. LIBM3 contains exception handlers, setjmp() and longjmp(), while LIBDSP contains optimized DSP-related routines that lose some performance when M3 is reserved for the emulator. The floating-point libraries are selected by ordering. The fully-compliant library is a stand-alone library, and the high-performance library is part of LIBDSP. The ordering of these two libraries is changed according to the required floating-point library. The IEEEFP option, set by the ieee-fp compiler switch, chooses the alternative ordering. The libraries selected thus far are assembled into a LIBS list, optionally selecting C++ libraries that have been built with C++ exceptions (the eh and rtti switches) if ADI_LIBEH is set (it is set by eh at link-time). The appropriate file I/O library is appended to this list, to complete the $LIBRARIES list. Guide to Blackfin Processor LDF Files (EE-237) Page 9 of 12

10 CRT Selection a This stage selects the required pre-built version of the C run-time header (CRT), the startup code that executes before main() is invoked. This section chooses the CRT based on the values (defined or otherwise) of four options: USE_PROFILER USE_FILEIO cplusplus WORKAROUNDS_ENABLED The chosen object file is named with suffixes as described earlier in this document. For the latter three options, a single object file is selected to be included in the $OBJECTS list. If USE_PROFILER is selected, CRT is also set to include the profiling library, and the PROFFLAG file determined earlier. For C++ builds ( cplusplus option), ENDCRT is defined to be an object containing the end-of-table terminator for the C++ constructor table. For other builds, it is left undefined. The CRT and ENDCRT are then included in the $OBJECTS list, along with $COMMAND_LINE_OBJECTS, which is defined by the linker to be all the objects and libraries named on the linker s command-line. The CPLB definition-table object, used to configure cache settings, completes the $OBJECTS list. Between them, $LIBRARIES and $OBJECTS name the sources used by the linker to resolve symbols. The items in $OBJECTS are linked into the application, and $LIBRARIES resolves symbols referenced from $OBJECTS. Memory Declaration The Blackfin processor.ldf files define memories that correspond closely to the hardware memory map. The.LDF files have additional divisions so that memory can be suitably allocated to the different needs of the run-time libraries, such as heap and stack. The Core and System memory-mapped registers (MMRs) are at the top of the memory. The linker does not allow a memory section to be defined for the Core MMRs; this memory declaration is commented out, but left in for clarity. The L1 Scratchpad is defined, but is not used by the.ldf file. Note that statically-initialized data may not be mapped into scratchpad. L1 Instruction memory is divided into code and code-cache. Code-cache is selectable as cache or code space. L1 Data Bank B is divided into data and data-cache, with the former being further subdivided into space for constant data and the stack. In general, the.ldf files attempt to place the stack into fast L1 memory, since the compiler often uses the stack for function parameters and temporary working-space. L1 Data Bank A also has the cache/non-cache division. The non-cache area has an optional 256 bytes reserved for command-line arguments. This IDDE_ARGS option supports Profile-Guided Optimization, as described previously. Four banks of asynchronous memory are defined, along with a single bank of SDRAM. This latter bank is the lowest bank of memory, a 32 MB space from which the lowest 16 KB has been claimed for the heap. Guide to Blackfin Processor LDF Files (EE-237) Page 10 of 12

11 Note that the heap does not include address 0x , which is reserved as the NULL pointer in C, and may not be used to point to valid data. Code/Data-to-Memory Mapping The PROCESSOR directive writes the resulting.dxe file to $COMMAND_LINE_OUTPUT_FILE, which is defined by the linker to be the output file name passed by the compiler driver. The start symbol (the first executable part of the CRT) is mapped directly to the processor s Reset address using the RESOLVE directive. If Profile-Guided Optimization is used, the argv_string symbol is mapped directly to the start of the arguments section by the same method. The _main and start symbols are explicitly named as being immune from linker elimination, in case that option is enabled. The remainder of the.ldf file maps code or data from input sections to output sections via memory areas. The.LDF file is general purpose and is intended to ensure that everything fits. Thus, sections like program and data1 are mapped to numerous output sections in different memory areas. When one memory section fills up, the remainder may go into other sections. Some items are optionally mapped. C++ objects are mapped for C++ links only; code and data are mapped into cache areas of L1 SRAM (or to external memory when the USE_CACHE option is specified). The BSZ sections are marked as ZERO_INIT, indicating to the (optional) Memory Initializer that the sections should be emptied, and zero-filled at run-time. The bsz_init section will contain the pointer to the start of the table produced by the Memory Initializer, and is ordinarily mapped into read-only memory; for simplicity, it is mapped into a normal data section in the earlier stages of development. The.meminit section is handled differently by the linker. No code or data resides in.meminit during linking. However, once linking is complete, the.meminit section expands to consume all the unused space in the memory area to which it is mapped. In this particular.ldf file,.meminit is mapped to MEM_L1_DATA_B, so that after linking,.meminit occupies the remaining portion of MEM_L1_DATA_B not used by the.dxe file. This defines an empty space that the Memory Initializer can use to store the configuration table. Like bsz_init, the.meminit section is ordinarily mapped into a read-only memory space. The stack and heap spaces do not have data mapped into them by the.ldf file. Instead, they each define global symbols that contain the addresses of their start, end, and length (for the heap). This allows the runtime library to determine the size and location of the stack and heap at runtime, so that either can be modified easily within the.ldf file. Note that the CRT requires these symbols. Guide to Blackfin Processor LDF Files (EE-237) Page 11 of 12

12 References [1] VisualDSP C/C++ Compiler and Library Manual for Blackfin Processors. Rev 2.2. October Analog Devices, Inc. Document History a Revision Rev 1 May 18, 2004 by Steve K Description Initial Release Guide to Blackfin Processor LDF Files (EE-237) Page 12 of 12

About this Module. Users Will See an Example Demonstrating Zero Effort Optimization by Using Built-In Optimizer and Cache.

About this Module. Users Will See an Example Demonstrating Zero Effort Optimization by Using Built-In Optimizer and Cache. About this Module This Module Describes the Basic Software Build Process of VisualDSP++, Specific Blackfin Programming Gotchas, and Basic Code Optimization Strategies. Users Will See an Example Demonstrating

More information

2 ABOUT VISUALDSP++ In This Chapter. Figure 2-0. Table 2-0. Listing 2-0.

2 ABOUT VISUALDSP++ In This Chapter. Figure 2-0. Table 2-0. Listing 2-0. 2 ABOUT VISUALDSP++ Figure 2-0. Table 2-0. Listing 2-0. In This Chapter This chapter contains the following topics: What Is VisualDSP++? on page 2-2 VisualDSP++ Features on page 2-2 Program Development

More information

Engineer-to-Engineer Note

Engineer-to-Engineer Note Engineer-to-Engineer Note a EE-271 Technical notes on using Analog Devices DSPs, processors and development tools Contact our technical support at processor.support@analog.com and dsptools.support@analog.com

More information

Engineer-to-Engineer Note

Engineer-to-Engineer Note Engineer-to-Engineer Note a EE-249 Technical notes on using nalog Devices DSPs, processors and development tools Contact our technical support at dsp.support@analog.com and at dsptools.support@analog.com

More information

Engineer To Engineer Note

Engineer To Engineer Note Engineer To Engineer Note EE-134 Phone: (800) ANALOG-D, FAX: (781) 461-3010, EMAIL: dsp.support@analog.com, FTP: ftp.analog.com, WEB: www.analog.com/dsp Copyright 2001, Analog Devices, Inc. All rights

More information

Engineer-to-Engineer Note

Engineer-to-Engineer Note Engineer-to-Engineer Note EE-377 Technical notes on using Analog Devices products and development tools Visit our Web resources http://www.analog.com/ee-notes and http://www.analog.com/processors or e-mail

More information

Section 2 Introduction to VisualDSP++

Section 2 Introduction to VisualDSP++ Section 2 Introduction to VisualDSP++ 2-1 a VisualDSP++ 4.0 VisualDSP++ is an integrated development environment that enables efficient management of projects. Key Features Include: Editing Building Compiler,

More information

2 COMPILER. Overview. Figure 2-0. Table 2-0. Listing 2-0.

2 COMPILER. Overview. Figure 2-0. Table 2-0. Listing 2-0. 2 COMPILER Figure 2-0. Table 2-0. Listing 2-0. Overview The C/C++ compiler (ccts) compiles ANSI/ISO standard C and C++ code for TigerSHARC family DSPs. Additionally, Analog Devices includes within the

More information

Short Notes of CS201

Short Notes of CS201 #includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system

More information

Engineer To Engineer Note

Engineer To Engineer Note Engineer To Engineer Note EE-133 Phone: (800) ANALOG-D, FAX: (781) 461-3010, EMAIL: dsp.support@analog.com, FTP: ftp.analog.com, WEB: www.analog.com/dsp Converting From Legacy Architecture Files To Linker

More information

CS201 - Introduction to Programming Glossary By

CS201 - Introduction to Programming Glossary By CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with

More information

Blackfin Optimizations for Performance and Power Consumption

Blackfin Optimizations for Performance and Power Consumption The World Leader in High Performance Signal Processing Solutions Blackfin Optimizations for Performance and Power Consumption Presented by: Merril Weiner Senior DSP Engineer About This Module This module

More information

INDEX. Figure I-0. Listing I-0. Table I-0. Symbols.DIRECTIVE (see Assembler directives)? preprocessor operator 3-34

INDEX. Figure I-0. Listing I-0. Table I-0. Symbols.DIRECTIVE (see Assembler directives)? preprocessor operator 3-34 I INDEX Figure I-0. Listing I-0. Table I-0. Symbols.DIRECTIVE (see Assembler directives)? preprocessor operator 3-34 Numerics Assembler command-line switch -21 2-21 A Address alignment 2-39 Address of

More information

Engineer-to-Engineer Note

Engineer-to-Engineer Note Engineer-to-Engineer Note EE-359 Technical notes on using Analog Devices products and development tools Visit our Web resources http://www.analog.com/ee-notes and http://www.analog.com/processors or e-mail

More information

The World Leader in High Performance Signal Processing Solutions. Development Tools.

The World Leader in High Performance Signal Processing Solutions. Development Tools. The World Leader in High Performance Signal Processing Solutions Development Tools 2004 China.dsp@analog.com What is CROSSCORE? Analog Devices DSP Development Tools CROSSCORE Components VisualDSP++ Emulators

More information

GLOSSARY. VisualDSP++ Kernel (VDK) User s Guide B-1

GLOSSARY. VisualDSP++ Kernel (VDK) User s Guide B-1 B GLOSSARY Application Programming Interface (API) A library of C/C++ functions and assembly macros that define VDK services. These services are essential for kernel-based application programs. The services

More information

Engineer-to-Engineer Note

Engineer-to-Engineer Note Engineer-to-Engineer Note a EE-284 Technical notes on using nalog Devices DSPs, processors and development tools Visit our Web resources http://www.analog.com/ee-notes and http://www.analog.com/processors

More information

W 3.5 Linker and Utilities Manual for 16-Bit Processors

W 3.5 Linker and Utilities Manual for 16-Bit Processors W 3.5 Linker and Utilities Manual Revision 1.0, October 2003 Part Number 82-000035-07 Analog Devices, Inc. One Technology Way Norwood, Mass. 02062-9106 a Copyright Information 2003 Analog Devices, Inc.,

More information

Engineer To Engineer Note

Engineer To Engineer Note Engineer To Engineer Note EE-62 Technical Phone: (800) ANALOG-D, FAX: (781) 461-3010, EMAIL: dspsupport@analogcom, FTP: ftpanalogcom, WEB: wwwanalogcom/dsp Copyright 1999, Analog Devices, Inc All rights

More information

W 3.5 Loader Manual for 16-Bit Processors

W 3.5 Loader Manual for 16-Bit Processors W 3.5 Loader Manual Revision 1.0, October 2003 Part Number 82-000035-04 Analog Devices, Inc. One Technology Way Norwood, Mass. 02062-9106 a Copyright Information 2003 Analog Devices, Inc., ALL RIGHTS RESERVED.

More information

CODE TIME TECHNOLOGIES. Abassi RTOS MISRA-C:2004. Compliance Report

CODE TIME TECHNOLOGIES. Abassi RTOS MISRA-C:2004. Compliance Report CODE TIME TECHNOLOGIES Abassi RTOS MISRA-C:2004 Compliance Report Copyright Information This document is copyright Code Time Technologies Inc. 2012. All rights reserved. No part of this document may be

More information

Engineer-to-Engineer Note

Engineer-to-Engineer Note Engineer-to-Engineer Note EE-399 Technical notes on using Analog Devices DSPs, processors and development tools Visit our Web resources http://www.analog.com/ee-notes and http://www.analog.com/processors

More information

3 TUTORIAL. In This Chapter. Figure 1-0. Table 1-0. Listing 1-0.

3 TUTORIAL. In This Chapter. Figure 1-0. Table 1-0. Listing 1-0. 3 TUTORIAL Figure 1-0. Table 1-0. Listing 1-0. In This Chapter This chapter contains the following topics: Overview on page 3-2 Exercise One: Building and Running a C Program on page 3-4 Exercise Two:

More information

Release Notes for VisualDSP

Release Notes for VisualDSP Release Notes for VisualDSP++ 5.1.0 VisualDSP++ 5.1.0 Release Notes Revision 1.0 September 2013 Nomenclature VisualDSP++ is upgraded from 5.0 to 5.1.0 to reflect support for Windows 8, along with other

More information

Outline: System Development and Programming with the ADSP-TS101 (TigerSHARC)

Outline: System Development and Programming with the ADSP-TS101 (TigerSHARC) Course Name: Course Number: Course Description: Goals/Objectives: Pre-requisites: Target Audience: Target Duration: System Development and Programming with the ADSP-TS101 (TigerSHARC) This is a practical

More information

A software view. Computer Systems. The Compilation system. How it works. 1. Preprocesser. 1. Preprocessor (cpp)

A software view. Computer Systems. The Compilation system. How it works. 1. Preprocesser. 1. Preprocessor (cpp) A software view User Interface Computer Systems MTSU CSCI 3240 Spring 2016 Dr. Hyrum D. Carroll Materials from CMU and Dr. Butler How it works hello.c #include int main() { printf( hello, world\n

More information

Engineer-to-Engineer Note

Engineer-to-Engineer Note Engineer-to-Engineer Note a EE-219 Technical notes on using Analog Devices DSPs, processors and development tools Contact our technical support at dsp.support@analog.com and at dsptools.support@analog.com

More information

Exception Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011

Exception Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011 More C++ David Chisnall March 17, 2011 Exceptions A more fashionable goto Provides a second way of sending an error condition up the stack until it can be handled Lets intervening stack frames ignore errors

More information

Section 8 Programming

Section 8 Programming Section 8 Programming 8-1 a Software Development Flow Code Generation Linker Description File (.LDF) Generate Assembly Source (.ASM) and / or Generate C Source (.C) Assembler C Compiler Linker Software

More information

ADSP EZ-ICE Emulator User s Guide (For Use with VisualDSP++ Release 2.0 or Higher)

ADSP EZ-ICE Emulator User s Guide (For Use with VisualDSP++ Release 2.0 or Higher) User s Guide (For Use with VisualDSP++ Release 2.0 or Higher) First Edition, Revision 1.0, October 2002 Part Number 82-000259-01 Analog Devices, Inc. Digital Signal Processing Division One Technology Way

More information

TMS470 ARM ABI Migration

TMS470 ARM ABI Migration TMS470 ARM ABI Migration Version Primary Author(s) V0.1 Anbu Gopalrajan V0.2 Anbu Gopalrajan Revision History Description of Version Date Completed Initial Draft 10/29/2006 Added C auto initialization

More information

1.1. Linker and Utilities Manual. (including ADSP-BFxxx and ADSP-21xxx) Revision 1.3, May 2014 Part Number

1.1. Linker and Utilities Manual. (including ADSP-BFxxx and ADSP-21xxx) Revision 1.3, May 2014 Part Number 1.1 Linker and Utilities Manual (including ADSP-BFxxx and ADSP-21xxx) Part Number 82-100115-01 Analog Devices, Inc. One Technology Way Norwood, Mass. 02062-9106 a Copyright Information 2014 Analog Devices,

More information

W 4.0 Loader Manual. Revision 1.0, January 2005 Part Number Analog Devices, Inc. One Technology Way Norwood, Mass.

W 4.0 Loader Manual. Revision 1.0, January 2005 Part Number Analog Devices, Inc. One Technology Way Norwood, Mass. W 4.0 Loader Manual Revision 1.0, January 2005 Part Number 82-000420-05 Analog Devices, Inc. One Technology Way Norwood, Mass. 02062-9106 a Copyright Information 2005 Analog Devices, Inc., ALL RIGHTS RESERVED.

More information

MJPEG AVI Library Developer's Guide

MJPEG AVI Library Developer's Guide DEVIM1-002-D October 2005 Analog Devices Inc. www.analog.com Table of Contents 1. Introduction...6 1.1. Scope...6 1.2. Target platform...6 1.3. Organisation of this Guide...6 1.4. Version Information...6

More information

Language Translation. Compilation vs. interpretation. Compilation diagram. Step 1: compile. Step 2: run. compiler. Compiled program. program.

Language Translation. Compilation vs. interpretation. Compilation diagram. Step 1: compile. Step 2: run. compiler. Compiled program. program. Language Translation Compilation vs. interpretation Compilation diagram Step 1: compile program compiler Compiled program Step 2: run input Compiled program output Language Translation compilation is translation

More information

2 TUTORIAL. Overview. VisualDSP Getting Started Guide 2-1 for SHARC DSPs

2 TUTORIAL. Overview. VisualDSP Getting Started Guide 2-1 for SHARC DSPs 2 TUTORIAL This chapter contains the following topics. Overview on page 2-1 Exercise One: Building and Running a C Program on page 2-3 Exercise Two: Calling an Assembly Routine and Creating an LDF on page

More information

CSE 504: Compiler Design. Runtime Environments

CSE 504: Compiler Design. Runtime Environments Runtime Environments Pradipta De pradipta.de@sunykorea.ac.kr Current Topic Procedure Abstractions Mechanisms to manage procedures and procedure calls from compiler s perspective Runtime Environment Choices

More information

Draft. Chapter 1 Program Structure. 1.1 Introduction. 1.2 The 0s and the 1s. 1.3 Bits and Bytes. 1.4 Representation of Numbers in Memory

Draft. Chapter 1 Program Structure. 1.1 Introduction. 1.2 The 0s and the 1s. 1.3 Bits and Bytes. 1.4 Representation of Numbers in Memory Chapter 1 Program Structure In the beginning there were 0s and 1s. GRR 1.1 Introduction In this chapter we will talk about memory: bits, bytes and how data is represented in the computer. We will also

More information

Memory and C/C++ modules

Memory and C/C++ modules Memory and C/C++ modules From Reading #5 and mostly #6 More OOP topics (templates; libraries) as time permits later Program building l Have: source code human readable instructions l Need: machine language

More information

Lectures 5-6: Introduction to C

Lectures 5-6: Introduction to C Lectures 5-6: Introduction to C Motivation: C is both a high and a low-level language Very useful for systems programming Faster than Java This intro assumes knowledge of Java Focus is on differences Most

More information

Accelerated Library Framework for Hybrid-x86

Accelerated Library Framework for Hybrid-x86 Software Development Kit for Multicore Acceleration Version 3.0 Accelerated Library Framework for Hybrid-x86 Programmer s Guide and API Reference Version 1.0 DRAFT SC33-8406-00 Software Development Kit

More information

Today s Big Adventure

Today s Big Adventure Today s Big Adventure - How to name and refer to things that don t exist yet - How to merge separate name spaces into a cohesive whole Readings - man a.out & elf on a Solaris machine - run nm or objdump

More information

Today s Big Adventure

Today s Big Adventure 1/34 Today s Big Adventure - How to name and refer to things that don t exist yet - How to merge separate name spaces into a cohesive whole Readings - man a.out & elf on a Solaris machine - run nm or objdump

More information

Volume II, Section 5 Table of Contents

Volume II, Section 5 Table of Contents Volume II, Section 5 Table of Contents 5...5-1 5.1 Scope...5-1 5.2 Basis of...5-1 5.3 Initial Review of Documentation...5-2 5.4 Source Code Review...5-2 5.4.1 Control Constructs...5-3 5.4.1.1 Replacement

More information

W4.5 Getting Started Guide

W4.5 Getting Started Guide W4.5 Getting Started Guide Revision 2.0, April 2006 Part Number 82-000420-01 Analog Devices, Inc. One Technology Way Norwood, Mass. 02062-9106 a Copyright Information 2006 Analog Devices, Inc., ALL RIGHTS

More information

Viewing the tm4c123gh6pm_startup_ccs.c file, the first piece of code we see after the comments is shown in Figure 1.

Viewing the tm4c123gh6pm_startup_ccs.c file, the first piece of code we see after the comments is shown in Figure 1. Viewing the tm4c123gh6pm_startup_ccs.c file, the first piece of code we see after the comments is shown in Figure 1. Figure 1 Forward declaration for the default handlers These are the forward declarations,

More information

Engineer To Engineer Note. Interfacing the ADSP-BF535 Blackfin Processor to Single-CHIP CIF Digital Camera "OV6630" over the External Memory Bus

Engineer To Engineer Note. Interfacing the ADSP-BF535 Blackfin Processor to Single-CHIP CIF Digital Camera OV6630 over the External Memory Bus Engineer To Engineer Note EE-181 a Technical Notes on using Analog Devices' DSP components and development tools Contact our technical support by phone: (800) ANALOG-D or e-mail: dsp.support@analog.com

More information

CSX600 Runtime Software. User Guide

CSX600 Runtime Software. User Guide CSX600 Runtime Software User Guide Version 3.0 Document No. 06-UG-1345 Revision: 3.D January 2008 Table of contents Table of contents 1 Introduction................................................ 7 2

More information

Unit 2 : Computer and Operating System Structure

Unit 2 : Computer and Operating System Structure Unit 2 : Computer and Operating System Structure Lesson 1 : Interrupts and I/O Structure 1.1. Learning Objectives On completion of this lesson you will know : what interrupt is the causes of occurring

More information

Release Notes for CrossCore Embedded Studio 2.5.0

Release Notes for CrossCore Embedded Studio 2.5.0 Release Notes for CrossCore Embedded Studio 2.5.0 2016 Analog Devices, Inc. http://www.analog.com processor.tools.support@analog.com Contents 1 Introduction 4 1.1 Supported Operating Systems 4 1.2 System

More information

1 INTRODUCTION. Purpose. Audience. Figure 1-0. Table 1-0. Listing 1-0.

1 INTRODUCTION. Purpose. Audience. Figure 1-0. Table 1-0. Listing 1-0. 1 INTRODUCTION Figure 1-0. Table 1-0. Listing 1-0. Purpose The ADSP-21160 SHARC DSP Instruction Set Reference provides assembly syntax information for the ADSP-21160 Super Harvard Architecture (SHARC)

More information

Page 1. Stuff. Last Time. Today. Safety-Critical Systems MISRA-C. Terminology. Interrupts Inline assembly Intrinsics

Page 1. Stuff. Last Time. Today. Safety-Critical Systems MISRA-C. Terminology. Interrupts Inline assembly Intrinsics Stuff Last Time Homework due next week Lab due two weeks from today Questions? Interrupts Inline assembly Intrinsics Today Safety-Critical Systems MISRA-C Subset of C language for critical systems System

More information

1 Do not confuse the MPU with the Nios II memory management unit (MMU). The MPU does not provide memory mapping or management.

1 Do not confuse the MPU with the Nios II memory management unit (MMU). The MPU does not provide memory mapping or management. Nios II MPU Usage March 2010 AN-540-1.0 Introduction This application note covers the basic features of the Nios II processor s optional memory protection unit (MPU), describing how to use it without the

More information

The task of writing device drivers to facilitate booting of the DSP via these interfaces is with the user.

The task of writing device drivers to facilitate booting of the DSP via these interfaces is with the user. a Engineer To Engineer Note EE-124 Phone: (800) ANALOG-D, FAX: (781) 461-3010, EMAIL: dsp.support@analog.com, FTP: ftp.analog.com, WEB: www.analog.com/dsp Booting on the ADSP-2192 The ADSP-2192 currently

More information

CSCI341. Lecture 22, MIPS Programming: Directives, Linkers, Loaders, Memory

CSCI341. Lecture 22, MIPS Programming: Directives, Linkers, Loaders, Memory CSCI341 Lecture 22, MIPS Programming: Directives, Linkers, Loaders, Memory REVIEW Assemblers understand special commands called directives Assemblers understand macro commands Assembly programs become

More information

CS201 Some Important Definitions

CS201 Some Important Definitions CS201 Some Important Definitions For Viva Preparation 1. What is a program? A program is a precise sequence of steps to solve a particular problem. 2. What is a class? We write a C++ program using data

More information

An Overview of the BLITZ System

An Overview of the BLITZ System An Overview of the BLITZ System Harry H. Porter III Department of Computer Science Portland State University Introduction The BLITZ System is a collection of software designed to support a university-level

More information

Overview. Constructors and destructors Virtual functions Single inheritance Multiple inheritance RTTI Templates Exceptions Operator Overloading

Overview. Constructors and destructors Virtual functions Single inheritance Multiple inheritance RTTI Templates Exceptions Operator Overloading How C++ Works 1 Overview Constructors and destructors Virtual functions Single inheritance Multiple inheritance RTTI Templates Exceptions Operator Overloading Motivation There are lot of myths about C++

More information

Apex-ICE Universal JTAG Emulator Hardware and Software Installation Guide

Apex-ICE Universal JTAG Emulator Hardware and Software Installation Guide Apex-ICE Universal JTAG Emulator Hardware and Software Installation Guide a Notice Analog Devices, Inc. reserves the right to make changes to or to discontinue any product or service identified in this

More information

Salvo Compiler Reference Manual HI-TECH PICC-18

Salvo Compiler Reference Manual HI-TECH PICC-18 RM-PICC18 Reference Manual 750 Naples Street San Francisco, CA 94112 (415) 584-6360 http://www.pumpkininc.com Salvo Compiler Reference Manual HI-TECH PICC-18 Copyright 2003 Pumpkin, Inc. last updated on

More information

W4.0 Getting Started Guide

W4.0 Getting Started Guide W4.0 Getting Started Guide Revision 1.0, January 2005 Part Number 82-000420-01 Analog Devices, Inc. One Technology Way Norwood, Mass. 02062-9106 a Copyright Information 2005 Analog Devices, Inc., ALL RIGHTS

More information

IA-64 Software Conventions and Runtime Architecture Guide September 2000

IA-64 Software Conventions and Runtime Architecture Guide September 2000 IA-64 Software Conventions and Runtime Architecture Guide September 2 Document Number: 245358-2 Information in this document is provided in connection with Intel products. No license, express or implied,

More information

C++ for System Developers with Design Pattern

C++ for System Developers with Design Pattern C++ for System Developers with Design Pattern Introduction: This course introduces the C++ language for use on real time and embedded applications. The first part of the course focuses on the language

More information

The Procedure Abstraction

The Procedure Abstraction The Procedure Abstraction Procedure Abstraction Begins Chapter 6 in EAC The compiler must deal with interface between compile time and run time Most of the tricky issues arise in implementing procedures

More information

Have examined process Creating program Have developed program Written in C Source code

Have examined process Creating program Have developed program Written in C Source code Preprocessing, Compiling, Assembling, and Linking Introduction In this lesson will examine Architecture of C program Introduce C preprocessor and preprocessor directives How to use preprocessor s directives

More information

Overview. Constructors and destructors Virtual functions Single inheritance Multiple inheritance RTTI Templates Exceptions Operator Overloading

Overview. Constructors and destructors Virtual functions Single inheritance Multiple inheritance RTTI Templates Exceptions Operator Overloading HOW C++ WORKS Overview Constructors and destructors Virtual functions Single inheritance Multiple inheritance RTTI Templates Exceptions Operator Overloading Motivation There are lot of myths about C++

More information

The Procedure Abstraction Part I: Basics

The Procedure Abstraction Part I: Basics The Procedure Abstraction Part I: Basics Procedure Abstraction Begins Chapter 6 in EAC The compiler must deal with interface between compile time and run time Most of the tricky issues arise in implementing

More information

Pointers and References

Pointers and References Steven Zeil October 2, 2013 Contents 1 References 2 2 Pointers 8 21 Working with Pointers 8 211 Memory and C++ Programs 11 212 Allocating Data 15 22 Pointers Can Be Dangerous 17 3 The Secret World of Pointers

More information

COP4020 Programming Languages. Compilers and Interpreters Robert van Engelen & Chris Lacher

COP4020 Programming Languages. Compilers and Interpreters Robert van Engelen & Chris Lacher COP4020 ming Languages Compilers and Interpreters Robert van Engelen & Chris Lacher Overview Common compiler and interpreter configurations Virtual machines Integrated development environments Compiler

More information

IAR Embedded Workbench MISRA C:2004. Reference Guide

IAR Embedded Workbench MISRA C:2004. Reference Guide IAR Embedded Workbench MISRA C:2004 Reference Guide COPYRIGHT NOTICE Copyright 2004 2008 IAR Systems. All rights reserved. No part of this document may be reproduced without the prior written consent of

More information

Target Definition Builder. Software release 4.20

Target Definition Builder. Software release 4.20 Target Definition Builder Software release 4.20 July 2003 Target Definition Builder Printing History 1 st printing December 21, 2001 2 nd printing May 31, 2002 3 rd printing October 31, 2002 4 th printing

More information

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this

More information

e-pg Pathshala Subject : Computer Science Paper: Embedded System Module: Embedded Software Development Tools Module No: CS/ES/36 Quadrant 1 e-text

e-pg Pathshala Subject : Computer Science Paper: Embedded System Module: Embedded Software Development Tools Module No: CS/ES/36 Quadrant 1 e-text e-pg Pathshala Subject : Computer Science Paper: Embedded System Module: Embedded Software Development Tools Module No: CS/ES/36 Quadrant 1 e-text In this module, we will discuss about the host and target

More information

SmartHeap for Multi-Core

SmartHeap for Multi-Core SmartHeap for Multi-Core Getting Started and Platform Guide for Linux Version 11.2 SmartHeap and HeapAgent are trademarks of Compuware Corporation. All other trademarks are the property of their respective

More information

a Engineer To Engineer Note EE-143

a Engineer To Engineer Note EE-143 a Engineer To Engineer Note EE-143 Phone: (800) ANALOG-D, FAX: (781) 461-3010, EMAIL: dsp.support@analog.com, FTP: ftp.analog.com, B: www.analog.com/dsp Understanding DMA on the ADSP-TS101 Last modified:

More information

Deploying LatticeMico32 Software to Non-Volatile Memory

Deploying LatticeMico32 Software to Non-Volatile Memory February 2008 Introduction Technical Note TN1173 The LatticeMico32 Software Developers Guide describes how to deploy firmware onto hardware that provides both non-volatile memory and volatile memory. The

More information

Section 6 Blackfin ADSP-BF533 Memory

Section 6 Blackfin ADSP-BF533 Memory Section 6 Blackfin ADSP-BF533 Memory 6-1 a ADSP-BF533 Block Diagram Core Timer 64 L1 Instruction Memory Performance Monitor JTAG/ Debug Core Processor LD0 32 LD1 32 L1 Data Memory SD32 DMA Mastered 32

More information

Important From Last Time

Important From Last Time Important From Last Time Volatile is tricky To write correct embedded C and C++, you have to understand what volatile does and does not do Ø What is the guarantee that it provides? Don t make the 8 mistakes

More information

CS 111. Operating Systems Peter Reiher

CS 111. Operating Systems Peter Reiher Operating System Principles: Processes, Execution, and State Operating Systems Peter Reiher Page 1 Outline What are processes? How does an operating system handle processes? How do we manage the state

More information

CPE 323: Laboratory Assignment #1 Getting Started with the MSP430 IAR Embedded Workbench

CPE 323: Laboratory Assignment #1 Getting Started with the MSP430 IAR Embedded Workbench CPE 323: Laboratory Assignment #1 Getting Started with the MSP430 IAR Embedded Workbench by Alex Milenkovich, milenkovic@computer.org Objectives: This tutorial will help you get started with the MSP30

More information

Practical C++ Programming

Practical C++ Programming SECOND EDITION Practical C++ Programming Steve Oualline O'REILLY' Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo Preface xv Part I. The Basics 1. What Is C++? 3 A Brief History of C++ 3 C++

More information

4 DEBUGGING. In This Chapter. Figure 2-0. Table 2-0. Listing 2-0.

4 DEBUGGING. In This Chapter. Figure 2-0. Table 2-0. Listing 2-0. 4 DEBUGGING Figure 2-0. Table 2-0. Listing 2-0. In This Chapter This chapter contains the following topics: Debug Sessions on page 4-2 Code Behavior Analysis Tools on page 4-8 DSP Program Execution Operations

More information

Introducing C++ to Java Programmers

Introducing C++ to Java Programmers Introducing C++ to Java Programmers by Kip Irvine updated 2/27/2003 1 Philosophy of C++ Bjarne Stroustrup invented C++ in the early 1980's at Bell Laboratories First called "C with classes" Design Goals:

More information

W5.0 Product Release Bulletin Revision 3.0, August 2007 Part Number

W5.0 Product Release Bulletin Revision 3.0, August 2007 Part Number W5.0 Product Release Bulletin Revision 3.0, August 2007 Part Number 82-000420-06 Analog Devices, Inc. One Technology Way Norwood, Mass. 02062-9106 a Copyright Information 2007 Analog Devices, Inc., ALL

More information

RM0327 Reference manual

RM0327 Reference manual Reference manual Multi-Target Trace API version 1.0 Overview Multi-Target Trace (MTT) is an application instrumentation library that provides a consistent way to embed instrumentation into a software application,

More information

Engineer-to-Engineer Note

Engineer-to-Engineer Note Engineer-to-Engineer Note EE-322 Technical notes on using Analog Devices DSPs, processors and development tools Visit our Web resources http://www.analog.com/ee-notes and http://www.analog.com/processors

More information

C compiler. Memory map. Program in RAM

C compiler. Memory map. Program in RAM C compiler. Memory map. Program in RAM Sections:.text: Program code. Read only 0x40001fff stack.rodata: constants (constmodifier) and strings. Read only.data: Initialized global and static variables (startup

More information

Object-Oriented Programming for Scientific Computing

Object-Oriented Programming for Scientific Computing Object-Oriented Programming for Scientific Computing Dynamic Memory Management Ole Klein Interdisciplinary Center for Scientific Computing Heidelberg University ole.klein@iwr.uni-heidelberg.de 2. Mai 2017

More information

EDIABAS BEST/2 LANGUAGE DESCRIPTION. VERSION 6b. Electronic Diagnostic Basic System EDIABAS - BEST/2 LANGUAGE DESCRIPTION

EDIABAS BEST/2 LANGUAGE DESCRIPTION. VERSION 6b. Electronic Diagnostic Basic System EDIABAS - BEST/2 LANGUAGE DESCRIPTION EDIABAS Electronic Diagnostic Basic System BEST/2 LANGUAGE DESCRIPTION VERSION 6b Copyright BMW AG, created by Softing AG BEST2SPC.DOC CONTENTS CONTENTS...2 1. INTRODUCTION TO BEST/2...5 2. TEXT CONVENTIONS...6

More information

PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILERS

PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILERS Objective PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILERS Explain what is meant by compiler. Explain how the compiler works. Describe various analysis of the source program. Describe the

More information

CSE P 501 Compilers. Java Implementation JVMs, JITs &c Hal Perkins Winter /11/ Hal Perkins & UW CSE V-1

CSE P 501 Compilers. Java Implementation JVMs, JITs &c Hal Perkins Winter /11/ Hal Perkins & UW CSE V-1 CSE P 501 Compilers Java Implementation JVMs, JITs &c Hal Perkins Winter 2008 3/11/2008 2002-08 Hal Perkins & UW CSE V-1 Agenda Java virtual machine architecture.class files Class loading Execution engines

More information

QUIZ. What are 3 differences between C and C++ const variables?

QUIZ. What are 3 differences between C and C++ const variables? QUIZ What are 3 differences between C and C++ const variables? Solution QUIZ Source: http://stackoverflow.com/questions/17349387/scope-of-macros-in-c Solution The C/C++ preprocessor substitutes mechanically,

More information

Loader and Utilities Manual

Loader and Utilities Manual Revision 1.5, August 2015 Part Number 82-100114-01 Analog Devices, Inc. One Technology Way Norwood, MA 02062-9106 Copyright Information 2015 Analog Devices, Inc., ALL RIGHTS RESERVED. This document may

More information

Stream Computing using Brook+

Stream Computing using Brook+ Stream Computing using Brook+ School of Electrical Engineering and Computer Science University of Central Florida Slides courtesy of P. Bhaniramka Outline Overview of Brook+ Brook+ Software Architecture

More information

Lecture 6: Assembly Programs

Lecture 6: Assembly Programs Lecture 6: Assembly Programs Today s topics: Procedures Examples Large constants The compilation process A full example 1 Procedures Local variables, AR, $fp, $sp Scratchpad and saves/restores, $fp Arguments

More information

Separate compilation. Topic 6: Runtime Environments p.1/21. CS 526 Topic 6: Runtime Environments The linkage convention

Separate compilation. Topic 6: Runtime Environments p.1/21. CS 526 Topic 6: Runtime Environments The linkage convention Runtime Environment The Procedure Abstraction and Separate Compilation Topics we will cover The procedure abstraction and linkage conventions Runtime storage convention Non-local data access (brief) These

More information

ensures that the assembler generates instructions for the C167 (as opposed to XC167) Memory models The system startup file

ensures that the assembler generates instructions for the C167 (as opposed to XC167) Memory models The system startup file System Startup Detailed -1 week lecture Topics 4 System Startup Detailed - ( TASKING) Macro definitions, configuration registers and stack frames - and memory maps - Memory type specifiers - Object classes

More information

CPS311 Lecture: Procedures Last revised 9/9/13. Objectives:

CPS311 Lecture: Procedures Last revised 9/9/13. Objectives: CPS311 Lecture: Procedures Last revised 9/9/13 Objectives: 1. To introduce general issues that any architecture must address in terms of calling/returning from procedures, passing parameters (including

More information

Overview of C++ Support in TI Compiler Tools July 2008

Overview of C++ Support in TI Compiler Tools July 2008 Overview of C++ Support in TI Compiler Tools July 2008 1 Table of Contents 1 Table of Contents... 1 2 Introduction... 1 3 Support for the Language... 1 4 Embedded C++... 1 5 Some Comments on Efficiency...

More information

MISRA-C. Subset of the C language for critical systems

MISRA-C. Subset of the C language for critical systems MISRA-C Subset of the C language for critical systems SAFETY-CRITICAL SYSTEMS System is safety-critical if people might die due to software bugs Examples Automobile stability / traction control Medical

More information