?? readme.1st
字號:
******************************************************************************* TMS320C6000 Code Generation Tools Version 6.0.3******************************************************************************* TEXAS INSTRUMENTS MICROPROCESSOR DEVELOPMENT TOOLS Thank you for choosing Texas Instruments software development tools. It is ourgoal to provide you with the most useful and efficient development tools fromwhich to develop your applications around Texas Instruments processors.Included in the package you will find our Microprocessor Development SystemsCustomer Support Guide which shows services available to our customers. This readme.txt file documents changes and additions to the tools whichare not covered in the printed documentation.For questions or technical support, please consult your customer support guideor contact customer support at support@ti.com.******************************************************************************* Table of Contents*******************************************************************************1. New in 6.0.11.01. Compiling/assembling for new C64+ and C67+ ISAs1.02. New RTS libraries for C64+ and C67+ 1.03. New assembler and compiler C64+ and C67+ predefined symbols1.04. long long type/New intrinsics/New _mem8 intrinsic1.05. Compression/-ms flag and the C64+ architecture1.06. Must use shell to compile, assemble, and link1.07. -gp, --symdebug:profile_coff and --symdebug:coff not allowed for C64+1.08. Certain assembly expressions are disallowed for C64+1.09. Absolute Listing not supported for C64+1.10. Cross-reference listing files do not show correct asm values for C64+1.11. Save and restore the ILC and RILC when appropriate in interrupt fns 1.12. RTS function "strasgi" update 1.13. C67+ DESR and DETR control registers 1.14. Reading posix long name tables in archives 1.15. Multi-level subsection support in linker 1.16. Additional calling convention considerations for C64+1.17. Trampolines assume B15 is the stack pointer1.18. Run Time Support Libraries no longer compiled with -ml21.19. New Information Available in Map File1.20. Intrinsics for C64+1.21. Intrinsics for C67+1.22. New option --c64p_l1d_workaround={on,off}2. Other information2.01. Do not Link C++ Code at address 0x000000002.02. Using -mi<n> Doesn't Affect RTS Functions2.03. Notes on using the Standalone Simulator (load6x)2.04. Tips on printing from linear assembly2.05. Old code that uses dynamic casts is incompatible with newer RTS libs3. Known Issues 4. Fixed Issues *******************************************************************************1. New in 6.0.1*******************************************************************************------------------------------------------------------------------------------1.01. Compiling/assembling for new C64+ and C67+ ISAs------------------------------------------------------------------------------For C64+, invoke cl6x using the -mv6400+, -mv64plus, -mv64+, -mv64p, or -mv6455 option.For C67+, invoke cl6x using the -mv6700+, -mv67plus, -mv67+, -mv67p, or -mvDA700 option.------------------------------------------------------------------------------1.02. New RTS libraries for C64+ and C67+ ------------------------------------------------------------------------------Use the rts64plus.lib, rts64pluse.lib, rts64plus_eh.lib, or rts64pluse_eh.liblibraries when compiling for C64+.Use the rts67plus.lib, rts67pluse.lib, rts67plus_eh.lib, or rts67pluse_eh.liblibraries when compiling for C67+.------------------------------------------------------------------------------1.03. New assembler and compiler C64+ and C67+ predefined symbols------------------------------------------------------------------------------The predefined symbolic constant for C64+ that can be used in assemblysource is .TMS320C6400_PLUS. The predefined macro for C6400+ that can beused in C and C++ source is _TMS320C6400_PLUS. Note that when -mv64+is used, .TMS320C6400 and _TMS320C6400 are also defined to be true (1).The predefined symbolic constant for C67+ that can be used in assemblysource is .TMS320C6700_PLUS. The predefined macro for C6400+ that can beused in C and C++ source is _TMS320C6700_PLUS. Note that when -mv67+is used, .TMS320C6700 and _TMS320C6700 are also defined to be true (1).------------------------------------------------------------------------------1.04. long long type/New intrinsics/New _mem8 intrinsic------------------------------------------------------------------------------For the new C64+ intrinsics that use 64-bit types, the equivalent Ctype is "long long." Do not use the C type "double" or you'll get acall to an rts math function to do the floating-point conversion. Thereis a new instrinsic, _mem8, that is similar to _memd8, but has a type oflong long instead of double.There are new long long versions of intrinsics that return 64-bit values.The compiler now supports the following intrinsics: _mpy2ll, _mpyhill, _mpylill, _mpysu4ll, mpyu4ll, _smpy2ll, and mpyidll. These intrinsics return a long long type and supplement similar intrinsics that previously returned a double (containing a 64-bit int).The compiler now supports the following intrinsics to help manipulate long long values: _loll, _hill, and _itoll. _loll() returnsthe lower 32 bits of a long long. _hill() returns the upper 32 bits ofa long long. _itoll() concatenates two integer arguments and returns along long.------------------------------------------------------------------------------1.05. Compression/-ms flag and the C64+ architecture------------------------------------------------------------------------------The compiler includes support for C64+ (-mv6400+). This means that,according to the -ms level used, the code will be more tailored to leverage the new compact instructions.Use the option flag --no_compress to disable compression. ("Compression"is the changing 32-bit instructions to 16-bit instructions, wherepossible/profitable.)------------------------------------------------------------------------------1.06. Must use shell to compile, assemble, and link------------------------------------------------------------------------------Just a reminder that the shell (cl6x) must be used when compiling,assembling, or linking. Do not call asm6x or lnk6x directly. This policyhas been in effect since the 4.3x tools release.------------------------------------------------------------------------------1.07. -gp, --symdebug:profile_coff and --symdebug:coff not allowed for C64+------------------------------------------------------------------------------These options are STABS-related, and therefore not allowed with -mv6400+. There is not, and will not be, support for STABS debugging informationfor C64+ in the .obj and .out files. Therefore, the options--symdebug:profile_coff (stabs profile debug info) and --symdebug:coff(stabs debug info) will not work correctly (and may even crash the olderversions of the tools). Only DWARF debugging information will becorrect. Specifying no debug option on the command-line defaults to"skeletal DWARF," which allows function profiling. Use -g (same as--symdebug:dwarf) if you need full symbolic debug.------------------------------------------------------------------------------1.08. Certain assembly expressions are disallowed for C64+------------------------------------------------------------------------------Certain expressions that were allowed for C6200, C6400, and C6700 are notallowed for C64+. A common case is taking the difference of two labelsthat are both defined in a code section. For example, expressions of thetype (label1 - label2) when the two labels/symbols are defined in a .textsection are not allowed for .set and .equ directives.------------------------------------------------------------------------------1.09. Absolute Listing not supported for C64+------------------------------------------------------------------------------Assembling an absolute listing (.abs) file will result in an error messagefor C64+. Absolute listing files cannot be provided because of how objectfiles are generated on C64+. The object file display utility (ofd6x), the disassembler (dis6x), or the linker map files (-m shell linker option) can be used to provide similar information.Regular listing files will still show the correct information for C64+.------------------------------------------------------------------------------1.10. Cross-reference listing files do not show correct asm values for C64+------------------------------------------------------------------------------Cross-reference listing files do not show accurate assembly values ("AsmVal"column) when compiling for C64+. Instead, use the regular listing capabilityor the disassembler to provide the equivalent information.------------------------------------------------------------------------------1.11. Save and restore the ILC and RILC when appropriate in interrupt fns ------------------------------------------------------------------------------Any existing ISR must be recompiled (or rewritten) for C64+ so the ILC and RILC control registers are also saved and restored. The compiler generates code to save and restore the ILC and RILC when the ISR calls a function or uses the loop buffer (SPLOOP). Assembly language programmers should be aware of the need to save the ILC and RILC in interrupt routines when developing code for C64+.------------------------------------------------------------------------------1.12. RTS function "strasgi" update ------------------------------------------------------------------------------A new, more efficient, version of the function "strasgi" is implemented for C64+. The name of the function is "strasgi_64plus". You must link with the rts64plus.lib.------------------------------------------------------------------------------1.13. C67+ DESR and DETR control registers ------------------------------------------------------------------------------Added 2 new control registers for C67+: DESR and DETR------------------------------------------------------------------------------1.14. Reading posix long name tables in archives ------------------------------------------------------------------------------The archiver (ar6x) can now can read Posix archive format.------------------------------------------------------------------------------1.15. Multi-level subsection support in linker ------------------------------------------------------------------------------Until now the linker has recognized the notion of a "subsection" of a "basesection" named by a compound name using the colon character as a separator. Forexample, A:B names a subsection of the base section A. In certain places in alinker command file specifying a base name, such as A, selects the section A aswell as any subsections of A, such as A:B or A:C.This concept has been extended to include multiple levels of subsection naming.The above rules still hold, but a name such as A:B may be used to specify a(sub)section of that name as well as any (multi-level) subsections beginningwith that name, such as A:B:C, A:B:OTHER, etc. All the subsections of A:B arealso subsections of A. We say that A and A:B are supersections of A:B:C. Amonga group of supersections of subsection the "nearest supersection" is thesupersection with the longest name. Thus among {A, A:B} the nearestsupersection of A:B:C:D is A:B.With multiple levels of subsection naming the rules become the following:1) When specifying input sections within a file (or library unit) the sectionname will select an input section of the same name and any subsections of thatname.2a) Input sections not explicity allocated are allocated in an existing outputsection of the same name or in the nearest existing supersection of such anoutput section. An exception to this rule is that during a partial link(specified by the -r linker option) a subsection will only be allocated to anexisting output section of the same name.2b) If no such output section described in 2a) is defined, the input section isput in a newly created output section with the same name as the base name of theinput section.EXAMPLEConsider linking input sections with the following names: europe:north:norway europe:north:sweden europe:north:finland europe:north:iceland europe:central:france europe:central:germany europe:central:denmark europe:south:spain europe:south:italy europe:south:maltaThe following SECTIONS specification will allocate the input sections asindicated in the comments. SECTIONS { nordic: {*(europe:north) *(europe:central:denmark)} /* the nordic countries */ central: {*(europe:central)} /* france, germany */ therest: {*(europe)} /* spain, italy, malta */ }The following SECTIONS specification will allocate the input sections asindicated in the comments. SECTIONS { islands: {*(europe:south:malta) *(europe:north:iceland)} /* malta, iceland */ europe:north:finland : {} /* finland */ europe:north : {} /* norway, sweden */ europe:central : {} /* germany, denmark */ europe:central:france: {} /* france */ /* (italy, spain) go into a linker-generated output section "europe" */ }NOTE ON UPWARD COMPATIBILITYExisting linker commands that use the existing single-level subsection featuresand which do not contain section names containing multiple colon characters willcontinue to behave as before. However, if section names in a linker commandfile or in the input sections supplied to the linker contain multiple coloncharacters, some change in behavior could be possible. The user shouldcarefully consider the impact of the new rules for multiple levels to see if itaffects a particular system link.------------------------------------------------------------------------------1.16. Additional calling convention considerations for C64+------------------------------------------------------------------------------When compiling for C64+, the compiler may use the C64+ specific instructions, DINT and RINT to disable and restore interrupts around software pipelined loops. These instructions utilize the CSR control register as well as the SGIE bit in the TSR control register. Because of this, the SGIE bit is considered to be "save-on-call." This means if the user has assembly code that calls compiler generated code, the SGIE bit should be saved (e.g. to the stack) if it is needed later. The SGIE bit should then be restored upon return from compiler generated code. Please see section 8.6, "Interrupt Handling" in the TMS320C6000 Optimizing Compiler User's Guide (spru187) for more information.------------------------------------------------------------------------------1.17. Trampolines assume B15 is the stack pointer------------------------------------------------------------------------------By default, the linker will generate a trampoline if a function call cannotreach its destination. When generating code for a trampoline, the linker mustuse the stack to save and restore values. Thus, if you are an assemblylanguage programmer and your assembly source does not use B15 as the stackpointer, you must use --trampolines=off to ensure trampolines are notgenerated. Otherwise, trampolines could overwrite register values and corruptmemory.------------------------------------------------------------------------------1.18. Run Time Support Libraries no longer compiled with -ml2------------------------------------------------------------------------------Because trampolines are enabled by default, the run-time support librariesare no longer compiled with (the deprecated option) -ml2 (make all aggregatedata and calls far).------------------------------------------------------------------------------1.19. New Information Available in Map File
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -