ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link

Size: px
Start display at page:

Download "ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link"

Transcription

1 Application Report SPRAAC3 November 2005 ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link Aarti Goyle, George Mock Arnie Reynoso SDO Applications SDO Customer Support ABSTRACT This application note demonstrates techniques for use with DSP/BIOS Link on TI s Code Generation ARM (TMS470). The techniques shown optimize code size and take advantage of new compiler features. DSP/BIOS Link is a standard for communication between TI DSPs and GPPs (General Purpose Processors). It provides for both data streaming and control and status messaging. The software examples used in this document are based on DSP/BIOS Link release for the DA295 platform. All techniques described here can be applied to any ARM-based system to reduce code size when using the TI ARM compiler. This document covers issues such as changes in the Application Binary Interface (ABI), managing code that executes in both ARM and Thumb mode, and linker trampolines. It also compares and discusses code sizes using several different compiler build options. Contents 1 Introduction Hardware and Software Setup Building the Baseline DSP/BIOS Link and Message Application ABI Changes in TMS470 Code Generation Tools Difference Between TIABI and TI_ARM9_ABI Migrating Projects from CCStudio 2.2x to CCStudio Rebuilding Baseline DSP/BIOS Link and Message Application Trampolines Impact of Trampolines on DSP/BIOS Link Background on Trampolines Version Notes on Enabling Trampolines Trampoline Details in Link Map File Mixing Arm Mode and Thumb Mode Code Issue Encountered When Mixing Thumb and Arm Modes Detecting Thumb and Arm Mode Conflicts Code Size Data Collecting the Data Optimization Levels: o3 Option Thumb Mode: mt Option Automatic Inlining: oi0 Option

2 8.5 Functions in Subsections: ms Option Branch Chaining: ab=0 Option Performance Data Data Collection Analysis Conclusions References...17 Figures Figure 1. Build Options Dialog Showing --abi Option...5 Figure 2. CPSR Register Bits After Undefined Instruction...10 Figure 3. Code Size vs. Compiler Options...11 Figure 4. Code Size for Thumb Builds...12 Figure 5. Performance Impact of Compiler Options...16 Tables Table 1. CCStudio and Code Generation Tools Versions Introduction This document shows the effects of some new code generation options available with the latest TMS470 (ARM) code generation tools. It examines the code size and performance of DSP/BIOS Link on the GPP side for the DA295 EVM with PrOS. The steps involve rebuilding the GPP-side DSP/BIOS Link with several different TMS470 code generation tool options and measuring the impact of each option on the Link footprint using internal utilities. This document uses the DSP/BIOS Link Message application as the test application. 2 Hardware and Software Setup Hardware DA295 EVM Spectrum Digital XDS510 USB emulator Software Packages Chosen Install Directory Code Composer Studio v3.1 c:\ccstudio_v3.1 DSP/BIOS Link for DA295 EVM with PrOS c:\dsplink DA295 PSP c:\asp-psp DSP/BIOS c:\bios_5_10_02 If the software packages are installed elsewhere, modify the examples in this document accordingly to use the appropriate directories. 2 ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link

3 3 Building the Baseline DSP/BIOS Link and Message Application SPRAAC3 To provide baseline statistics, we built the DSP/BIOS Link kernel and the Message application using the default options in CCStudio 3.1. See the DSP/BIOS Link User s Guide (LNK 093 USR) for details on the build process for the DSP/BIOS Link kernel on the GPP and DSP sides as well as details for the Message application. Next, we built a sample project in CCStudio 3.1 following these steps: 1. Use CCStudio Setup to choose the DA295 EVM. 2. Start CCStudio and open the ARM-side debugger. 3. Open the hibari_sample.pjt project in C:\asp-psp\system\hibari\pros\hibari_evm\build. 4. Build the hibari_sample.pjt project. The build results in several linker warnings such as the following: >> warning: Cannot find state of callee routine at addr 24 called from module../../lib/debug/hibari_prkernel32.lib >> warning: Cannot find state of callee routine at addr 4 called from module../../lib/debug/hibari_prkernel32.lib >> warning: Cannot find state of callee routine at addr 4 called from module../../../../../os/lib/debug/hibari_palos_pros.lib >> warning: Cannot find state of callee routine at addr 28 called from module../../../../../os/lib/debug/hibari_palos_pros.lib These warnings are generated because the default ABI (Application Binary Interface) has changed since v4.1.0 of the TMS470 Code Generation Tools. A TMS470 project containing a mix of C and assembly code written for older toolsets generates these warnings when built with the default options in CCStudio 3.1. These warnings also appear when you build a project with the default options in CCStudio 3.1 and link with libraries built with older versions of the code generation tools. You should not ignore these warnings. The following sections provide background information on the ABI and on options you can use to eliminate the linker warnings. Section 5, Rebuilding Baseline DSP/BIOS Link and Message Application specifically discusses how to eliminate linker warnings that occur when you build the sample application. 4 ABI Changes in TMS470 Code Generation Tools The v4.1.0 release of the ARM (TMS470) Code Generation Tools introduced a new ABI (Application Binary Interface) for the compiler. An ABI defines how an object file is compiled. It covers items such as language specifics, calling conventions, and the object file format. Object files that conform to the same ABI, even if built by different compiler vendors, can be linked together into a single cohesive executable. For v4.1.x of the TMS470 compiler, changes to the ABI are limited to function naming conventions and linking dual-mode code. These changes were made to take advantage of new capabilities present in V5E (ARM9) and higher architectures. The new ABI is called TI_ARM9_ABI. The old ABI in compiler releases prior to is now referred to as TIABI. ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link 3

4 4.1 Difference Between TIABI and TI_ARM9_ABI Function names are generated differently with the new ABI. Under the older TIABI, Thumb mode routine symbols require a $ prefix and Arm mode routine symbols require a _ prefix. To allow calls from functions in the opposite mode, the code generator created function veneers to handle the mode change. For example, consider an Arm mode function calling a Thumb mode function called foo(). The Arm mode function calls foo() with a BL _foo instruction. The veneer for foo, which has _foo as the entry point label changes the mode and then correctly calls $foo. The return from $foo goes back through the veneer to change the mode back from Thumb to Arm. With the TI_ARM9_ABI (the default with v4.1.0 and higher tools), the function naming convention is uniform. All function names are prefixed with an _ (underscore). The linker determines the mode of both the caller and callee and generates the necessary code to make the call. For example, if the target is an ARM9 (V5E) or higher architecture, the linker replaces a BL instruction with a BLX instruction. If the target is an ARM7 (V4), or the linker cannot determine the mode of the caller, the linker generates the necessary veneer code. The compiler does not generate function veneers in the assembly file. Since the v4.1.x compilers, by default, no longer use the $ and _ prefixes to mark the state of a function, this information is passed to the linker using two new assembler directives:.thumbfunc and.armfunc. For example:.thumbfunc _foo ; foo is a THUMB mode function or.armfunc _foo ; foo is an ARM mode function 4.2 Migrating Projects from CCStudio 2.2x to CCStudio 3.1 Typical applications fall into one of the following categories. The changes you need to make to migrate code to use the new tools are described in the following list for each category. All C code. Rebuild everything for TI_ARM9_ABI. The run-time library in the project should be the appropriate one built for TI_ARM9_ABI. Valid choices include rts32.lib and rts16.lib. The list of available run-time libraries is documented in the CGTNew.txt file included with the code generation tools (in the c:\ccstudio_v3.1\tms470\docs directory). Mix of C and assembly code, no old objects. If the application has a mix of C and assembly code but does not link in object files or libraries built with older tools, change the assembly files to work with the new ABI. To do so, identify all 32-bit and 16-bit routines in assembly source using the ".armfunc" and ".thumbfunc" assembler directives. For example:.thumbfunc _foo _foo: The new tools provide a predefined symbol, TI_ARM9ABI_ASSEMBLER, which supports writing assembly code that works with both the new ARM9 ABI and the older TIABI. The assembly source files associated with this application note contain example functions that can be built with any version of the code generation tools and can run under any ABI. 4 ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link

5 Mix of C code and old object code. To rebuild the application for TI_ARM9_ABI, first rebuild the object files with the new tools, if possible. Then rebuild the entire application. If it is not possible to rebuild the object files or libraries, build the application with the --abi=tiabi compiler option to maintain backward compatibility. Use a run-time support library that is built for TIABI. Examples include rts32tiabi.lib and rts16tiabi.lib. The --abi option is available in the CCStudio 3.1 Build Options dialog as shown in Figure 1. Figure 1. Build Options Dialog Showing --abi Option 5 Rebuilding Baseline DSP/BIOS Link and Message Application There are two options for avoiding the linker warnings encountered in Section 3, Building the Baseline DSP/BIOS Link and Message Application : Modify all assembly code for TI_ARM9_ABI compatibility Build with --abi=tiabi to maintain backward compatibility For this baseline project, we rebuilt the DSP/BIOS Link kernel and the Message application with the --abi=tiabi compiler option to maintain backwards compatibility. The run-time library rts32e.lib was replaced with rts32etiabi.lib. ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link 5

6 Use the following steps modify the make files for DSP/BIOS Link as well as hibari_sample.pjt in CCStudio to use the --abi switch: 1. Edit DA300.mk in the C:\dsplink\make\PrOS\ directory. 2. Add --abi=tiabi to the standard flags for the compiler, STD_CC_FLAGS. 3. Rebuild the GPP-side DSP/BIOS Link. 4. Rebuild the GPP-side Message application. The resulting library is MESSAGEGPP.LIB. 5. Use CCStudio Setup to select the DA295 EVM. 6. Start CCStudio and open the GPP-side project. 7. Open the hibari_sample.pjt project in the C:\asp-psp\system\hibari\pros\hibari_evm\build directory. 8. Change the project options on hibari_sample.pjt and all dependent projects. Right-click on each.pjt file and select Project->Build Options. In the Compiler tab, choose the Basic category. Then, select the V4 (ARM7), pre compiler abi. Click OK. 9. Remove rts32e.lib from the project. 10. Add rts32etiabi.lib to the project. This file can be found in the C:\CCStudio_v3.1\tms470\cgtools\lib directory. 11. Rebuild the hibari_sample.pjt project. As you can see in the build output, the linker warnings that appeared earlier are now gone. The output of this build is used as the baseline for code size measurements in this application note. 6 Trampolines Trampolines are a linker feature that changes how function calls are implemented. The correct sequence to use for a function call depends on how far away in memory the caller is from the callee. Compiler-based solutions for this issue tend to be costly in terms of speed and code size. Trampolines offer a linker-based solution that optimizes function call implementations. Support for trampolines is available in TMS470 code generation tools v2.17 and higher. 6.1 Impact of Trampolines on DSP/BIOS Link Using the trampolines feature is not a necessity for the GPP-side DSP/BIOS Link and Message applications. The code size of the application is well within the 22-bit address range supported by near calls for the TMS470. This can be verified by checking the link map file for the sample project, hibari_sample.map. The size of the.text section is 0x00029d14. Also the entire code section is placed in SDRAM, so everything is within near range. However, if the application were to grow larger, or if some code sections were placed in memory that is far from other sections that call them, then it would be necessary to build with trampolines enabled. The next section gives an overview of trampolines and when they are beneficial to use. 6 ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link

7 6.2 Background on Trampolines The TMS470 CPU supports PC-relative call and branch instructions whose range is limited to a 22-bit address range. When these instructions are used, the destination address must be near enough to the instruction that the difference between the call and the destination fits within the 22-bit range. If the callee is too far away from the caller, the linker generates an error. The alternative to a PC-relative call is generally an "absolute" call, which is implemented by loading the callee address into a register, and calling via that register. This approach is more expensive in terms of speed and size. In the TMS470 code generation tools, a sub-optimal way to solve this problem using the compiler is by using the far mode (-ml) shell option which tells the compiler that all of the calls generated are "far" calls. This option again uses larger call sequences than necessary since all calls are treated as far calls instead of just the specific ones that need to be, resulting in larger and slower code. The linker now provides a more optimal solution to this problem with trampolines. With this feature, only those calls that need to be far are transformed by the linker. When trampolines are enabled, the compiler always uses the smaller call sequence. The linker then determines whether the call sequence can reach its destination or not. If it cannot, it redirects the call to a linker-generated trampoline. The trampoline code section contains a sequence of instructions that performs a transparent long branch to the original callee. Because the trampoline uses a branch instead of a call, the called function returns not to the trampoline, but to the original call sequence. Multiple calls to the same function may reuse the same trampoline. Consider the following example, in which a function "bar" calls a function "foo". The compiler initially generates: bar:... call foo ; call the function "foo"... If "foo" is out-of-range from the call to "foo, then the linker does the following: Change the original call to "foo" into a call to "foo_trampoline": bar:... call foo_trampoline ; call a trampoline for foo... Generate a trampoline code section, "foo_trampoline", containing code that executes a long branch to the original callee, "foo": foo_trampoline: long_branch foo Since the trampoline needs to be placed such that it can be reached by a small call sequence, it is usually appended to the end of the output section. ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link 7

8 Trampolines are not enabled by default. If the application encounters a situation where long calls are required, the linker generates an error, and suggests that the --trampolines option be used. Please note that the cl470 (v4.1.2) help summary says the following: --trampolines[=off,on] Generate far call trampolines (Default:on) This seems to imply that trampolines are on by default; however, this is not the case. What this really means is that the option can be --trampolines=on OR --trampolines=off. If you use just --trampolines as the option, it turns trampolines on. The trampoline feature itself is not enabled by default in any release of the ARM tools. 6.3 Version Notes on Enabling Trampolines Table 1 shows which version of the TMS470 code generation tools is included in which version of CCStudio. Table 1. CCStudio and Code Generation Tools Versions CCStudio Product Version TMS470 CGT version Update Advisor patch for 2.52 CGT In v2.17 to v2.25 of the TMS470 code generation tools, the equivalent linker option is --large_model. It is not documented in cl470 help summary, but is in the readme.txt file. In v2.54 of the TMS470 code generation tools, the linker option is --large_model. It is documented in cl470 help summary. In v4.1.2 of the TMS470 code generation tools, CGTLinker.txt refers to the option as --large_model, but the cl470 help summary lists it as --trampolines. Both options should work, but --trampolines is the recommended option moving forward. In the Build Options dialog of CCStudio 3.1, there is a check box for enabling trampolines (--trampolines) in the Linker tab Advanced category. 6.4 Trampoline Details in Link Map File Any trampolines generated by the linker are displayed in the link map file. The statistics include the name and address of the callee, the address of trampoline, and from where the call originated. Please see the SPRAA46 application note at for more details on the trampoline data provided in the map file. 8 ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link

9 7 Mixing Arm Mode and Thumb Mode Code A valid technique for reducing code side for a given ARM library or application is to use the Thumb mode feature of the compiler (the -mt flag). This mode uses a reduced instruction set of 16-bits vs. 32-bits for standard Arm mode. Thumb mode is optimized for code density from C code, but contains only a subset of the functionality of the ARM instruction set. By default, the TI ARM compiler supports dual-state interworking. This allows code compiled in both Arm mode (the default) and Thumb mode to work correctly. It is the called function s responsibility to handle the proper state changes required by the calling function (call it by name). It is also the responsibility of the calling function to handle the proper state change required to indirectly call a function (call it by address). If a function doesn t support dual-state interworking, it cannot be called by functions requiring a state change and cannot indirectly call functions that support dual-state interworking. The TI ARM compiler supports (by default) full dual-state interworking. At link time, the linker determines whether to link in the additional code (veneer) that allows functions requiring state changes to call the function. There are other compiler options that can set different support for interworking functions. See the TMS470R1x Optimizing C/C++ Compiler User's Guide (SPNU151) for more information regarding this topic. Before compiling C code for Thumb mode to reduce code size, make sure all functions being called are either Thumb mode functions or support dual-state interworking. When using or writing ARM assembly functions, you need to make sure the assembly code supports dual-mode interworking if the function is expected to be called from the opposite mode. 7.1 Issue Encountered When Mixing Thumb and Arm Modes To save code size, DSP/BIOS Link was compiled in Thumb mode (with the mt option). This includes both DSP/BIOS Link library and applications on the GPP-side. The GPP-side (ARM7) operating system (PrOS) was compiled in Arm mode. The dual-state interworking features of the tools support combining such code that executes in opposite modes. This approach is valid since the compiler and linker should generate and link in the correct veneers to support interworking. However, we found that by default the PrOS assembly code does not support dual-mode interworking. To correct the problem, we needed to use the pre-defined symbol - ddual_state_interworking in order for the assembly interrupt functions to return to the correct processor mode. To make this change to PrOS, follow these steps: 1. Modify the.pjt files in the PrOS directory tree that start with the name hibari or Hibari. 2. If the.pjt file contains an option like the following, that project may include some assembly code that checks the DUAL_STATE_INTERWORKING symbol. -d"_dual_state_interworking=0" 3. If you find the previous option in a.pjt file, change it to the following: -d"_dual_state_interworking=1" 4. Rebuild the entire PrOS application. ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link 9

10 7.2 Detecting Thumb and Arm Mode Conflicts The method used to detect interworking conflicts between DSP/BIOS Link and PrOS is a useful illustration for detecting other conflicts. In this case, the ARM assembly interrupt functions in PrOS weren t handling processor state changes correctly. All interrupts on the ARM are handled in Arm mode, so the assembly functions didn t need to handle the state change (from Thumb to Arm). However, they did need to ensure that the proper processor state was set before returning. Failure to do this led to the processor attempting to execute Thumb mode instructions in Arm mode, which caused the hardware to issue an undefended instruction exception vector interrupt. We validated the problem using the following recommended technique for exiting the exception handler for an undefined instruction. The undefined instruction interrupt trap handler was set to execute the following instruction: MOVS PC, R14 This instruction restores the Current Program Status Register (CPSR) and returns to the instruction following the undefined instruction. Inspecting the T bit bit 5, which indicates 16- vs. 32-bit mode in the CPSR register indicated that the processor was in Arm mode (see Figure 2). T is set to one for 16-bit mode, zero for 32-bit mode. In this case, the instruction following the undefined instruction was a Thumb mode instruction. Therefore the exception was caused due to executing a Thumb mode instruction in Arm mode. Condition code flags (Reserved) Control bits N Z C V.. I F T M4 M3 M2 M1 M0 Figure 2. CPSR Register Bits After Undefined Instruction 10 ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link

11 8 Code Size Data This section reviews the code size data observed when building DSP/BIOS Link with different sets of compiler options. Each bar in Figure 3 represents one build. The compiler options for that build are shown in the key to the right. Each build uses the baseline options of me --abi=tiabi. The me option indicates little-endian byte ordering. The --abi=tiabi option uses the older TIABI application binary interface. The decision to use TIABI is discussed in Section 4, ABI Changes in TMS470 Code Generation Tools. The other options shown in the key are discussed in subsections that follow Bytes base: -me --abi=tiabi add -o3 add -o3 -mt add -o3 -mt -oi0 add -o3 -mt -ms add -o3 -mt -ab=0 0 Linked Image Figure 3. Full Library Code Size vs. Compiler Options The Linked Image data set shows the amount of code size, in the final linked image, used by the DSP/BIOS Link functions. The Full Library data set shows the code size of the entire DSP/BIOS Link library. The linked image code size is smaller because it only counts the size of Link functions actually called by the Message example. The extra size in the full library is due to functions that are not called in the Message example. The code sizes are close, which indicates that the Message example uses most of the routines supplied by DSP/BIOS Link. Some interesting differences, however, are discussed in the following subsections. 8.1 Collecting the Data The Linked Image data was collected by running a Perl script over an XML version of the linker map file. An XML version of the map file was created using the --xml_link_info=filename linker option. The Perl script searched the list of input sections in each output section. Input sections from a library were separated out, and their sizes were accumulated both by library name and by the kind of section (code, data, or uninitialized data). Since the sizes of the data sections were very similar in all the builds, there are not shown here. ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link 11

12 The Full Library data was collected by running another Perl script over the XML output obtained by running the Object File Display utility on the Link library. The script accumulated the sizes of all the sections in the library, both by file name and by the kind of section. Again, only the sizes of the code sections are shown. Details on these XML files and writing scripts to glean data from them were the topic of a presentation at the Texas Instruments Developer Conference in Spring The archived presentations can be found at The title of this presentation is Cool New Code Generation Utilities. 8.2 Optimization Levels: o3 Option Five levels of optimization are available with the ARM compiler: none, 0, 1, 2, and 3. The level is indicated by the number following the o compiler option. Level 3 is the highest optimization level. It lowers code size by about 44% versus the baseline build. We used the o3 compiler option in all builds other than the baseline build. 8.3 Thumb Mode: mt Option Thumb mode is discussed in Section 7, Mixing Arm Mode and Thumb Mode Code. You select Thumb mode by using the build option mt. Building with Thumb mode brings overall code size savings to about 66%. The following chart shows the differences in the Thumb builds more clearly. The following subsections discuss these differences add -o3 -mt Bytes add -o3 -mt -oi0 add -o3 -mt -ms add -o3 -mt -ab= Linked Image Figure 4. Full Library Code Size for Thumb Builds 12 ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link

13 8.4 Automatic Inlining: oi0 Option Inlining a function replaces a call to a function with the actual function in the body of the calling function. Inlining a call speeds performance both by avoiding the overhead of the call and by improving optimization in the code context around the call. This speed increase comes at the expense of increased code size, especially when the inlined function is large, or is called many times. When you use o3 to build at optimization level 3, the compiler inlines fairly small functions by default. You can further control the space/speed trade-off of inlining by using the oi compiler switch, which allows you to specify a number for the inlining threshold. The compiler internally measures each function in terms of the number of operations it performs. All functions below the threshold of the oi option are automatically inlined. To see the size of the functions, use the compiler switch on2 in combination with o3. This switch creates a text file with a base name the same as the original source file, and the extension.nfo. The compilergenerated information in that file includes the size of the functions. The compiler switch oi0 sets the inline threshold to 0, which disables all automatic inlining. It seems that disabling inlining ( oi0) would further reduce code size. However, it results in a code size increase of about 0.8% in the linked image, and about 1.7% in the whole library. Why? The answer is best described by example. Consider this code: static void call_once(int *ptr1, int *ptr2) { if (!ptr1!ptr2) { /* error handling */ return; } } /* operations with ptr1 and ptr2 */ This function is called only once in the file, and the call is similar to: call_once(&local_var1, &local_var2); For functions called only one time, the compiler uses a higher threshold to decide whether to inline. Such is the case with this example function. Once the function is inlined, the call site is optimized in the surrounding context. In this case, the pointers are replaced with the addresses of the local variables. Thus, the test for NULL pointers and subsequent error handling code are all removed. Inlining a function does not mean the original function can be removed in all cases. If some other source file in the application may call the function, then the original cannot be removed. In the case of the call_once function, the inlined function is declared static. Thus, no other calls may exist and the original call_once function is removed. In this case, all that remains at the one site where the function was called is: /* operations with ptr1 and ptr2 */ ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link 13

14 Thus, whether inlining increases or decreases your code size depends upon whether you have a number of static functions called only once and how well they can be optimized when they are inlined. Other functions cannot be optimized as much after inlining, so the code size savings for these functions is more modest. All that is avoided is the function call and return overhead. Nonetheless, the savings becomes noticeable when added up over several functions, as is the case with the DSP/BIOS Link code. 8.5 Functions in Subsections: ms Option By default, the compiler puts the assembly code for each function in the section.text. If you use the ms compiler option, each function is instead placed in its own subsection with the name.text:_name_of_function. These subsections are marked for conditional linking. If the linker does not see any references to a subsection, it is removed. In effect, if a function is never called, it is deleted. Functions that are never called can be a common occurrence when combining code developed at different times for multiple purposes. If very few functions are removed, however, placing functions in subsections can cause code size to grow. Why? The ARM instruction set has limited support for constant literals. Constant literals include both integer constants and addresses. When a constant literal is needed, it is placed in a constant table in memory, and then a reference is made to the table entry. This table entry reference is accessed at an offset from the program counter (PC). The size of the offset is limited, which in turn limits the distance in memory between the constant table and the function which references it. Thus, the constant table must be placed in the same section as the function which refers to the constant. If there are multiple references to the same constant, even from different functions, these references can share one constant table entry, provided the functions are all in the same section with the constant table. When each function is placed in its own subsection, there can be no sharing of constant table entries between functions. References to the same constant result instead in duplicate entries in separate constant tables. Thus, overall code size may grow. In the case of the DSP/BIOS Link example, the ms option does reduce the size of the Link library functions in the final link; that is, when examining the Linked Image size data. Comparing the o3 mt build with the o3 mt ms build shows a code size savings of about 0.8%. However, the same comparison for the Full Library size data shows a code size increase due to the ms option. The size of the library is simply the sum of the all the code in the library. In that sense, there is no notion of removing a function from the library. Since none of the functions are removed, and placing each function in its own subsection causes more duplication in the constant tables, then overall code size increases. 14 ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link

15 8.6 Branch Chaining: ab=0 Option Branch chaining is a code transformation aimed at improving code size, though at the cost of increased cycles. Consider the following assembly pseudo-code: label: long_branch label... short_branch label... Branch chaining changes the code to: next_branch: label: short_branch next_branch... short_branch label... The second sequence is smaller, but takes longer. On ARM devices such a modification can save 2-4 bytes of code size. A key property of branch chaining is the length of the chain. The length is the number of branches that may be chained together to implement the original long branch. Branch chaining is enabled by default when building Thumb mode code. The default length is 10. Thus, branch chaining up to a length of 10 is enabled in all builds compared here except the one that disables it with the ab=0 option. The option to change the length is ab=number. Another way to disable branch chaining is to use the --disable_branch_chaining option. Branch chaining is never enabled when building Arm mode code. Assembly coders can automatically create branch chains by using special pseudo-branch instructions in place of the usual branch instructions. Details are in the readme file that accompanies the ARM compiler release, and will eventually be covered in the documentation. Branch chaining saves about 0.14% code size in the DSP/BIOS Link example application. So, the o3 mt ab=0 build is slightly larger than the o3 mt build since branch chaining is disabled. Even though it provides minimal savings in code size, it rarely makes sense to disable branch chaining. Branch chaining is only implemented in Thumb mode code, which is rarely speedcritical. Any speed-critical Thumb code, however, could save a few cycles by disabling branch chaining. ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link 15

16 9 Performance Data This section reviews the performance impact of the compiler options described in the previous section Real-time Clock Cycles base: -me --abi=tiabi add -o3 add -o3 -mt Compiler Options Figure 5. Performance Impact of Compiler Options Each bar in Figure 5 represents the cycles used (in Real-Time Clock cycles) to execute the example with different build options. Smaller values indicate better performance. Options described in Section 8, Code Size Data that are not shown in Figure 5 caused negligible (<1%) performance impacts and therefore are not shown here. 9.1 Data Collection The Probe module in DSP/BIOS Link (ARM side configuration option) was enabled to gather the performance data. The Probe module stores timestamps at pre-determined locations within the normal flow of execution. The timestamp data is then analyzed offline to determine performance. The data in Figure 5 was gathered using the standard message example and placing appropriate Probe API calls within the example. The data gathered represent the cycles required to send and receive 10 messages from the ARM to the DSP and back. 16 ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link

17 9.2 Analysis Optimization in the ARM compiler not only lowers code size by about 44% versus the baseline build. It also increases performance by 33%. Both performance and code size benefit from optimization build options. Adding the Thumb mode option (-mt) causes a slight increase in cycle execution. Figure 5 shows that there is a 3% increase in cycle execution when using Thumb mode. Why? If every Arm mode (32-bit) instruction had an equivalent Thumb mode (16-bit) instruction, code size should decrease by 50% without impacting performance. The reality is that the Thumb mode instruction provides a subset (arithmetic and logical operations, load/store data movements, and conditional and unconditional branches) of the functionality provided by the Arm mode instruction set. Hence, you can achieve good code size reduction using Thumb mode code. This subset of Thumb mode instructions provides most of the functionality required in a typical application. Therefore, a slight performance penalty is paid since, for a given program, a few of the Thumb mode instructions executed is more than the corresponding number of Arm mode instructions executed. The other options described in Section 8, Code Size Data caused negligible (<1%) performance impacts and therefore not shown in Figure 5. The options, especially function subsections (-ms) and branch-chaining (- ab=number), typically have an impact of 10s of cycles depending on the placement of functions and the depth of function calls. As for inlining, performance can be impacted by the removal of function calls and improvements in optimization when inlining occurs. 10 Conclusions The techniques described in this application note are general and can be applied to any TI ARM development platform. Not every option described is suitable for all applications. You will need to determine the best set of options to accomplish both the speed and performance necessary for their application and libraries. In some case, you will need to obtain performance data in order to determine the direct effect of these options. 11 References 1. TMS470R1x User s Guide (SPNU134) 2. TMS470R1x Assembly Language Tools User s Guide (SPNU118) 3. TMS470R1x Optimizing C/C++ Compiler User's Guide (SPNU151) 4. DSP/BIOS Link User s Guide for DA295 (LNK 093 USR) ARM Compiler Tips and Code Size Optimization Using DSP/BIOS Link 17

18 IMPORTANT NOTICE Texas Instruments Incorporated and its subsidiaries (TI) reserve the right to make corrections, modifications, enhancements, improvements, and other changes to its products and services at any time and to discontinue any product or service without notice. Customers should obtain the latest relevant information before placing orders and should verify that such information is current and complete. All products are sold subject to TI s terms and conditions of sale supplied at the time of order acknowledgment. TI warrants performance of its hardware products to the specifications applicable at the time of sale in accordance with TI s standard warranty. Testing and other quality control techniques are used to the extent TI deems necessary to support this warranty. Except where mandated by government requirements, testing of all parameters of each product is not necessarily performed. TI assumes no liability for applications assistance or customer product design. Customers are responsible for their products and applications using TI components. To minimize the risks associated with customer products and applications, customers should provide adequate design and operating safeguards. TI does not warrant or represent that any license, either express or implied, is granted under any TI patent right, copyright, mask work right, or other TI intellectual property right relating to any combination, machine, or process in which TI products or services are used. Information published by TI regarding third party products or services does not constitute a license from TI to use such products or services or a warranty or endorsement thereof. Use of such information may require a license from a third party under the patents or other intellectual property of the third party, or a license from TI under the patents or other intellectual property of TI. Reproduction of information in TI data books or data sheets is permissible only if reproduction is without alteration and is accompanied by all associated warranties, conditions, limitations, and notices. Reproduction of this information with alteration is an unfair and deceptive business practice. TI is not responsible or liable for such altered documentation. Resale of TI products or services with statements different from or beyond the parameters stated by TI for that product or service voids all express and any implied warranties for the associated TI product or service and is an unfair and deceptive business practice. TI is not responsible or liable for any such statements. Mailing Address: Texas Instruments Post Office Box Dallas, Texas Copyright 2005, Texas Instruments Incorporated

Configuring Code Composer Studio for OMAP Debugging

Configuring Code Composer Studio for OMAP Debugging Application Report SPRA807 - November 2001 Configuring Code Composer Studio for OMAP Debugging Harry Thompson Software Development Systems/Customer Support ABSTRACT The OMAP Code Composer Studio (CCStudio)

More information

Techniques for Profiling on ROM-Based Applications

Techniques for Profiling on ROM-Based Applications Application Report SPRA761 June 2001 Techniques for Profiling on ROM-Based Applications Harsh Sabikhi Code Composer Studio, Applications Engineering ABSTRACT This application report describes the methods

More information

A DSP/BIOS AIC23 Codec Device Driver for the TMS320C5510 DSK

A DSP/BIOS AIC23 Codec Device Driver for the TMS320C5510 DSK Application Report SPRA856A June 2003 A DSP/BIOS AIC23 Codec Device for the TMS320C5510 DSK ABSTRACT Software Development Systems This document describes the implementation of a DSP/BIOS device driver

More information

COMMUNICATIONS WITH THE MULTI- CHANNEL HOST P RT INTERFACE

COMMUNICATIONS WITH THE MULTI- CHANNEL HOST P RT INTERFACE Multiple Channels COMMUNICATIONS WITH THE MULTI- CHANNEL HOST P RT INTERFACE With the HPI and McHPI, applications can create a single physical channel and multiple virtual channels to provide communications

More information

Debugging Shared Memory Systems

Debugging Shared Memory Systems Application Report SPRA754 - May 2001 Debugging Shared Memory Systems Jeff Hunter Software Development Systems/Emulation Team ABSTRACT Multiple cores on a single processor often share a common block of

More information

The TMS320 DSP Algorithm Standard

The TMS320 DSP Algorithm Standard White Paper SPRA581C - May 2002 The TMS320 DSP Algorithm Standard Steve Blonstein Technical Director ABSTRACT The TMS320 DSP Algorithm Standard, also known as XDAIS, is part of TI s expressdsp initiative.

More information

A DSP/BIOS AIC23 Codec Device Driver for the TMS320C6416 DSK

A DSP/BIOS AIC23 Codec Device Driver for the TMS320C6416 DSK Application Report SPRA909A June 2003 A DSP/BIOS AIC23 Codec Device for the TMS320C6416 DSK ABSTRACT Software Development Systems This document describes the usage and design of a device driver for the

More information

C Fast RTS Library User Guide (Rev 1.0)

C Fast RTS Library User Guide (Rev 1.0) C Fast RTS Library User Guide (Rev 1.0) Revision History 22 Sep 2008 Initial Revision v. 1.0 IMPORTANT NOTICE Texas Instruments and its subsidiaries (TI) reserve the right to make changes to their products

More information

Using the TMS320C5509 USB Bootloader

Using the TMS320C5509 USB Bootloader Application Report SPRA840 - October 2002 Using the TMS320C5509 USB Bootloader Mathew George, Jr. (Joe) Clay Turner ABSTRACT C5000 DSP Applications Boot loading the TMS320VC5509 digital signal processor

More information

DSP/BIOS Link. Platform Guide Published on 20 th JUNE Copyright 2009 Texas Instruments Incorporated.

DSP/BIOS Link. Platform Guide Published on 20 th JUNE Copyright 2009 Texas Instruments Incorporated. DSP/BIOS Link Platform Guide 1.63 Published on 20 th JUNE 2009 Copyright 2009 Texas Instruments Incorporated. 2 Platform Support Products Version 1.63 IMPORTANT NOTICE Texas Instruments Incorporated and

More information

Increase Current Drive Using LVDS

Increase Current Drive Using LVDS Application Report SLLA100 May 2001 Increase Current Drive Using LVDS Steve Corrigan DSBU LVDS ABSTRACT The most common configuration for an LVDS connection is the one-way transmission topology. A single

More information

Programming the TMS320VC5509 RTC Peripheral

Programming the TMS320VC5509 RTC Peripheral Application Report SPRA384A - September 2002 Programming the TMS320VC5509 RTC Peripheral Scott Tater ABSTRACT DSP Applications Semiconductor Group This application report demonstrates the procedure used

More information

Memory Allocation Techniques in System with Dynamic Swapping of Application Codes

Memory Allocation Techniques in System with Dynamic Swapping of Application Codes Application Report SPRA824 June 2002 Memory Allocation Techniques in System with Dynamic Swapping of Application Codes Oh, Hong Lye SC Field Applications, Texas Instruments Singapore ABSTRACT This application

More information

FlashBurn: A DSK Flash Memory Programmer

FlashBurn: A DSK Flash Memory Programmer Application Report SPRA804 - October 2001 FlashBurn: A DSK Flash Memory Programmer Russ Heeschen SDS Productivity Tools Team ABSTRACT The FlashBurn utility is a Windows program that works along with Code

More information

TMS470R1x External Clock Prescale (ECP) Reference Guide

TMS470R1x External Clock Prescale (ECP) Reference Guide TMS470R1x External Clock Prescale (ECP) Reference Guide Literature Number: SPNU202B November 2004 IMPORTANT NOTICE Texas Instruments Incorporated and its subsidiaries (TI) reserve the right to make corrections,

More information

INVENTORY HISTORY REPORT EXTENSION. User Guide. User Guide Page 1

INVENTORY HISTORY REPORT EXTENSION. User Guide. User Guide Page 1 INVENTORY HISTORY REPORT EXTENSION User Guide User Guide Page 1 Important Notice JtechExtensions reserves the right to make corrections, modifications, enhancements, improvements, and other changes to

More information

TFP101, TFP201, TFP401, TFP401A 2Pix/Clk Output Mode

TFP101, TFP201, TFP401, TFP401A 2Pix/Clk Output Mode Application Note SLLA137 March 2003 TFP101, TFP201, TFP401, TFP401A 2Pix/Clk Output Mode Digital Visual Interface ABSTRACT This document explains the recommended configuration to operate the TFP101/201/401(A)

More information

Getting Started Guide: TMS-FET470A256 IAR Kickstart Development Kit

Getting Started Guide: TMS-FET470A256 IAR Kickstart Development Kit Getting Started Guide: TMS-FET470A256 IAR Kickstart Development Kit Skrtic/Mangino Page 1 of 11 SPNU250 IMPORTANT NOTICE Texas Instruments and its subsidiaries (TI) reserve the right to make changes to

More information

Interfacing the ADS8320/ADS8325 to The TMS320C6711 DSP

Interfacing the ADS8320/ADS8325 to The TMS320C6711 DSP Application Report SLAA175 JUNE 2003 Interfacing the ADS8320/ADS8325 to The TMS320C6711 DSP Lijoy Philipose Data Acquisition Applications ABSTRACT This application note presents a method for interfacing

More information

This document describes the features of the GUI program used to control Power Line Modem with E-Meter Platform.

This document describes the features of the GUI program used to control Power Line Modem with E-Meter Platform. Overview This document describes the features of the GUI program used to control Power Line Modem with E-Meter Platform. Program Startup The first time the program is run, three menus will be displayed

More information

TMS320UC5409/TMS320VC5409 Digital Signal Processors Silicon Errata

TMS320UC5409/TMS320VC5409 Digital Signal Processors Silicon Errata TMS320UC5409/TMS320VC5409 Digital Signal Processors Silicon Errata January 2000 Revised October 2001 Copyright 2001, Texas Instruments Incorporated Contents 1 Introduction........................................................................................

More information

DSP/BIOS LINK OMAP2530 EVM LNK 172 USR. Version 1.64 NOV 13, 2009

DSP/BIOS LINK OMAP2530 EVM LNK 172 USR. Version 1.64 NOV 13, 2009 DSP/BIOS LINK OMAP2530 EVM NOV 13, 2009 Document Template Version 1 Page 1 of 21 This page has been intentionally left blank. Page 2 of 21 IMPORTANT NOTICE Texas Instruments Incorporated and its subsidiaries

More information

DSP/BIOS LINK. Pool LNK 082 DES. Version 1.30

DSP/BIOS LINK. Pool LNK 082 DES. Version 1.30 DESIGN DOCUMENT DSP/BIOS LINK Template Version 12 Page 1 of 35 This page has been intentionally left blank Page 2 of 35 IMPORTANT NOTICE Texas Instruments Incorporated and its subsidiaries (TI) reserve

More information

INVENTORY REPORT EXTENSION. User Guide. User Guide Page 1

INVENTORY REPORT EXTENSION. User Guide. User Guide Page 1 INVENTORY REPORT EXTENSION User Guide User Guide Page 1 Important Notice JtechExtensions reserves the right to make corrections, modifications, enhancements, improvements, and other changes to its products

More information

PROGRAMMING THE MSC1210

PROGRAMMING THE MSC1210 Application Report SBAA076 - April 2002 PROGRAMMING THE MSC1210 By Russell Anderson SERIAL FLASH PROGRAMMING AUTOBAUD AND SETUP The BootROM start address is F800 H for User Application Mode (UAM), and

More information

TMS320VC5409A Digital Signal Processor Silicon Errata

TMS320VC5409A Digital Signal Processor Silicon Errata TMS320VC5409A Digital Signal Processor Silicon Errata June 2001 Revised May 2003 Copyright 2003, Texas Instruments Incorporated Literature Number REVISION HISTORY This revision history highlights the technical

More information

TMS320C6000 DSP Software-Programmable Phase-Locked Loop (PLL) Controller Reference Guide

TMS320C6000 DSP Software-Programmable Phase-Locked Loop (PLL) Controller Reference Guide TMS320C6000 DSP Software-Programmable Phase-Locked Loop (PLL) Controller Reference Guide Literature Number: April 2003 IMPORTANT NOTICE Texas Instruments Incorporated and its subsidiaries (TI) reserve

More information

Using the TMS320 DSP Algorithm Standard in a Dynamic DSP System

Using the TMS320 DSP Algorithm Standard in a Dynamic DSP System Application Report SPRA580B Using the TMS320 DSP Algorithm Standard in a Dynamic DSP System Carl Bergman Digital Signal Processing Solutions Abstract This application note illustrates some techniques used

More information

OMAP SW. Release Notes. OMAP Software Tools OST version 2.5 Release. 16xx/1710/242x platforms. Document Revision: 2.5 Release

OMAP SW. Release Notes. OMAP Software Tools OST version 2.5 Release. 16xx/1710/242x platforms. Document Revision: 2.5 Release OMAP SW OST version 2.5 Release 16xx/1710/242x platforms Document Revision: 2.5 Release Issue Date: 29 th July 2005 Revision: 2.5 Release 13 th July 2005 Table of Contents Page i IMPORTANT NOTICE Texas

More information

CUSTOM GOOGLE SEARCH. User Guide. User Guide Page 1

CUSTOM GOOGLE SEARCH. User Guide. User Guide Page 1 User Guide User Guide Page 1 Important Notice reserves the right to make corrections, modifications, enhancements, improvements, and other changes to its products and services at any time and to discontinue

More information

Code Composer Studio Getting Started Guide

Code Composer Studio Getting Started Guide Code Composer Studio Getting Started Guide Literature Number: SPRU509 May 2001 Printed on Recycled Paper IMPORTANT NOTICE Texas Instruments and its subsidiaries (TI) reserve the right to make changes to

More information

A Technical Overview of expressdsp-compliant Algorithms for DSP Software Producers

A Technical Overview of expressdsp-compliant Algorithms for DSP Software Producers Application Report SPRA579C - September 2002 A Technical Overview of expressdsp-compliant Algorithms for DSP Software Producers Stig Torud Organization ABSTRACT Advances in digital signal processor (DSP)

More information

Application Report. 1 Hardware Description. John Fahrenbruch... MSP430 Applications

Application Report. 1 Hardware Description. John Fahrenbruch... MSP430 Applications Application Report SLAA309 June 2006 Low-Power Tilt Sensor Using the MSP430F2012 John Fahrenbruch... MSP430 Applications ABSTRACT The MSP430 family of low-power microcontrollers are ideal for low-power

More information

The examples in this application report require the Flash API Modules (SPRC236) within the "Tools & Software" folder.

The examples in this application report require the Flash API Modules (SPRC236) within the Tools & Software folder. Application Report SPNA093A February 2006 Revised December 2007 In-System Programming With Catalog TMS470 Devices John Mangino.. TMS470 Applications ABSTRACT This document gives two examples of reprogramming

More information

IndoTraq Development Kit 1: Command Reference

IndoTraq Development Kit 1: Command Reference IndoTraq Development Kit 1: Command Reference April 2016 Page 1 of 9 Copyright 2016, IndoTraq LLC DK1 Command Reference v1.0 Contents 1 Introduction... 3 1.1 Writing Conventions... 3 2 Basics... 3 2.1

More information

Power Line Modem with E-Meter Platform Quick Start Guide

Power Line Modem with E-Meter Platform Quick Start Guide Purpose This document gives a quick summary of the steps to set up and run the platform. Preparation The setup configurations are shown in Figures 1 and 2, depending on whether a USB or RS232 (serial)

More information

EV Software Rev Evaluation System User Guide. Introduction. Contents. Hardware and Software Setup. Software Installation

EV Software Rev Evaluation System User Guide. Introduction. Contents. Hardware and Software Setup. Software Installation Contents Evaluation System User Guide Software Rev 2.0.1 Introduction Section Page No. Introduction 1 Kit Contents 1 Hardware and Software Setup 1 Software Installation 1 Hardware Connection 1 Operation

More information

DSP/BIOS LINK. Configurable TSK and SWI approach LNK 207 DES. Version <1.00>

DSP/BIOS LINK. Configurable TSK and SWI approach LNK 207 DES. Version <1.00> DESIGN DOCUMENT DSP/BIOS LINK Version Template Version 12 Version Page 1 of 21 This page has been intentionally left blank Version Page 2 of 21 IMPORTANT NOTICE Texas Instruments Incorporated

More information

Using Endianess Conversion in the OMAP5910 Device

Using Endianess Conversion in the OMAP5910 Device Application Report SWPA027 May 2004 Using Endianess Conversion in the OMAP5910 Device Matthias Kassner ABSTRACT The OMAP5910 device features a new dual-core architecture from Texas Instruments (TI) that

More information

ADD RELATED PRODUCTS TO CART. User Guide. User Guide Page 1

ADD RELATED PRODUCTS TO CART. User Guide. User Guide Page 1 ADD RELATED PRODUCTS TO CART User Guide User Guide Page 1 Important Notice reserves the right to make corrections, modifications, enhancements, improvements, and other changes to its products and services

More information

TMS320C620x/C670x DSP Boot Modes and Configuration Reference Guide

TMS320C620x/C670x DSP Boot Modes and Configuration Reference Guide TMS320C620x/C670x DSP Reference Guide Literature Number: July 2003 IMPORTANT NOTICE Texas Instruments Incorporated and its subsidiaries (TI) reserve the right to make corrections, modifications, enhancements,

More information

I2C and the TAS3001C. Introduction. The I2C Protocol. Digital Audio Group ABSTRACT

I2C and the TAS3001C. Introduction. The I2C Protocol. Digital Audio Group ABSTRACT Application Report SLEA001 February 2001 I2C and the TAS3001C Digital Audio Group ABSTRACT The TAS3001C stereo audio digital equalizer provides a serial control interface using the I2C protocol. Since

More information

TMS320C64x DSP Peripheral Component Interconnect (PCI) Performance

TMS320C64x DSP Peripheral Component Interconnect (PCI) Performance Application Report SPRA965 October 2003 TMS320C64x DSP Peripheral Component Interconnect (PCI) Performance Stéphane Smith C6x Device Applications ABSTRACT This application report describes the number of

More information

SavvyCube Ecommerce Analytics Connector by MageWorx. User Guide

SavvyCube Ecommerce Analytics Connector by MageWorx. User Guide SavvyCube Ecommerce Analytics Connector by MageWorx User Guide Getting started with SavvyCube A SavvyCube account is required in order to use this extension. You can sign up for an account here: https://appbeta.savvycube.com/account/register

More information

External Programming of the TMS320C64x EDMA for Low Overhead Data Transfers

External Programming of the TMS320C64x EDMA for Low Overhead Data Transfers Application Report SPRAA36 July 2004 External Programming of the TMS320C64x EDMA for Low Overhead Data Transfers Sébastien Tomas Wireless Infrastructure ABSTRACT This application report details a mechanism

More information

Choosing the Appropriate Simulator Configuration in Code Composer Studio IDE

Choosing the Appropriate Simulator Configuration in Code Composer Studio IDE Application Report SPRA864 November 2002 Choosing the Appropriate Simulator Configuration in Code Composer Studio IDE Pankaj Ratan Lal, Ambar Gadkari Software Development Systems ABSTRACT Software development

More information

Texas Instruments Voltage-Level-Translation Devices

Texas Instruments Voltage-Level-Translation Devices Application Report SCEA21 - February 21 Texas Instruments -Level-Translation Devices Nadira Sultana and Chris Cockrill Standard Linear & Logic ABSTRACT In electronic systems design, there is a need to

More information

TMS320C5x Memory Paging (Expanding its Address Reach)

TMS320C5x Memory Paging (Expanding its Address Reach) TMS320 DSP DESIGNER S NOTEBOOK TMS320C5x Memory Paging (Expanding its Address Reach) APPLICATION BRIEF: SPRA242 Contributed by Joe George Digital Signal Processing Products Semiconductor Group Texas Instruments

More information

Donations Ultimate User Guide

Donations Ultimate User Guide User Guide Important Notice reserves the right to make corrections, modifications, enhancements, improvements, and other changes to its products and services at any time and to discontinue any product

More information

Performance Analysis of Face Recognition Algorithms on TMS320C64x

Performance Analysis of Face Recognition Algorithms on TMS320C64x Application Report SPRA874 December 2002 Performance Analysis of Face Recognition Algorithms on TMS320C64x Aziz Umit Batur and Bruce E. Flinchbaugh DSP Solutions R&D Center ABSTRACT Face recognition is

More information

Application Report. 1 Introduction. MSP430 Applications. Keith Quiring... ABSTRACT

Application Report. 1 Introduction. MSP430 Applications. Keith Quiring... ABSTRACT Application Report SLAA325 July 2006 MSP430 Interface to CC1100/2500 Code Library Keith Quiring... MSP430 Applications ABSTRACT The MSP430 is an ideal microcontroller solution for low-cost, low-power wireless

More information

PROFIT AND LOSS REPORT EXTENSION. User Guide. User Guide Page 1

PROFIT AND LOSS REPORT EXTENSION. User Guide. User Guide Page 1 PROFIT AND LOSS REPORT EXTENSION User Guide User Guide Page 1 Important Notice JTechExtensions reserves the right to make corrections, modifications, enhancements, improvements, and other changes to its

More information

TMS320C6000 DSP 32-Bit Timer Reference Guide

TMS320C6000 DSP 32-Bit Timer Reference Guide TMS320C6000 DSP 32-Bit Timer Reference Guide Literature Number: SPRU582A July 2003 Revised October 2004 Contents TMS320C6000 DSP 32-Bit Timer... 2 Table of Contents... 2 Preface... 3 1 Overview... 5 2

More information

TMS320C6000 DSP Interrupt Selector Reference Guide

TMS320C6000 DSP Interrupt Selector Reference Guide TMS320C6000 DSP Interrupt Selector Reference Guide Literature Number: January 2004 IMPORTANT NOTICE Texas Instruments Incorporated and its subsidiaries (TI) reserve the right to make corrections, modifications,

More information

IMPORT/EXPORT Newsletter Subscribers. User Guide. User Guide Page 1

IMPORT/EXPORT Newsletter Subscribers. User Guide. User Guide Page 1 IMPORT/EXPORT Newsletter Subscribers User Guide User Guide Page 1 Important Notice reserves the right to make corrections, modifications, enhancements, improvements, and other changes to its products and

More information

Maximizing Endurance of MSC1210 Flash Memory

Maximizing Endurance of MSC1210 Flash Memory Application Report SBAA91 April 23 Maximizing Endurance of MSC121 Flash Memory Ramesh Saripalli saripalli_ramish@ti.com ABSTRACT Data Acquisition Products Microsystems The MSC121 embeds an 851 CPU, a high-performance,

More information

DSP/BIOS LINK RING IO LNK 129 DES. Version 0.91

DSP/BIOS LINK RING IO LNK 129 DES. Version 0.91 DESIGN DOCUMENT DSP/BIOS LINK Template Version 1.2 Page 1 of 70 This page has been intentionally left blank. Page 2 of 70 IMPORTANT NOTICE Texas Instruments Incorporated and its subsidiaries (TI) reserve

More information

Table 1. Proper Termination of Unused (Port) Pins in a Single-Port PSE System

Table 1. Proper Termination of Unused (Port) Pins in a Single-Port PSE System Application Report SLVA231A June 2006 Revised November 2006 Proper Termination of Unused Port Connections Dale Wellborn... PMP Systems Power The TPS2384 quad integrated power sourcing equipment (PSE) power

More information

xdais-dm (Digital Media) User Guide

xdais-dm (Digital Media) User Guide xdais-dm (Digital Media) User Guide Literature Number: SPRUEC8B January 2007 IMPORTANT NOTICE Texas Instruments Incorporated and its subsidiaries (TI) reserve the right to make corrections, modifications,

More information

DSP/BIOS Tconf Language Coding Standards

DSP/BIOS Tconf Language Coding Standards Application Report SPRAA67 November 2004 DSP/BIOS Tconf Language Coding Standards Steve Connell ABSTRACT Texas Instruments, Santa Barbara This document describes the Tconf language coding standards. This

More information

Implementation of a CELP Speech Coder for the TMS320C30 using SPOX

Implementation of a CELP Speech Coder for the TMS320C30 using SPOX Implementation of a CELP Speech Coder for the TMS320C30 using SPOX APPLICATION REPORT: SPRA401 Mark D. Grosen Spectron Microsystems, Inc Digital Signal Processing Solutions IMPORTANT NOTICE Texas Instruments

More information

February 2003 PMP EVMs SLVU081

February 2003 PMP EVMs SLVU081 User s Guide February 2003 PMP EVMs SLVU081 IMPORTANT NOTICE Texas Instruments Incorporated and its subsidiaries (TI) reserve the right to make corrections, modifications, enhancements, improvements, and

More information

TMS470R1VF334E TMS470 Microcontrollers Silicon Errata

TMS470R1VF334E TMS470 Microcontrollers Silicon Errata TMS470R1VF334E TMS470 Microcontrollers Silicon Errata Silicon Revision C August 2005 Copyright 2005, Texas Instruments Incorporated Contents 1 Known Design Marginality/Exceptions to Functional Specifications.....................................

More information

NO P.O. BOXES ALLOWED AT CHECKOUT. User Guide. User Guide Page 1

NO P.O. BOXES ALLOWED AT CHECKOUT. User Guide. User Guide Page 1 NO P.O. BOXES ALLOWED AT CHECKOUT User Guide User Guide Page 1 Important Notice reserves the right to make corrections, modifications, enhancements, improvements, and other changes to its products and

More information

GUEST CHECKOUT TO REGISTERED CUSTOMERS. User Guide. User Guide Page 1

GUEST CHECKOUT TO REGISTERED CUSTOMERS. User Guide. User Guide Page 1 GUEST CHECKOUT TO REGISTERED CUSTOMERS User Guide User Guide Page 1 Important Notice reserves the right to make corrections, modifications, enhancements, improvements, and other changes to its products

More information

PCIxx12 Single Socket CardBus Controller with Integrated 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller

PCIxx12 Single Socket CardBus Controller with Integrated 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller PCIxx12 Single Socket CardBus Controller with Integrated 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller Data Manual Includes: PCI4512GHK, PCI4512ZHK, PCI6412GHK, PCI6412ZHK, PCI6612GHK, PCI6612ZHK,

More information

TMS320VC5501/5502 DSP Host Port Interface (HPI) Reference Guide

TMS320VC5501/5502 DSP Host Port Interface (HPI) Reference Guide TMS320VC5501/5502 DSP Reference Guide Literature Number: November 2004 IMPORTANT NOTICE Texas Instruments Incorporated and its subsidiaries (TI) reserve the right to make corrections, modifications, enhancements,

More information

Store & Currency Auto Switcher

Store & Currency Auto Switcher Store & Currency Auto Switcher User Guide Important Notice reserves the right to make corrections, modifications, enhancements, improvements, and other changes to its products and services at any time

More information

October 2002 PMP Portable Power SLVU074

October 2002 PMP Portable Power SLVU074 User s Guide October 2002 PMP Portable Power SLVU074 IMPORTANT NOTICE Texas Instruments Incorporated and its subsidiaries (TI) reserve the right to make corrections, modifications, enhancements, improvements,

More information

TMS470R1x Serial Communication Interface (SCI) Reference Guide

TMS470R1x Serial Communication Interface (SCI) Reference Guide TMS470R1x Serial Communication Interface (SCI) Reference Guide Literature Number: SPNU196A September 2002 IMPORTANT NOTICE Texas Instruments Incorporated and its subsidiaries (TI) reserve the right to

More information

TLK10081 EVM Quick Start Guide Texas Instruments Communications Interface Products

TLK10081 EVM Quick Start Guide Texas Instruments Communications Interface Products TLK10081 EVM Quick Start Guide Texas Instruments Communications Interface Products 1 Board Overview +5 V Adapter Input Connector for voltage monitor board Connector for SMA break-out or FPGA board. Allows

More information

User s Guide for Sonic MDIO Software

User s Guide for Sonic MDIO Software User's Guide This guide explains the usage of the TI Sonic MDIO Software to provide a means of communication with an MDIO compatible device. It communicates through the serial port of the host PC. The

More information

Hardware UART for the TMS320C3x

Hardware UART for the TMS320C3x TMS320 DSP DESIGNER S NOTEBOOK Hardware UART for the TMS320C3x APPLICATION BRIEF: SPRA223 Contributed by Lawrence Wong Digital Signal Processing Products Semiconductor Group Texas Instruments June 1993

More information

Writing TMS320C8x PP Code Under the Multitasking Executive

Writing TMS320C8x PP Code Under the Multitasking Executive TMS320 DSP DESIGNER S NOTEBOOK Writing TMS320C8x PP Code Under the Multitasking Executive APPLICATION BRIEF: SPRA269 Leor Brenman Digital Signal Processing Products Semiconductor Group Texas Instruments

More information

WL1271 ini File Description and Parameters User's Guide

WL1271 ini File Description and Parameters User's Guide WL1271 ini File Description and Parameters User's Guide Literature Number: SPRUGT8 January 2010 Contents Contents... 2 Revision History... 4 Reference Documents... 4 About This Document... 4 Chapter 1...

More information

SN5446A, 47A, 48, SN54LS47, LS48, LS49 SN7446A, 47A, 48, SN74LS47, LS48, LS49 BCD-TO-SEVEN-SEGMENT DECODERS/DRIVERS

SN5446A, 47A, 48, SN54LS47, LS48, LS49 SN7446A, 47A, 48, SN74LS47, LS48, LS49 BCD-TO-SEVEN-SEGMENT DECODERS/DRIVERS PRODUCTION DATA information is current as of publication date. Products conform to specifications per the terms of Texas Instruments standard warranty. Production processing does not necessarily include

More information

Bootloading the TMS320VC5402 in HPI Mode

Bootloading the TMS320VC5402 in HPI Mode Application Report SPRA382 April 2002 Bootloading the TMS320VC5402 in HPI Mode Scott Tater DSP Applications Semiconductor Group ABSTRACT The TMS320VC5402 bootloader allows the system designer flexibility

More information

SN65DSI86 SW Examples

SN65DSI86 SW Examples Application Report December 30, 2013 SN65DSI86 SW Examples Mike Campbell CCI ABSTRACT The document contains examples of how to program the SN65DSI86 for different purposes. All examples in the document

More information

GUEST CHECKOUT TO REGISTERED CUSTOMERS

GUEST CHECKOUT TO REGISTERED CUSTOMERS GUEST CHECKOUT TO REGISTERED CUSTOMERS FOR MAGENTO 2 User Guide User Guide Page 1 Important Notice reserves the right to make corrections, modifications, enhancements, improvements, and other changes to

More information

2. With the Evaluation Kit DVD, click the Tools button and then click the Code Composer Studio logo to start the setup program.

2. With the Evaluation Kit DVD, click the Tools button and then click the Code Composer Studio logo to start the setup program. Stellaris Development and Evaluation Kits for Code Composer Studio Stellaris Development and Evaluation Kits provide a low-cost way to start designing with Stellaris microcontrollers using Texas Instruments

More information

Dual Access into Single- Access RAM on a C5x Device

Dual Access into Single- Access RAM on a C5x Device TMS320 DSP DESIGNER S NOTEBOOK Dual Access into Single- Access RAM on a C5x Device APPLICATION BRIEF: SPRA215 Mansoor Chishtie Digital Signal Processing Products Semiconductor Group Texas Instruments February

More information

PMC to PCI Express Adapter with JN4 Connector Breakout

PMC to PCI Express Adapter with JN4 Connector Breakout Innovative Integration Real time solutions! Mar 2009, Rev 1.1 PMC to PCI Express Adapter with JN4 Connector Breakout FEATURES Adapt one PMC to a PCI Express slot 4 lane PCI Express Host Interface PCI 64

More information

Board Layout Adjustments Between the TNETE2201B and TLK2201/TLK1201

Board Layout Adjustments Between the TNETE2201B and TLK2201/TLK1201 Application Report SLLA115 May 2002 Board Layout Adjustments Between the TNETE2201B and TLK2201/TLK1201 Lori Schnier; Falk Alicke, Thomas Neu HPA Wizard Serial Links ABSTRACT This report explains the different

More information

IMPORT/EXPORT CUSTOMERS FOR MAGENTO 2. User Guide. User Guide Page 1

IMPORT/EXPORT CUSTOMERS FOR MAGENTO 2. User Guide. User Guide Page 1 IMPORT/EXPORT CUSTOMERS FOR MAGENTO 2 User Guide User Guide Page 1 Important Notice reserves the right to make corrections, modifications, enhancements, improvements, and other changes to its products

More information

Important Notice. All company and brand products and service names are trademarks or registered trademarks of their respective holders.

Important Notice. All company and brand products and service names are trademarks or registered trademarks of their respective holders. Important Notice MageWorx reserves the right to make corrections, modifications, enhancements, improvements, and other changes to its products and services at any time and to discontinue any product or

More information

TMS320C672x DSP Software-Programmable Phase-Locked Loop (PLL) Controller. Reference Guide

TMS320C672x DSP Software-Programmable Phase-Locked Loop (PLL) Controller. Reference Guide TMS320C672x DSP Software-Programmable Phase-Locked Loop (PLL) Controller Reference Guide Literature Number: SPRU879A May 2005 2 SPRU879A May 2005 Contents Preface... 5 1 Overview... 7 2 Functional Description...

More information

A DSP/BIOS EDMA McBSP Device Driver for TMS320C6x1x DSPs

A DSP/BIOS EDMA McBSP Device Driver for TMS320C6x1x DSPs Application Report SPRA846A June 2003 A DSP/BIOS EDMA McBSP Device Driver for TMS320C6x1x DSPs ABSTRACT Software Development Systems This document describes the usage and design of the generic TMS320C6x1x

More information

DONATIONS ULTIMATE USER GUIDE 1

DONATIONS ULTIMATE USER GUIDE 1 DONATIONS ULTIMATE USER GUIDE 1 Important Notice MageWorx reserves the right to make corrections, modifications, enhancements, improvements, and other changes to its products and services at any time and

More information

Important Notice. All company and brand products and service names are trademarks or registered trademarks of their respective holders.

Important Notice. All company and brand products and service names are trademarks or registered trademarks of their respective holders. 1 Important Notice MageWorx reserves the right to make corrections, modifications, enhancements, improvements, and other changes to its products and services at any time and to discontinue any product

More information

IMPORT/EXPORT URL REWRITES FOR MAGENTO 2. User Guide. User Guide Page 1

IMPORT/EXPORT URL REWRITES FOR MAGENTO 2. User Guide. User Guide Page 1 IMPORT/EXPORT URL REWRITES FOR MAGENTO 2 User Guide User Guide Page 1 Important Notice reserves the right to make corrections, modifications, enhancements, improvements, and other changes to its products

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

TMS320C55x Assembly Language Tools User s Guide

TMS320C55x Assembly Language Tools User s Guide TMS320C55x Assembly Language Tools User s Guide Literature Number: SPRU280D June 2001 Printed on Recycled Paper IMPORTANT NOTICE Texas Instruments and its subsidiaries (TI) reserve the right to make changes

More information

TMS320C6000 DSP General-Purpose Input/Output (GPIO) Reference Guide

TMS320C6000 DSP General-Purpose Input/Output (GPIO) Reference Guide TMS320C6000 DSP General-Purpose Input/Output (GPIO) Reference Guide Literature Number: March 2004 IMPORTANT NOTICE Texas Instruments Incorporated and its subsidiaries (TI) reserve the right to make corrections,

More information

Order Management Magento Extension User Guide

Order Management Magento Extension User Guide Order Management Magento Extension User Guide 1 Important Notice MageWorx reserves the right to make corrections, modifications, enhancements, improvements, and other changes to its products and services

More information

Stereo Dac Motherboard application information

Stereo Dac Motherboard application information Stereo Dac Motherboard application information 1 Introduction The "Stereo Dac Motherboard" is a high end solution to create a complete dac system. Just one board is needed to create a stereo system. Several

More information

Wolverine - based microcontrollers. Slashing all MCU power consumption in half

Wolverine - based microcontrollers. Slashing all MCU power consumption in half Wolverine - based microcontrollers Slashing all MCU power consumption in half Wolverine: Industry s lowest power MCU platform Unique mixed signal ultra-low leakage process technology Enables variety of

More information

Protecting the TPS25810 from High Voltage DFPs

Protecting the TPS25810 from High Voltage DFPs Application Report Nick Smith... Power Interface ABSTRACT The TPS25810 is a USB Type-C Downstream Facing Port (DFP) controller that monitors the Type-C Configuration Channel (CC) lines to determine when

More information

Digital IP Cell 8-bit Microcontroller PE80

Digital IP Cell 8-bit Microcontroller PE80 1. Description The is a Z80 compliant processor soft-macro - IP block that can be implemented in digital or mixed signal ASIC designs. The Z80 and its derivatives and clones make up one of the most commonly

More information

DSP/BIOS, RTDX and Host-Target Communications

DSP/BIOS, RTDX and Host-Target Communications Application Report SPRA895 February 2003 DSP/BIOS, and Host-Target Communications Harish Thampi S / Jagan Govindarajan Software Development Systems ABSTRACT Real-Time Data Exchange ( ) provides real-time,

More information

Analysis Toolkit for Code Composer Studio v2.2 User s Guide

Analysis Toolkit for Code Composer Studio v2.2 User s Guide Analysis Toolkit for Code Composer Studio v2.2 User s Guide Literature Number: SPRU623 January 2003 Printed on Recycled Paper IMPORTANT NOTICE Texas Instruments Incorporated and its subsidiaries (TI) reserve

More information