Home
TASKING VX-toolset for RH850 User Guide
Contents
1. Libraries Description libc s f fs a C libraries Optional letter s single precision floating point control program option fp model float no s double precision floating point control program option fp model float f FPU support double precision control program option fpu double fs FPU support single precision contro program option fpu single no f or fs no FPU support control program option fpu none libfp t a Floating point libraries contains floating point functions needed by the C compiler Optional letter t trapping control program option fp model trap librt a Run time library contains other run time functions needed by the C compiler Sources for the libraries are present in the directories Lib src 1ib src inthe form of an executable If you run the executable it will extract the sources in the corresponding directory Floating point library with trapping If you use the trapping floating point library Libfpt 1ib exceptional floating point cases are intercepted and can be handled separately by an application defined trap handler Using this library decreases the execution speed of your application The header file except h contains the RH850 specific software floating point trap handling interface definition See Section 10 1 7 except h for the interface functions and a list of floating point exceptions such as overflow and underflow See the fpt
2. or decrement operator should have no other potential side effects other than that caused by the increment or decrement operator The result of an assignment operator should not be used The right hand operand of a logical amp amp or operator shall not contain persistent side effects The operand of the sizeof operator shall not contain any expression which has potential side effects Control statement expressions 14 1 14 2 14 3 14 4 Control flow 15 1 15 2 15 3 15 4 15 5 15 6 15 7 R R R R R A loop counter shall not have essentially floating type A for loop shall be well formed Controlling expressions shall not be invariant The controlling expression of an if statement and the controlling expression of an iteration statement shall have essentially Boolean type The goto statement should not be used The goto statement shall jump to a label declared later in the same function Any label referenced by a goto statement shall be declared in the same block or in any block enclosing the goto statement There should be no more than one break or goto statement used to terminate any iteration statement A function should have a single point of exit at the end The body of an iteration statement or a selection statement shall be a compound statement Allif else if constructs shall be terminated with an else statement Switch statements 16 1 16 2 16 3 16 4 16
3. 365 TASKING VX toolset for RH850 User Guide Control program option cpu list Menu eniry Command line syntax cpu list pattern Description With this option the control program shows a list of supported processors as defined in the file processors xml This can be useful when you want to select a processor name or id for the cpu option The pattern works similar to the UNIX grep utility You can use it to limit the output list Example To show a list of all processors enter cc850 cpu list To show all processors that have 7016 in their name enter ccppe cpu list 7016 c850 etc processors xml id name CPU core r7 701603 R7F 701603 r7 701603 v850e3 r7 701623 R7F701623 r7 701623 v850e3 r7 701653 R7F701653 r7 701653 v850e3 r7 701673 R7F 701673 r7 701673 v850e3 Related information Control program option cpu Select processor 366 Tool Options Control program option create c Menu eniry Command line syntax create stage c stage You can specify the following stages relocatable l Stop after the files are linked to a linker object file out mil m Stop after C files are compiled to MIL mi1 object o Stop after the files are assembled to objects o assembly s Stop after C files are compiled to assembly src Default without flags create object Description Normally the control program generates an absolute object file of the specified output forma
4. 5 2 Calling the Linker In Eclipse you can set options specific for the linker After you have built your project the output files are available in a subdirectory of your project directory depending on the active configuration you have set in the C C Build Settings page of the Project Properties for dialog Building a project under Eclipse You have several ways of building your project Build Individual Project i To build individual projects incrementally select Project Build project Rebuild Project This builds every file in the project whether or not a file has been modified since the last build A rebuild is a clean followed by a build 1 Select Project Clean 2 Enable the option Start a build immediately and click OK 137 TASKING VX toolset for RH850 User Guide e Build Automatically This performs a build of all projects whenever any project file is saved such as your makefile This way of building is not recommended but to enable this feature select Project Build Automatically and ensure there is a check mark beside the Build Automatically menu item In order for this option to work you must also enable option Build on resource save Auto build on the Behaviour tab of the C C Build page of the Project Properties for dialog To access the linker options 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and sel
5. ENDSEC Description With the SECTION directive you define a new section Each time you use the SECTION directive a new section is created It is possible to create multiple sections with exactly the same name To resume a previously defined section use the RESUME directive If you define a section you must always specify the section name The names have a special meaning to the locating process and have to start with a predefined name optionally extended by a dot anda user defined name The predefined section name also determines the type of the section code data or debug Optionally you can specify the at attribute to locate a section at a specific address You can use the following predefined section names Section name Description Section type text Code section code const Constant data in ROM addressed with 32 bit absolute data addressing sconst Constant data in ROM addressed with 16 bit displacement on data TP sconst23 Constant data in ROM addressed with 23 bit displacement on data TP zconst Constant data in ROM addressed with 16 bit displacement on data RO zconst23 Constant data in ROM addressed with 23 bit displacement on data RO data Initialized data addressed with 32 bit absolute addressing data sdata Initialized data addressed with 16 bit displacement on TP data sdata23 Initialized data addressed with 23 bit displac
6. 82 Assembly Language MACRO ENDM Syntax macro_name MACRO argument argument ears Meee ton statements ENDM Description With the MACRO directive you define a macro Macros provide a shorthand method for handling a repeated pattern of code or group of instructions You can define the pattern as a macro and then call the macro at the points in the program where the pattern would repeat The definition of a macro consists of three parts Header which assigns a name to the macro and defines the arguments MACRO directive Body which contains the code or instructions to be inserted when the macro is called Terminator which indicates the end of the macro definition ENDM directive The arguments are symbolic names that the macro processor replaces with the literal arguments when the macro is expanded called Each formal argument must follow the same rules as symbol names the name can consist of letters digits and underscore characters _ The first character cannot be a digit Argument names cannot start with a percent sign Macro definitions can be nested but the nested macro will not be defined until the primary macro is expanded You can use the following operators in macro definition statements Operator Name Description Macro argument concatenation Concatenates a macro argument with adjacent alphanumeric characters Return decimal value of symbol Substitutes the
7. To include symbolic debug information 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and select Settings In the right pane the Settings appear 3 On the Tool Settings tab select C Compiler Debugging 4 Select Default in the Generate symbolic debug information box Debug and optimizations Due to different compiler optimizations it might be possible that certain debug information is optimized away Therefore if you encounter strange behavior during debugging it might be necessary to reduce the optimization level so that the source code is still suitable for debugging For more information on optimization see Section 3 6 Compiler Optimizations 113 TASKING VX toolset for RH850 User Guide Invocation syntax on the command line Windows Command Prompt The invocation syntax on the command line is c850 g file c 3 6 Compiler Optimizations The compiler has a number of optimizations which you can enable or disable 1 From the Project menu select Properties for The Properties dialog appears In the left pane expand C C Build and select Settings In the right pane the Settings appear On the Tool Settings tab select C Compiler Optimization Select an optimization level in the Optimization level box or In the Optimization level box select Custom optimization and enable the optimizations you want on the Custom optimization page
8. You can set the following flags generics g G Allow generic instructions jumpchains j J Optimize jump chains instr size s S Optimize instruction size Default optimize gJs Description With this option you can control the level of optimization For details about each optimization see Section 4 4 Assembler Optimizations Related information Section 4 4 Assembler Optimizations 301 TASKING VX toolset for RH850 User Guide Assembler option option file f Menu entry 1 Select Assembler Miscellaneous 2 Add the option option file to the Additional options field Be aware that the options in the option file are added to the assembler options you have set in the other pages Only in extraordinary cases you may want to use them in combination Command line syntax option file file f file Description This option is primarily intended for command line use Instead of typing all options on the command line you can create an option file which contains all options and flags you want to specify With this option you specify the option file to the assembler Use an option file when the command line would exceed the limits of the operating system or just to store options and save typing Option files can also be generated on the fly for example by the make utility You can specify the option option file multiple times Format of an option file e Multiple arguments on one line in the optio
9. 2 9 1 Overview of Assembler Directives The following tables provide an overview of all assembler directives For a detailed description of these directives refer to Section 2 9 2 Detailed Description of Assembler Directives Overview of assembly control directives Directive Description END Indicates the end of an assembly module FPU_DOUBLE Allow double precision FPU instructions and single precision FPU instructions FPU_SINGLE Allow single precision FPU instructions 55 TASKING VX toolset for RH850 User Guide Directive Description HAS_MMU Allow MMU instructions HAS_SIMD Allow SIMD instructions HAS_THREAD Allow hardware thread support instructions HAS_VIRTUAL INCLUDE ESSAGE Allow virtualization instructions Include file Programmer generated message Overview of symbol definition and section directives Directive Description EQU Set permanent value to a symbol EXTERN Import global section symbol GLOBA Declare global section symbol RESUM Resume a previously defined section SECTION ENDSEC Start a new section Set temporary value to a symbol Set size of symbol in the ELF symbol table Specify name of original C source file Set symbol type in the ELF symbol table Mark a symbol as weak Overview of data definition storage allocation directives Directive Description
10. A for should only contain expressions concerning loop control A violation is reported when the loop initialization or loop update expression modifies an object that is not referenced in the loop test Iterator variables should not be modified in a for loop Functions shall always be declared at file scope Functions with variable number of arguments shall not be used Functions shall not call themselves either directly or indirectly A violation will be reported for direct or indirect recursive function calls in the source file being checked Recursion via functions in other source files or recursion via function pointers is not detected Function prototypes shall be visible at the definition and call The function prototype of the declaration shall match the definition Identifiers shall be given for all prototype parameters or for none Parameter identifiers shall be identical for declaration definition Every function shall have an explicit return type 595 TASKING VX toolset for RH850 User Guide 596 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 DIDDII gt II SR RS RS RS a es ee ee eee Functions with no parameters shall have a void parameter list An actual parameter type shall be compatible with the prototype The number of actual parameters shall match the prototype The values returned by void fu
11. Instead of this option you can use the following pragma pragma switch arg Example To use a table filled with target addresses for each possible switch value enter c850 switch jumptab test c Related information Section 1 9 Switch Statement C compiler option tradeoff Trade off between speed and size 263 TASKING VX toolset for RH850 User Guide C compiler option tradeoff t Menu eniry 1 Select C Compiler Optimization 2 Select a trade off level in the Trade off between speed and size box Command line syntax tradeoff 0 1 2 3 4 t 0 1 2 3 4 Default tradeoff 4 Description If the compiler uses certain optimizations option optimize you can use this option to specify whether the used optimizations should optimize for more speed regardless of code size or for smaller code size regardless of speed By default the compiler optimizes for code size tradeoff 4 If you have not specified the option optimize the compiler uses the default Optimize more optimization In this case it is still useful to specify a trade off level Example To set the trade off level for the used optimizations c850 tradeoff 2 test c The compiler uses the default Optimize more optimization level and balances speed and size while optimizing Related information C compiler option optimize Specify optimization level Section 3 6 3 Optimize for Code Size or Execution Speed 264 Tool O
12. Linker option non romable Application is not romable Linker option optimize Specify optimization 356 Tool Options Linker option verbose v Menu entry 1 Select Linker Miscellaneous 2 Enable the option Show link phases during processing The verbose output is displayed in the Problems view and the Console view Command line syntax verbose V Description With this option you put the linker in verbose mode The linker prints the link phases while it processes the files The linker prints one entry for each action it executes for a task When you use this option twice vv you put the linker in extra verbose mode In this mode the linker also prints the filenames and it shows which objects are extracted from libraries and it shows verbose information that would normally be hidden when you use the normal verbose mode or when you run without verbose With this option you can monitor the current status of the linker Related information 357 TASKING VX toolset for RH850 User Guide Linker option version V Menu eniry Command line syntax version V Description Display version information The linker ignores all other options or input files Example 1k850 version The linker does not link any files but displays the following version information TASKING VX toolset for RH850 object linker vx yrz Build nnn Copyright 2012 year Altium BV SN 00000000 Related information 358 Tool O
13. TASKING VX toolset for RH850 User Guide MA150 800 v2 1 June 23 2014 Copyright 2014 Altium BV All rights reserved You are permitted to print this document provided that 1 the use of such is for personal use only and will not be copied or posted on any network computer or broadcast in any media and 2 no modifications of the document is made Unauthorized duplication in whole or part of this document by any means mechanical or electronic including translation into another language except for brief excerpts in published reviews is prohibited without the express written permission of Altium BV Unauthorized duplication of this work may also be prohibited by local statute Violators may be subject to both criminal and civil penalties including fines and or imprisonment Altium TASKING and their respective logos are trademarks or registered trademarks of Altium Limited or its subsidiaries All other registered or unregistered trademarks referenced herein are the property of their respective owners and no trademark rights to the same are claimed Table of Contents Ghee EAM GU AGC eon en stew tice ene ae coche ndatea cha canea teenies ane a esate ack E EA 1 Wels Dalla Type Siara a gave sheen ivoiie vata nee teaahnste maar teneeneetacncuneeantons 1 1 2 ACCeESSING Memory crosman E E danas AA EE AE E nes 2 122 1 Memory Qualifiers sisirain siaina aia ni ai kar iniia eaa ee 3 1 2 2 Data Allocation Options and Pragmas ccce
14. TASKING VX toolset for RH850 User Guide HLL object dumper option output o Command line syntax output file o file Description By default the HLL object dumper dumps the output on stdout With this option you specify to dump the information in the specified file The default output format is text but you can specify another output format with option output type Example hldump850 output dump txt hello elf The HLL object dumper dumps the output in file dump txt Related information HLL object dumper option output type 450 HLL object dumper option output type T Command line syntax output type type T type You can specify one of the following types text t Output human readable text xml x Output XML Default output type text Description With this option you can specify whether the output is formatted as plain text or as XML Related information HLL object dumper option output Tool Options 451 TASKING VX toolset for RH850 User Guide HLL object dumper option sections s Command line syntax sections name sname Description With this option you can restrict the output to the specified sections only This option affects the following parts of the output Output part Effect of sections Module list Not restricted Section list Only lists the specified sections Section dump Only dumps the contents of the specified sections H
15. chdir path Use file system simulation to change the current directory on the host to the directory indicated by path FSS implementation close fd File close function The given file descriptor should be properly closed This function calls _close FSS implementation getcwd buf size Use file system simulation to retrieve the current directory on the host Returns the directory name FSS implementation lseek fd offset whence Moves read write file offset Calls _1seek FSS implementation read fd buff cnt Reads a sequence of characters from a file This function calls_read FSS implementation stat name buff Use file system simulation to stat a file on the host platform FSS implementation lstat name buff This function is identical to stat except in the case of a symbolic link where the link itself is stat ed not the file that it refers to Not implemented fstat fd buff This function is identical to stat except that it uses a file descriptor instead of aname Not implemented unlink name Removes the named file so that a subsequent attempt to open it fails FSS implementation write fd buff cnt Write a sequence of characters to a file Calls _write FSS implementation 10 1 29 wchar h Many functions in wchar h represent the wide character variant of other functions so these are discussed together See Section 10 1 24 stdio h and wchar h Section 10 1 25 std
16. fp model cF1lnrSTz Description With this option you select the floating point execution model With fp model contract you allow the compiler to contract multiple float operations into a single operation with different rounding results A possible example is fused multiply add With fp model float you tell the compiler to treat variables and constants of type double as float Because the float type takes less space execution speed increases and code size decreases both at the cost of less precision Make sure you specify the corresponding libraries to the linker With fp model fastlib you allow the compiler to select faster but less accurate library functions for certain floating point operations 223 TASKING VX toolset for RH850 User Guide With fp model nonan you allow the compiler to ignore NaN or Inf input values An example is to replace multiply by zero with zero With fp model rewrite you allow the compiler to rewrite expressions by reassociating This might result in rounding differences and possibly different exceptions An example is to rewrite a c b c as a b c With fp model soft no hardware floating point instructions are generated only calls to the software floating point library By default the floating point unit FPU is used if the selected core supports one If an FPU is present the macro __FPU__ is defined in the C source file Use this option to disable the use of the FPU Functions t
17. version V Command line syntax version V Description Display version information The HLL object dumper ignores all other options or input files Related information 456 Tool Options HLL object dumper option xml base filename X Command line syntax xml base filename X Description With this option the lt File name gt field in the XML output only contains the filename of the object file By default any path name if present is printed as well Example hldump850 output type xml output hello xml hello elf The field lt File name hello elf gt is usedin hello xml hldump850 output type xml output hello xml X hello elf The field lt File name hello elf gt is used in hello xml The path is stripped from the filename Related information HLL object dumper option output type 457 TASKING VX toolset for RH850 User Guide 8 9 Expire Cache Utility Options With the utility expire850 you can limit the size of the cache C compiler option cache by removing all files older than a few days or by removing older files until the total size of the cache is smaller than a specified size See also Section 9 4 Compiler Cache The invocation syntax is expire850 option cache directory The compiler cache is present in the directory c850cache under the specified cache directory This section describes all options for the expire cache utility Short an
18. 131 TASKING VX toolset for RH850 User Guide warnings in the C C Build Settings Tool Settings Assembler Diagnostics page of the Project Properties for menu assembler option no warnings Display detailed information on diagnostics 1 From the Window menu select Show View Other TASKING Problems The Problems view is added to the current perspective 2 Inthe Problems view right click on a message A popup menu appears 3 Select Detailed Diagnostics Info A dialog box appears with additional information On the command line you can use the assembler option diag to see an explanation of a diagnostic message as850 diag format all number 132 Chapter 5 Using the Linker This chapter describes the linking process how to call the linker and how to control the linker with a script file The TASKING linker is a combined linker locator The linker phase combines relocatable object files o files generated by the assembler and libraries into a single relocatable linker object file out The locator phase assigns absolute addresses to the linker object file and creates an absolute object file which you can load into a target processor From this point the term linker is used for the combined linker locator The linker can simultaneously link and locate all programs for all cores available on a target board The target board may be of arbitrary complexity A simple target board may conta
19. 319 TASKING VX toolset for RH850 User Guide This is an error when the incremental linking option is disabled The lt message gt indicates the symbol that is unresolved To write an explanation of all errors and warnings in HTML format to file Lkerrors html use redirection and enter 1k850 diag html all gt lkerrors html Related information Section 5 10 Linker Error Messages 320 Tool Options Linker option error file Menu entry Command line syntax error file file Description With this option the linker redirects error messages to a file If you do not specify a filename the error file is 1 K850 elk Example To write errors to errors elk instead of stderr enter 1k850 rror file errors elk test o Related information Section 5 10 Linker Error Messages 321 TASKING VX toolset for RH850 User Guide Linker option error limit Menu eniry 1 Select Linker Diagnostics 2 Enter a value in the Maximum number of emitted errors field Command line syntax error limit number Default 42 Description With this option you tell the linker to only emit the specified maximum number of errors When 0 null is specified the linker emits all errors Without this option the maximum number of errors is 42 Related information Section 5 10 Linker Error Messages 322 Tool Options Linker option extern e Menu entry Command line syntax extern symbol esymb
20. Assembler option page length Menu entry 1 Select Assembler Miscellaneous 2 Add the option page length to the Additional options field Command line syntax page length number Default 72 Description Tool Options If you generate a list file with the assembler option list file this option sets the number of lines in a page in the list file The default is 72 the minimum is 10 As a special case a page length of 0 turns off page breaks Related information Assembler option list file Generate list file Assembler directive PAGE 305 TASKING VX toolset for RH850 User Guide Assembler option page width Menu entry 1 Select Assembler Miscellaneous 2 Add the option page width to the Additional options field Command line syntax page width number Default 132 Description If you generate a list file with the assembler option list file this option sets the number of columns per line on a page in the list file The default is 132 the minimum is 40 Related information Assembler option list file Generate list file Assembler directive PAGE 306 Tool Options Assembler option preprocess E Menu entry Command line syntax preprocess E Description With this option the assembler will only preprocess the assembly source file The assembler sends the preprocessed file to stdout Related information 307 TASKING VX toolset for RH850 User Guide A
21. Command line syntax output file o file Description With this option you can specify another filename for the output file of the compiler Without this option the basename of the C source file is used with extension src Example To create the file output src instead of test src enter c850 output output sre test c Related information 251 TASKING VX toolset for RH850 User Guide C compiler option preprocess E Menu eniry 1 Select C Compiler Preprocessing 2 Enable the option Store preprocessor output in lt file gt pre 3 Optional Enable the option Keep comments in preprocessor output 4 Optional Enable the option Keep line info in preprocessor output Command line syntax preprocess flags E flags You can set the following flags comments c C keep comments includes i l generate a list of included source files list VL generate a list of macro definitions make m M generate dependencies for make noline p P strip line source position information Default ECILMP Description With this option you tell the compiler to preprocess the C source Under Eclipse the compiler sends the preprocessed output to the file name pre where name is the name of the C source file to compile Eclipse also compiles the C source On the command line the compiler sends the preprocessed file to stdout To capture the information in a file specify an output file with the option out
22. Controls the allocation of string literals Same as C compiler option string literal memory switch auto jump_tab linear default restore With these pragmas you can overrule the C compiler chosen switch method See Section 1 9 Switch Statement and C compiler option switch tradeoff eve default restore Specify tradeoff between speed 0 and size 4 See C compiler option tradeoff warning number default restore With this pragma you can disable warning messages If you do not specify a warning number all warnings will be suppressed weak symbol Mark a symbol as weak WEAK assembler directive The symbol must have external linkage which means a global or external object or function A static symbol cannot be declared weak A weak external reference is resolved by the linker when a global or weak definition is found in one of the object files However a weak reference will not cause the extraction of a module from a library to resolve the reference When a weak external reference cannot be resolved the null pointer is substituted A weak definition can be overruled by a normal global definition The linker will not complain about the duplicate definition and ignore the weak definition 21 TASKING VX toolset for RH850 User Guide 1 8 Predefined Preprocessor Macros The TASKING C compiler supports the predefined macros as defined in the table below The macros are useful to cre
23. Generate an enable interrupt ei instruction _ di void volatile __di void Generate a disable interrupt di instruction __synce void volatile __sycne void Generate a sycne instruction __synci void volatile __sycni void Generate a sycni instruction __syncm void volatile __syncm void Generate a sycnm instruction 37 TASKING VX toolset for RH850 User Guide __syncp void volatile __sycnp void Generate a sycnp instruction __dpitrap void volatile __dbtrap void Generate a dbt rap instruction __ syscall void volatile __syscall unsigned int vector Generate a system call sysal1 instruction __trap void volatile __trap unsigned int vector Generate a trap instruction __fetrap void volatile __fetrap unsigned int vector Generate a fet rap instruction 1 11 Section Naming By default the compiler generates section names that start with a dot and the section type extended with the module name and the name of the symbol that is allocated in the section Each component is separated by a dot Cype module name symbol name The section types are text data sdata sdata23 zdata zdata23 bss sbss sbss23 zbss zbss23 const sconst sconst23 zconst zconst23 Section names are case sensitive By default the sections are not concatenated by the linker This means that multiple sections with the same name may exist At link time sections with different
24. R 4 2 A Identifiers x 51 R x 52 R x 53 R x 54 R x 55 R x 56 R x 57 R x 58 R x 59 A Types 6 1 R 6 2 R Octal and hexadecimal escape sequences shall be terminated Trigraphs should not be used External identifiers shall be distinct Identifiers declared in the same scope and name space shall be distinct An identifier declared in an inner scope shall not hide an identifier declared in an outer scope Macro identifiers shall be distinct Identifiers shall be distinct from macro names A typedef name shall be a unique identifier A tag name shall be a unique identifier Identifiers that define objects or functions with external linkage shall be unique Identifiers that define objects or functions with internal linkage should be unique Bit fields shall only be declared with an appropriate type Single bit named bit fields shall not be of a signed type Literals and constants 71 R 7 2 R 7 3 R 7 4 R 606 Octal constants shall not be used u or U suffix shall be applied to all integer constants that are represented in an unsigned type The lowercase character 1 shall not be used in a literal suffix trivial A string literal shall not be assigned to an object unless the object s type is pointer to const qualified char MISRA C Rules Declarations and definitions 8 1 R 8 2 R 8 3 R 8 4 R 8 5 R 8 6 R 8 7 A 8 8 R 8 9 A 8 10 R 8 11 A 8 12
25. Related information Section 4 6 Assembler Error Messages 278 Assembler option dwarf version Menu entry Command line syntax dwarf version 2 3 Default 3 Description Tool Options With this option you tell the assembler which DWARF debug version to generate DWARF2 or DWARF3 default Related information Section 12 1 ELF DWARF Object Format 279 TASKING VX toolset for RH850 User Guide Assembler option emit locals Menu entry 1 Select Assembler Symbols 2 Enable or disable one or both of the following options e Emit local EQU symbols Emit local non EQU symbols Command line syntax emit locals flag You can set the following flags equs e E emit local EQU symbols symbols s S_ emit local non EQU symbols Default emit locals symbols Description With the option emit locals equs the assembler also emits local EQU symbols to the object file Normally only global symbols and non EQU local symbols are emitted Having local symbols in the object file can be useful for debugging Related information Assembler directive EQU 280 Tool Options Assembler option error file Menu entry Command line syntax error file file Description With this option the assembler redirects error messages to a file If you do not specify a filename the error file will be named after the output file with extension ers Example To write errors to errors
26. Symbols in sect Defined in Referenced in Chip name Chip addr Locate type properties The line number and default sort order The name and id of the section The number between uniquely identifies the section Names within square brackets will be copied during initialization from ROM to the corresponding section name in RAM The size of the section in minimum addressable units hexadecimal or decimal Sections can be ordered in groups These are the names of the groups as defined in the linker script file 1s1 with the keyword group in the section_layout definition The name that is displayed is the name of the deepest nested group The first address of the section in the address space The last address of the section in the address space The names of the external symbols that are referenced in the section See Locate Result Symbols below The names of the input modules the section is defined in See Link Result in File above The names of the modules that contain a reference to the section See Cross References above The names of the memory chips as defined in the linker script file 1s1 in the memory definitions The absolute offset of the section from the start of a memory chip The locate rule type and properties See Locate Rules below The following buttons are available in this part of the map file Icon Action Description Configure Section Opens the Configure Section Filter dia
27. The following mappings are possible space gt space space gt bus e bus gt bus memory gt bus With a mapping you specify a range of source addresses you want to map specified by a source offset and a size the destination to which you want to map them a bus or another address space and the offset address in the destination The dest argument specifies the destination This can be a bus or another address space only for a space to space mapping This argument is required e The src_offset argument specifies the offset of the source addresses In combination with size this specifies the range of address that are mapped By default the source offset is 0x0000 The size argument specifies the number of addresses that are mapped This argument is required e The dest_offset argument specifies the position in the destination to which the specified range of addresses is mapped By default the destination offset is 0x0000 If you are mapping a bus to another bus the number of data lines of each bus may differ In this case you have to specify a range of source data lines you want to map srec_dbits begin end andthe range of destination data lines you want to map them to dest_dbits first last e The sre_dbits argument specifies a range of data lines of the source bus By default all data lines are mapped e The dest_dbits argument specifies a range of data lines of the destination bus By default all dat
28. The processor definition The processor definition describes an instance of a derivative A processor definition is only needed in a multi processor embedded system It allows you to define multiple processors of the same type If for a derivative A no processor is defined in the LSL file the linker automatically creates a processor named A of derivative A This is why for single processor applications it is enough to specify the derivative in the LSL file The memory and bus definitions optional Memory and bus definitions are used within the context of a derivative definition to specify internal memory and on chip buses In the context of a board specification the memory and bus definitions are used to define external off chip memory and buses Given the above definitions the linker can convert a logical address into an offset into an on chip or off chip memory device The board specification The processor definition and memory and bus definitions together form a board specification LSL provides language constructs to easily describe single core and heterogeneous or homogeneous multi core systems The board specification describes all characteristics of your target board s system buses memory devices I O sub systems and cores that are of interest to the linker Based on the information provided in the board specification the linker can for each core 147 TASKING VX toolset for RH850 User Guide convert a logical address t
29. _ VERSION__ expands to 2001 dot and revision number are omitted minor version number in 3 digits Example if defined __AS850__ this part is only for the as850 assembler endif 44 Assembly Language 2 5 Registers The following register names either uppercase or lowercase should not be used for user defined symbol names in an assembly language source file Program registers rO r31 32 general purpose registers sp alias for r3 gp alias for r4 ep alias for r30 tp alias for r5 lp alias for r31 System registers EIPC EIPSW FEPC FEPSW PSW FPSR FPEPC FPST FPCC FPCFG FPEC SESR EIIC FEIC CTPC TPSW CTBP E IWR EWR BSEL CFGO MCFG1 RBASE EBASE INTBP CTL PID FPIPR TCSEL SCCFG SCBP HVCCFG HVCBP VCSEL VMPRTO VMPRT2 VMSCCTL V H Q Hj MSCTBLO VMSCTBL3 TCFGO HTCTL EA ASID EL ISPR PMR ICSR TCFG HTCTL HTSCTBLO HISCTBL7 H 45 TASKING VX toolset for RH850 User Guide iBCFG i BIDX iBSCH ELOO ELOL EHIO TEHI1 BWERRL BWERRH BRERRL BRERRH ICTAGL ICTAGH ICDATL ICDATH DCTAGL DCTAGH DCDATL DCDATH ICCTRL DCCTRL ICCFG DCCFG ICERR DCERR MP MPRC MPBRGN MPTRGN MCA MCS MCC MCR MPPRTO MPPRT1 MPPRT2 MPLAO MPLA15 MPUAO MPUA15 MPATO MPAT15
30. ask the C startup code editor for the value otherwise the contents of the value attribute is used The default value is true flashMonitor monitor workspaceAddress flashSectorBufferSize This element specifies the flash programming monitor to be used for this configuration Filename of the monitor usually an Intel Hex or S Record file The address of the workspace of the flash programming monitor Specifies the buffer size for buffering a flash sector chip This element defines a flash chip It must be debugTarget used by the flash properties page to add it on request to the list of flash chips vendor The vendor of this flash chip chip The name of the chip width The width of the chip in bits chips The number of chips present on the board baseAddress The base address of the chip chipSize The size of the chip in bytes flashChips Specify a list of flash chips that can be chip available on this debug target 583 TASKING VX toolset for RH850 User Guide Element Attribute Description Allowed Elements Isil Defines LSL pieces belonging to the configuration part The LSL text must be defined between the start and end tag of this element All LSL texts of the active selection will be placed in the project s LSL file 584 Chapter 15 CERT C Secure Coding Standard The CERT C Secure Coding Standard provides rules and recommen
31. circular dependencies are not allowed however The command s for updating a target when any of its prerequisites have been modified must be specified with leading white space after any of the dependency rule s for the target in question Example TESTO 3 cc850 test c leading white space Command rules may contain dependencies too Combining the above for example yields test o Lest cc850 test c White space around the colon is not required When a path name contains special characters such as start of comment macro assignment or any white space then the path name must be enclosed in single or double quotes Quoted strings can contain anything except the quote character itself and a newline Two strings without white space in between are interpreted as one so it is possible to embed single and double quotes themselves by switching the quote character When a target does not exist its modification time is assumed to be very old So amk will try to make it When a prerequisite does not exist possibly after having tried to make it it is assumed to be very new So the update commands for the current target will be executed in that case amk will only try to make targets which are specified on the command line The default target is the first target in the makefile which does not start with a dot 163 TASKING VX toolset for RH850 User Guide Static pattern rules Static pattern rules are rules which specify multi
32. contiguous ordered overlay For non contiguous groups you can only specify group_alignment and attributes The overlay keyword also sets the contiguous property The clustered property cannot be set together with contiguous or ordered on a single group 549 TASKING VX toolset for RH850 User Guide load_or_run_addr addr_absolute addr_range lt addr_range gt addr_absolute expr memory_reference expr An absolute address can only be set on ordered groups addr_range expr expr memory_referenc memory_reference expr expr The parent of a group with an addr_range or page restriction cannot be ordered contiguous or clustered The end address is not part of the range ora oll memory_referenc mem lt proc_name gt mem_name lt map_ name gt e A proc_name refers to a defined processor A mem name refers to a defined memory A map_name refers to a defined memory mapping if_statement if expr section statement lt else section_statement gt section_creation_statement section section_ name section_specs lt section_statement2 gt E gt 0 section_specs t Bection_spec lt section spec gt section_spec attributes fill_spec size expr l blocksize expr overflow section_name tag section_statement2 select_section_statement group_descr2 lt section_statement2 gt gro
33. csin ccos ctan casin cacos catan csinh ccosh ctanh casinh cacosh catanh csinf ccosft ctanf casinf cacosf catanf csinhf ccoshf ctanhf casinhf cacoshf catanhf csinl ccosl ctanl casinl cacosl catanl csinhl ccoshl ctanhl casinhl cacoshl catanhl Libraries Returns the complex sine of z Returns the complex cosine of z Returns the complex tangent of z Returns the complex arc sine sin 2 Returns the complex arc cosine cos z Returns the complex arc tangent tan 2 Returns the complex hyperbolic sine of z Returns the complex hyperbolic cosine of z Returns the complex hyperbolic tangent of z Returns the complex arc hyperbolic sinus of z Returns the complex arc hyperbolic cosine of z Returns the complex arc hyperbolic tangent of z Exponential and logarithmic functions cexp clog cexpf clogf cexpl clogl Returns the result of the complex exponential function e Returns the complex natural logarithm Power and absolute value functions cabs cpow csqrt cabsf cpowf esqrtf cabsl cpowl esqrtl Manipulation functions carg cimag conj cproj creal cargf cimagf conjf cprojft crealf cargl cimagl conjl cprojl creall Returns the complex absolute value of z also known as norm modulus or magnitude Returns the complex value of x raised to the power y x where both x and y are complex numbers Returns
34. filled up with spaces Type The section type Name The name of the section With option sections name name you can specify a list of sections that should be dumped 178 Using the Utilities Section dump This part contains the disassembly It consists of the following columns address column Contains the address of the instruction or directive that is shown in the disassembly If the section is relocatable the section start address is assumed to be 0 The address is represented in hexadecimal and has a fixed width The address is padded with zeros No Ox prefix is displayed For example on a 32 bit architecture the address 0x32 is displayed as 00000032 encoding column Shows the hexadecimal encoding of the instruction code sections or it shows the hexadecimal representation of data data sections The encoding column has a maximum width of eight digits i e it can represent a 32 bit hexadecimal value The encoding is padded to the size of the data or instruction For example a 16 bit instruction only shows four hexadecimal digits The encoding is aligned left and padded with spaces to fill the eight digits label column Displays the label depending on the option symbols hll asm none The default is asm meaning that the low level ELF symbols are used With hll HLL DWARF symbols are used With none no symbols will be included in the disassembly disassembly column For code sections the instructions are disassemble
35. filter o filter c cec850 e filter c o filter o echo the stem is filter Each target specified must match the target pattern a warning is issued for each target that does not Special targets There are a number of special targets Their names begin with a period Target Description DEFAULT If you call the make utility with a target that has no definition in the makefile this target is built 164 Using the Utilities Target Description DONE When the make utility has finished building the specified targets it continues with the rules following this target INIT The rules following this target are executed before any other targets are built PHONY The prerequisites of this target are considered to be phony targets A phony target is a target that is not really the name of a file The rules following a phony target are executed unconditionally regardless of whether a file with that name exists or what its last modification time is For example PHONY clean clean r 2 0 With amk clean the command is executed regardless of whether there is a file named clean 6 2 2 Makefile Directives Directives inside makefiles are executed while reading the makefile When a line starts with the word include or include then the remaining arguments on that line are considered filenames whose contents are to be inserted at the current line include will silently skip
36. for example demo 1 Use the Edit and Delete button to change a macro definition or to remove a macro from the list Command line syntax define macro_name macro_definition Dmacro_name macro_definition Description With this option you can define a macro and specify it to the preprocessor If you only specify a macro name no macro definition the macro expands as 1 You can specify as many macros as you like Simply use the Add button to add new macro definitions On the command line use the option define D multiple times If the command line exceeds the limit of the operating system you can define the macros in an option file which you then must specify to the compiler with the option option file f file Defining macros with this option instead of in the C source is for example useful to compile conditional C source as shown in the example below The control program passes the option define D to the compiler and the assembler Example Consider the following C program with conditional code to compile a demo program and a real program void main void if DEMO demo_func compile for the demo program else real_func compile for the real program endif You can now use a macro definition to set the DEMO flag 369 TASKING VX toolset for RH850 User Guide cc850 define DEMO test c cc850 define DEMO 1 test c Note that both invocations have the same eff
37. include directives The include directive shall be followed by either a lt filename gt or filename sequence C macros shall only expand to a braced initializer a constant a parenthesized expression a type qualifier a storage class specifier or a do while zero construct Macros shall not be define d or undef d within a block undef shall not be used A function should be used in preference to a function like macro A function like macro shall not be invoked without all of its arguments Arguments to a function like macro shall not contain tokens that look like preprocessing directives A violation is reported when the first token of an actual macro argument is In the definition of a function like macro each instance of a parameter shall be enclosed in parentheses unless it is used as the operand of or All macro identifiers in preprocessor directives shall be defined before use except in ifdef and ifndef preprocessor directives and the defined operator There shall be at most one occurrence of the or preprocessor operators ina single macro definition The and preprocessor operators should not be used The defined preprocessor operator shall only be used in one of the two standard forms Precautions shall be taken in order to prevent the contents of a header file being included twice Preprocessing directives shall be syntactically meaningful even when excluded by the preprocessor All
38. iscntrl iswentrl isdigit iswdigit isfinite isgraph iswgraph isgreater isgreaterequal isinf isless islessequal islessgreater islower iswlower Uses iob See 1 Calls fgetc See 1 free uses static buffer management structures See malloc 5 Modifies iobf See 1 Uses iob See 1 Uses iob and calls _Iseek Accesses ungetc array See 1 Uses iob and sets errno See 1 2 Not implemented Uses iob and sets errno Calls _Iseek See 1 2 Uses iobf See 1 Uses iob See 1 Uses iobf See 1 Uses global File System Simulation buffer _dbg_request Skeleton only Uses iobf See 1 gmtime defines static structure Sets errno via calls to other functions Not implemented 509 TASKING VX toolset for RH850 User Guide Function Not reentrant because isnan isnormal isprint iswprint ispunct iswpunct isspace iswspace 7 isunordered isupper iswupper iswalnum iswalpha iswentrl iswctype iswdigit iswgraph z iswlower iswprint J iswpunct z iswspace g iswupper J iswxditig isxdigit iswxdigit J ldexp ldexpf ldexpl Sets errno See 2 lgamma lgammaf lgammal Not implemented llrint llrintf llrintl Not implemented llround llroundf llroundi Not implemented localeconv N A skeleton function localtime log logf logl Sets errno See 2 log10 log10f log101 Sets errno via calls to other functions loglp loglpf loglp
39. it is not a conversion to a wider floating type or b the expression is complex or c the expression is a function argument or d the expression is a return expression The value of a complex expression of integer type may only be cast to a type of the same signedness that is no wider than the underlying type of the expression The value of a complex expression of floating type may only be cast to a type that is no wider than the underlying type of the expression If the bitwise operators and lt lt are applied to an operand of underlying type unsigned char Or unsigned short the result shall be immediately cast to the underlying type of the operand A U suffix shall be applied to all constants of unsigned type MISRA C Rules Pointer type conversions 11 1 R 11 2 R 11 3 A 11 4 A 11 5 R Expressions 12 1 A 12 2 R 12 3 R 12 4 R 12 5 R 12 6 A 12 7 R 12 8 R 12 9 R 12 10 R 12 11 A 12 12 R 12 13 A Conversions shall not be performed between a pointer to a function and any type other than an integral type Conversions shall not be performed between a pointer to object and any type other than an integral type another pointer to object type or a pointer to void A cast should not be performed between a pointer type and an integral type A cast should not be performed between a pointer to object type and a different pointer to object type A cast shall not be performed that
40. language strings Ax you disable warnings about discarded const qualifiers when a string literal is assigned to a non const pointer char p void main void p hello 237 TASKING VX toolset for RH850 User Guide Example c850 language comments strings iso 90 test c c850 APx c90 test c The compiler compiles in ISO C90 mode accepts assignments of a constant string to a non constant string pointer and does not allow C style comments Optimization across volatile access With the language volatile Av option the compiler will block optimizations when reading or writing a volatile object by treating the access as a call to an unknown function With this option you can prevent for example that code below the volatile object is optimized away to somewhere above the volatile object Example extern unsigned int variable extern volatile unsigned int access void TestFunc unsigned int flag access 0 variable flag if variable variable 0 variable 0x8000 access 1 Result with language volatile default _TestFunc type func mov 0 411 movhi ha _access r0 r12 lt Volatile access st w r0 lo _access r12 movhi ha _variable r0 r12 ld w lo _variable r12 r12 or r12 r6 cmp 3 E6 bne L2 mov r11 26 L2 ori 32768 r6 11 mov lprr2 movhi ha _access r0 r13 lt Volatile access st w r12 lo _access r13 movhi ha _variable r0 r
41. malloc h The header file malloc h contains prototypes for memory allocation functions This include file is not defined in ISO C99 it is included for backwards compatibility with ISO C90 For ISO C99 the memory allocation functions are part of stdlib h See Section 10 1 25 stdlib h and wehar h malloc size Allocates space for an object with size size The allocated space is not initialized Returns a pointer to the allocated space calloc nobj size Allocates space for n objects with size size The allocated space is initialized with zeros Returns a pointer to the allocated space free ptr Deallocates the memory space pointed to by ptr which should be a pointer earlier returned by the malloc or calloc function realloc ptr size Deallocates the old object pointed to by ptr and returns a pointer to a new object with size size while preserving its contents If the new size is smaller than the old size some contents at the end of the old region will be discarded If the new size is larger than the old size all of the old contents are preserved and any bytes in the new object beyond the size of the old object will have indeterminate values 481 TASKING VX toolset for RH850 User Guide 10 1 17 math h and tgmath h The header file math h contains the prototypes for many mathematical functions Before ISO C99 all functions were computed using the double type the float was automatically converted to double prior to calc
42. optimize 200 Tool Options Eclipse option Description or option Compilation Speed C compiler option cache Debugging Generate symbolic debug information C compiler option debug info Generate code for bounds checking C compiler option runtime bounds Generate code to detect unhandled case in a switch Generate code for malloc consistency checks C compiler option runtime case C compiler option runtime malloc MISRA C MISRA C checking C compiler option misrac MISRA C version C compiler option misrac version Warnings instead of errors for mandatory rules C compiler option misrac mandatory warnings Warnings instead of errors for required rules C compiler option misrac required warnings Warnings instead of errors for advisory rules C compiler option misrac advisory warnings Custom 1998 Custom 2004 Custom 2012 C compiler option misrac CERT C Secure Coding CERT C secure code checking Warnings instead of errors C compiler option cert C compiler option warnings as errors Custom CERT C C compiler option cert Diagnostics Suppress C compiler warnings C compiler option no warnings num Suppress all warnings C compiler option no warnings Perform global type checking on C code C compiler option global type checking Miscellaneous Merge C source code with gen
43. s2 or gt Oif s7 gt s2 Compares string s7 to s2 Returns lt 0 if s1 lt s2 0 if s1 S2 or gt 0 if S1 gt s2 Compares the first n characters of s1 to the first n characters of s2 Returns lt 0 if s1 lt s2 0 if s1 S2 or gt 0 if s1 gt S2 Performs a local specific comparison between string s1 and string s2 according to the LC_COLLATE category of the current locale Returns lt 0 if s1 lt s2 0 if s1 S2 or gt 0 if s7 gt s2 See Section 10 1 15 ocale h Transforms a local string s2 so that a comparison between transformed strings with st rcmp gives the same result as a comparison between non transformed strings with strcol1 Returns the transformed string s7 Description Checks the first n characters of s on the occurrence of character c Returns a pointer to the found character 499 TASKING VX toolset for RH850 User Guide string h wchar h Description strchr s c weschr s C Returns a pointer to the first occurrence of character cin s or the null pointer if not found strrchr s c wesrchr s C Returns a pointer to the last occurrence of character cin s strspn s set wcsspn s set strcspn s set wcscspn s set strpbrk s set wcspbrk s set strstr s sub wesstr s sub strtok s dlm wcstok s dlm Miscellaneous functions string h wchar h or the null pointer if not found Searches s for a sequence of char
44. text isr eisr global _eisr align 2 _eisr type func movea 24 SP SP allocate stack frame st w r18 0 sp st w r19 4 sp stsr eipsw rl19 7 Sav ipsw register stsr eipc r18 7 Sav ipc register st w r18 8 sp st w r19 12 sp stsr eiic rl18 j sav iic register st w r18 16 sp 33 TASKING VX toolset for RH850 User Guide ei enable interrupts pushsp rl r18 stack delta 72 bytes prepare lp 4 stack delta 8 bytes jarl pcrel22 _foo 1p dispose 4 1p stack delta 8 bytes popsp rl r18 stack delta 72 bytes synce wait for synchronization of exceptions di disable interrupts ld w 16 sp r18 ldsr r18 eiic vrestor iic register ld w 8 sp r18 ld w 12 sp r19 ldsr r19 eipsw restor ipsw register ldsr r18 eipc restor ipc register ld w O sp r18 ld w 4 sp r19 movea 24 Sp Sp release stack frame eiret size _eisr _eisr endsec global vector_16 vector_16 equ _eisr calls _eitsnet foo calls eisr 80 extern _foo end You cannot use the enable attribute for non interrupt functions Note that to avoid redundant interrupts for some interrupts the software must take actions to clear the exception status before re enabling interrupts Refer to your processor manual for more information on this subject When the exception status must be cleared first itis not possible to use the enab1e attribute In this case use the nested attribute and re enable interrupts in your application cod
45. tolower toupper towctrans towlower towupper trunce truncf truncl ungetc ungetwc Sets errno via calls to other functions strtok saves last position in string in local static variable This function is not reentrant by design See 4 Sets errno See 2 Sets errno See 2 Sets errno See 2 Sets errno via calls to other functions N A skeleton function Sets errno See 2 Sets errno via call to other functions Not implemented Uses static variable which defines initial start time Uses iob See 1 Uses local buffer to build filename Function can be adapted to use user buffer This makes the function non ISO C See 4 Not implemented Uses static buffer to hold unget characters for each file Can be moved into iob structure See 1 513 TASKING VX toolset for RH850 User Guide Function Not reentrant because unlink vfprintf vfwprintf vfscanf vfwscanf vprintf vwprintf vscanf vwscanf vsprintf vswprintf vsscanf vswscanf wcertomb wcesrtombs wcestoimax wcestombs wcstoumax wctob wctomb wctrans wctype write Table C library reentrancy Uses global File System Simulation buffer _dbg_request Uses iobf See 1 Calls _doscan Uses iob See 1 Calls _doscan Sets errno Sets errno Sets errno Sets errno Sets errno via calls to other functions N A skeleton function Sets errno via calls to other functions N A skeleton function Call
46. 20 20 3 10 10 4 0 0 For example with trade off value 1 the compiler inlines all functions that are smaller or equal to 25 internal compiler units After that the compiler tries to inline even more functions as long as the function will not grow more than 50 When these options pragmas are set to a value gt 0 the specified value is used instead of the values from the table above Static functions that are called only once are always inlined independent of the values chosen for inline max iner and inline max size 3 7 Static Code Analysis Static code analysis SCA is a relatively new feature in compilers Various approaches and algorithms exist to perform SCA each having specific pros and cons SCA Implementation Design Philosophy SCA is implemented in the TASKING compiler based on the following design criteria An SCA phase does not take up an excessive amount of execution time Therefore the SCA can be performed during a normal edit compile debug cycle SCA is implemented in the compiler front end Therefore no new makefiles or work procedures have to be developed to perform SCA The number of emitted false positives is kept to a minimum A false positive is a message that indicates that a correct code fragment contains a violation of a rule recommendation A number of warnings is issued in two variants one variant when it is guaranteed that the rule is violated when the code is executed and the o
47. 209 TASKING VX toolset for RH850 User Guide C compiler option data memory Menu eniry 1 Select C Compiler Allocation 2 From the For non constant data use list select an allocation Command line syntax data memory space You can specify the following space arguments __ data __zdata __sdata Default __ sdata Description With this option you can control the allocation of non constant data objects Data objects that are not explicitly qualified are allocated in the space specified by this option Related information Pragma data_memory C compiler option const data memory Assign memory to constant data objects C compiler option string literal memory Assign memory to string literals 210 Tool Options C compiler option debug info g Menu eniry 1 Select C Compiler Debugging 2 To generate symbolic debug information select Default Small set or Full To disable the generation of debug information select None Command line syntax debug info suboption g suboption You can set the following suboptions small 1 c Emit small set of debug information default 2 d Emit default symbolic debug information all 3 a Emit full symbolic debug information Default debug info Same as debug info default Description With this option you tell the compiler to add directives to the output file for including symbolic information This facilitates high level debugging but increases t
48. 5 16 6 16 7 R R All switch statements shall be well formed A switch label shall only be used when the most closely enclosing compound statement is the body of a switch statement An unconditional break statement shall terminate every switch clause Every switch statement shall have a default label A default label shall appear as either the first or the last switch label of a switch statement Every switch statement shall have at least two switch clauses A switch expression shall not have essentially Boolean type 609 TASKING VX toolset for RH850 User Guide Functions 17 1 R 17 2 R 17 3 M 17 4 M 17 5 A 17 6 M 17 7 R 17 8 A The features of lt stdarg h gt shall not be used Functions shall not call themselves either directly or indirectly A function shall not be declared implicitly All exit paths from a function with non void return type shall have an explicit return statement with an expression The function argument corresponding to a parameter declared to have an array type shall have an appropriate number of elements The declaration of an array parameter shall not contain the st at ic keyword between the The value returned by a function having non void return type shall be used A function parameter should not be modified Pointers and arrays 18 1 R 18 2 R 18 3 R 18 4 A 18 5 A 18 6 R 18 7 R 18 8 R A pointer resulting from arithmetic on a pointer
49. All code above goes here 5 7 5 The Derivative Definition Although you will probably not need to write a derivative definition unless you are using multiple cores that both access the same memory device it helps to understand the Linker Script Language and how the definitions are interrelated A derivative is the design of a processor as implemented on a chip or FPGA It comprises one or more cores and on chip memory The derivative definition includes core definition an instance of a core architecture e bus definition the I O buses of the core architecture memory definitions internal or on chip memory Core Each derivative must have at least one core and each core must have a specification of its core architecture This core architecture must be defined somewhere in the LSL file s core v850 architecture V850 Bus Each derivative can contain a bus definition for connecting external memory In this example the bus system maps to the bus system defined in the architecture definition of core v850 bus system 151 TASKING VX toolset for RH850 User Guide mau 8 width 32 map dest bus v850 system dest_offset 0 size 4G Memory Memory is usually described in a separate memory definition but you can specify on chip memory for a derivative For example memory code_flash mau 8 type rom priority 3 size 512k map size 512k dest bus v850 system exec
50. C 1998 This section lists all supported and unsupported MISRA C 1998 rules See also Section 3 7 2 C Code Checking MISRA C A number of MISRA C rules leave room for interpretation Other rules can only be checked in a limited way In such cases the implementation decisions and possible restrictions for these rules are listed x means that the rule is not supported by the TASKING C compiler R is a required rule A is an advisory rule 1 x 2 3 x 4 5 x 6 7 8 9 10 11 12 13 14 x 15 16 SFS2Zzz3z3IsESESJ SN T p Z Z 2 a po The code shall conform to standard C without language extensions Other languages should only be used with an interface standard Inline assembly is only allowed in dedicated C functions Provision should be made for appropriate run time checking Only use characters and escape sequences defined by ISO C Character values shall be restricted to a subset of ISO 106460 1 Trigraphs shall not be used Multibyte characters and wide string literals shall not be used Comments shall not be nested Sections of code should not be commented out In general it is not possible to decide whether a piece of comment is C code that is commented out or just some pseudo code Instead the following heuristics are used to detect possible C code inside a comment aline ends with or aline starts with possibly preceded by white space Identifiers shall not rely on sign
51. Compiler Include Paths The Include paths box shows the directories that are added to the search path for include files 2 To define a new directory for the search path click on the Add button in the Include paths box 3 Type or select a path Use the Edit and Delete button to change a path or to remove a path from the list Command line syntax include directory path Ipath Description With this option you can specify the path where your include files are located A relative path will be relative to the current directory The order in which the compiler searches for include files is 1 The pathname in the C source file and the directory of the C source only for include files that are enclosed in 2 The path or paths that are specified with this option Multiple paths options are handled by the C compiler from left to right 3 The path that is specified in the environment variable C850 INC when the product was installed 4 The default directory PRODDIR include unless you specified option no stdinc Example Suppose that the C source file test c contains the following lines include lt stdio h gt include myinc h You can call the compiler as follows c850 include directory myinclude test c First the compiler looks for the file st dio h in the directory myinclude relative to the current directory If it was not found the compiler searches in the environment variable and then in th
52. DWARF Object Format 0 cccceeeete eee nee etree terete eters eee een eee eeneeaneaeea ted 527 12 2 Intel Hex Record Format nrram aia pa ia EA NE Eni PiN pE 527 12 3 Motorola S Record Format ccceeeeeeee eee ee cece eee eeeeea eee ee dese eeaeeaeeaeeeeeaeeaeeaeeaeed 530 13 Linker Script Language LSL ccceeee eee eee eee eee eee reeset renee een ee neta een eea een eeaeeaes 533 13 1 Structure of a Linker Script File 2 2 0 0 cece eee eect e eee eee rear neat teat neat need 533 13 2 Syntax of the Linker Script Language ccceeeceeeeeneee een eeeeeaeeeeeaeeeeeneeaeeneeaeed 535 13 21 IPFEPLOCESSING 4 2 cccicesiey sade aeencynamane a E EE TE EAS 535 13 2 2 Lexical SYNAK guenia e aa toii aaa E AES BRAE EEE ENAERE 536 132 3 ld ntitiers and Tags sarios in ansie aaa aa a E ae lies 536 13 24 Expressions enn ano ee eloed a a E EE eed Sata een des Mes 537 13 2 5 Built in FUNCIONS reris ana aE a aE aaa EEA aaea 537 13 2 6 LSL Definitions in the Linker Script File seseissseeessneeeeserersrrerrsrererrnrerene 540 13 2 7 Memory and Bus Definitions 00 2 eceeeeeeee cece eee eee ere reese sense eeenenees 540 13 2 8 Architecture Definition 0 00 cceeeee eee cence cece eee eens ee eee eeeseseeseeneeeseeeees 542 13 2 9 Derivative Definition spieri ccc eeee eee reece eee e eee ee nea a i 545 13 2 10 Processor Definition and Board Specification ccceeeeeeeeeeeeeeee
53. For a complete list and description of all options see Section 8 9 Expire Cache Utility Options With xpires50 help you will see the options on stdout Examples To remove all files older than seven days enter xpire850 days 7 installation dir mproject cache To reduce the compiler cache size to 4 MB enter xpire850 megabytes 4 installation dir mproject cache Older files are removed until the total size of the cache is smaller than 4 MB To clear the compiler cache enter xpire850 megabytes 0 installation dir mproject cache 182 Chapter 7 Using the Debugger This chapter describes the debugger and how you can run and debug a C application This chapter only describes the TASKING specific parts 7 1 Reading the Eclipse Documentation Before you start with this chapter it is recommended to read the Eclipse documentation first It provides general information about the debugging process This chapter guides you through a number of examples using the TASKING debugger with simulation as target You can find the Eclipse documentation as follows 1 Start Eclipse 2 From the Help menu select Help Contents The help screen overlays the Eclipse Workbench 3 Inthe left pane select C C Development User Guide 4 Open the Getting Started entry and select Debugging projects This Eclipse tutorial provides an overview of the debugging process Be aware that the Eclipse example does not use the TASKING
54. Inthe Problems view right click on a message A popup menu appears 3 Select Detailed Diagnostics Info A dialog box appears with additional information Command line syntax diag format all nr You can set the following output formats html HTML output rtf Rich Text Format text ASCII text Default format text Description With this option you can ask for an extended description of error messages in the format you choose The output is directed to stdout normally your screen and in the format you specify You can specify the following formats html rtf or text default To create a file with the descriptions you must redirect the output With the suboption all the descriptions of all error messages are given If you want the description of one or more selected error messages you can specify the error message numbers separated by commas Example To display an explanation of message number 103 enter cc850 diag 103 This results in message 103 with explanation To write an explanation of all errors and warnings in HTML format to file ccerrors html use redirection and enter cc850 diag html all gt ccerrors html 372 Tool Options Related information Section 3 8 C Compiler Error Messages 373 TASKING VX toolset for RH850 User Guide Control program option dry run n Menu entry Command line syntax dry run n Description With this option you put the control program in
55. Options 2 Enable the option Treat warnings as errors Command line syntax warnings as errors number Description If the assembler encounters an error it stops assembling When you use this option without arguments you tell the assembler to treat all warnings as errors This means that the exit status of the assembler will be non zero after one or more assembler warnings As a consequence the assembler now also stops after encountering a warning You can limit this option to specific warnings by specifying a comma separated list of warning numbers Related information Assembler option no warnings Suppress some or all warnings 312 Tool Options 8 4 Linker Options This section lists all linker options Options in Eclipse versus options on the command line Most command line options have an equivalent option in Eclipse but some options are only available on the command line Eclipse invokes the linker via the control program Therefore it uses the syntax of the control program to pass options and files to the linker If there is no equivalent option in Eclipse you can specify a command line option in Eclipse as follows 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and select Settings In the right pane the Settings appear 3 On the Tool Settings tab select Linker Miscellaneous 4 Inthe Additional options field enter one or mo
56. RH850 User Guide Declaration Equivalent void isr void __attribute__ db void isr void __attribute__ interrupt db void isr void void isr void __attribute__ interrupt __attribute__ interrupt ei void isr void void isr void __attribute__ interrupt vector __attribute__ interrupt vector level where evel is ei fe or db depending on the vector Nested interrupts It is possible to re enable interrupts of the same El level from an interrupt handler so that the interrupt handler itself can be interrupted again This is called a nested interrupt function Before the interrupts are re enabled the save restore registers must be preserved For this purpose you can use the nested attribute When you specify this attribute for an interrupt function the C compiler saves and restores the appropriate save restore registers as listed in the table above in the interrupt frame to make the use of nested interrupts safe The C compiler does not generate code El and DI instructions to re enable the interrupts This must be done by the application itself You can use the nested attribute on El level interrupts only An example of a nested interrupt function is extern void foo void void nestisr void __attribute__ interrupt 16 ei nested foo The generated code for this function is section text isr nestisr
57. SET symbol expression Description With the SET directive you assign the value of expression to symbol temporarily If a symbol was defined with the SET directive you can redefine that symbol in another part of the assembly source using the the symbol global with the GLOBAL directive SET directive again Symbols that you define with the s ET directive are always local you cannot define The SET directive is useful in establishing temporary or reusable counters within macros expression must be absolute and cannot include a symbol that is not yet defined no forward references are allowed Example COUNT SET 0 Initialize count Later on you can assign other values to the symbol Related Information EQU Set permanent value to a symbol 94 Assembly Language SIZE Syntax SIZE symbol expression Description With the S1ZE directive you set the size of the specified symbol to the value represented by expression The SIZE directive may occur anywhere in the source file unless the specified symbol is a function In this case the SIZE directive must occur after the function has been defined Example section text global _main align 2 Function _main _main type func r SIZE _main _main endsec Related Information TYPE Set symbol type 95 TASKING VX toolset for RH850 User Guide SOURCE Syntax SOURCE string Descri
58. Select Global Options 2 Enable the option Verbose mode of control program Command line syntax verbose v Description With this option you put the control program in verbose mode The control program performs its tasks while it prints the steps it performs to stdout Related information Control program option dry run Verbose output and suppress execution 406 Tool Options Control program option version V Menu eniry Command line syntax version V Description Display version information The control program ignores all other options or input files Related information 407 TASKING VX toolset for RH850 User Guide Control program option warnings as errors Menu entry 1 Select Global Options 2 Enable the option Treat warnings as errors Command line syntax warnings as errors number number Description If one of the tools encounters an error it stops processing the file s With this option you tell the tools to treat warnings as errors or treat specific control program warning messages as errors e If you specify this option but without numbers all warnings are treated as errors e If you specify this option with a number or a range only the specified control program warnings are treated as an error You can specify the option warnings as errors number multiple times Use one of the pass foo options to pass this option directly to a tool when a specific war
59. Settings In the right pane the Settings appear 3 On the Tool Settings tab select Assembler Optimization 4 Enable one or more optimizations You can enable or disable the optimizations described below The command line option for each optimization is given in brackets Allow generic instructions option Og OG When this option is enabled you can use generic instructions in your assembly source The assembler tries to replace instructions by faster or smaller instructions By default this option is enabled Because shorter instructions may influence the number of cycles you may want to disable this option when you have written timed code In that case the assembler encodes all instructions as they are Optimize jump chains option Oj OJ When this option is enabled the assembler replaces chained jumps by a single jump instruction For example a jump from a to b immediately followed by a jump from b to c is replaced by a jump from a to c Note that this optimization has no effect on compiled C files because jump chains are already optimized by the compiler By default this option is disabled Optimize instruction size option Os OS When this option is enabled the assembler tries to find the shortest possible operand encoding for instructions By default this option is enabled 130 Using the Assembler 4 5 Generating a List File The list file is an additional output file that contains information about the g
60. The linker map file is an additional output file of the linker that shows how the linker has mapped the sections and symbols from the various object files o to output sections The locate part shows the absolute position of each section External symbols are listed per space with their absolute address both sorted on symbol and sorted on address For details on how to generate a map file see Section 5 9 Generating a Map File With the linker option map file format you can specify which parts of the map file you want to see In Eclipse the linker map file project mapxm1 is generated in the output directory of the build configuration usually Debug or Release You can open the map file by double clicking on the file name 518 List File Formats E myproject mapxml 3 B Outline 33 Select table Locate Result Sections X es B 4t gt Taol and kwacation 4 Used Resources Memory usage in bytes Space usage in bytes Section Sect size hex Group Start address Chip name Chip addr a Estimated stack usage Processed Files 2 zconst23 myproject 1Sstr 2 0x00000004 zero_disp23c 0x00000024 spe Code_flash 0x00000024 Link Result 3 zconst23 myproject 2Sstr 3 0x0000000e zero_disp23c 0x00000028 spe Code_flash 0x00000028 Cross References 4 zconst23 myproject 3 str 4 0x0000000a zero_disp23c 0x00000036 spe Code_flash 0x00000036 _ Call Graph 5 zconst23
61. The number of invocations of the example program should be saved in non volatile battery back upped memory This is the memory my_nvsram from the example in Section 5 7 7 The Memory Definition To control the locating of sections you need to write one or more section definitions in the LSL file At least one for each address space where you want to change the default behavior of the linker In our example we need to locate sections in the address space linear 155 TASKING VX toolset for RH850 User Guide section_layout linear Section placement statements To locate sections you must create a group in which you select sections from your program For the battery back up example we need to define one group which contains the section bss non_volatile All other sections are located using the defaults specified in the architecture definition Section bss non_volatile should be placed in non volatile ram To achieve this the run address refers to our non volatile memory called my_nvsram Furthermore the section should not be cleared and therefore the attribute s scratch is assigned to the group group ordered run_addr mem my_nvsram attributes rws select bss non_volatile This completes the LSL file for the sample architecture and sample program You can now invoke the linker with this file and the sample program to obtain an application that works for this architecture For a complete description of t
62. You can use the keyword __ att ribute__ to specify special attributes on declarations of variables functions types and fields Syntax __attribute__ name or __name__ The second syntax allows you to use attributes in header files without being concerned about a possible macro of the same name This second syntax is only possible on attributes that do not already start with an underscore alias symbol You canuse__attribute__ alias symbol to specify that the function declaration appears in the object file as an alias for another symbol For example void _f function body void __attribute__ weak alias __f declares f to be a weak alias for _f align value aligned value By default the RH850 compiler aligns objects as specified in the table in Section 1 1 Data Types You can use __attribute__ align n to increase the alignment of objects The alignment must be a power of two If you decrease the alignment the compiler issues an error 12 C Language Example short globalvar __attribute__ align 4 changed to 4 bytes alignment instead of default 2 bytes Instead of align you can also use the GNU compatible attribute aligned at address You canuse__attribute__ at address to place an object or a function at an absolute address in memory See Section 1 2 4 Placing an Object at an Absolute Address __at const You can use _attribute_ cons
63. a bus the combination of data and corresponding address bus The bus name is used to identify a bus and does not conflict with other identifiers Bus descriptions in an architecture definition or derivative definition define internal buses Some internal buses are used to communicate with the components outside the core or processor Such buses on a processor have physical pins reserved for the number of bits specified with the width statements The mau field specifies the MAU size Minimum Addressable Unit of the data bus This field is required The width field specifies the width number of address lines of the data bus The default value is the MAU size The map keyword specifies how this bus maps onto another bus if so Mappings are described in Section 13 4 4 Mappings bus bus_name mau 8 width 8 map map_description 13 4 3 Defining Address Spaces With the space keyword you define a logical address space The space name is used to identify the address space and does not conflict with other identifiers e The id field defines how the addressing space is identified in object files In general each address space has a unique ID The linker locates sections with a certain ID in the address space with the same ID This field is required e The mau field specifies the MAU size Minimum Addressable Unit of the space This field is required The align value must be a power of two The linker uses this
64. a macro consists of three parts Header which assigns a name to the macro and defines the arguments MACRO directive Body which contains the code or instructions to be inserted when the macro is called e Terminator which indicates the end of the macro definition ENDM directive A macro definition takes the following form macro_name MACRO argument argument aero definition statements ENDM For more information on the definition see the description of the MACRO directive 2 10 2 Calling a Macro To invoke a macro construct a source statement with the following format label macro_name argument argument comment where label An optional label that corresponds to the value of the location counter at the start of the macro expansion macro_name The name of the macro This may not start in the first column 102 Assembly Language argument One or more optional substitutable arguments Multiple arguments must be separated by commas comment An optional comment The following applies to macro arguments Each argument must correspond one to one with the formal arguments of the macro definition If the macro call does not contain the same number of arguments as the macro definition the assembler issues a warning If an argument has an embedded comma or space you must surround the argument by single quotes You can declare a macro call argument as null in three ways e enter de
65. a parser for the C grammar The parser performs a syntactic and semantic analysis of the program and generates an intermediate representation of the program This code is called MIL Medium level Intermediate Language The frontend optimization phase Target processor independent optimizations are performed by transforming the intermediate code Backend phases 1 Instruction selector phase This phase reads the MIL input and translates it into Low level Intermediate Language LIL The LIL objects correspond to a processor instruction with an opcode operands and information used within the C compiler Peephole optimizer instruction scheduler software pipelining phase This phase replaces instruction sequences by equivalent but faster and or shorter sequences rearranges instructions and deletes unnecessary instructions Register allocator phase This phase chooses a physical register to use for each virtual register The backend optimization phase Performs target processor independent and dependent optimizations which operate on the Low level Intermediate Language The code generation formatter phase This phase reads through the LIL operations to generate assembly language output 3 2 Calling the C Compiler The TASKING VX toolset for RH850 under Eclipse can use the internal builder default or the TASKING makefile generator external builder to build your entire project After you have built your proje
66. always specify a key option sub_option Sub options specify into more detail how the archiver should perform the task that is specified with the key option It is not obligatory to specify sub options library The name of the library file on which the archiver performs the specified action You must always specify a library name except for the options and V When the library is not in the current directory specify the complete path either absolute or relative to the library object_file The name of an object file You must always specify an object file name when you add extract replace or remove an object file from the library Options of the archiver utility The following archiver options are available Description Option Sub option Main functions key options Replace or add an object module r a b c u v Extract an object module from the library X V Delete object module from library d V Move object module to another position m a b v Print a table of contents of the library t s0 s1 Print object module to standard output p Sub options Append or move new modules after existing module name a name Append or move new modules before existing module name b name Create library without notification if library does not exis C Preserve last modified date from the library 0 Print symbols in library modules s 0 1 Replace only newer modules u Verbose V
67. applied to pointers that address elements of the same array gt gt lt lt shall not be applied to pointer types except where they point to the same array In general checking whether two pointers point to the same object is impossible The compiler will only report a violation for a relational operation with incompatible pointer types Array indexing shall be the only allowed form of pointer arithmetic The declaration of objects should contain no more than 2 levels of pointer indirection A violation is reported when a pointer with three or more levels of indirection is declared The address of an object with automatic storage shall not be assigned to another object that may persist after the first object has ceased to exist Structures and unions 18 1 18 2 x 18 3 R R R All structure or union types shall be complete at the end of a translation unit An object shall not be assigned to an overlapping object An area of memory shall not be reused for unrelated purposes 603 TASKING VX toolset for RH850 User Guide 18 4 R Unions shall not be used Preprocessing directives 19 1 19 2 19 3 19 4 19 5 19 6 19 7 19 8 19 9 A A 19 11 R 19 12 R 19 13 A 19 14 R 19 15 R 19 16 R 19 17 R include statements in a file should only be preceded by other preprocessor directives or comments Non standard characters should not occur in header file names in
68. appropriate moment from its load time location to its run time location this is typically done by the startup code The run_addr keyword defines the run time address If the run time location of a group is set explicitly the given order between groups specify whether the run time address propagates to the parent group or not The location of the sections in a group can be restricted either to a single absolute address or to a number of address ranges not including the end address With an expression you can specify that the group should be located at the absolute address specified by the expression group run_addr 0xa00f0000 If the group is ordered the first section in the group is located at the specified absolute address You can use the offset variant to locate the group at the given absolute offset in memory group run_addr mem A 0x1000 If the group is ordered the first section in the group is located at the specified absolute offset in memory A range can be an absolute space address range written as expr expr acomplete memory device written as mem mem_name Of a memory address range mem mem_name expr expr group run_addr mem my_dram You can use the to specify an address range of more than one physical memory device group run_addr mem A mem B When used in top level section layouts a memory name refers to a board level memory You can select on chip memory with mem proc_name mem_nam
69. are removed afterwards unless you specify command line option keep temporary files t Example with argument passing to a tool cc850 pass compiler Oc test c The option Oc is directly passed to the compiler 162 Using the Utilities 6 2 Make Utility amk amk is a make utility that you can use to maintain update and reconstruct groups of programs amk features parallelism which utilizes the multiple cores found on modern host hardware hardening for path names with embedded white space and it has an internal interface to provide progress information for updating a progress bar It does not use an external command shell bin sh cmd exe but executes commands directly The primary purpose of any make utility is to speed up the edit build test cycle To avoid having to build everything from scratch even when only one source file changes it is necessary to describe dependencies between source files and output files and the commands needed for updating the output files This is done in aso called makefile 6 2 1 Makefile Rules A makefile dependency rule is a single line of the form target prerequisite where target and prerequisite are path names to files Example test 0 7 Cestsc This states that target test o depends on prerequisite test c So whenever the latter is modified the first must be updated Dependencies accumulate prerequisites and targets can be mentioned in multiple dependency rules
70. attributes can be selected on their attributes The linker may remove unreferenced sections from the application You can change the default section name extension using the module name and symbol name with a pragma or with a command line option rename sections type attribute format_string pragma section type attribute whitespace format_string 38 C Language Note that the pragma has a slightly different syntax because the equal sign may be replaced by whitespace With the section type and attribute you select which sections will be renamed When the type and attributes of a section match the section name will be set to a dot and the section type extended with the specified format string The compiler will add a dot between the section type and the format string automatically The following attributes are allowed init noclear romdata When you specify an optional attribute only sections that have the attribute will be renamed When you do not specify an attribute only sections that do not have any of the listed attributes will be renamed Note that the listed attributes are mutually exclusive if a section uses one of the attributes the other attributes will not be used When the type and attribute are omitted or type all is used all sections will be renamed The format string can contain characters and may contain the following format specifiers attrib section attribu
71. available as a book by Robert C Seacord Addison Wesley Whereas the web site is a wiki and reflects the latest information the book serves as a fixed point of reference for the development of compliant applications and source code analysis tools The rules and recommendations supported by the TASKING compiler reflect the version of the CERT web site as of June 1 2009 The following rules recommendations implemented by the TASKING compiler are not part of the book PRE11 C FLP35 C FLP36 C MSC32 C For a complete overview of the supported CERT C recommendations rules by the TASKING compiler see Chapter 15 CERT C Secure Coding Standard Priority and Levels of CERT C Each CERT C rule and recommendation has an assigned priority Three values are assigned for each rule on a scale of 1 to 3 for e severity how serious are the consequences of the rule being ignored 1 low denial of service attack abnormal termination 2 medium data integrity violation unintentional information disclosure 3 high run arbitrary code e likelihood how likely is it that a flaw introduced by ignoring the rule could lead to an exploitable vulnerability 1 unlikely 2 probable 3 likely remediation cost how expensive is it to comply with the rule 1 high manual detection and correction 2 medium automatic detection and manual correction 3 low automatic detection and correction The three values are then multiplied together for each rul
72. built in symbols is insignificant Examples Valid symbol names 43 TASKING VX toolset for RH850 User Guide loop_1 ENTRY a_B_c _aBC Invalid symbol names 1_loop DEFINE starts with a number reserved directive nam 2 4 1 Predefined Preprocessor Symbols The TASKING assembler knows the predefined symbols as defined in the table below The symbols are useful to create conditional assembly Symbol Description __AS850__ Identifies the assembler You can use this symbol to flag parts of the source which must be recognized by the as850 assembler only It expands to 1 BUILD Identifies the build number of the assembler composed of decimal digits for the build number three digits for the major branch number and three digits for the minor branch number For example if you use build 1 22 1 of the assembler BUILD ___ expands to 1022001 If there is no branch number the branch digits expand to zero For example build 127 results in 127000000 __ REVISION __ Expands to the revision number of the assembler Digits are represented as they are characters for prototypes alphas betas are represented by 1 Examples v1 0r1 gt 1 v1 0rb gt 1 TASKING Identifies the assembler as a TASKING assembler Expands to 1 if a TASKING assembler is used VERSION Identifies the version number of the assembler For example if you use version 2 1r1 of the assembler
73. can abbreviate long option names as long as it forms a unique name You can mix short and long option names on the command line Options can have flags or suboptions To switch a flag on use a lowercase letter or a ongflag To switch a flag off use an uppercase letter or a ongflag Separate longflags with commas The following two invocations are equivalent as850 1 LeM test src as850 list fil list format t symbol macro test src When you do not specify an option a default value may become active 270 Tool Options Assembler option case insensitive c Menu entry 1 Select Assembler Symbols 2 Enable the option Case insensitive identifiers Command line syntax case insensitive c Default case sensitive Description With this option you tell the assembler not to distinguish between uppercase and lowercase characters By default the assembler considers uppercase and lowercase characters as different characters Assembly source files that are generated by the compiler must always be assembled case sensitive When you are writing your own assembly code you may want to specify the case insensitive mode Example When assembling case insensitive the label Labe1Name is the same label as labelname as850 case insensitive test srce Related information 271 TASKING VX toolset for RH850 User Guide Assembler option check Menu entry Command line syntax check Description With th
74. cleared at program startup With this option you tell the compiler to generate code to prevent uninitialized global static variables from being cleared at program startup This option applies to constant as well as non constant variables Related information Pragmas clear noclear 244 Tool Options C compiler option no stdinc Menu eniry 1 Select C Compiler Miscellaneous 2 Add the option no stdinc to the Additional options field Command line syntax no stdinc Description With this option you tell the compiler not to look in the default include directory relative to the installation directory when searching for include files This way the compiler only searches in the include file search paths you specified Related information C compiler option include directory Add directory to include file search path Section 3 4 How the Compiler Searches Include Files 245 TASKING VX toolset for RH850 User Guide C compiler option no warnings w Menu eniry 1 Select C Compiler Diagnostics The Suppress C compiler warnings box shows the warnings that are currently suppressed 2 To suppress a warning click on the Add button in the Suppress warnings box 3 Enter the numbers separated by commas or as a range of the warnings you want to suppress for example 537 538 Or you can use the Add button multiple times 4 To suppress all warnings enable the option Suppress all warnings Use the Edit and Del
75. code to build an executable application The startup code consists of the following components Initialization code This code is executed when the program is initiated and before the function main is called It initializes the stack pointer processor s registers and the application C variables e Exit code This controls the close down of the application after the program s main function terminates To add the C startup code to your project The startup code is present in the files Lib src cstart c and include cstart h You can make copies of these files and add them to your project 3 4 How the Compiler Searches Include Files When you use include files with the include statement you can specify their location in several ways The compiler searches the specified locations in the following order 1 If the include statement contains an absolute pathname the compiler looks for this file If no path or a relative path is specified the compiler looks in the same directory as the source file This is only possible for include files that are enclosed in This first step is not done for include files enclosed in lt gt 2 When the compiler did not find the include file it looks in the directories that are specified in the C Compiler Include Paths page in the C C Build Settings Tool Settings tab of the Project Properties dialog equivalent to option include directory l 3 When the compiler did not find
76. copy and a copy action in the copy table This property makes the sections in the group writable which causes the linker to generate ROM copies for the sections The effect of the nocopy field is the opposite of the copy field It prevents the linker from generating ROM copies of the selected sections 2 Define the mutual order of the sections in the group 571 TASKING VX toolset for RH850 User Guide By default a group is unrestricted which means that the linker has total freedom to place the sections of the group in the address space 572 The ordered keyword tells the linker to locate the sections in the same order in the address space as they appear in the group but not necessarily adjacent Suppose you have an ordered group that contains the sections A B and C By default the linker places the sections in the address space like A B C where section A gets the lowest possible address With direction high_to_low in the section_layout space properties the linker places the sections in the address space like C B A where section A gets the highest possible address The contiguous keyword tells the linker to locate the sections in the group in a single address range Within a contiguous group the input sections are located in arbitrary order however the group occupies one contiguous range of memory Due to alignment of sections there can be alignment gaps between the sections When you define
77. debug configuration see also Section 7 2 Creating a Customized Debug Configuration 1 From the Debug menu select Debug Configurations The Debug Configurations dialog appears 2 Inthe left pane select the configuration you want to change for example TASKING C C Debugger myproject simulator Or click the New launch configuration button 3 to add a new configuration 3 Open the Miscellaneous tab 4 Inthe ORTI file field specify the name of your own ORTI file 5 Inthe KSM module field specify the name of a KSM shared library file suitable for OSEK kernels The debugger supports ORTI specifications v2 0 and v2 1 7 4 11 Registers View In the Registers view you can examine the value of registers while stepping through your application The registers are organized in a number of register groups which together contain all known registers You can select a group to see which registers it contains This view has a number of features While you step through the application the registers involved in the step turn yellow If you scroll in the view or switch groups some registers may appear on a lighter yellow background indicating that the debugger does not know whether the registers have changed because the debugger did not read the registers before the step began 197 TASKING VX toolset for RH850 User Guide atoi Registers 3 Sod Group Core z Name Value Usage 0 0x0 a rl 0x0 r2 0x0 r4 Oxf
78. defined when compiling your own sources See C compiler option define D The easiest way is to adapt the makefile for the library and change the cc line to CC PRODDIR bin c850 DWCHAR_SUPPORT_ENABLED 10 1 1 assert h assert expr Prints a diagnostic message if NDEBUG is not defined Implemented as macro 10 1 2 complex h The complex number z is also written as x yi where x the real part and y the imaginary part are real numbers of types float double or long double The real and imaginary part can be stored in structs or in arrays This implementation uses arrays because structs may have different alignments The header file complex h also defines the following macros for backward compatibility complex _Complex C99 keyword imaginary _Imaginary C99 keyword Parallel sets of functions are defined for double float and long double They are respectively named function functiont function1 All long type functions though declared in complex h are implemented as the double type variant which nearly always meets the requirement in embedded applications This implementation uses the obvious implementation for complex multiplication and a more sophisticated implementation for division and absolute value calculations which handles underflow overflow and infinities with more care The ISO C99 pragma CX_LIMITED_RANGE therefore has no effect 474 Trigonometric functions
79. different types in separate processor definitions See Section 13 6 Semantics of the Board Specification for a detailed description of LSL in the processor definition The memory and bus definitions optional Memory and bus definitions are used within the context of a derivative definition to specify internal memory and on chip buses In the context of a board specification the memory and bus definitions are used to define external off chip memory and buses Given the above definitions the linker can convert a logical address into an offset into an on chip or off chip memory device See Section 13 6 3 Defining External Memory and Buses for more information on how to specify the external physical memory layout Internal memory for a processor should be defined in the derivative definition for that processor The board specification The processor definition and memory and bus definitions together form a board specification LSL provides language constructs to easily describe single core and heterogeneous or homogeneous multi core systems The board specification describes all characteristics of your target board s system buses memory devices I O sub systems and cores that are of interest to the linker Based on the information provided in the board specification the linker can for each core convert a logical address to an offset within a memory device e locate sections in physical memory maintain an overall view of the used an
80. disagree or zero when the strings are equal lt 0 if string lt string2 0 if string string2 gt 0 if string gt string2 Example IF STRCMP STR MAIN 0 does STR equal MAIN STRLEN string Returns the length of string as an integer Example SLEN SET STRLEN string SLEN 6 STRPOS string1 string2 start Returns the position of string2 in string7 as an integer If string2 does not occur in string7 the last string position 1 is returned With start you can specify the starting position of the search If you do not specify start the search is started from the beginning of string7 Example ID set STRPOS TASKING ASK ID 1 ID set STRPOS TASKING BUG ID 7 54 Assembly Language 2 9 Assembler Directives An assembler directive is simply a message to the assembler Assembler directives are not translated into machine instructions There are three main groups of assembler directives Assembler directives that tell the assembler how to go about translating instructions into machine code This is the most typical form of assembly directives Typically they tell the assembler where to put a program in memory what space to allocate for variables and allow you to initialize memory with data When the assembly source is assembled a location counter in the assembler keeps track of where the code and data is to go in memory The following directives f
81. e a leading 0 is entered or hexadecimal leading 0x or OX or just decimal int unsigned octal int unsigned decimal int unsigned hexadecimal in lowercase or uppercase single character converted to unsigned char char a string of non white space characters The argument should point to an array of characters large enough to hold the string and a terminating NULL character float float float float int the number of characters written so far is written into the argument No scanning is done pointer hexadecimal value which must be entered without Ox prefix __fract __lIfract __accum _laccum Matches a string of input characters from the set between the brackets A NULL character is added to terminate the string Specifying includes the character in the set of scanning characters Matches a string of input characters not in the set between the brackets A NULL character is added to terminate the string Specifying includes the character in the set Literal no assignment is done scanf conversion characters stdio h wehar h Description fscanf stream fwscanf stream Performs a formatted read from the given stream format format Returns the number of items converted successfully FSS implementation scanf format wscanf format Performs a formatted read from stdin Returns the number of items converted successfully FSS implementation
82. error occurs during the compilation assembling or linking process the resulting output file may be incomplete or incorrect With this option you keep the generated output files when an error occurs By default the control program removes generated output files when an error occurs This is useful when you use the make utility If the erroneous files are not removed the make utility may process corrupt files on a subsequent invocation Use this option when you still want to use the generated files For example when you know that a particular error does not result in a corrupt file or when you want to inspect the output file or send it to Altium support The control program passes this option to the compiler assembler and linker Example cc850 keep output files test c When an error occurs during compiling assembling or linking the erroneous generated output files will not be removed Related information C compiler option keep output files Assembler option keep output files Linker option keep output files 385 TASKING VX toolset for RH850 User Guide Control program option keep temporary files t Menu eniry 1 Select Global Options 2 Enable the option Keep temporary files Command line syntax keep temporary files t Description By default the control program removes intermediate files like the src file result of the compiler phase and the o file result of the assembler phase With th
83. existing file target 1s1 or the name of a manually written linker script file You can use this option multiple times The linker processes the LSL files in the order in which they appear on the command line Related information Linker option Ilsl check Check LSL file s and exit Section 5 7 Controlling the Linker with a Script 339 TASKING VX toolset for RH850 User Guide Linker option make target Menu entry Command line syntax make target name Description With this option you can overrule the default target name in the make dependencies generated by the option dep file The default target name is the basename of the input file with extension e1f Example 1k850 make target mytarget elf test o The linker generates dependency lines with the default target name mytarget elf instead oftest elf Related information Linker option dep file Generate dependencies in a file 340 Tool Options Linker option map file M Menu entry 1 Select Linker Map File 2 Enable the option Generate XML map file format mapxml for map file viewer 3 Optional Enable the option Generate map file 4 Enable or disable the types of information to be included Command line syntax map file file XML M file XML Default Eclipse XML map file is generated Default linker no map file is generated Description With this option you tell the linker to generate a linker map file If
84. from the library mylib a and displays which files are removed Related information 426 Tool Options Archiver option dump p Command line syntax dump P Description Print the specified object module s in the library to standard output This option is only useful when you redirect or pipe the output to other files or tools that serve your own purposes Normally you do not need this option Example ar850 dump mylib a objl o gt file o The archiver prints the file ob j1 o to standard output where it is redirected to the file file o The effect of this example is very similar to extracting a file from the library but in this case the extracted file gets another name Related information 427 TASKING VX toolset for RH850 User Guide Archiver option extract x Command line syntax extract modtime verbose x o v Description Extract an existing module from the library modtime 0 Give the extracted object module the same date as the last modified date that was recorded in the library Without this suboption it receives the last modified date of the moment it is extracted verbose V Verbose the archiver shows which files are extracted Example To extract the file obj1 o from the library mylib a ar850 extract mylib a objl o If you do not specify an object module all object modules are extracted ar850 x mylib a Related information 428 Tool Options Ar
85. function uses the value returned by a previous call to generate the next value in the sequence This function can be made reentrant by specifying the previous random value as one of the arguments However then it is no longer a standard function 5 malloc Malloc uses a heap space which is assigned at locate time Thus this implementation is not reentrant Making a reentrant malloc requires some sort of system call to obtain free memory space on a per process basis This is not easy to solve within the current context of the library This requires adaptation to a kernel This paragraph on reentrancy applies to multi process environments only If reentrancy is required for calling library functions from an exception handler another approach is required For such a situation it is of no use to allocate e g multiple iob structures In such a situation several pieces of code in the library have to be declared atomic this means that interrupts have to be disabled while executing an atomic piece of code The default exception handler except ion_handler delivered in the floating point run time library in except c is not reentrant because it uses global variables for the custom handler and status 516 Chapter 11 List File Formats This chapter describes the format of the assembler list file and the linker map file 11 1 Assembler List File Format The assembler list file is an additional output file of the assembler that contai
86. global _nestisr align 2 _nestisr type func movea 24 SP SP allocate stack frame st w r18 0 sp st w r19 4 sp stsr eipsw rl19 7 sav ipsw register stsr eipc r18 sav ipc register st w r18 8 sp st w r19 12 sp stsr eliic rl18 j sav iic register st w r18 16 sp pushsp rl r18 stack delta 72 bytes prepare lp 4 stack delta 8 bytes jarl pcrel22 _foo 1p dispose 4 1p stack delta 8 bytes popsp rl r18 Stack delta 72 bytes ld w 16 sp r18 ldsr r18 eiic restor iic register 32 C Language ld w 8 sp r18 ld w 12 sp r19 ldsr r19 eipsw restor ipsw register ldsr r18 eipc restor ipc register ld w O sp r18 ld w 4 sp r19 movea 24 Sp Sp release stack frame eiret size _nestisr _nestisr endsec global vector_16 vector_16 equ _nestisr calls r nestisr foo Calls nestisr 80 extern _foo end You cannot use the nested attribute for non interrupt functions Enable interrupts The enable attribute is similar to the nested attribute The only difference is that the C compiler also generates code to re enable the interrupts of the same class It does so right after the save restore registers have been preserved Right before the save restore registers are restored the interrupts are disabled again Example extern void foo void void eisr void __attribute__ interrupt 16 ei enable foo The generated code for this function is section
87. handler The C compiler generates function entry and exit sequences suitable for use in an interrupt handler when this attribute is present For more information see Section 1 10 4 nterrupt Functions leaf You can use ___attribute__ leaf to specify that a function is a leaf function A leaf function is an external function that does not call a function in the current compilation unit directly or indirectly The attribute is intended for library functions to improve dataflow analysis The attribute has no effect on functions defined within the current compilation unit malloc You can use __attribute__ malloc to improve optimization and error checking by telling the compiler that e The return value of a call to such a function points to a memory location or can be a null pointer e On return of such a call before the return value is assigned to another variable in the caller the memory location mentioned above can be referenced only through the function return value e g if the pointer value is saved into another global variable in the call the function is not qualified for the malloc attribute 14 C Language The lifetime of the memory location returned by such a function is defined as the period of program execution between a the point at which the call returns and b the point at which the memory pointer is passed to the corresponding deallocation function Within the lifetime of the memory object no other calls
88. header file dbg h contains the debugger call interface for file system simulation It contains low level functions This header file is not defined in ISO C99 _dbg_trap Low level function to trap debug events _argcv const char Low level function for command line argument passing xbuf size_t size 10 1 6 errno h int errno External variable that holds implementation defined error codes The following error codes are defined as macros in errno h EPERM 1 Operation not permitted ENOENT 2 No such file or directory EINTR 3 Interrupted system call EIO 4 I O error EBADF 5 Bad file number EAGAIN 6 No more processes OMEM 7 Not enough core EACCES 8 Permission denied EFAUL 9 Bad address EEXIS 10 File exists ENOTDIR 11 Not a directory EISDIR 12 Is a directory EINVAL 13 Invalid argument ENFILE 14 File table overflow FILE 15 Too many open files ETXTBSY 16 Text file busy ENOSPC 17 No space left on device ESPIPE 18 Illegal seek EROFS 19 Read only file system EPIPE 20 Broken pipe ELOOP 21 Too many levels of symbolic links ENAMETOOLONG 22 File name too long Floating point errors EDOM 23 Argument too large ERANGE 24 Result too large Errors returned by printf scanf ERR_FORMAT 25 Illegal format string for printf scanf ERR_NOFLOA 26 Floating point not supported ERR_NOLONG 27 Long not supported ERR_NOPOINT 28 Pointer
89. is necessary to create a dedicated DTC file To add a custom board 1 From the etc directory of the product make a copy of a dtc file and put it in your project directory in the current workspace In Eclipse the DTC file should now be visible as part of your project 2 Edit the file and give it a name that reflects the custom board The Import Board Configuration wizard in Eclipse adds DTC files that are present in your current project to the list of available target boards Syntax of a DTC file DTC files are XML files and use the XML Schema file dtc xsd also present in the etc directory of the installed product Inspect the DTC XML schema file dtc xsd for a description of the allowed elements and the available attributes Use a delivered dtc file as a starting point for creating a custom board specification Basically a DTC file consists of the definition of the debug target debugTarget element which embodies one or more configurations configuration element and one or more communication methods communicationMethod element DTC macros in LSL To protect wizards dialogs from changing the LSL file you can protect the LSL file by adding the macro __DTC_IGNORE This can be useful for projects that need the same LSL file but still need to run on different target boards define __DTC_IGNORE 581 TASKING VX toolset for RH850 User Guide 14 2 Description of DTC Elements and Attributes The following table c
90. lines and else lines may contain any number of lines or text of any kind even other ifdef ifndef else and endif lines or no lines at all The else line may be omitted along with the e se lines following it White spaces tabs or spaces in front of preprocessing directives are allowed 168 Using the Utilities First the macro name after the ifdef command is checked for definition If the macro is defined then the if lines are interpreted and the else lines are discarded if present Otherwise the f lines are discarded and if there is an else line the e se lines are interpreted but if there is no else line then no lines are interpreted When you use the ifndef line instead of ifdef the macro is tested for not being defined These conditional lines can be nested to any level You can also add tests based on strings With i feq the result is true if the two strings match with i fneq the result is true if the two strings do not match They are used in the following way ifeq stringl string2 if lines else else lines endif 6 2 6 Makefile Parsing amk reads and interprets a makefile in the following order 1 When the last character on a line is a backslash i e without trailing white space then that line and the next line will be concatenated removing the backslash and newline 2 The unquoted character indicates start of comment and may be placed anywhere on a line It will be removed in this phase this c
91. lt lt 3 or TIMER3 m If a register is memory mapped you can also take its address for example amp ADCIN e Expressions may contain target function calls like for example g1 invert amp g2 Be aware that this will not work if the compiler has optimized the code in such a way that the original function code does not actually exist anymore This may be the case for example as a result of inlining Also be aware that the function and its callees use the same stack s as your application which may cause problems if there is too little stack space Finally any breakpoints present affect the invoked code in the normal way 7 4 6 Memory View Use the Memory view to inspect and change process memory The Memory view supports the same addressing as the C language You can address memory using expressions such as e 0x0847d3c amp y 1024 s ptr Monitors To monitor process memory you need to add a monitor 1 Inthe Debug view select a debug session Selecting a thread or stack frame automatically selects the associated session 2 Click the Add Memory Monitor button in the Memory Monitors pane The Monitor Memory dialog appears 3 Type the address or expression that specifies the memory section you want to monitor and click OK The monitor appears in the monitor list and the Memory Renderings pane displays the contents of memory locations beginning at the specified address To remove a monitor 1 Inthe Moni
92. myproject 4Sstr 5 0x0000000e zero_disp23c 0x00000040 spe Code_flash 0x00000040 F 4 Locate Result 6 zconst23 myproject 5Sstr 6 0x00000014 zero_disp23c 0x0000004e spe Code flash 0x0000004e Task entry address 7 text _doprint _doprint 48 0x00000390 0x00000062 spe Codeflash 0x00000062 Sections 8 text_doprint _putnumber 50 _0x0000025e 0x000003f2 spe Code flash 000000342 Symbols 9 text flsbuf _flsbuf 147 0x000000ea 0x00000650 spe Code_flash 0x00000650 si E A 10 text fflush _fflush 167 0x0000008c 0x0000073a spe Code flash 0x0000073a 11 ___ text _doprint _putstring 49 0x0000006e 0x000007 c6 spe Code_flash 0x000007c6 12 _ text myproject main 1 000000048 0x00000834 spe Codeflash 0x00000834 13 _ text printf printf 78 000000044 0x0000087c spe Codeflash 0x0000087c 14 text cinit _c_init 28 0x00000042 0x000008c0 spe Code flash 0x000008c0 15 __ text _doprint _Itoa 52 0x00000040 0x00000902 spe Code_flash 0x00000902 16 text fputc fputc 117 0x00000036 0x00000942 spe Code_flash 0x00000942 17 _ text fclose fclose 157 0x00000034 0x00000978 spe Code flash 0x00000978 18 text dbg _host_write 213 0x0000002e 0x000009ac spe Code_flash 0x000009ac v Each page displays a part of the map file You can use the drop down list or the Outline view to navigate through the different tables and you can use the following buttons Description Goes back one page in the history list Goes forward one
93. n scalbn scalbnf scalbnli scalbn Computes the result of x FLT_RADIX efficiently not normally by computing FLT_RADIx explicitly scalbln scalblnf scalblnl scalbln Same as scalbn but with argument nas long int Rounding functions math h tgmath h Description ceil ceilf ceill ceil Returns the smallest integer not less than x as a double floor floorf floorl floor Returns the largest integer not greater than x as a double rint rintf rintl rint Returns the rounded integer value as an int according to the current rounding direction See fenv h Not implemented lrint lrintf lrintl lrint Returns the rounded integer value as a long int according to the current rounding direction See fenv h Not implemented llrint llrintf llrintl llrint Returns the rounded integer value asa long long int according to the current rounding direction See fenv h Not implemented nearbyint nearbyintf nearbyintl nearbyint Returns the rounded integer value as a floating point according to the current rounding direction See fenv h Not implemented round roundf roundl round Returns the nearest integer value of x as int Not implemented 483 TASKING VX toolset for RH850 User Guide math h tgmath h Description lround lroundf lroundl lround Returns the nearest integer value of x as long int Not implemented llround lroundf llroundl 1llround Returns the nearest integer value of x as long long int Not implemented trunc truncf trunci t
94. name as the basename for the output file Command line syntax format format You can specify the following formats ELF ELF DWARF IHEX Intel Hex SREC Motorola S records Description With this option you specify the output format for the resulting absolute object file The default output format is ELF DWARF which can directly be used by the debugger If you choose IHEX or SREC you can additionally specify the address size of the chosen format option address size Example To generate a Motorola S record output file cc850 format SREC testl c test2 c output test sre Related information Control program option address size Set address size for linker IHEX SREC files Control program option output Output file Linker option chip output Generate an output file for each chip 377 TASKING VX toolset for RH850 User Guide Control program option fp model Menu eniry 1 Select C Compiler Floating Point 2 Make a selection from the Floating point model list 3 If you selected Custom enable one or more individual options Command line syntax fp model flags You can set the following flags contract c C allow expression contraction float f F treat double as float fastlib VL allow less precise library functions nonan n N allow optimizations to ignore NaN Inf rewrite r R allow expression rewriting soft s S use software floating point library trap t T support
95. operand shall address an element of the same array as that pointer operand Subtraction between pointers shall only be applied to pointers that address elements of the same array he relational operators gt gt lt and lt shall not be applied to objects of pointer type except where they point into the same object The and operators should not be applied to an expression of pointer type Declarations should contain no more than two levels of pointer nesting The address of an object with automatic storage shall not be copied to another object that persists after the first object has ceased to exist Flexible array members shall not be declared Variable length array types shall not be used Overlapping storage 19 1 M 19 2 A An object shall not be assigned or copied to an overlapping object The union keyword should not be used Preprocessing directives 20 1 A 20 2 R 20 3 R 610 include directives should only be preceded by preprocessor directives or comments The or characters and the or character sequences shall not occur in a header file name The include directive shall be followed by either a lt filename gt or filename sequence 20 4 20 5 20 6 20 7 20 8 20 9 R 20 10 A 20 11 R 20 12 R 20 13 R 20 14 R MISRA C Rules A macro shall not be defined with the same name as a keyword undef should not be used Tokens that look like a
96. option file file f file Description This option is primarily intended for command line use Instead of typing all options on the command line you can create an option file which contains all options and flags you want to specify With this option you specify the option file to the linker Use an option file when the command line would exceed the limits of the operating system or just to store options and save typing Option files can also be generated on the fly for example by the make utility You can specify the option option file multiple times Format of an option file Multiple arguments on one line in the option file are allowed To include whitespace in an argument surround the argument with single or double quotes If you want to use single quotes as part of the argument surround the argument by double quotes and vise versa This has a single quote embedded This has a double quote embedded This has a double quote and a single quote embedded When a text line reaches its length limit use a to continue the line Whitespace between quotes is preserved This is a continuation line gt This is a continuation line 351 TASKING VX toolset for RH850 User Guide e Itis possible to nest command line files up to 25 levels Example Suppose the file myoptions contains the following lines map file my map generate a map file test o input file lib
97. output is directed to stdout normally your screen and in the format you specify The HLL object dumper does not process any files You can specify the following formats html rtf or text default To create a file with the descriptions you must redirect the output With the suboption all the descriptions of all error messages are given If you want the description of one or more selected error messages you can specify the error message numbers separated by commas or you can specify a range Example To display an explanation of message number 101 enter hldump850 diag 101 This results in the following message and explanation F101 cannot create lt file gt The output file or a temporary file could not be created Check if you have sufficient disk space and if you have write permissions for the specified fil To write an explanation of all errors and warnings in HTML format to file hldumperrors html use redirection and enter hlidump850 diag html all gt hldumperrors html Related information 441 TASKING VX toolset for RH850 User Guide HLL object dumper option disassembly intermix i Command line syntax disassembly intermix flag i flag You can specify the following format flags single line s S Force the insert to be limited to the first preceding source line Default disassembly intermix S Description With this option the disassembly is intermixed with HLL source code The sou
98. prepare and dispose generic instructions you can specify a list of registers The assembler will rewrite the list of registers with a 32 bit register list mask Instruction Replacement PREPARE list imm5 PREPARE list12 imm5 PREPARE list imm5 sp PREPARE ist12 imm5 sp PREPARE list imm5 imm PREPARE ist12 imm5 imm DISPOSE imm85 list DISPOSE imm85 list12 DISPOSE imm85 list reg1 DISPOSE imm5 list12 reg1 For example PREPARE r20 r21 r23 16 sp is replaced by the following code PREPARE 128 64 16 16 sp 108 Chapter 3 Using the C Compiler This chapter describes the compilation process and explains how to call the C compiler The TASKING VX toolset for RH850 under Eclipse can use the internal builder default or the TASKING makefile generator external builder to build your entire embedded project from C source till the final ELF DWARF object file which serves as input for the debugger Although in Eclipse you cannot run the C compiler separately from the other tools this section discusses the options that you can specify for the C compiler On the command line it is possible to call the C compiler separately from the other tools However it is recommended to use the control program for command line invocations of the toolset see Section 6 1 Control Program With the control program it is possible to call the entire toolset with only one command line The C compil
99. preprocessing directive shall not occur within a macro argument Expressions resulting from the expansion of macro parameters shall be enclosed in parentheses The controlling expression of a if or elif preprocessing directive shall evaluate to 0 or 1 All identifiers used in the controlling expression of if or e1if preprocessing directives shall be define d before evaluation The and preprocessor operators should not be used A macro parameter immediately following a operator shall not immediately be followed by a operator A macro parameter used as an operand to the or operators which is itself subject to further macro replacement shall only be used as an operand to these operators A line whose first token is shall be a valid preprocessing directive All else elif and endif preprocessor directives shall reside in the same file as the if ifdef or ifndef directive to which they are related Standard libraries 21 1 R 21 2 R 21 3 R 21 4 R 21 5 R 21 6 R 21 7 R 21 8 R 21 9 R 21 10 R 21 11 R 21 12 A Resources x 221 R define and undef shall not be used on a reserved identifier or reserved macro name A reserved identifier or macro name shall not be declared The memory allocation and deallocation functions of lt stdlib h gt shall not be used The standard header file lt set jmp h gt shall not be used The standard header file lt signal h gt shall not b
100. rap example delivered with the product for an example of how floating point exceptions can be handled The file fot rap c installs a floating point trap handler which is called when a floating point 473 TASKING VX toolset for RH850 User Guide exception occurs In this example some of the possible exceptions are generated You can use this example as a starting point to write your own program which handles the exception without hanging the program or producing incorrect output This handler overrules the default handler except ion_handler delivered in the floating point run time library in except c Note that the default handler is not reentrant 10 1 Library Functions The tables in the sections below list all library functions grouped per header file in which they are declared Some functions are not completely implemented because their implementation depends on the context where your application will run These functions are for example all I O related functions Where possible these functions are implemented using file system simulation FSS This system can be used by the debugger to simulate an I O environment which enables you to debug your application Wide character support A number of wide character functions are available as C source code but have not been compiled with the C library To use complete wide character functionality you must recompile the libraries with the macro WCHAR_SUPPORT_ENABLED and keep this macro also
101. round roundf roundl scalbln scalblinf scalblnl scalbn scalbnf scalbnl scanf wscanf setbuf set jmp setlocale setvbuf signal signbit sin sinf sinl sinh sinhf sinhl snprintf swprintf sprintf sqrt sqrtf sqrtl srand sscanf swscanf stat strcat wcscat strchr wceschr a tromp wcscmp strcoll wcscoll strcpy wcescpy strcspn wcescspn strerror strftime wcsftime strlen wcslen 512 See malloc 5 Not implemented Uses global File System Simulation buffer _dbg_request Not implemented Uses global File System Simulation buffer _dbg_request Eventually calls _lseek Not implemented Not implemented Uses iob calls _doscan See 1 Sets iob See 1 N A skeleton function Sets iob and calls malloc See 1 5 Updates the signal handler table Sets errno via calls to other functions Sets errno See 2 Sets errno See 2 Sets errno See 2 See rand Sets errno via calls to other functions Uses global File System Simulation buffer _dbg_request Function Libraries Not reentrant because strncat wcsncat strncmp wcsnemp strncpy wcsncpy strpbrk wcspbrk strrchr wesrchr strspn wcesspn strstr wcesstr strtod wcstod strtof wcstof strtoimax strtok westok strtol westol strtold wcestold strtoul westoul strtoull westoull strcoumax strxfrm wcesxfrm system tan tanf tanl tanh tanhf tanhl tgamma tgammaf tgammal time tmpfile tmpnam toascii
102. sections are located This is useful when some sections are considered important for good performance of the application and a small amount of fast memory is available The value is a number for which the default is 1 so higher priorities start at 2 Sections with a higher priority are located before sections with a lower priority unless their relative locate priority is already determined by other restrictions like run_addr and page group priority 2 select importantcodel select importantcode2 13 8 3 Creating or Modifying Special Sections Instead of selecting sections you can also create a reserved section or an output section or modify special sections like a stack or a heap Because you cannot define these sections in the input files you must use the linker to create them Stack The keyword stack tells the linker to reserve memory for the stack The name for the stack section refers to the stack as defined in the architecture definition If no name was specified in the architecture definition the default name is stack With the keyword size you can specify the size for the stack If the size is not specified the linker uses the size given by the min_size argument as defined for the stack in the architecture definition Normally the linker automatically tries to maximize the size unless you specified the keyword fixed group stack mystack size 2k The linker creates two labels to mark th
103. selected debug session and or process Use Relaunch to restart Terminate this debug session or start another debug session Terminate all Right click menu As terminate Ends all debug sessions m Terminate and Right click menu Ends the debug session and removes it from the Debug remove view m Terminate and Right click menu Ends the debug session and relaunches it This is the gt Relaunch same as choosing Terminate and then Relaunch 2 Detaches the debugger from the selected process useful for debugging Ff i s Disconnect attached processes 191 TASKING VX toolset for RH850 User Guide Stepping through the application Icon Action Description Step into Steps to the next source line or instruction Steps over a called function The function is executed and the application Step over suspends at the next instruction after the call e Step return Executes the current function The application suspends at the next instruction after the return of the function iv Instruction Toggle If enabled the stepping functions are performed on instruction level stepping instead of on C source line level T Interrupt aware Toggle If enabled the stepping functions do not step into an interrupt when stepping it occurs Miscellaneous Icon Action Description Right click menu Copies the stack as text to the windows clipboard You Copy Stack can paste the copied selection a
104. shows the directories that are added to the search path for library files 2 To define a new directory for the search path click on the Add button in the Library search path box 3 Type or select a path Use the Edit and Delete button to change a path or to remove a path from the list Command line syntax library directory path Lpath ignore default library path L Description With this option you can specify the path s where your system libraries specified with the option library I are located If you want to specify multiple paths use the option library directory for each separate path The default path is PRODDIR lib v850e3 If you specify only L without a pathname or the long option ignore default library path the linker will not search the default path and also not in the paths specified in the environment variable LIB850 So the linker ignores steps 2 and 3 as listed below The priority order in which the linker searches for system libraries specified with the option library l is 1 The path that is specified with the option library directory 2 The path that is specified in the environment variable L1B850 3 The default directory PRODDIR lib v850e3 Example Suppose you call the linker as follows 1k850 test o library directory c mylibs library c 334 Tool Options First the linker looks in the directory c mylibs for library 1ibc a this opti
105. source file has been specified and there are multiple functions with the given name the target halts on all of those Note that function breakpoints generally will not work on inlined instances of a function Address The target halts when it reaches the specified instruction address e Stack The target halts when it reaches the specified stack level Data The target halts when the given variable or memory location specified in terms of an absolute address is read or written to as specified Instruction The target halts when the given number of instructions has been executed Cycle The target halts when the given number of clock cycles has elapsed Timer The target halts when the given amount of time elapsed In addition to the type of the breakpoint you can specify the condition that must be met to halt the program In the Condition field type a condition The condition is an expression which evaluates to true non zero or false zero The program only halts on the breakpoint if the condition evaluates to true In the Ignore count field you can specify the number of times the breakpoint is ignored before the program halts For example if you want the program to halt only in the fifth iteration of a while loop type 4 the first four iterations are ignored 7 4 3 File System Simulation FSS View Description The File System Simulation FSS view is automatically opened when the target requests F
106. sscanf s format swscanf s format Performs a formatted read from the string s Returns the number of items converted successfully vfscanf stream vfwscanf stream Same as fscanf fwscanf but extra arguments format arg format arg are given as variable argument list arg See 492 Section 10 1 20 stdarg h stdio h wehar h Libraries Description vscanf format arg vsscanf s format arg arg fprintf stream format fwprintf stream format ses printf format sprintf s format snprintf s n Format ce swprintf s n format vfprintf stream format arg vfwprintf stream format arg vprintf format arg vwprintf format arg vsprintf s format vswprintf s arg format arg Character input output stdio h wehar h vwscanf format arg vswscanf s format wprintf format Same as sscanf swscanf but extra arguments are given as variable argument list arg See Section 10 1 20 stdarg h Same as scanf wscanf but extra arguments are given as variable argument list arg See Section 10 1 20 stdarg h Performs a formatted write to the given stream Returns EOF WEOF on error FSS implementation Performs a formatted write to the stream stdout Returns EOF WEOF on error FSS implementation Performs a formatted write to string s Returns EOF WEOF on error Same as sprintf but n specifies the maximum numbe
107. symbol sequence with a character string that represents the decimal value of the symbol Return hex value of symbol Substitutes the symbol sequence with a character string that represents the hexadecimal value of the symbol i Macro string delimiter Allows the use of macro arguments as literal strings A Macro local label override Prevents name mangling on labels in macros Example The macro definition macro_a MACRO argl arg2 header db argl body 83 TASKING VX toolset for RH850 User Guide dw argl arg2 ENDM terminator The macro call section data macro_a 2 3 endsec The macro expands as follows db 2 dw 2 3 Related Information Section 2 10 Macro Operations DEFINE Define a substitution string 84 Assembly Language MESSAGE Syntax MESSAGE type strlexp strl lexp Description With the MESSAGE directive you tell the assembler to print a message to stderr during the assembling process With type you can specify the following types of messages l Information message Error and warning counts are not affected and the assembler continues the assembling process W Warning message Increments the warning count and the assembler continues the assembling process E Error message Increments the error count and the assembler continues the assembling process F Fatal error message The assembler immediately aborts the as
108. target mytarget o test c The compiler generates dependency lines with the default target name mytarget o instead of test o Related information C compiler option preprocess make Generate dependencies for make C compiler option dep file Generate dependencies in a file 240 Tool Options C compiler option misrac Menu eniry 1 Select C Compiler MISRA C 2 Make a selection from the MISRA C checking list 3 Ifyou selected Custom expand the Custom 1998 Custom 2004 or Custom 2012 entry and enable one or more individual rules Command line syntax misrac all nr nr Description With this option you specify to the compiler which MISRA C rules must be checked With the option misrac all the compiler checks for all supported MISRA C rules Example c850 misrac 9 13 test c The compiler generates an error for each MISRA C rule 9 10 11 12 or 13 violation in file test c Related information Section 3 7 2 C Code Checking MISRA C C compiler option misrac mandatory warnings C compiler option misrac advisory warnings C compiler option misrac required warnings Linker option misrac report 241 TASKING VX toolset for RH850 User Guide C compiler option misrac advisory warnings misrac required warnings misrac mandatory warnings Menu eniry 1 Select C Compiler MISRA C 2 Make a selection from the MISRA C checking list 3 Enable one or more of the options Warnings in
109. the LSL file directly in the project_name 1s1 editor A appears in front of the name of the LSL file to indicate that the file has changes 3 Click El or select File Save to save the changes e You can also make changes to the property pages Memory and Stack Heap 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and select Memory or Stack Heap In the right pane the corresponding property page appears 3 Make changes to memory and or stack heap and click OK The project LSL file is updated automatically according to the changes you make in the pages You can quickly navigate through the LSL file by using the Outline view Window Show View Outline 5 7 3 Structure of a Linker Script File A script file consists of several definitions The definitions can appear in any order The architecture definition required In essence an architecture definition describes how the linker should convert logical addresses into physical addresses for a given type of core If the core supports multiple address spaces then for each 146 Using the Linker space the linker must know how to perform this conversion In this context a physical address is an offset on a given internal or external bus Additionally the architecture definition contains information about items such as the hardware stack and the interrupt vector table This specification is normally written by A
110. the Section Layout Definition for information on creating and placing stack sections Copy tables The copytable keyword defines a copy table in the address space The content of the copy table is created by the linker and contains the start address and size of all sections that should be initialized by the startup code You must define exactly one copy table in one of the address spaces for a core Optionally you can specify an alignment for the copy table with the argument align This alignment must be equal or larger than the alignment that you specify for the address space itself If smaller the alignment for the address space is used The copy_unit argument specifies the size in MAUs of information chunks that are copied If you do not specify the copy unit the MAU size of the address space itself is used The dest argument specifies the destination address space that the code uses for the copy table The linker uses this information to generate the correct addresses in the copy table The memory into where the sections must be copied at run time must be accessible from this destination space Sections generated for the copy table may get a page restriction with the address space s page size by adding the page argument 555 TASKING VX toolset for RH850 User Guide Vector table e The vector_table keyword defines a vector table with n vectors of size m This is an internal LSL object similar to an LSL group The run_addr arg
111. the compiler to generate dependency lines that can be used in a Makefile In contrast to the option preprocess make the dependency information will be generated in addition to the normal output file By default the information is written to a file with extension d one for every input file When you specify a filename all dependencies will be combined in the specified file Example c850 dep file test dep test c The compiler compiles the file test c which results in the output file test src and generates dependency lines in the file test dep Related information C compiler option preprocess make Generate dependencies for make 217 TASKING VX toolset for RH850 User Guide C compiler option diag Menu eniry 1 From the Window menu select Show View Other TASKING Problems The Problems view is added to the current perspective 2 Inthe Problems view right click on a message A popup menu appears 3 Select Detailed Diagnostics Info A dialog box appears with additional information Command line syntax diag format all msg msg You can set the following output formats html HTML output rtf Rich Text Format text ASCII text Default format text Description With this option you can ask for an extended description of error messages in the format you choose The output is directed to stdout normally your screen and in the format you specify The compiler does not compile a
112. the complex square root of z Returns the argument of z also known as phase angle Returns the imaginary part of zas a real respectively as a double float long double Returns the complex conjugate value the sign of its imaginary part is reversed Returns the value of the projection of z onto the Riemann sphere Returns the real part of z as a real respectively as a double float long double 475 TASKING VX toolset for RH850 User Guide 10 1 3 cstart h The header file cst art h controls the system startup code s general settings and register initializations It contains defines and prototypes of functions that can be used for hardware configuration 10 1 4 ctype h and wctype h The header file ct ype h declares the following functions which take a character c as an integer type argument The header file wct ype h declares parallel wide character functions which take a character cof the wchar_t type as argument ctype h wctype h Description isalnum iswalnum Returns a non zero value when c is an alphabetic character or a number A Z a z 0 9 isalpha iswalpha Returns a non zero value when c is an alphabetic character A Z a z isblank iswblank Returns a non zero value when c is a blank character tab space iscntrl iswentrl Returns a non zero value when c is a control character isdigit iswditit Returns a non zero value when c is a numeric character 0 9 isgraph iswgraph Returns a non zero v
113. the derivative name also for the processor 564 Linker Script Language LSL With the keyword processor you define a processor You can freely choose the processor name The name is used to refer to it at other places in the LSL file processor proc_name processor definition 13 6 2 Instantiating Derivatives With the keyword derivative you tell the linker that the given processor has a certain derivative The derivative name refers to an existing derivative definition in the same LSL file For example if you have two processors on your target board called myproc_1 and myproc_2 that have the same derivative called myderiv you must instantiate both processors as follows processor myproc_1l derivative myderiv processor myproc_2 derivative myderiv If the derivative definition has parameters you must specify the arguments that correspond with the parameters For example myderiv1 expects two parameters which are used in the derivative definition processor myproc derivative myderivl 2 4 13 6 3 Defining External Memory and Buses It is common to define external memory off chip and external buses at the global scope outside any enclosing definition Internal memory on chip memory is usually defined in the scope of a derivative definition With the keyword memory you define physical memory that is present on the target board The memory name is used to identify the memory
114. the function definition When you need to call the inline function from several source modules you must include the definition of the inline function in each module for example using a header file With the __ noinline keyword you prevent a function from being inlined __noinline unsigned int abs int val 27 TASKING VX toolset for RH850 User Guide unsigned int abs_val val if val lt 0 abs_val val return abs_val Using pragmas inline noinline smartinline Instead of the inline qualifier you can also use pragma inline and pragma noinline to inline a function body pragma inline unsigned int abs int val unsigned int abs_val val if val lt 0 abs_val val return abs_val pragma noinline void main void int i i abs 1 If a function has an inline __noinline function qualifier then this qualifier will overrule the current pragma setting With the pragma noinline pragma smartinline you can temporarily disable the default behavior that the C compiler automatically inlines small functions when you turn on the C compiler option optimize inline With the C compiler options inline max iner and inline max size you have more control over the automatic function inlining process of the compiler Combining inline with __asm to create intrinsic functions With the keyword ___ asm it is possible to use assembly instructions in the body of an inline function Becaus
115. the generated assembly file might not match the options actually used With every compilation of a file that results in a cache miss a new file is stored in the cache Old files are not removed from the cache automatically because that would slow down the compiler too much To keep the cache size reasonable specify a maximum number of days the files will live in the cache Eclipse uses the utility expire850 for this It is recommended to run this utility frequently for example with each time the project is linked For more information on this utility see Section 6 5 Expire Cache Utility 9 5 Header Files Many applications include all header files in each module often by including them all within a single include file Processing header files takes time It is a good programming practice to only include the header files that are really required in a module because e itis clear what interfaces are used by a module an incremental build after modifying a header file results in less modules required to be rebuild e it reduces compile time 9 6 Parallel Build The make utility amk which is used by Eclipse has a feature to build jobs in parallel This means that multiple modules can be compiled in parallel With today s multi core processors this means that each core can be fully utilized In practice even on single core machines the compile time decreases when 470 Influencing the Build Time using parallel jobs On multi core machin
116. the result is the checksum The sum of all bytes following the record type is OxFF S1 S2 S3 record This record is the program code and data record for 2 byte 3 byte or 4 byte addresses respectively 530 Object File Formats S1 length address code bytes checksum S2 length address code bytes checksum s3 length address code bytes checksum where S1 is the program code and data record for 2 byte addresses S2 is the program code and data record for 3 byte addresses s3 is the program code and data record for 4 byte addresses this is the default length represents the number of bytes in the record not including the record type and length byte This value occupies one byte two hexadecimal digits address contains the code or data address code bytes contains the actual program code and data checksum is the record checksum The checksum calculation is identical to S0 Example S3070000FFFE6E6825 _ checksum _ code _ address _ length S7 S8 S9 record This record is the termination record for 4 byte 3 byte or 2 byte addresses respectively S7 length address checksum S8 length address checksum s9 length address checksum where S7 is the termination record for 4 byte addresses this is the default S7 is the corresponding termination record for S3 records S8 is the termination record for 3 byte addresses S8 is the corresponding te
117. the symbol __lc_cp occurs as an undefined referenc in an object file the linker generates a copy table 13 8 5 Conditional Group Statements Within a group you can conditionally select sections or create special sections e With the if keyword you can specify a condition The succeeding section statement is executed if the condition evaluates to TRUE 1 The optional else keyword is followed by a section statement which is executed in case the if condition evaluates to FALSE 0 group if exists mysection select mysection else 579 TASKING VX toolset for RH850 User Guide reserved myreserved size 2k 580 Chapter 14 Debug Target Configuration Files DTC files Debug Target Configuration files define all possible configurations for a debug target A debug target can be target hardware such as an evaluation board or a simulator The DTC files are used by Eclipse to configure the project and the debugger The information is used by the Target Board Configuration wizard and the debug configuration DTC files are located in the etc directory of the installed product and use dtc as filename suffix Based on the DTC files the Target Board Configuration wizard adjust the project s LSL file and creates a debug launch configuration 14 1 Custom Board Support When you need support for a custom board and the board requires a different configuration than those that are in the product it
118. tools and TASKING debugger 7 2 Creating a Customized Debug Configuration Before you can debug a project you need a Debug launch configuration Such a configuration identified by a name contains all information about the debug project which debugger is used which project is used which binary debug file is used which perspective is used and so forth You can create a debug launch configuration when you create a new project with the New C Project wizard If you have not done this you have to create a debug launch configuration To debug a project you need at least one opened and active project in your workbench In this chapter it is assumed that the mypro ject is opened and active in your workbench Create or customize your debug configuration To create or change a debug configuration follow the steps below 1 From the Debug menu select Debug Configurations The Debug Configurations dialog appears 2 Select TASKING C C Debugger and click the New launch configuration button 5 183 TASKING VX toolset for RH850 User Guide to add a new configuration Or In the left pane select the configuration you want to change for example TASKING C C Debugger myproject simulator 3 Inthe Name field enter the name of the configuration By default this is the name of the project but you can give your configuration any name you want to distinguish it from the project name For example enter myproject simulator to ide
119. undefined Do not reference uninitialized memory Uninitialized automatic variables default to whichever value is currently stored on the stack or in the register allocated for the variable Consequently uninitialized memory can cause a program to behave in an unpredictable or unplanned manner and may provide an avenue for attack 587 TASKING VX toolset for RH850 User Guide EXP34 C EXP37 C EXP38 C Ensure a null pointer is not dereferenced Attempting to dereference a null pointer results in undefined behavior typically abnormal program termination Call functions with the arguments intended by the API When a function is properly declared with function prototype information an incorrect call will be flagged by the compiler When there is no prototype information available at the call the compiler cannot check the number of arguments and the types of the arguments This message is issued to warn about this situation Do not call offsetof on bit field members or invalid types The behavior of the offsetof macro is undefined when the member designator parameter designates a bit field 15 4 Integers INT INT30 C INT34 C INT35 C Ensure that unsigned integer operations do not wrap A constant with an unsigned integer type is truncated resulting in a wrap around Do not shift a negative number of bits or more bits than exist in the operand The shift count of the shift operation may be negative or greater than o
120. val r reg ENDM The macro is called as follows MAC_A 3 1 The macro expands as follows mov 3 r1l The macro preprocessor substitutes the character 3 for the argument val and the character 1 for the argument reg The concatenation operator indicates to the macro preprocessor that the substitution characters for the arguments are to be concatenated with the characters r Without the operator the macro would expand as mov 3 rreg which results in an assembler error invalid operand Example Decimal Value Operator Instead of substituting the formal arguments with the actual macro call arguments you can also use the value of the macro call arguments Consider the following source code that calls the macro MAC_A after the argument AVAL has been set to 1 AVAL SET 3 MAC_A AVAL 1 If you want to replace the argument va1 with the value of AVAL rather than with the literal string AVAL you can use the operator and modify the macro as follows MAC_A MACRO val reg mov val r reg ENDM Example Hex Value Operator The percent sign is similar to the standard decimal value operator except that it returns the hexadecimal value of a symbol 104 Assembly Language Consider the following macro definition GEN_LAB MACRO LAB VAL STMT LAB SVAL STMT ENDM The macro is called after NUM has been set to 10 NUM SET 10 GEN_LAB HEX NUM NOP The macro expan
121. value of the next argument va_copy va_list dest This macro duplicates the current state of src in dest creating a va_list src second pointer into the argument list After this call va_arg may be used on src and dest independently va_end va_list ap This macro must be called after the arguments have been processed It should be called before the function using the macro va_start is terminated va_start va_list ap This macro initializes ap After this call each call to va_arg will return lastarg the value of the next argument In our implementation va_list cannot contain any bit type variables Also the given argument lastarg must be the last non bit type argument in the list 10 1 21 stdbool h This header file contains the following macro definitions These names for boolean type and values are consistent with C You are allowed to undefine or redefine the macros below define bool _Bool define true 1 define false 0 define bool_true_false_are_defined 1 10 1 22 stddef h This header file defines the types for common use ptrdiff_t Signed integer type of the result of subtracting two pointers 487 TASKING VX toolset for RH850 User Guide size_t Unsigned integral type of the result of the sizeof operator wchar_t Integer type to represent character codes in large character sets Besides these types the following macros are defined NULL Expands to 0 zero offsetof _type Expands to an int
122. value to compute the start addresses when sections are concatenated An align value of n means that objects in the address space have to be aligned on n MAUs e The page_size field sets the page alignment and page size in MAUs for the address space It must be a power of 2 The default value is 1 If one or more page ranges are supplied the supplied value only sets the page alignment The ranges specify the available space in each page as offsets to the page start which is aligned at the page alignment See also the page keyword in subsection Locating a group in Section 13 8 2 Creating and Locating Groups of Sections e With the optional direction field you can specify how all sections in this space should be located This can be either from Low_to_high addresses this is the default or from high_to_low addresses The map keyword specifies how this address space maps onto an internal bus or onto another address space Mappings are described in Section 13 4 4 Mappings 554 Linker Script Language LSL Stacks and heaps The stack keyword defines a stack in the address space and assigns a name to it The architecture definition must contain at least one stack definition Each stack of a core architecture must have a unique name See also the stack keyword in Section 13 8 3 Creating or Modifying Special Sections The stack is described in terms of a minimum size min_size and the direction in which the stack grows grows This ca
123. verbose mode The control program prints the invocations of the tools it would use to process the files without actually performing the steps Related information Control program option verbose Verbose output 374 Tool Options Control program option eabi compliant Menu eniry Command line syntax eabi compliant Description Use this option when the generated code needs to be completely EAB compliant This option is an alias for C compiler option eabi deviations AEF Related information C compiler option eabi deviations control EABI deviations 375 TASKING VX toolset for RH850 User Guide Control program option error file Menu entry Command line syntax error file Description With this option the control program tells the compiler assembler and linker to redirect error messages to a file The error file will be named after the output file with extension err for compiler or ers for assembler For the linker the error file is 1k850 e1k Example To write errors to error files instead of stderr enter cc850 rror fil t test c Related information Control Program option warnings as errors Treat warnings as errors 376 Tool Options Control program option format Menu eniry 1 Select Linker Output Format 2 Enable the option Generate Intel Hex format file and or Generate S records file 3 Optionally specify the Size of addresses Eclipse always uses the project
124. warnings Display section summary Assembler option section info console Maximum number of emitted errors Assembler option error limit Miscellaneous Allow nested sections Assembler option nested sections Allow Shift JIS Kanji in strings Assembler option kanji Additional options Assembler options Linker Eclipse option Description or option Output Format Generate Intel Hex format file Generate S records file Linker option output fi e IHEX Linker option output file SREC Create file for each memory chip Linker option chip output Size of addresses in bytes for Intel Hex records Linker option output fi le IHEX size Size of addresses in bytes for Motorola S records Linker option output file SREC size Emit start address record Linker option hex format s Libraries 202 Tool Options Eclipse option Description or option Link default libraries Control program option no default libraries Rescan libraries to solve unresolved externals Linker option no rescan Libraries The libraries are added as files on the command line Library search path Linker option library directory Data Objects Data objects Linker option import object Script File Defined symbols Linker option define Linker script file Linker option IsI file Optimiza
125. wrap around The underlying bit representations of floating point values shall not be used A violation is reported when a pointer to a floating point type is converted to a pointer to an integer type The increment and decrement operators should not be mixed with other operators in an expression Control statement expressions 13 1 R Assignment operators shall not be used in expressions that yield a Boolean value 601 TASKING VX toolset for RH850 User Guide Control flow 13 2 13 3 13 4 13 5 13 6 13 7 R R 14 1 R 14 2 R 14 3 R 14 4 R 14 5 R 14 6 R 14 7 R 14 8 R 14 9 R 14 10 R Tests of a value against zero should be made explicit unless the operand is effectively Boolean Floating point expressions shall not be tested for equality or inequality The controlling expression of a for statement shall not contain any objects of floating type The three expressions of a for statement shall be concerned only with loop control A violation is reported when the loop initialization or loop update expression modifies an object that is not referenced in the loop test Numeric variables being used within a for loop for iteration counting shall not be modified in the body of the loop Boolean operations whose results are invariant shall not be permitted There shall be no unreachable code All non null statements shall either a have at least one side effect
126. xrom 128kB of external RAM named xram and 32kB of external NVRAM named my_nvram see figure above All memories are connected to the bus system In LSL this looks like follows memory xrom mau 8 type rom size 0x20000 map size 0x20000 dest_offset 0x00100000 dest bus spe system memory xram mau 8 type ram size 0x20000 map size 0x20000 dest_offset 0x00120000 dest bus spe system memory my_nvram mau 8 type ram size 32k map size 32k dest_offset 0x00140000 dest bus spe system 153 TASKING VX toolset for RH850 User Guide If you use a different memory layout than described in the LSL file supplied for the target core you can specify this in Eclipse or you can specify this in a separate LSL file and pass both the LSL file that describes the core architecture and your LSL file that contains the memory specification to the linker To add memory using Eclipse 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and select Memory In the right pane the Memory page appears 3 Open the Memory tab and click on the Add button The Add new memory dialog appears 4 Enter the memory name for example my_nvram type for example nvram and size 5 Click on the Add button The Add new mapping dialog appears 6 You have to specify at least one mapping Enter the mapping name optional address
127. year 00 99 week based year 0000 9999 same as b hour 24 hour clock 00 23 hour 12 hour clock 01 12 day of the year 001 366 month 01 12 minute 00 59 replaced by newline character locale s equivalent of AM or PM locale s 12 hour clock time same as 1 M S p same as H M second 00 59 replaced by horizontal tab character ISO 8601 time format 3H 3M S ISO 8601 weekday number 1 7 Monday as first day of the week week number of the year 00 53 week 1 has the first Sunday ISO 8601 week number 01 53 in the week based year weekday 0 6 Sunday is 0 week number of the year 00 53 week 1 has the first Monday local date representation local time representation year without century 00 99 year with century ISO 8601 offset of time zone from UTC or nothing time zone name if any Libraries 10 1 28 unistd h The file unistd h contains standard UNIX I O functions These functions are all implemented using file system simulation Except for 1stat and fstat which are not implemented This header file is not defined in ISO C99 access name mode Use file system simulation to check the permissions of a file on the host mode specifies the type of access and is a bit pattern constructed by a logical OR of the following values R_OK Checks read permission wW_OK Checks write permission X_OK Checks execute search permission F_OK Checks to see if the file exists FSS implementation
128. your own library you must position this object library before the C library The option verbose v shows how libraries have been searched and which objects have been extracted Resolving symbols If you are linking from libraries only the objects that contain symbols to which you refer are extracted from the library This implies that if you invoke the linker like 1k850 mylib a nothing is linked and no output file will be produced because there are no unresolved symbols when the linker searches through mylib a It is possible to force a symbol as external unresolved symbol with the option extern e 1k850 extern main mylib a In this case the linker searches for the symbol main in the library and if found extracts the object that contains main If this module contains new unresolved symbols the linker looks again in my1ib a This process repeats until no new unresolved symbols are found 5 4 Incremental Linking With the TASKING linker it is possible to link incrementally Incremental linking means that you link some but not all o modules to a relocatable object file out In this case the linker does not perform the locating phase With the second invocation you specify both new o files as the out file you had created with the first invocation Incremental linking is only possible on the command line 1k850 incremental testl o otest out 1k850 test2 o0 test out This links the file test 1 0 and g
129. 00 OCT_NUM DEC_NUM and HEX_NUM can be followed by a k kilo M mega or G giga Characters in bold are characters that occur literally Words in italics are higher order terms that are defined in the same or in one of the other sections To write comments in LSL file you can use the C style or C style 13 2 3 Identifiers and Tags arch_name bus_name core_name derivative_name file_name group_name heap_name map_name mem_name proc_name section_name Space_name stack_name symbol_name 536 IDENTIFIER IDENTIFIER IDENTIFIER IDENTIFIER DQSTRING IDENTIFIER section_name IDENTIFIER IDENTIFIER IDENTIFIER DQSTRING IDENTIFIER section_name DQSTRING Linker Script Language LSL tag_attr tag lt tag gt tag tag DOSTRING A tag is an arbitrary text that can be added to a statement 13 2 4 Expressions The expressions and operators in this section work the same as in ISO C number OCT_NUM DEC_NUM HEX_NUM expr number symbol_name unary_op expr expr binary_op expr xpr expr expr expr function_call unary_op f logical NOT bitwise complement negative value binary_op z exclusive OR multiplication division modulus addition subtraction gt gt right shift lt lt left shift equal to not equal to gt greater than lt le
130. 0d8 16 union fedec0d8 4 struct fedec0d8 4 int fedec0d8 8 struct fedec0d8 4 const char fedecOdc 2 fedec0e8 80 static char fedec0e8 1 char fedec0e9 1 char fedecOea dL char fedec137 1 char hldump850 F1 hell self fedec0d0 24 struct fedec0d0 4 int fedec0d4 4 enum fedec0d8 16 union fedec0d8 4 struct fedec0d8 4 int fedec0d8 8 struct fedec0d8 4 const char fedecOdc 2 fedec0e8 80 static char Related information Section 6 4 2 HLL Dump Output Format Tool Options nr u exit status open pathname unsigned short int flags stdin_buf 80 _iob c _dbg_request dbg c _dbg_request _errno _dbg_request nr _dbg_request u _dbg_request u exit _dbg_request u exit status _dbg_request u open _dbg_request u open pathname unsigned short int _dbg_request u open flags stdin_buf 80 _iob c 445 TASKING VX toolset for RH850 User Guide HLL object dumper option help Command line syntax help Description Displays an overview of all command line options Example The following invocations all display a list of the available command line options hidump850 hldump850 help hldump850 Related information 446 Tool Options HLL object dumper option hex x Command line syntax hex X Description With this option you can control the way data sections and code sections are dumped By default the contents of data sections are represented by directives A new dire
131. 1 TASKING VX toolset for RH850 User Guide Default debug information This provides all debug information you need to debug your application It meets the debugging requirements in most cases without resulting in oversized assembler object files Full debug information With this suboption extra debug information is generated about unused typedefs and DWARF lookup table sections Under normal circumstances this extra debug information is not needed to debug the program Information about unused typedefs concerns all typedefs even the ones that are not used for any variable in the program Possibly these unused typedefs are listed in the standard include files With this suboption the resulting assembler object file will increase significantly In the following table you see in more detail what DWARF information is included for the debug option levels Feature g1 g2 g3 type check Remarks basic info info such as symbol name and type call frame this is information for a debugger to compute a stack trace when a program has stopped at a breakpoint symbol lifetime this is information about where symbols live e g on stack at offset so and so when the program counter is in this range line number info file name line number column number lookup tables DWARF sections this is an optimization for the DWARF data it is not essential unused typedefs in the C code of the p
132. 1 1234 int reserved in sconst23 The memory qualifiers are treated like any other data type specifier such as unsigned This means the examples above can also be declared as int _ zdata __near k 1234 const int __sdata _ far 1 1234 You cannot use memory qualifiers in structure declarations struct S data int as put an integer in data memory Incorrect y __sdata int p put an integer pointer in sdata memory Incorrect ay 1 2 2 Data Allocation Options and Pragmas When an object does not have an explicit memory qualifier you can use one of the following options or pragmas to assign a memory space C compiler option data memory pragma data_memory C compiler option const data memory pragma const_data_memory C compiler option string literal memory pragma string_literal_memory Note that you cannot explicitly qualify string literals you can only place string literals in a particular memory space with C compiler option string literal memory or with pragma string_literal_memory If a variable has an explicit ___near or __far qualifier but no explicit___data _sdataor_ zdata qualifier the compiler adds a___ sdata or __zdata qualifier depending on the current type and the value of the related option pragma const data value of const data memory e initialized data value of data memory C Language uninitialized data value of data memory 1 2 3 Allocation of Uninit
133. 12 lt Moved across volatile access st w r11 lo _variable r12 jmp 1p 238 Result with language volatile _TestFunc mov movhi st w movhi ld w L2 ori movhi st w mov movhi st w jmp type func 0 211 ha _access r0 r12 r0 lo _access r12 ha _variable r0 r12 lo _variable r12 r12 r12 r6 3 56 LZ ril1 r6 32768 r6 r11 ha _variable r0 r12 r11 lo _variable r12 ap il ha _access r0 r12 r11 lo _access r12 lp Tool Options lt Volatile access lt Volatile access Note that the volatile behavior of the compiler with option language volatile or language volatile is ISO C compliant in both cases Example c850 language comments strings iso 90 test c c850 APx c90 test c The compiler compiles in ISO C90 mode accepts assignments of a constant string to a non constant string pointer and does not allow C style comments Related information C compiler option iso ISO C standard Section 1 4 Shift JIS Kanji Support 239 TASKING VX toolset for RH850 User Guide C compiler option make target Menu entry Command line syntax make target name Description With this option you can overrule the default target name in the make dependencies generated by the options preprocess make Em and dep file The default target name is the basename of the input file with extension o Example c850 preprocess tmak make
134. 15 TASKING VX toolset for RH850 User Guide e Switch optimization A number of optimizations of a switch statement are performed such as removing redundant case labels or even removing an entire switch e Jump chaining A conditional jump to a label which is immediately followed by an unconditional jump may be replaced by a jump to the destination label of the second jump This optimization speeds up execution Conditional jump reversal A conditional jump over an unconditional jump is transformed into one conditional jump with the jump condition reversed This reduces both the code size and the execution time e Dead code elimination Code that is never reached is removed The compiler generates a warning messages because this may indicate a coding error Subscript strength reduction option Os OS An array or pointer subscripted with a loop iterator variable or a simple linear function of the iterator variable is replaced by the dereference of a pointer that is updated whenever the iterator is updated Loop transformations option Ol OL Transform a loop with the entry point at the bottom to a loop with the entry point at the top This enables constant propagation in the initial loop test and code motion of loop invariant code by the CSE optimization Forward store option Oo OO A temporary variable is used to cache multiple assignments stores to the same non automatic variable 3 6 2 Core Specific Optimizations bac
135. 2 Section list ao Section dump disassembly 4 HLL symbol table 5 Assembly level symbol table 6 Note sections You can limit the number of sections that will be dumped with the options sections and section types Related information Section 6 4 2 HLL Dump Output Format 443 TASKING VX toolset for RH850 User Guide HLL object dumper option expand symbols e Command line syntax expand symbols flag e flag You can specify one of the following flags basic types b B Expand arrays with basic C types fullpath t F Include the full path to the field level Default no flags expand symbols BF Description With this option you specify that all struct union and array symbols are expanded with their fields in the HLL symbol dump Example hldump850 F1 hello elf SS HLL symbol table fedec0d0 24 struct _dbg_request dbg c fedec0e8 80 static char stdin_buf 80 _iob c hldump850 F1 hello elf SEEE HLL symbol table fedec0d0 24 struct _dbg_request dbg c fedecO0d0 4 int _errno fedec0d4 4 enum nr fedec0d8 16 union u fedec0d8 4 struct exit fedec0ds8 4 int status fedec0d8 8 struct open fedec0d8 4 const char pathname fedecOdc 2 unsigned short int flags fedec0e8 80 static char stdin_buf 80 _iob c hidump8s50 b F1 hello elf HLL symbol table senten fedec0d0 24 struct _dbg_request dbg c fedecO0d0 4 int _errno 444 fedec0d4 4 enum fedec
136. 2 32 eo 297 1 long 32 32 251 297 1 unsigned long 32 32 0 232 1 long long 64 64 29 29 41 unsigned long long 64 64 0 384i float 23 bit mantissa 32 32 3 402E 38 1 175E 38 1 175E 38 3 402E 38 double 64 64 1 797E 308 2 225E 308 long double 52 bit mantissa 2 225E 308 1 797E 308 _Imaginary float 32 32 3 402E 38i 1 175E 38i 1 175E 38i 3 402E 38i _ Imaginary double 64 64 1 797E 308i 2 225E 308i _Imaginary long double 2 225E 308i 1 797E 308i _ Complex float 64 32 real part imaginary part _Complex double 128 64 real part imaginary part _Complex long double pointer to data or function 32 32 0 252 1 Bit field types Structures and unions can contain bit fields The C compiler allows the following types for bit field members _Bool char short int long long long and their unsigned types and enun Bit field data types behave like any normal data type So int is treated as signed int Pointers Pointers are always 32 bit Conversions of pointers are allowed 1 2 Accessing Memory There are two ways to allocate a variable in a particular memory space They are listed below the method with the highest priority is listed first 1 Memory qualifiers 2 Allocation options or pragmas When one of the above methods does not apply to an object it will be allocated in the __ sdata memory for normal data or in __zdata memory for constant data In addition yo
137. 2 6 Assembly Expressions An expression is a combination of symbols constants operators and parentheses which represent a value that is used as an operand of an assembler instruction or directive Expressions can contain user defined labels and their associated integer or floating point values and any combination of integers floating point numbers or ASCII literal strings Expressions follow the conventional rules of algebra and boolean arithmetic Expressions that can be evaluated at assembly time are called absolute expressions Expressions where the result is unknown until all sections have been combined and located are called relocatable or relative expressions When any operand of an expression is relocatable the entire expression is relocatable Relocatable expressions are emitted in the object file and evaluated by the linker Relocatable expressions can only contain integral functions floating point functions and numbers are not supported by the ELF DWARF object format The assembler evaluates expressions with 64 bit precision in two s complement The syntax of an expression can be any of the following numeric constant e string symbol expression binary_operator expression unary_operator expression expression function call 46 Assembly Language All types of expressions are explained in separate sections 2 6 1 Numeric Constants Numeric constants can be used in expressions If there is
138. ALIGN BS BSB BSH BSW BSD DB DH DW DD DS DSB DSH DSW DSD Align location counter Define block storage initialized Define byte Define half word 16 bits Define word 32 bits Define double word 64 bits Define storage Overview of macro preprocessor directives Directive Description DEF INE 56 Define substitution string Assembly Language Directive Description BREAK REPEAT ENDREP FOR ENDFOR IF ELIF ELSE ENDIF MACRO END UNDEF Break out of current macro expansion Repeat sequence of source lines Repeat sequence of source lines n times Conditional assembly directive End of conditional assembly directive Define macro Undefine DEFINE symbol or macro Overview of listing control directives Directive Description sLIST NOLIST PAGE SLL Fa fg Bd a EJ Print do not print source lines to list file Set top of page size of page Set program subtitle in header of assembly list file Set program title in header of assembly list file Overview of HLL directives Directive Description CALLS Pass call tree information and or stack usage information MISRAC Pass MISRA C information 2 9 2 Detailed Description of Assembler Directives 57 TASKING V
139. Below the conversion functions from inttypes h are listed 479 TASKING VX toolset for RH850 User Guide imaxabs intmax_t j imaxdiv intmax_t numer intmax_ str res res str res res WCS res res WCS res res tric Erie tric tric tric tric tric trict toimax cons t nptr char t endptr int base toumax cons nptr char t endptr int base toimax cons t nptr wchar_t t endptr int base toumax cons t nptr wchar_t t endptr int base 10 1 12 io h t denom t char t char t wchar_t t wchar_t Returns the absolute value of j Computes numer denomand numer denom The result is stored inthe quot and remcomponents of the imaxdiv_t structure type Convert string to maximum sized integer Compare st rto11 Convert string to maximum sized unsigned integer Compare strtoull Convert wide string to maximum sized integer Compare wcsto11 Convert wide string to maximum sized unsigned integer Compare westoull The header file io h contains prototypes for low level I O functions This header file is not defined in ISO c99 _close fd _lseek fd offset whence _open fd flags _read fd buff cnt _unlink name _write fd buffer cnt 10 1 13 iso646 h Used by the functions close and fclose FSS implementation Used by all file positioning functions fgetpos fseek fsetpos ftell rewind FSS implement
140. Compress copy table Delete duplicate code Command line syntax optimize flag Oflags You can set the following flags delete unreferenced sections first fit decreasing copytable compression delete duplicate code delete duplicate data c C VL UT x X y Y Use the following options for predefined sets of flags Tool Options Delete unreferenced sections from the output file Use a first fit decreasing algorithm to locate unrestricted sections in memory Emit smart restrictions to reduce copy table size Delete duplicate code sections from the output file Delete duplicate constant data from the output file optimize 0 00 No optimization Alias for OCLTXY optimize 1 01 Default optimization Alias for OcLtxy optimize 2 02 All optimizations Alias for Ocltxy Default optimize 1 349 TASKING VX toolset for RH850 User Guide Description With this option you can control the level of optimization Related information For details about each optimization see Section 5 6 Linker Optimizations 350 Tool Options Linker option option file f Menu entry 1 Select Linker Miscellaneous 2 Add the option option file to the Additional options field Be aware that the options in the option file are added to the linker options you have set in the other pages Only in extraordinary cases you may want to use them in combination Command line syntax
141. DEF directive you can undefine a substitution string that was previously defined with the DEFINE directive The substitution string associated with symbol is released and symbol will no longer represent a valid DEFINE substitution or macro The assembler issues a warning if you redefine an existing symbol The assembler does not allow a label with this directive Example The following example undefines the LEN substitution string that was previously defined with the DEFINE directive UNDEF LEN Related Information DEF INE Define a substitution string MACRO ENDM Define a macro 100 Assembly Language WEAK Syntax WEAK symbol symbol Description With the WEAK directive you mark one or more symbols as weak The symbol can be defined in the same module with the GLOBAL directive or the EXTERN directive If the symbol does not already exist it will be created A weak external reference is resolved by the linker when a global or weak definition is found in one of the object files However a weak reference will not cause the extraction of a module from a library to resolve the reference You can overrule a weak definition with a GLOBAL definition in another module The linker will not complain about the duplicate definition and ignore the weak definition Only program labels and symbols defined with EQU ca
142. Description Displays an overview of all command line options When you specify the argument options you can list detailed option descriptions Example The following invocations all display a list of the available command line options as850 as850 help as850 To see a detailed description of the available options enter as850 help options Related information 288 Tool Options Assembler option include directory l Menu entry 1 Select Assembler Include Paths The Include paths box shows the directories that are added to the search path for include files 2 To define a new directory for the search path click on the Add button in the Include paths box 3 Type or select a path Use the Edit and Delete button to change a path or to remove a path from the list Command line syntax include directory path Ipath Description With this option you can specify the path where your include files are located A relative path will be relative to the current directory The order in which the assembler searches for include files is 1 The pathname in the assembly file and the directory of the assembly source 2 The path that is specified with this option 3 The path that is specified in the environment variable AS850 INC when the product was installed 4 The default directory PRODDIR include Example Suppose that the assembly source file test src contains the following lines INC
143. Eclipse the debugger or by the debug instrument The identifier name used by the debugger or debug instrument to retrieve the value The value assigned to the resource ref id Reference to a macro defined with a def element The elements contained in the def element with the same name will be expanded at the location of the ref Multiple refs to the same def are allowed The name of the referenced macro 582 Debug Target Configuration Files Element Attribute Description Allowed Elements configuration name Defines a configuration ref initialize resource Isl flashMonitor The descriptive name of the configuration processor initialize resourceld name value estart This element defines an initialization expression Each initialize element contains a resourceld attribute If the DI requests this resource the debugger will compose a string from all initialize elements with the same resourceld This DI can use this string to initialize registers by passing it to the debugger as an expression to be evaluated The name of the resource to be used The name of the register to be initialized When the cstart attribute is false this is the value to be used otherwise it is the default value when using this configuration It will be used by the startup code editor to set the default register values A boolean value If true the debugger should
144. Ensure that array types in expressions are compatible Using two or more incompatible arrays in an expression results in undefined behavior Do not allow loops to iterate beyond the end of an array Reading or writing of data outside the bounds of an array may lead to incorrect program behavior or execution of arbitrary code 15 7 Characters and Strings STR STR30 C STR33 C STR34 C STR36 C Do not attempt to modify string literals Writing to a string literal has undefined behavior as identical strings may be shared and or allocated in read only memory Size wide character strings correctly Wide character strings may be improperly sized when they are mistaken for narrow strings or for multi byte character strings Cast characters to unsigned types before converting to larger integer sizes A signed character is sign extended to a larger signed integer value Use an explicit cast or cast the value to an unsigned type first to avoid unexpected sign extension Do not specify the bound of a character array initialized with a string literal The compiler issues this warning when the character buffer initialized by a string literal does not provide enough room for the terminating null character 15 8 Memory Management MEM MEMO0 C Allocate and free memory in the same module at the same level of abstraction The compiler issues this warning when the result of the call to malloc calloc or realloc is discarded and therefo
145. File System Simulation buffer _dbg_request _unlink Uses global File System Simulation buffer _dbg_request _write Uses global File System Simulation buffer _dbg_request abort Calls exit abs labs llabs access acos acosf acosl acosh acoshf acoshl asctime asin asinf asinl asinh asinhf asinhl atan atanf atanl atan2 atan2f atan21 atanh atanhf atanhl atexit atof atoi atol bsearch btowc cabs cabsf cabsl cacos cacosf cacosl cacosh cacosh cfacoshl 506 Uses global File System Simulation buffer _dbg_request Sets errno Sets errno via calls to other functions asctime defines static array for broken down time string Sets errno Sets errno via calls to other functions Sets errno via calls to other functions atexit defines static array with function pointers to execute at exit of program Sets errno via calls to other functions Sets errno via calls to other functions Sets errno via calls to other functions Function Libraries Not reentrant because calloc carg cargf cargl casin casinf casinl casinh casinh cfasinhl catan catanf catanl catanh catanhf catanhl ebre cobrtf cbreL ccos ccosf ccosl ccosh ccoshf ccoshl ceil ceilf ceill cexp cexpf cexpl chdir cimag cimagf cimagl cleanup clearerr clock clog clogf clogl close conj conjf conjl copysign copysignf copysignl cos cosf cosl cosh coshf coshl cpow cpowf cpowl cproj cprojf cprojl creal crealf creall cs
146. ISRA C Rules Functions shall not be defined with variable numbers of arguments Functions shall not call themselves either directly or indirectly A violation will be reported for direct or indirect recursive function calls in the source file being checked Recursion via functions in other source files or recursion via function pointers is not detected Identifiers shall be given for all of the parameters in a function prototype declaration The identifiers used in the declaration and definition of a function shall be identical Functions with no parameters shall be declared with parameter type void The number of arguments passed to a function shall match the number of parameters A pointer parameter in a function prototype should be declared as pointer to const if the pointer is not used to modify the addressed object All exit paths from a function with non void return type shall have an explicit return statement with an expression A function identifier shall only be used with either a preceding amp or with a parenthesized parameter list which may be empty If a function returns error information then that error information shall be tested A violation is reported when the return value of a function is ignored Pointers and arrays x 17 1 x 17 2 17 3 17 4 17 5 17 6 R R R Pointer arithmetic shall only be applied to pointers that address an array or array element Pointer subtraction shall only be
147. Instead of typing all options on the command line you Can create an option file which contains all options and flags you want to specify With this option you specify the option file to the HLL object dumper Use an option file when the command line would exceed the limits of the operating system or just to store options and save typing You can specify the option option file multiple times Format of an option file e Multiple arguments on one line in the option file are allowed To include whitespace in an argument surround the argument with single or double quotes e If you want to use single quotes as part of the argument surround the argument by double quotes and vise versa This has a single quote embedded This has a double quote embedded This has a double quote and a single quote embedded When a text line reaches its length limit use a to continue the line Whitespace between quotes is preserved This is a continuation line gt This is a continuation line e Itis possible to nest command line files up to 25 levels Example Suppose the file myopt ions contains the following lines symbols hl1l class code hello elf 448 Specify the option file to the HLL object dumper hldump8s50 option file myoptions This is equivalent to the following command line hldump850 symbols h11l class code hello elf Related information Tool Options 449
148. LL symbol table Not restricted Assembly level symbol Only lists symbols defined in the specified sections table Note sections Not restricted By default all sections are included Related information Section 6 4 2 HLL Dump Output Format 452 Tool Options HLL object dumper option source lookup path L Command line syntax source lookup path path Lpath Description With this option you can specify an additional path where your source files are located If you want to specify multiple paths use the option source lookup path for each separate path The order in which the HLL object dumper will search for source files when intermixed disassembly is used is 1 The path obtained from the HLL debug information 2 The path that is specified with the option source lookup path If multiple paths are specified the paths will be searched for in the order in which they are given on the command line Example Suppose you call the HLL object dumper as follows hldump8s50 disassembly intermix source lookup path c mylib sre hello elf First the HLL object dumper looks in the directory found in the HLL debug information of file hello elf for the location of the source file s If it does not find the file s it looks in the directory c mylib src Related information HLL object dumper option disassembly intermix 453 TASKING VX toolset for RH850 User Guide HLL object dumper option symb
149. LUDE myinc inc You can call the assembler as follows as850 include directory c proj include test srce First the assembler looks for the file myinc inc in the directory where test src is located If it does not find the file it looks in the directory c proj include this option If the file is still not found the assembler searches in the environment variable and then in the default include directory 289 TASKING VX toolset for RH850 User Guide Related information Assembler option include file Include file at the start of the input file 290 Tool Options Assembler option include file H Menu entry 1 Select Assembler Preprocessing The Pre include files box shows the files that are currently included before the assembling starts 2 To define a new file click on the Add button in the Pre include files box 3 Type the full path and file name or select a file Use the Edit and Delete button to change a file name or to remove a file from the list Command line syntax include file file Hfile Description With this option set at project level you include one extra file at the beginning of the assembly source file The specified include file is included before all other includes This is the same as specifying INCLUD file at the beginning of your assembly source EJ Example as850 include file myinc inc test src The file myinc inc is included at the beginning of tes
150. Miscellaneous 173 TASKING VX toolset for RH850 User Guide Description Option Sub option Display options Display version header V Read options from file f file Suppress warnings above level n wn For a complete list and description of all archiver options see Section 8 7 Archiver Options 6 3 2 Archiver Examples Create a new library If you add modules to a library that does not yet exist the library is created To create a new library with the name mylib a and add the object modules cstart oandcalc o to it ar850 r mylib a cstart o calc o Add a new module to an existing library If you add a new module to an existing library the module is added at the end of the module If the module already exists in the library it is replaced ar850 r mylib a mod3 o Print a list of object modules in the library To inspect the contents of the library ar850 t mylib a The library has the following contents cstart o calc o mod3 o Move an object module to another position To move mod3 o to the beginning of the library position it just before cstart o ar850 mb cstart o mylib a mod3 o Delete an object module from the library To delete the object module cstart o from the library mylib a ar850 d mylib a cstart o 174 Using the Utilities Extract all modules from the library Extract all modules from the library mylib a ar850 x mylib a 175 TASKING VX too
151. Miscellaneous tab you can specify several file locations 187 TASKING VX toolset for RH850 User Guide Debug Configurations E Create manage and run configurations TASKING C C Debugger sexIB p gt Name myproject type filter text Target Initialization C Project Arguments gt Source Miscellaneous 4 if TASKING C C Debugger Debugger location C Program Files TASKING RH850 vx yrz bin B amp myproject FSS root directory S project_loc build_config Browse ORTH file Browse KSM module Default __Browse _ GDI log file Browse Debug instrument log file if applicable Browse Cache target access Launch in background Use linker locator memory map file mdf for memory map Filter matched 2 of 2 items on e Debugger location The location of the debugger itself This should not be changed FSS root directory The initial directory used by file system simulation FSS calls See the description of the FSS view e ORTI file and KSM module If you wish to use the debugger s special facilities for kernel aware debugging specify the name of a Kernel Debug Interface KDI compatible KSM module shared library in the appropriate edit box See also the description of the RTOS view GDI log file and Debug instrument log file You can use the options GDI log file and Debug instrument log file if applicable to control the generation of internal log files These a
152. NG RH850 3 Click the Add button to add additional processor definition files Command line syntax processors file Description With this option you can specify an additional XML file with processor definitions The standard list of supported processors is defined in the file processors xml This file defines for each processor its full name for example R7F701501 its ID for example r7f701501 the base CPU name for example r7f701501 and the core settings for example v850e3 The control program reads the specified file after the file processors xm1 in the product s etc directory Additional XML files can override processor definitions made in XML files that are read before Multiple processors options are allowed Eclipse generates a processors option in the makefiles for each specified XML file Example Specify an additional processor definition file suppose processors new xm1 contains a new processor RH850NEW cc850 processors processors new xml cpu RH850NEW test c Related information Control program option cpu Select architecture 403 TASKING VX toolset for RH850 User Guide Control program option static Menu entry Command line syntax static Description This option is directly passed to the compiler With this option the compiler treats external definitions at file scope except for main as if they were declared static As a result unused functions will be el
153. Optimization levels The TASKING C compiler offers four optimization levels and a custom level at each level a specific set of optimizations is enabled Level 0 No optimization No optimizations are performed The compiler tries to achieve a 1 to 1 resemblance between source code and produced code Expressions are evaluated in the order written in the source code associative and commutative properties are not used Level 1 Optimize Enables optimizations that do not affect the debug ability of the source code Use this level when you encounter problems during debugging your source code with optimization level 2 Level 2 Optimize more default Enables more optimizations to reduce the memory footprint and or execution time This is the default optimization level Level 3 Optimize most This is the highest optimization level Use this level when your program hardware has become too slow to meet your real time requirements Custom optimization you can enable disable specific optimizations on the Custom optimization page 114 Using the C Compiler Optimization pragmas If you specify a certain optimization all code in the module is subject to that optimization Within the C source file you can overrule the C compiler options for optimizations with 4pragma optimize flag and pragma endoptimize Nesting is allowed pragma optimize e Enable expression simplification C source pragma optimize c Enable commo
154. R 8 13 A 8 14 R Initialization 9 1 M 9 2 R 9 3 R 9 4 R 9 5 R Types shall be explicitly specified Function types shall be in prototype form with named parameters All declarations of an object or function shall use the same names and type qualifiers A compatible declaration shall be visible when an object or function with external linkage is defined An external object or function shall be declared once in one and only one file An identifier with external linkage shall have exactly one external definition Functions and objects should not be defined with external linkage if they are referenced in only one translation unit The static storage class specifier shall be used in all declarations of objects and functions that have internal linkage An object should be defined at block scope if its identifier only appears in a single function An inline function shall be declared with the static storage class When an array with external linkage is declared its size should be explicitly specified Within an enumerator list the value of an implicitly specified enumeration constant shall be unique A pointer should point to a const qualified type whenever possible The restrict type qualifier shall not be used The value of an object with automatic storage duration shall not be read before it has been set The initializer for an aggregate or union shall be enclosed in braces Arrays shall not be partially initial
155. RH850 User Guide Trade off value Try to rewrite top loops to Optimize loops for botiom loops size speed 4 yes size Example int a void i int 1 int m int i for i m i lt l i att return Coded as a bottom loop compiled with tradeoff 4 is movhi ha _a r0 rl1l1 ld w lo _a r11 r11 br 2 77 unconditional jump to loop test at bottom ESS add Led add 1 27 G23 loop entry point cmp r6 xr7 blt L3 Coded as a top loop compiled with tradeoff 0 is movhi ha _a r0 r11 ld w lo _a r11 r11 cmp ro x7 7 test for at least one loop iteration bge LZ can be omitted when number of iterations is known Los 7 loop entry point add 1 ril add sae cmp r6 xr7 blt L3 G23 Automatic Function Inlining You can enable automatic function inlining with the option optimize inline Oi or by using pragma optimize inline This option is also part of the O3 predefined option set When automatic inlining is enabled you can use the options inline max incr and inline max size or their corresponding pragmas inline_max_incr inline_max_size to control automatic inlining 118 Using the C Compiler By default their values are set to 1 This means that the compiler will select a value depending upon the selected trade off level The defaults are Trade off value inline max incr inline max size 0 100 50 1 50 25 2
156. SS input or generates FSS output The virtual terminal that the FSS view represents follows the VT100 standard If you right click in the view area of the FSS view a menu is presented which gives access to some self explanatory functions 193 TASKING VX toolset for RH850 User Guide VT100 characteristics The queens example demonstrates some of the VT100 features You can find the queens example in the lt installation path gt examples directory from where you can import it into your workspace Per debugging session you can have more than one FSS view each of which is associated with a positive integer By default the view FSS 1 is associated with the standard streams stdin stdout stderr and stdaux Other views can be accessed by opening a file named terminal window lt numbers gt as shown in the example below FILE 3 fopen terminal window 3 rw fprintf f3 Hello window 3 n fclose f 3 You can set the initial working directory of the target application in the Debug configuration dialog see also Section 7 2 Creating a Customized Debug Configuration 1 On the Debugger tab select the Miscellaneous sub tab 2 In the FSS root directory field specify the FSS root directory The FSS implementation is designed to work without user intervention Nevertheless there are some aspects that you need to be aware of First the interaction between the C library code in the files dbg c and dbg h see S
157. TASKING Problems The Problems view is added to the current perspective 2 Inthe Problems view right click on a message A popup menu appears 3 Select Detailed Diagnostics Info A dialog box appears with additional information Command line syntax diag format all nr You can set the following output formats html HTML output rtf Rich Text Format text ASCII text Default format text Description Tool Options With this option you can ask for an extended description of error messages in the format you choose The output is directed to stdout normally your screen and in the format you specify You can specify the following formats html rtf or text default To create a file with the descriptions you must redirect the output With the suboption all the descriptions of all error messages are given If you want the description of one or more selected error messages you can specify the error message numbers separated by commas Example To display an explanation of message number 244 enter as850 diag 244 This results in the following message and explanation W244 additional input files will be ignored The assembler supports only a single input file All other input files are ignored 277 TASKING VX toolset for RH850 User Guide To write an explanation of all errors and warnings in HTML format to file aserrors html use redirection and enter as850 diag html all gt aserrors html
158. VED 0003 ADDR CODE CYCLES LINE SOURCE For the s instead LINE ET and 44 buf ds 4 This column contains the memory address The address is a hexadecimal number that represents the offset from the beginning of a relocatable section or the absolute address for an absolute section The address only appears on lines that generate object code This is the object code generated by the assembler for this source line displayed in hexadecimal format The displayed code need not be the same as the generated code that is entered in the object module The code can also be relocatable code In this case the letter r is printed for the relocatable code part in the listing For lines that allocate space the code field contains the text RESERVED For lines that initialize a buffer the code field lists one value followed by the word REPEATS The first number in this column is the number of instruction cycles needed to execute the instruction s as generated in the CODE field The second number is the accumulated cycle count of this section This column contains the line number This is a decimal number indicating each input line starting from 1 and incrementing with each source line This column contains the source text This is a copy of the source line from the assembly source file EQU directives the ADDR and CODE columns do not apply The symbol value is listed 11 2 Linker Map File Format
159. W Note sections With the option dump format flag you can control which parts are shown By default all parts are shown 176 Example Using the Utilities Suppose we have a simple Hello World program in a file called hel1lo c We call the control program as follows ec850 g t hello c Option g tells to include DWARF debug information Option t tells to keep the intermediate files This command results among other files in the file hello e1f the absolute output file We can dump information about the object file with the following command hidump850 hello elf Name Modul Full path hello c hello c Address 00000400 00000024 fedec0c8 0000002a 00000000 00000210 fedecO0d0 fedec188 f 2000cc 2000c8 00000400 00000406 0000040c section Size 16 6 4 cs 36 68 24 8192 48 4 list Align PB COAN NE HE LN Type text romdata bss romdata text text bss bss romdata romdata 26 06 2a 00 00 00 84 07 89 3c 01 00 bf 07 04 fe sdata23 hello world Name text hello main zconst23 hello 1 str sdata23 hello world zconst23 hello 2 str text cstart _ START text printf printf sbss23 dbg _dbg_request stack table sdata23 hello world section zconst23 hello 1 str at 0x24 db 77 6f 72 6c 64 00 endsec section zconst23 hello 2Sstr at 0x2a db 48 65 6c 6c 6f 20 25 73 21 0a 00 endsec section mov ld w jr endse
160. With this option you can overrule the default target name in the make dependencies generated by the option dep file The default target name is the basename of the input file with extension o Example as850 dep fil make target mytarget o test src The assembler generates dependency lines with the default target name mytarget o instead of test O Related information Assembler option dep file Generate dependencies in a file 297 TASKING VX toolset for RH850 User Guide Assembler option nested sections N Menu entry 1 Select Assembler Miscellaneous 2 Enable the option Allow nested sections Command line syntax nested sections N Description With this option it is allowed to have nested sections in your assembly source file When you use this option every SECTION directive must have a corresponding ENDSEC directive Example SECTION data section SECTION data nested section ENDSEC ENDSEC Related information Assembler directive SECTION 298 Tool Options Assembler option no macs Menu entry Command line syntax no macs Description By default floating point multiply accumulate instructions are supported Use this option to make these instructions invalid Related information 299 TASKING VX toolset for RH850 User Guide Assembler option no warnings w Menu entry 1 Select Assembler Di
161. X toolset for RH850 User Guide ALIGN Syntax ALIGN expression Description With the ALIGN directive you instruct the assembler to align the location counter By default the assembler aligns on one byte When the assembler encounters the ALIGN directive it advances the location counter to an address that is aligned as specified by expression and places the next instruction or directive on that address The alignment is in minimal addressable units MAUs The assembler fills the gap with NOP instructions for code sections or with zeros for data sections If the location counter is already aligned on the specified alignment it remains unchanged The location of absolute sections will not be changed The expression must be a power of two 2 4 8 16 If you specify another value the assembler changes the alignment to the next higher power of two and issues a warning The assembler aligns sections automatically to the largest alignment value occurring in that section A label is not allowed before this directive Example SECTION text ALIGN 2 the assembler aligns instruction this instruction at 2 MAUs and fills the gap with NOP instructions DSEC SECTION text ALIGN 3 WRONG not a power of two the instruction assembler aligns this instruction at 4 MAUs and issues a warning DSEC 58 BREAK Syntax BREAK Description Assembly Language The BREAK dir
162. _allowed absolute ranged copytable section size blocksize attributes E W g fill overflow SLruce checksum IE else 13 8 1 Defining a Section Layout With the keyword section_layout you define a section layout for exactly one address space In the section layout you can specify how input sections are placed in the address space relative to each other and what the absolute run and load addresses of each section will be You can define one or more section definitions Each section definition arranges the sections in one address space You can precede the address space name with a processor name and or core name separated by colons You can omit the processor name and or the core name if only one processor is defined and or only one core is present in the processor A reference to a space in the only core of the only processor in the system would look like my_space A reference to a space of the only core on a specific processor in the system could be my_chip my_space The next example shows a section definition for sections in the my_space address space of the processor called my_chip 568 Linker Script Language LSL section_layout my_chip my_space locate_direction section statements Locate direction With the optional keyword direction you specify whether the linker starts locating sections from low_to_high default or from high_to_1low In the second case the linker starts locating sections at the highest
163. _def start_address mapping A space_def contains exactly one id and one mau statement A space_def contains at most one align statement A space_def contains at most one page_size statement A space_def contains at least one mapping stack_def stack stack_name stack_heap_descr lt stack_heap_descr gt e A stack_def defines a stack with the stack_name as a unique name heap_def heap heap_name stack_heap_descr lt stack_heap_descr gt A heap_def defines a heap with the heap_name as a unique name stack_heap_descr min_size expr grows direction align expr fixed id expr tag The min_size statement must be present 543 TASKING VX toolset for RH850 User Guide e You can specify at most one align statement and one grows statement e Each stack definition has its own unique id the number specified corresponds to the index in the CALLS directive as generated by the compiler direction low_to_high high_to_low e If you do not specify the grows statement the stack and heap grow low to high copy_table_def copytable lt copy_table_descr lt copy table deser gt j gt e A space_def contains at most one copytable statement e Exactly one copy table must be defined in one of the spaces copy_table_descr align expr copy_unit expr dest lt space_name gt space_name page tag e The copy _unit is defined by the size
164. _priority 2 dest_offset 0x00000000 src_offset is zero by default This completes the LSL code in the derivative definition Note that all code above goes into the derivative definition thus between derivative default_derivative name of derivative All code above goes her 5 7 6 The Processor Definition The processor definition is only needed when you write an LSL file for a multi processor embedded system The processor definition explicitly instantiates a derivative allowing multiple processors of the same type processor name derivative derivative_name If no processor definition is available that instantiates a derivative a processor is created with the same name as the derivative Altium defines a single processor environment spe in each derivative 1s1 file For example processor spe derivative default_derivative 152 Using the Linker 5 7 7 The Memory Definition Once the core architecture is defined in LSL you may want to extend the processor with external or off chip memory You need to specify the location and size of the physical external memory devices in the target system The principle is the same as defining the core s architecture but now you need to fill the memory definition memory name memory definitions memory srom an 0 METEEN M memory my_nyram Suppose your embedded system has 128kB of external ROM named
165. a lines from the source bus are mapped on the data lines of the destination bus starting with line 0 If you define a memory and the memory mapping must not be used by default when locating sections in address spaces you can specify the reserved argument This marks all address space areas that the mapping points to as reserved If a section has an absolute or address range restriction the reservation is lifted and the section may be located at these locations This feature is only useful when more than 558 Linker Script Language LSL one mapping is available for a range of memory addresses otherwise the memory keyword with the same name would be used For example memory xrom mau 8 size 1M type rom map cached dest bus mycore system dest_offset 0x80000000 size 1M map uncached dest bus mycore system dest_offset 0xa0000000 size 1M reserved Mapping priority If you define a memory you can set a locate priority on a mapping with the keywords priority and exec_priority The values of these priorities are relative which means they add to the priority of memories Whereas a priority set on the memory applies to all address space areas reachable through any mapping of the memory a priority set on a mapping only applies to address space areas reachable through the mapping The memory mapping with the highest priority is considered first when locating To set only a priority for non executable data sectio
166. a 176 6 4 2 HLL Dump Q tp t Format sssri osccciw stteccnc deeedsacdcaceis eae Ne ciee tone AREEN tn 176 6 5 Expire Cache Wtility aere cee Soeatepe iid eie RESNA E aTa R E EEE 182 T UsMmg the Debugger sssrini nan a a a a E aaa E a Epe aie 183 7 1 Reading the Eclipse Documentation esesessesessirrsrsrerrirrrrrerertrtrrrererninrrrrerererne 183 7 2 Creating a Customized Debug Configuration 0 cceceeeneeneeeeeeeeneeeeeneeeeeneeneeneees 183 7 3 TFOUDIESMOOLING eserse ai a aE a ON a Aaa 189 7 4 TASKING Debug Perspective ccceeeee eee eter eee etree eee eee eee eee ee nee eea eta eea een eeaes 189 FAA Debug VIEW 2259 och cee anes ee eano eE cis Deh yee acter awe OA EAEE i 190 7 4 2 BreakpOINtS VIEW s ctentedehaleadereceted fede lade Peiaded E ocean genet Ea 192 7 4 3 File System Simulation FSS View cece ceeeeee eee nee teeta een eea een eeeeeneeaeeaes 193 7 4 4 Disassembly VIEW sa sacetsecctgenatevanentinndaccedie piet rrn a Er aE 194 74 9 ExpresSSIONS VICW sinisen niora E chad EEEN A EEE EA E EE EEEE A 194 T46 Memory VIEW sinner tor EOE E RE AR OE RE E 195 7 4 7 Compare Application View ccceeeeeee nee eee eee ee neta een eee een eeaeeaeeaeeaeeaeeneeaeed 196 74 8 Heap VIEW araceas nnar a a aE T EErEE 196 74 9 Logging VEW osioissa cae cae iiia a a E a aai aE a eaaa 197 TATO RTOS VIEW heiit Hoes ierde a ea A a Rd EEEN ee E 197 TAAT Registers VioW scerscenteie creroeesaedesaieescavecaes Sern
167. a group that is both ordered and contiguous this is called a sequential group In a sequential group the linker places sections in the same order in the address space as they appear in the group and it occupies a contiguous range of memory The clustered keyword tells the linker to locate the sections in the group in a number of contiguous blocks It tries to keep the number of these blocks to a minimum If enough memory is available the group will be located as if it was specified as contiguous Otherwise it gets split into two or more blocks If a contiguous or clustered group contains alignment gaps the linker can locate sections that are not part of the group in these gaps To prevent this you can use the 111 keyword If the group is located in RAM the gaps are treated as reserved scratch space If the group is located in ROM the alignment gaps are filled with zeros by default You can however change the fill pattern by specifying a bit pattern The result of the expression or list of expressions is used as values to write to memory each in MAU The overlay keyword tells the linker to overlay the sections in the group The linker places all sections in the address space using a contiguous range of addresses Thus an overlay group is automatically also a contiguous group To overlay the sections all sections in the overlay group share the same run time address For each input section within the overlay the linker automatically defi
168. a se dp OEE EEEE EE UE EEE AETA 197 TAN 2 TRACE NIGW soriire a a en a ao 198 8 TOON OPTIONS oniran enan a oe a aea aE N E AAE a a EAEAN 199 8 1 Configuring the Command Line Environment ecceeeeee eee eeeeeeeeee eee eee eeeeeeeeeeees 204 8 27C Compiler Options ssjec athe howesecenetatcndatenttaag erates beethaemecolthebiacteetads eens aint ete shenatiees 205 8 3 Assembler Options ccccee eee ee etree een ee ee ee nent een nent 270 8 4 Linker Options ss eisioes nossen eannan iea Ea nA AO A E EE aes aE aai 313 8 5 Control Program OPNS cis estacsesesekenesteieive cock tua doce dete EREE EE EEE ERE TANE EEE 361 8 6 Parallel Make Utility Options 2 20 2 0 c cece cece eee ee eee neces ne ee eee eee eaeeeeeaeeseeseeeeeaeeeeeaes 409 8 7 Archiver Options cccecee eee nee eee eect nese eects ttrt ttrt ea eed eseeaeeseeaeeaeeaeeseeaeeaeeaeees 423 8 8 HLL Object Dumper Options cece cece eee e eee ee eee ec eee eee ese esse eseeeeeseeeeeeeeneees 438 8 9 Expire Cache Utility Options ccc een hi wit a ein ec eee teen eae 458 9 Influencing the Build TIME eeicscievets cteigeenkedetdand Datehcweencmeanes e EEE AEE AE lebesteteers 469 9 1 Optimization OPtiONS sassis sndiri aia a EEE ESAE EESE REE 469 9 2 AUTOMATIC NINING sueis a o eaaa Been ails AE Ea eE iE 469 9 3 Code Compaction ar nonien aiar a ints EE noes Maia ded eee ede 469 9 4 Compiler Cache sses uor cece ee cece een e tena a eens NEOS c
169. acro It must not start in the first column See Section 2 10 Macro Operations Comment preceded by a semicolon You can use empty lines or lines with only comments 2 2 Assembler Significant Characters You can use all ASCII characters in the assembly source both in strings and in comments Also the extended characters from the ISO 8859 1 Latin 1 set are allowed Some characters have a special meaning to the assembler Special characters associated with expression evaluation are described in Section 2 6 3 Expression Operators Other special assembler characters are Character Description Start of a comment Line continuation character or macro operator argument concatenation Macro operator return decimal value of a symbol Macro operator return hex value of a symbol A Macro operator override local label Macro string delimiter or quoted string DEFINE expansion character String constants delimiter Start of a built in assembly function Location counter substitution String concatenation operator Substring delimiter Note that macro operators have a higher precedence than expression operators 42 Assembly Language 2 3 Operands of an Assembly Instruction In an instruction the mnemonic is followed by zero one or more operands An operand has one of the following types Operand Description symbol A symbolic name a
170. acters specified in set Returns the length of the first sequence found Searches s for a sequence of characters not specified in set Returns the length of the first sequence found Same as strspn wcsspn but returns a pointer to the first character in s that also is specified in set Searches for a substring sub in s Returns a pointer to the first occurrence of sub in s A sequence of calls to this function breaks the string s into a sequence of tokens delimited by a character specified in dim The token found in s is terminated with a null character Returns a pointer to the first position in s of the token Description memset s c n wmemset s c n strerror errno strlen s weslen s 10 1 27 time h and wchar h Fills the first n bytes of s with character c and returns s Typically the values for errno come from int errno This function returns a pointer to the associated error message See also Section 10 1 6 errno h Returns the length of string s The header file time h provides facilities to retrieve and use the calendar date and time and the process time Time can be represented as an integer value or can be broken down in components Two arithmetic data types are defined which are capable of holding the integer representation of times clock_t unsigned long long time_t unsigned long The type struct tm below is defined according to ISO C99 with one exception this impleme
171. addresses in the address space but preserves the order of sections when necessary one processor and core in this example section_layout my_space direction high_to_low section statements If you do not explicitly tell the linker how to locate a section the linker decides on the basis of the section attributes in the object file and the information in the architecture definition and memory parts where to locate the section 13 8 2 Creating and Locating Groups of Sections Sections are located per group A group can contain one or more sets of input sections as well as other groups Per group you can assign a mutual order to the sets of sections and locate them into a specific memory part group group_specifications section_statements With the section_statements you generally select sets of sections to form the group This is described in subsection Selecting sections for a group Instead of selecting sections you can also modify special sections like stack and heap or create a reserved section This is described in Section 13 8 3 Creating or Modifying Special Sections With the group_specifications you actually locate the sections in the group This is described in subsection Locating a group Selecting sections for a group With the keyword select you can select one or more sections for the group You can select a section by name or by attributes If you select a section by name you can use a wildc
172. age and explanation F169 target Ss returned exit code d An error occured while executing one of the commands of the target and k option is not specified To write an explanation of all errors and warnings in HTML format to file amnkerrors html use redirection and enter amk diag html all gt amkerrors html Related information 412 Tool Options Parallel make utility option dry run n Command line syntax dry run n Description With this option you tell the make utility to perform a dry run The make utility shows what it would do but does not actually perform these tasks This option is for example useful to quickly inspect what would happen if you call the make utility Example amk n The make utility does not perform any tasks but displays what it would do if called without the option n Related information Parallel make utility option s Do not print commands before execution 413 TASKING VX toolset for RH850 User Guide Parallel make utility option help h Command line syntax help item h You can specify the following arguments options Show extended option descriptions Description Displays an overview of all command line options When you specify the argument options you can list detailed option descriptions Example The following invocations all display a list of the available command line options amk amk help To see a detailed descrip
173. agnostics The Suppress warnings box shows the warnings that are currently suppressed 2 To suppress a warning click on the Add button in the Suppress warnings box 3 Enter the numbers separated by commas of the warnings you want to suppress for example 201 202 Or you can use the Add button multiple times 4 To suppress all warnings enable the option Suppress all warnings Use the Edit and Delete button to change a warning number or to remove a number from the list Command line syntax no warnings number w number Description With this option you can suppresses all warning messages or specific warning messages On the command line this option works as follows e If you do not specify this option all warnings are reported e If you specify this option but without numbers all warnings are suppressed e If you specify this option with a number only the specified warning is suppressed You can specify the option no warnings number multiple times Example To suppress warnings 201 and 202 enter as850 test srce no warnings 201 202 Related information Assembler option warnings as errors Treat warnings as errors 300 Tool Options Assembler option optimize O Menu entry 1 Select Assembler Optimization 2 Select one or more of the following options Optimize generic instructions e Optimize jump chains e Optimize instruction size Command line syntax optimize flag Oflags
174. all under this group e Assembly control directives e Symbol definition and section directives e Data definition Storage allocation directives e High Level Language HLL directives Directives that are interpreted by the macro preprocessor These directives tell the macro preprocessor how to manipulate your assembly code before it is actually being assembled You can use these directives to write macros and to write conditional source code Parts of the code that do not match the condition will not be assembled at all e Some directives act as assembler options and most of them indeed do have an equivalent assembler command line option The advantage of using a directive is that with such a directive you can overrule the assembler option for a particular part of the code Directives of this kind are called controls A typical example is to tell the assembler with an option to generate a list file while with the directives NOLIST and LIST you overrule this option for a part of the code that you do not want to appear in the list file Directives of this kind sometimes are called controls Each assembler directive has its own syntax Some assembler directives can be preceded with a label If you do not precede an assembler directive with a label you must use white space instead spaces or tabs You can use assembler directives in the assembly code as pseudo instructions The assembler recognizes both uppercase and lowercase for directives
175. alue when c is printable but not a space islower iswlower Returns a non zero value when c is a lowercase character a Z isprint iswprint Returns a non zero value when c is printable including spaces ispunct iswpunct Returns a non zero value when c is a punctuation character such as isspace iswspace Returns a non zero value when c is a space type character space tab vertical tab formfeed linefeed carriage return isupper iswupper Returns a non zero value when c is an uppercase character A Z isxdigit iswxdigit Returns a non zero value when c is a hexadecimal digit 0 9 A F a f tolower towlower Returns c converted to a lowercase character if it is an uppercase character otherwise c is returned toupper towupper Returns c converted to an uppercase character if it is a lowercase character otherwise c is returned _tolower Converts c to a lowercase character does not check if c really is an uppercase character Implemented as macro This macro function is not defined in ISO C99 _toupper Converts c to an uppercase character does not check if c really is a lowercase character Implemented as macro This macro function is not defined in ISO C99 isascii Returns a non zero value when c is in the range of 0 and 127 This function is not defined in ISO C99 toascii Converts c to an ASCII value strip highest bit This function is not defined in ISO C99 476 Libraries 10 1 5 dbg h The
176. alues with caution since rounding errors could cause unexpected results Bitwise amp AND Integer only Yields the bitwise AND function of its operand OR Integer only Yields the bitwise OR function of its operand ms exclusive OR Integer only Yields the bitwise exclusive OR function of its operands Logical amp amp logical AND Returns an integer 1 if both operands are non zero otherwise it returns an integer 0 II logical OR Returns an integer 1 if either of the operands is non zero otherwise it returns an integer 1 The relational operators and logical operators are intended primarily for use with the conditional assembly i f directive but can be used in any expression 2 7 Working with Sections Sections are absolute or relocatable blocks of contiguous memory that can contain code or data Some sections contain code or data that your program declared and uses directly while other sections are created by the compiler or linker and contain debug information or code or data to initialize your application These sections can be named in such a way that different modules can implement different parts of these sections These sections are located in memory by the linker using the linker script language LSL so that concerns about memory placement are postponed until after the assembly process All instructions and directives which generate data or code must be within an active section The assemb
177. amically Freeing memory that is not allocated dynamically can lead to corruption of the heap data structures Allocate sufficient memory for an object The compiler issues this warning when the size of the object s allocated by malloc calloc or realloc is smaller than the size of an object pointed to by the result pointer This may be caused by a sizeof expression with the wrong type or with a pointer type instead of the object type 15 9 Environment ENV ENV32 C All atexit handlers must return normally The compiler issues this warning when an atexit handler is calling a function that does not return No atexit registered handler should terminate in any way other than by returning 15 10 Signals SIG SIG30 C Call only asynchronous safe functions within signal handlers SIG32 C Do not call longjmp from inside a signal handler 590 Invoking the longjmp function from within a signal handler can lead to undefined behavior if it results in the invocation of any non asynchronous safe functions likely compromising the integrity of the program CERT C Secure Coding Standard 15 11 Miscellaneous MSC MSC32 C Ensure your random number generator is properly seeded Ensure that the random number generator is properly seeded by calling srand 591 TASKING VX toolset for RH850 User Guide 592 Chapter 16 MISRA C Rules This chapter contains an overview of the supported and unsupported MISRA C rules 16 1 MISRA
178. and C C Build and select Settings In the right pane the Settings appear 3 On the Tool Settings tab select C Compiler Optimization Compilation Speed 469 TASKING VX toolset for RH850 User Guide 4 Enable the option Cache generated code to improve the compilation speed 5 Inthe Directory for cached files field enter the name for the location of the cache By default this is the cache directory under your project directory 6 Specify the Maximum days files will live in the cache 7 Optional Enable the option Clear cache upon project clean Each time you use Project Clean the cache is cleared Eclipse calls the C compiler with option cache The cache directory may be shared for instance by placing it on a network drive The compiler creates a directory c850cache in the specified directory When a result from the cache is used the C compiler generates a comment line in the assembly source file to notify that In that case be aware of the following In case source merging is enabled an older version of the source is still shown As long as a source change has no effect on the preprocessed code the cached version of the output file is used Some options like define include directory and output are not part of the hash used for the cache As long as a change in these options has no influence on the preprocessed code the cached version of the output is used This means that the options listed as comments in
179. and SREC formats If you specify the Intel Hex format or the Motorola S records format you can use the argument addr_size to specify the size of addresses in bytes record length For Intel Hex you can use the values 1 2 and 4 default For Motorola S records you can specify 2 S1 records 3 S2 records default or 4 bytes S3 records Note that if you make the addr_size too small the linker might give a fatal object writer error indicating an address overflow With the argument space_name you can specify the name of the address space The name of the output file will be filename with the extension hex or sre and contains the code and data allocated in the specified space If they exist any other address spaces are also emitted whereas their output files are named filename_spacename with the extension hex or sre If you do not specify space_name or you specify a non existing space the default address space is filled in 353 TASKING VX toolset for RH850 User Guide Use option chip output c to create Intel Hex or Motorola S record output files for each chip defined in the LSL file suitable for loading into a PROM programmer Example To create the output file myfile hex of the address space named linear enter 1k850 test o output myfile hex IH EX 2 linear If they exist any other address spaces are emitted as well and are named myfile_spacename hex Related information Linker option chip out
180. and does not conflict with other identifiers If you define memory parts in the LSL file only the memory defined in these parts is used for placing sections If no external memory is defined in the LSL file and if the linker option to allocate memory on demand is set then the linker will assume that all virtual addresses are mapped on physical memory You can override this behavior by specifying one or more memory definitions memory mem_name type rom 565 TASKING VX toolset for RH850 User Guide mau 8 write_unit 4 fill Oxaa size 64k priority 2 map map_name map_ description For a description of the keywords see Section 13 5 3 Defining Internal Memory and Buses With the keyword bus you define a bus the combination of data and corresponding address bus The bus name is used to identify a bus and does not conflict with other identifiers Bus descriptions at the global scope outside any definition define external buses These are buses that are present on the target board bus bus_name mau 8 width 8 map map_description For a description of the keywords see Section 13 4 2 Defining Internal Buses You can connect off chip memory to any derivative you need to map the off chip memory to a bus and map that bus on the internal bus of the derivative you want to connect it to 13 7 Semantics of the Section Setup Definition Keywords in the section setup definition sectio
181. ar of core v850 of processor spe Overview of LSL files delivered by Altium Altium supplies the following LSL files in the directory include 1sl LSL file Description v850_arch 1sl Defines the base architecture V850 for all cores Contains a section layout v850e3 1sl Defines the generic derivative v850e3 for all V850E3 cores and defines a single processor Contains a memory definition It includes the file v850_arch 1s1 cpu lsl This file includes a processor specific LSL file based on the selected processor derivative lsl Defines the derivative and defines a single processor Contains a memory definition It includes the file v850_arch 1s1 The selection of the derivative is based on your CPU selection template lsl This file is used by Eclipse as a template for the project LSL file It includes the file cou 1s1l default 1sl Default LSL file It includes the file v850e3 1s1 The file default 1slis used on a command line invocation of the tools when no CPU is selected no option cpu When you select to add a linker script file when you create a project in Eclipse Eclipse makes a copy of the file template 1s1 and names it project_name 1s1 On the command line the linker uses the file default 1s1 unless you specify another file with the linker option IsI file d 5 7 4 The Architecture Definition Although you will probably not need to write an architecture definition unless yo
182. archive a is the same as specifying 1k850 myl o my3 o my3 o0 Related information Linker option library Link system library 360 Tool Options 8 5 Control Program Options The control program cc850 facilitates the invocation of the various components of the RH850 toolset from a single command line Options in Eclipse versus options on the command line Eclipse invokes the compiler assembler and linker via the control program Therefore it uses the syntax of the control program to pass options and files to the tools The control program processes command line options either by itself or when the option is unknown to the control program it looks whether it can pass the option to one of the other tools However for directly passing an option to the C compiler assembler or linker it is recommended to use the control program options pass c pass assembler pass linker See the previous sections for details on the options of the tools Short and long option names Options can have both short and long names Short option names always begin with a single minus character long option names always begin with two minus characters You can abbreviate long option names as long as it forms a unique name You can mix short and long option names on the command line Options can have flags or suboptions To switch a flag on use a lowercase letter or a ongflag To switch a flag off use an uppercase letter or a ongfla
183. ard pattern matches with all section names matches with a single character in the section name takes the next character literally 569 TASKING VX toolset for RH850 User Guide abc matches with a single a b or c character a z matches with any single character in the range a to z group ses select mysection select The first select statement selects the section with the name mysection The second select statement selects all sections that were not selected yet A section is selected by the first select statement that matches in the union of all section layouts for the address space Global section layouts are processed in the order in which they appear in the LSL file Internal core architecture section layouts always take precedence over global section layouts e The attributes field selects all sections that carry or do not carry the given attribute With attribute you select sections that have the specified attribute set With attribute you select sections that do not have the specified attribute set You can specify one or more of the following attributes e r readable sections w writable sections x executable sections i initialized sections e b sections that should be cleared at program startup s scratch sections not cleared and not initialized p protected sections To select all read only sections group sea J select attributes r w Keep in mind tha
184. arded 401 TASKING VX toolset for RH850 User Guide With preprocess make the compiler will generate dependency lines that can be used in a Makefile The information is written to a file with extension d The preprocessor output is discarded The default target name is the basename of the input file with the extension o With the option make target you can specify a target name which overrules the default target name With preprocess noline you tell the preprocessor to strip the line source position information lines starting with 1ine These lines are normally processed by the assembler and not needed in the preprocessed output When you leave these lines out the output is easier to read Example cc850 preprocess tcomments make nolin no preprocessing only test c The compiler preprocesses the file test c and sends the output to the file test pre Comments are included but no dependencies are generated and the line source position information is not stripped from the output file Next the control program calls the compiler assembler and linker to create the final object file test elf Related information Control program option dep file Generate dependencies in a file Control program option make target Specify target name for Em output 402 Tool Options Control program option processors Menu entry 1 From the Window menu select Preferences The Preferences dialog appears 2 Select TASKI
185. are not portable and harder to compile in other environments The compiler does not interpret assembly blocks but passes the assembly code to the assembly source file they are regarded as a black box So it is your responsibility to make sure that the assembly block is syntactically correct Possible errors can only be detected by the assembler You need to tell the compiler exactly what happens in the inline assembly code because it uses that for code generation and optimization The compiler needs to know exactly which registers are written and which registers are only read For example if the inline assembly writes to a register from which the compiler assumes that it is only read the generated code after the inline assembly is based on the fact that the register still contains the same value as before the inline assembly If that is not the case the results may be unexpected Also an inline assembly statement using multiple input parameters may be assigned the same register if the compiler finds that the input parameters contain the same value As long as this register is only read this is not a problem TASKING VX toolset for RH850 User Guide General syntax of the _ asm keyword __asm instruction template output_param list input_param list register_reserve_list instruction _template parm_nr output_param_list input_param_list amp constraint _char C_expression register_reserve_list regis
186. area addressable by this core The names of the address spaces as defined in the linker script file 1s1 The names are constructed of the derivative name followed by a colon the core name another colon and the space name For example spe v850 linear The size of sections located in this space The size of all sections destined for located in other spaces but because of overlap in spaces consume memory in this space The name s of the stack s as defined in the linker script file 1s1 An estimation of the stack usage The linker calculates the required stack size by using information CALLS directives generated by the compiler If for example recursion is detected the calculated stack size is inaccurate therefore this is an estimation only The calculated stack size is supposed to be smaller than the actual allocated stack size If that is not the case then a warning is given Processed Files This part of the map file shows all processed files This also includes object files that are extracted from a library with the symbol that led to the extraction Link Result This part of the map file shows per object file how the link phase has mapped the sections from the various object files o to output sections in File in Section in Size out Offset out Section out Size 520 The name of an input object file A section name and id from the input object file The number between un
187. as 1 You can specify as many macros as you like just use the option define D multiple times If the command line exceeds the limit of the operating system you can define the macros in an option file which you then must specify to the linker with the option option file f file The definition can be tested by the preprocessor with if ifdef and ifndef for conditional locating Example To define the RESET vector which is used in the linker script file 850_arch 1s1 which is included in default 1s1 enter 1k850 test o otest elf lsl file default 1lsl define RESET 0x00000000 Related information Linker option option file Specify an option file 317 TASKING VX toolset for RH850 User Guide Linker option dep file Menu eniry Eclipse uses this option in the background to create a file with extension d one for every input file Command line syntax dep file file Description With this option you tell the linker to generate dependency lines that can be used in a Makefile The dependency information will be generated in addition to the normal output file By default the information is written to the file 1k850 d When you specify a filename all dependencies will be combined in the specified file Example 1k850 dep file test dep test o The linker links the file test o which results in the output file test e1f and generates dependency lines in the file test dep Rela
188. at file scope shall have internal linkage unless external linkage is required The static storage class specifier shall be used in definitions and declarations of objects and functions that have internal linkage When an array is declared with external linkage its size shall be stated explicitly or defined implicitly by initialization All automatic variables shall have been assigned a value before being used This rule is checked using worst case assumptions This means that violations are reported not only for variables that are guaranteed to be uninitialized but also for variables that are uninitialized on some execution paths Braces shall be used to indicate and match the structure in the non zero initialization of arrays and structures In an enumerator list the construct shall not be used to explicitly initialize members other than the first unless all items are explicitly initialized Arithmetic type conversions 600 10 1 10 2 10 3 10 4 10 5 10 6 R The value of an expression of integer type shall not be implicitly converted to a different underlying type if a it is not a conversion to a wider integer type of the same signedness or b the expression is complex or c the expression is not constant and is a function argument or d the expression is not constant and is a return expression The value of an expression of floating type shall not be implicitly converted to a different type if a
189. at the time of compilation If you do not specify a filename the file basename mcr is used Related information C compiler option misrac MISRA C checking 344 Tool Options Linker option non romable Menu entry Command line syntax non romable Description With this option you tell the linker that the application must not be located in ROM The linker will locate all ROM sections including a copy table if present in RAM When the application is started the data sections are re initialized and the BSS sections are cleared as usual This option is for example useful when you want to test the application in RAM before you put the final application in ROM This saves you the time of flashing the application in ROM over and over again Related information 345 TASKING VX toolset for RH850 User Guide Linker option no rescan Menu entry 1 Select Linker Libraries 2 Disable the option Rescan libraries to solve unresolved externals Command line syntax no rescan Description When the linker processes a library it searches for symbol definitions that are referenced by the objects and libraries processed so far If the library contains a definition for an unresolved reference the linker extracts the object that contains the definition from the library The linker processes object files and libraries in the order in which they appear on the command line When all objects and libraries are proce
190. ate conditional C code Macro Description _ BUILD _ Identifies the build number of the compiler composed of decimal digits for the build number three digits for the major branch number and three digits for the minor branch number For example if you use build 1 22 1 of the compiler _BUILD__ expands to 1022001 If there is no branch number the branch digits expand to zero For example build 127 results in 127000000 __C850__ Identifies the compiler You can use this symbol to flag parts of the source which must be recognized by the TASKING c850 compiler only It expands to 1 __DATE__ Expands to the compilation date mmm dd yyyy _ FILE Expands to the current source file name FPU Expands to 1 when the selected core has a floating point unit and the option fp model soft is not used Otherwise unrecognized as a macro __FPU_DOUBLE__ Expands to 1 if you used option fpu double single double precision FPU otherwise unrecognized as macro FPU_SINGLE Expands to 1 if you used option fpu single single precision FPU otherwise unrecognized as macro _ LINE Expands to the line number of the line where this macro is called __MISRAC_VERSION__ Expands to the MISRA C version used 1998 2004 or 2012 option misrac version The default is 2004 REVISION __ Expands to the revision number of the compiler Digits are represented as they are characters for prototypes alphas betas are r
191. ation If stream is an output stream any buffered but unwritten date is written Else the effect is undefined FSS implementation Similar to fopen but rather than generating a new value of type FILE the existing value is associated with a new stream FSS implementation If buffer is NULL buffering is turned off for the stream Otherwise setbuf is equivalentto void setvbuf stream buffer _IOFBF BUFSIZ Controls buffering for the stream this function must be called before reading or writing Mode can have the following values _IOFBF causes full buffering _IOLBF causes line buffering of text files _IONBF causes no buffering If buffer is not NULL it will be used as a buffer otherwise a buffer will be allocated size determines the buffer size 489 TASKING VX toolset for RH850 User Guide Formatted input output The format string of printf related functions can contain plain text mixed with conversion specifiers Each conversion specifier should be preceded by a character The conversion specifier should be built in order Flags in any order specifies left adjustment of the converted argument a number is always preceded with a sign character has higher precedence than space space a negative number is preceded with a sign positive numbers with a space 0 specifies padding to the field width with zeros only for numbers specifies an alternate output form For o the first digit will be z
192. ation Used by the functions fopen and freopen FSS implementation Reads a sequence of characters from a file FSS implementation Used by the function remove FSS implementation Writes a sequence of characters to a file FSS implementation The header file iso646 h adds tokens that can be used instead of regular operator tokens de d fine fin and amp amp de de de de d fine fine fine fine fin and_eq bitand bitor compl not de d fine fin not_eq OF de d fine fin or_eq xor 480 xor_eq Libraries 10 1 14 limits h Contains the sizes of integral types defined as macros 10 1 15 locale h To keep C code reasonable portable across different languages and cultures a number of facilities are provided in the header file Locale h char setlocale int category const char locale The function above changes locale specific features of the run time library as specified by the category to change and the name of the locale The following categories are defined and can be used as input for this function LC_ALL 0 LC_NUMERIC 3 C COLLATE 1 LC_TIME 4 C_CTYPE 2 LC_MONETARY 5 struct lconv localeconv void Returns a pointer to type struct lconv with values appropriate for the formatting of numeric quantities according to the rules of the current locale The struct 1conv in this header file is conforming the ISO standard 10 1 16
193. ation defines the section s address in RAM e source defines the sections address in ROM zero for BSS sections length defines the size of the section in MAUs of the destination space An instance of an architecture The design of a processor A description of one or more cores including internal memory and any number of buses Collection of relocatable object files Usually each object file in a library contains one symbol definition for example a function An address as encoded in an instruction word an address generated by a core CPU The set of linker script files that are passed to the linker Minimum Addressable Unit For a given processor the number of bits between an address and the next address This is not necessarily a byte or a word The binary machine language representation of the C source An address generated by the memory system An instance of a derivative Usually implemented as a custom chip but can also be implemented in an FPGA in which case the derivative can be designed by the developer Object code in which addresses are represented by symbols and thus relocatable The process of assigning absolute addresses Using the Linker Term Definition Relocation Information about how the linker must modify the machine code instructions when information it relocates addresses Section A group of instructions and or data objects that occupy a contiguous range of addresses Section attr
194. ave an equivalent option in Eclipse but some options are only available on the command line Eclipse invokes the compiler via the control program Therefore it uses the syntax of the control program to pass options and files to the C compiler If there is no equivalent option in Eclipse you can specify a command line option in Eclipse as follows 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and select Settings In the right pane the Settings appear 3 On the Tool Settings tab select C Compiler Miscellaneous 4 Inthe Additional options field enter one or more command line options Because Eclipse uses the control program you have to precede the option with Wc to pass the option via the control program directly to the C compiler Be aware that some command line options are not useful in Eclipse or just do not have any effect For example the option n sends output to stdout instead of a file and has no effect in Eclipse Short and long option names Options can have both short and long names Short option names always begin with a single minus character long option names always begin with two minus characters You can abbreviate long option names as long as it forms a unique name You can mix short and long option names on the command line Options can have flags or suboptions To switch a flag on use a lowercase letter or a ongflag To switch a fla
195. ber define BATTERY _BACKUP_TAG 0Oxa5 0 include lt stdio h gt int uninitialized_data int initialized_data 1 pragma section non_volatile __data int battery_backup_tag __data int battery_backup_invok pragma endsection void main void if battery_backup_tag BATTERY_BACKUP_TAG battery back upped memory area contains invalid data initialize the memory battery_backup_tag BATTERY_BACKUP_TAG battery_backup_invok 0 printf This application has been invoked d times n battery_backup_invok The compiler assigns names and attributes to sections With the pragma section and pragma endsection the compiler s default section naming convention is overruled and a section with the name non_volatile appended is defined In this section the battery back upped data is stored By default the compiler creates the section sbss to store uninitialized data objects With the __ data qualifier this is bss This section name tells the linker to locate the section in address space linear and that the section content should be filled with zeros at startup As a result of the pragma section non_volatile the data objects between the pragma pair are placed in a section with the name bss non_volatile Note that bss sections are cleared at startup However battery back upped sections should not be cleared and therefore we will change this section attribute using the LSL Section placement
196. ble the option Case insensitive identifiers Command line syntax case insensitive Default case sensitive Description With this option you tell the assembler not to distinguish between uppercase and lowercase characters By default the assembler considers uppercase and lowercase characters as different characters Assembly source files that are generated by the compiler must always be assembled case sensitive When you are writing your own assembly code you may want to specify the case insensitive mode The control program passes this option to both the assembler and the linker Example When assembling case insensitive the label Labe1Name is the same label as labelname cc850 case insensitive test srce Related information Assembler option case insensitive 363 TASKING VX toolset for RH850 User Guide Control program option check Menu entry Command line syntax check Description With this option you can check the source code for syntax errors without generating code This saves time in developing your application because the code will not actually be compiled The compiler assembler reports any warnings and or errors This option is available on the command line only Related information C compiler option check Check syntax Assembler option check Check syntax 364 Tool Options Control program option cpu C Menu eniry 1 Expand C C Build and select Processor 2 From the P
197. bler does not know the symbol s size and address Instead the assembler generates a call to a preliminary relocatable address usually 0000 while stating the symbol name Debug information Other information about the object code that is used by a debugger The assembler optionally generates this information and can consist of line numbers C source code local symbols and descriptions of data structures The linker resolves the external references between the supplied relocatable object files and or libraries and combines the files into a single relocatable linker object file The linker starts its task by scanning all specified relocatable object files and libraries If the linker encounters an unresolved symbol it remembers its name and continues scanning The symbol may be defined elsewhere in the same file or in one of the other files or libraries that you specified to the linker If the symbol is defined in a library the linker extracts the object file with the symbol definition from the library This way the linker collects all definitions and references of all of the symbols Next the linker combines sections with the same section name and attributes into single sections The linker also substitutes external symbol references by relocatable numerical addresses where possible 135 TASKING VX toolset for RH850 User Guide At the end of the linking phase the linker either writes the results to a file a single relocatable objec
198. bles you to use virtual registers that are located in memory 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and select Processor In the right pane the Processor page appears 3 From the Processor selection list select a processor 128 Using the Assembler To access the assembler options 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and select Settings In the right pane the Settings appear 3 On the Tool Settings tab select Assembler 4 Select the sub entries and set the options in the various pages Note that the options you enter in the Assembler page are not only used for hand coded assembly files but also for the assembly files generated by the compiler You can find a detailed description of all assembler options in Section 8 3 Assembler Options Invocation syntax on the command line Windows Command Prompt as850 option file The input file must be an assembly source file asm or src 4 3 How the Assembler Searches Include Files When you use include files with the INCLUDE directive you can specify their location in several ways The assembler searches the specified locations in the following order 1 If the INCLUDE directive contains an absolute path name the assembler looks for this file If no path or a relative path is specified the ass
199. both size and blocksize from the section definition The linker creates two labels to mark the begin and end of the section __1c _ub_name for the begin of the section and __1e_ue_name for the end of the output section When the copy property is set on an enclosing group a ROM copy is created for the output section and the output section itself is made writable causing it to be located in RAM by default For this to work the output section and its input sections must be read only and the output section must have a i11 property Copy table The keyword copytable tells the linker to select a section that is used as copy table The content of the copy table is created by the linker It contains the start address and length of all sections that should be initialized by the startup code The linker creates two labels to mark the begin and end of the section __1c _ub_table for the begin of the section and __ lc_ue_table for the end of the copy table The linker generates a copy table when a reference to either of the section labels exists in one of the input object files Structures A struct statement ina section_layout creates a section and fills it with numbers that each occupy one or more MAUs The new section must be named by providing a double quoted string after the struct keyword Each element has the form expr number where the expression provides the value to insert in the section and the number determines the number of MAUs occupie
200. brary function names shall not be reused x 116 R Production libraries shall comply with the MISRA C restrictions x 117 R The validity of library function parameters shall be checked 118 R Dynamic heap memory allocation shall not be used 119 R The error indicator errno shall not be used 120 R The macro offsetof shall not be used 121 R lt locale h gt and the setlocale function shall not be used 122 R The set jmp and long mp functions shall not be used 123 R The signal handling facilities of lt signal h gt shall not be used 124 R The lt stdio h gt library shall not be used in production code 125 R The functions atof atoi atol shall not be used 126 R The functions abort exit getenv system shall not be used 127 R The time handling functions of library lt t ime h gt shall not be used 16 2 MISRA C 2004 This section lists all supported and unsupported MISRA C 2004 rules See also Section 3 7 2 C Code Checking MISRA C A number of MISRA C rules leave room for interpretation Other rules can only be checked in a limited way In such cases the implementation decisions and possible restrictions for these rules are listed x means that the rule is not supported by the TASKING C compiler R is a required rule A is an advisory rule 597 TASKING VX toolset for RH850 User Guide Environment 1 1 1 2 x 1 3 x 1 4 x 1 5 A All code shall conform to ISO 9899 1990 Programming lang
201. by default In the context of this option a string literal used to initialize an array as in char array string is not considered a string literal i e this is an array initializer written as a string equivalent to Ghar array sty TE Teh hy MH Ta T O 33 Strings literals as used in char s String or printf formatter s n string are affected by this option Example To allocate string literals in ___zdata memory c850 string literal memory __zdata test c 261 TASKING VX toolset for RH850 User Guide Related information Pragma string_literal_memory C compiler option const data memory Assign memory to constant data objects C compiler option data memory Assign memory to non constant data objects 262 Tool Options C compiler option switch Menu eniry 1 Select C Compiler Code Generation 2 Select an Algorithm for switch statements Command line syntax switch arg You can give one of the following arguments auto Choose most optimal code jumptab Generate jump tables linear Use linear jump chain code Default switch auto Description With this option you tell the compiler which code must be generated for a switch statement a jump chain linear switch or a jump table By default the compiler will automatically choose the most efficient switch implementation based on code and data size and execution speed This depends on the option tradeoff
202. by the linker to compute the used stack within the application The information is found in the generated linker map file within the Memory Usage This directive is generated by the C compiler Use the CALLS directive in hand coded assembly when the assembly code calls a C function If you manually add CALLS directives make sure they connect to the compiler generated CALLS directives the name of the caller must also be named as a callee in another directive A label is not allowed before this directive Example CALLS _main _nfunc Indicates that the function _main calls the function _nfunc CALLS _main 8 The function _main uses 8 bytes on the stack 62 Assembly Language DB DH DW DD Syntax label DB argument argument label DH argument argument label DW argument argument label DD argument argument Description With these directive you can define memory With each directive the assembler allocates and initializes one or more bytes of memory for each argument If you specify the optional abel it gets the value of the location counter at the start of the directive processing An argument can be a single or multiple character string constant an expression or empty Multiple arguments must be separated by commas with no intervening spaces Empty arguments are stored as O zero The following table shows the number of bits initialized Direct
203. c _main 0x2a r6 Oxc8 gp _printf at Oxf 2000c8 text hello main world Hello s at 0x400 177 TASKING VX toolset for RH850 User Guide db 24 00 00 00 Bo Da endsec Rae S HLL symbol table Address Size HLL Type Name 00000000 36 void _ START 00000210 68 int printf const char restrict format 00000400 16 void main fedec0c8 4 char world hello c fedec0d0 24 struct _dbg_request dbg c fedec0e8 80 static char stdin_buf 80 _iob c fedec138 80 static char stdout_buf 80 _iob c assembly level symbol table Address Size Type Name 00000000 00000000 sdata23 hello world 00000000 hello sre 00000000 36 code __START 00000400 16 code _main fedec0c8 4 data _world fedec0d0 24 data __dbg_request fedec0e8 80 data _stdin_buf fedec138 80 data _stdout_buf note sections Section note section 36 00000000 type ALTIUM ASSEMBLER NAME 0000000c name Altium 00000014 desc as850 Module list This part lists all modules C files found in the object file s It lists the filename and the complete path name at the time the module was built Section list This part lists all sections found in the object file s Address The start address of the section Hexadecimal 8 digits 32 bit Size The size length of the section in bytes Decimal filled up with spaces Align The alignment of the section in number of bytes Decimal
204. cRo directive you can define more complex macros Example Consider the following assembly program with conditional code to assemble a demo program and a real program IF DEMO 1 iii instructions for demo application ELSE Soh instructions for the real application ENDIF 274 You can now use a macro definition to set the DEMO flag as850 define DEMO test src as850 define DEMO 1 test src Note that both invocations have the same effect Related information Assembler option option file Specify an option file Tool Options 275 TASKING VX toolset for RH850 User Guide Assembler option dep file Menu entry Command line syntax dep file file Description With this option you tell the assembler to generate dependency lines that can be used in a Makefile The dependency information will be generated in addition to the normal output file By default the information is written to a file with extension a When you specify a filename all dependencies will be combined in the specified file Example as850 dep file test dep test src The assembler assembles the file test src which results in the output file test o and generates dependency lines in the file test dep Related information Assembler option make target Specify target name for dep file output 276 Assembler option diag Menu entry 1 From the Window menu select Show View Other
205. cement The unconditional version has a range of 22 bits or 32 bits If the conditional branch target is out of range the assembler will rewrite the conditional branch instruction with an inversed conditional branch and an unconditional branch Instruction Replacement Remarks Bcond label Binv_cond 1 If target label out of range JR label ads For example BLE lab1 is replaced by the following code if 1ab1 is out of range BGT __T4294967295 JR labl __T4294967295 BR generic The PC relative unconditional branch instruction has a range of 9 bits The PC of the branch destination is the sum of the current PC value and the 9 bit displacement The unconditional jump version has a range of 22 bits If the branch target is out of range the assembler will rewrite the unconditional branch instruction with an unconditional jump Instruction Replacement Remarks fe label JR label target label out of range For example BR labl is replaced by the following code if 1ab1 is out of range JR labl MOV 16 bit generic An immediate value is moved into a register If the immediate value is larger than 5 bits but smaller than 16 bits the assembler will rewrite the move with a move effective address Instruction Replacement Remarks MOV imm rA MOVEA imm r0 rA If rA cannot be r0 107 TASKING VX toolset for RH850 User Guide PREPARE DISPOSE function generics With the function
206. char type shall be used only for the storage and use of numeric values typede fs that indicate size and signedness should be used in place of the basic types Bit fields shall only be defined to be of type unsigned int of signed int Bit fields of type signed int shall be at least 2 bits long Octal constants other than zero and octal escape sequences shall not be used Declarations and definitions 8 1 8 2 8 3 8 4 8 5 8 6 8 7 8 8 Functions shall have prototype declarations and the prototype shall be visible at both the function definition and call Whenever an object or function is declared or defined its type shall be explicitly stated For each function parameter the type given in the declaration and definition shall be identical and the return types shall also be identical If objects or functions are declared more than once their types shall be compatible There shall be no definitions of objects or functions in a header file Functions shall be declared at file scope Objects shall be defined at block scope if they are only accessed from within a single function An external object or function shall be declared in one and only one file 599 TASKING VX toolset for RH850 User Guide 8 9 R x 810 R 8 11 R 8 12 R Initialization 9 1 R 9 2 R 9 3 R An identifier with external linkage shall have exactly one external definition All declarations and definitions of objects or functions
207. chiver option help Command line syntax help item You can specify the following argument options Show extended option descriptions Description Displays an overview of all command line options When you specify the argument options you can list detailed option descriptions Example The following invocations all display a list of the available command line options ar850 ar850 help ar850 To see a detailed description of the available options enter ar850 help options Related information 429 TASKING VX toolset for RH850 User Guide Archiver option move m Command line syntax move a posname b posname m a posname b posname Description Move the specified object modules to another position in the library The ordering of members in a library can make a difference in how programs are linked if a symbol is defined in more than one member By default the specified members are moved to the end of the archive Use the suboptions a or b to move them to a specified place instead after posname a Move the specified object module s after the existing module posname posname before posname b Move the specified object module s before the existing posname module posname Example Suppose the library mylib a contains the following objects see option print objl o obj2 0 ob j3 0 To move obj1 0 to the end of mylib a ar850 move mylib a objl o To mov
208. cide to generate different code if it assessed that this would improve the result To specify the size speed trade off optimization level 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and select Settings In the right pane the Settings appear 3 On the Tool Settings tab select C Compiler Optimization 4 Select a trade off level in the Trade off between speed and size box See also C compiler option tradeoff t Instruction Selection Trade off levels 0 1 and 2 the compiler selects the instructions with the smallest number of cycles Trade off levels 3 and 4 the compiler selects the instructions with the smallest number of bytes Loop Optimization For a top loop the loop is entered at the top of the loop A bottom loop is entered at the bottom Every loop has a test and a jump at the bottom of the loop otherwise it is not possible to create a loop Some top loops also have a conditional jump before the loop This is only necessary when the number of loop iterations is unknown The number of iterations might be zero in this case the conditional jump jumps over the loop Bottom loops always have an unconditional jump to the loop test at the bottom of the loop Trade off value Try to rewrite top loops to Optimize loops for bottom loops size speed 0 no speed 1 yes speed 2 yes speed 3 yes size 117 TASKING VX toolset for
209. ck for CERT rule STR30 C enter c850 cert str30 test c Related information Chapter 15 CERT C Secure Coding Standard C compiler option diag Explanation of diagnostic messages 207 TASKING VX toolset for RH850 User Guide C compiler option check Menu entry Command line syntax check Description With this option you can check the source code for syntax errors without generating code This saves time in developing your application because the code will not actually be compiled The compiler reports any warnings and or errors This option is available on the command line only Related information Assembler option check Check syntax 208 Tool Options C compiler option const data memory Menu eniry 1 Select C Compiler Allocation 2 From the For constant data use list select an allocation Command line syntax const data memory space You can specify the following space arguments __ data __zdata __sdata Default __ sdata Description With this option you can control the allocation of constant data objects Constant data objects are const variables and automatic initializers Constant data objects that are not explicitly qualified are allocated in the space specified by this option Related information Pragma const_data_memory C compiler option data memory Assign memory to non constant data objects C compiler option string literal memory Assign memory to string literals
210. compiler inlines as part of the optimization process The compiler always inlines all functions that are smaller than the specified threshold The threshold is measured in compiler internal units and the compiler uses this measure to decide which functions are small enough to inline The default threshold is 1 which means that the threshold depends on the option tradeoff After the compiler has inlined all functions that have the function qualifier inline and all functions that are smaller than the specified threshold the compiler looks whether it can inline more functions without increasing the code size too much With the option inline max incr you can specify how much the code size is allowed to increase The default value is 1 which means that the value depends on the option tradeoff Example c850 optimize tinlin inline max incr 40 inline max size 15 test c The compiler first inlines all functions with the function qualifier inline and all functions that are smaller than the specified threshold of 15 If the code size has still not increased with 40 the compiler decides which other functions it can inline Related information C compiler option optimize inline Optimization automatic function inlining Section 1 10 2 Inlining Functions inline 232 Tool Options Section 3 6 3 Optimize for Code Size or Execution Speed 233 TASKING VX toolset for RH850 User Guide C compiler option iso c Men
211. conversion state is specified by ps The input sequence of multibyte characters is specified indirectly by src Restartable version of wcstombs See Section 10 1 25 stdlib h and wchar h The initial conversion state is specified by ps The input wide string is specified indirectly by src Converts a multibyte character s to a wide character pwc according to conversion state ps See also motowc in Section 10 1 25 stdlib h and wchar h Converts a wide character wc to a multi byte character according to conversion state ps and stores the multi byte character in s Returns the wide character corresponding to character c Returns WEOF on error Returns the multi byte character corresponding to the wide character c The returned multi byte character is represented as one byte Returns EOF on error Inspects up to n bytes from the string s to see if those characters represent valid multibyte characters relative to the conversion state held in ps Most functions in wct ype h represent the wide character variant of functions declared in ct ype h and are discussed in Section 10 1 4 ctype h and wctype h In addition this header file provides extensible locale specific functions and wide character classification 504 Libraries wctype property Constructs a value of type wct ype_t that describes a class of wide characters iswctype wc desc identified by the string property If property identifies a valid class of wide chara
212. conversions The following functions convert the initial portion of a string s to a double int long int and long long int value respectively double atof s int atoi s long atol s long long atoll s The following functions convert the initial portion of the string s to a float double and long double value respectively endp will point to the first character not used by the conversion stdlib h wehar h float strtof s endp float westof s endp double strtod s endp double wcestod s endp long double strtold s endp long double wcstold s endp The following functions convert the initial portion of the string s to a long long long unsigned long and unsigned long long respectively Base specifies the radix endp will point to the first character not used by the conversion 496 stdlib h wcehar h Libraries long strtol s endp base long long strtoll s endp base unsigned long strtoul s endp base unsigned long long strtoull s endp base long wcstol s endp base long long westoll s endp base unsigned long wcestoul s endp base unsigned long long wcstoull s endp base Random number generation rand Returns a pseudo random integer in the range 0 to RAND_MAX srand seed Same as rand but uses seed for a new sequence of pseudo random numbers Memory management malloc size calloc nobj size free ptr realloc ptr si
213. cord The hexadecimal file always ends with the following end of file record 00000001FF _ checksum _ type _ offset _ length 12 3 Motorola S Record Format To generate a Motorola S record output file specify the Control program option format SREC Optionally specify the address size with Control program option address size By default the linker produces output in Motorola S record format with three types of S records 4 byte addresses SO S3 and S7 Depending on the size of addresses you can force other types of S records They have the following layout SO record so length 0000 comment checksum A linker generated S record file starts with an SO record with the following contents lkpope S00800006C6B707063DD The SO record is a comment record and does not contain relevant information for program execution where So is acomment record and does not contain relevant information for program execution length represents the number of bytes in the record not including the record type and length byte This value occupies one byte two hexadecimal digits comment contains the name of the linker checksum is the record checksum The linker computes the checksum by first adding the binary representation of the bytes following the record type starting with the length byte to just before the checksum Then the one s complement is calculated of this sum The least significant byte of
214. cro definition is evaluated before the definition takes place Right hand side evaluation depends on the assignment operator Evaluate the macro at the moment it is used Evaluate the replacement text before defining the macro Subsequent assignments will inherit the evaluation behavior from the previous assignment If there is none then is the same as The default value for any macro is taken from the environment Macro definitions inside the makefile overrule environment variables Macro definitions on the amk command line will be evaluated first and overrule definitions inside the makefile 166 Using the Utilities Predefined macros Macro Description This macro translates to a dollar sign Thus you can use in the makefile to represent a single The name of the current target When a rule has multiple targets then it is the name of the target that caused the rule commands to be run The basename or stem of the current target The stem is either provided via a static pattern rule or is calculated by removing all characters found after and including the last dot in the current target name If the target name is test c then the stem is test if the target was not created via a static pattern rule lt The name of the first prerequisite MAKE The amk path name quoted if necessary Optionally followed by the options n and S ORIGIN The name of the directory whe
215. ct the output files are available in a subdirectory of your project directory depending on the active configuration you have set in the C C Build Settings page of the Project Properties for dialog Building a project under Eclipse You have several ways of building your project 110 Using the C Compiler Build Selected File s m This compiles and assembles the selected file s without calling the linker 1 In the C C Projects view select the files you want to compile 2 Right click in the C C Projects view and select Build Selected File s Build Individual Project To build individual projects incrementally select Project Build project Rebuild Project This builds every file in the project whether or not a file has been modified since the last build A rebuild is a clean followed by a build 1 Select Project Clean 2 Enable the option Start a build immediately and click OK Build Automatically This performs a build of all projects whenever any project file is saved such as your makefile This way of building is not recommended for C C development but to enable this feature select Project Build Automatically and ensure there is a check mark beside the Build Automatically menu item In order for this option to work you must also enable option Build on resource save Auto build on the Behaviour tab of the C C Build page of the Project Properties for dialog See also Chapt
216. cters according to the LC_TYPE category see Section 10 1 15 ocale h of the current locale a non zero value is returned that can be used as an argument in the iswctype function Tests whether the wide character wc is a member of the class represented by wctype_t desc Returns a non zero value if tested true Function Equivalent to locale specific test iswalnum wc iswctype wc wctype alnum iswalpha wc iswctype wc wctype alpha iswentrl wc iswctype wc wctype cntrl iswdigit wc iswctype wc wctype digit iswgraph wc iswctype wc wctype graph iswlower wc iswctype wc wctype lower iswprint wc iswctype wc wctype print iswpunct wc iswctype wc wctype punct iswspace wc iswctype wc wctype Space iswupper wc iswctype wc wctype upper iswxditig wc wcetrans property towctrans wc desc Function towlower wc towupper wc iswctype wc wctype xdigit Constructs a value of type wct ype_t that describes a mapping between wide characters identified by the string property If property identifies a valid mapping of wide characters according to the LC_TYPE category see Section 10 1 15 locale h of the current locale a non zero value is returned that can be used as an argument in the towctrans function Transforms wide character wc into another wide character described by desc Equivalent to locale specific transformatio
217. ctive will be generated for each symbol ELF labels in the section are used to determine the start of a directive ROM sections are represented with db dh dw dd kind of directives depending on the size of the data RAM sections are represented with ds directives with a size operand depending on the data size This can be either the size specified in the ELF symbol or the size up to the next label Code sections are dumped as disassembly With option hex no directives will be generated for ROM data sections and no disassembly dump will be done for code sections Instead ROM data sections and code sections are dumped as hexadecimal code with ASCII translation RAM sections will be represented with only a start address and a size indicator Example hldump850 F2 section zconst23 hello 2 str hello elf SE OeHSTER Section dump section zconst23 hello S 2Sstr at 0x2a db 48 65 6c 6c 6f 20 25 73 21 0a 00 Hello Ss endsec hldump850 F2 section zconst23 hello 2 str hex hello elf SSSSseS gt Section dump lt SS section 7 zconst23 hello 2Sstr 0000002a 48 65 6c 6c 6f 20 25 73 21 Oa 00 Hello s Related information Section 6 4 2 HLL Dump Output Format 447 TASKING VX toolset for RH850 User Guide HLL object dumper option option file f Command line syntax option file file f file Description This option is primarily intended for command line use
218. d Operands are replaced with labels depending on the option symbols hll asm none The contents of data sections are represented by directives A new directive will be generated for each symbol ELF labels in the section are used to determine the start of a directive ROM sections are represented with db dh dw dd kind of directives depending on the size of the data RAM sections are represented with ds directives with a size operand depending on the data size This can be either the size specified in the ELF symbol or the size up to the next label With option hex no directives will be generated for ROM data sections and no disassembly dump will be done for code sections Instead a hex dump is done with the following format AAAAAAAA HO H1 H2 H3 H4 H5 H6 H7 H8 H9 HA HB HC HD HE HF RRRRRRRRRRRRRRRR where A Address 8 digits 32 bit Hx Hex contents one byte 16 bytes max R ASCII representation 16 characters max For example section 7 zconst23 hello 2 str 0000002a 48 65 6c 6c 6f 20 25 73 21 Oa 00 Hello s With option hex RAM sections will be represented with only a start address and a size indicator AAAAAAAA Space 24 bytes With option disassembly intermix you can intermix the disassembly with HLL source code 179 TASKING VX toolset for RH850 User Guide HLL symbol table This part contains a symbol listing based on the HLL DWARF symbols found in the object file s The symbols are s
219. d list file 1st error messages ers The following information is described The assembly process How to call the assembler and how to use its options An extensive list of all options and their descriptions is included in Section 8 3 Assembler Options The various assembler optimizations How to generate a list file Types of assembler messages 4 1 Assembly Process The assembler generates relocatable output files with the extension o These files serve as input for the linker Phases of the assembly process Parsing of the source file preprocessing of assembler directives and checking of the syntax of instructions e Instruction grouping and reordering e Optimization instruction size and generic instructions e Generation of the relocatable object file and optionally a list file The assembler integrates file inclusion and macro facilities See Section 2 10 Macro Operations for more information 127 TASKING VX toolset for RH850 User Guide 4 2 Calling the Assembler The TASKING VX toolset for RH850 under Eclipse can use the internal builder default or the TASKING makefile generator external builder to build your entire project After you have built your project the output files are available in a subdirectory of your project directory depending on the active configuration you have set in the C C Build Settings page of the Project Properties for dialog Building a project
220. d by the expression value Elements are placed in the section in the order in which they appear in the struct body without any gaps between them Multi MAU elements are split into MAUs according to the endianness of the 578 Linker Script Language LSL target A struct section is read only and it cannot be copied to RAM at startup using the copy group attribute No default alignment is set For example struct mystruct 0x1234 i 23 addressof mem foo z Ay addressof mem foo sizeof mem foo i a checksum crc32w addressof mem foo addressof mem foo sizeof mem foo 4 13 8 4 Creating Symbols You can tell the linker to create symbols before locating by putting assignments in the section layout definition Symbol names are represented by double quoted strings Any string is allowed but object files may not support all characters for symbol names You can use two different assignment operators With the simple assignment operator the symbol is created unconditionally With the operator the symbol is only created if it already exists as an undefined reference in an object file The expression that represents the value to assign to the symbol may contain references to other symbols If such a referred symbol is a special section symbol creation of the symbol in the left hand side of the assignment will cause creation of the special section section_layout wile cp 1c ub table when
221. d checks in the preprocessor category 3 7 2 C Code Checking MISRA C The C programming language is a standard for high level language programming in embedded systems yet it is considered somewhat unsuitable for programming safety related applications Through enhanced code checking and strict enforcement of best practice programming rules TASKING MISRA C code checking helps you to produce more robust code MISRA C specifies a subset of the C programming language which is intended to be suitable for embedded automotive systems It consists of a set of rules defined in MISRA C 2004 Guidelines for the Use of the C Language in Critical Systems Motor Industry Research Association MIRA 2004 The compiler also supports MISRA C 1998 the first version of MISRA C and MISRA C 2012 the latest version of MISRA C You can select the version with the following C compiler option misrac version 1998 misrac version 2004 misrac version 2012 In your C source files you can check against the MISRA C version used For example if _ MISRAC_VERSION__ 1998 elif __MISRAC_VERSION__ 2004 122 Using the C Compiler Helif __MISRAC_VERSION__ 2012 fendif For a complete overview of all MISRA C rules see Chapter 16 MISRA C Rules Implementation issues The MISRA C implementation in the compiler supports nearly all rules Only a few rules are not supported because they address documentation run time behavior or
222. d free physical memory within the whole system while locating The section layout definition optional The optional section layout definition enables you to exactly control where input sections are located Features are provided such as the ability to place sections at a given load address or run time address to place sections in a given order and to overlay code and or data sections Which object files sections constitute the task that will run on a given core is specified on the command line when you invoke the linker The linker will link and locate all sections of all tasks simultaneously From the section layout definition the linker can deduce where a given section may be located in memory 534 Linker Script Language LSL form the board specification the linker can deduce which physical memory is still available while locating the section See Section 13 8 Semantics of the Section Layout Definition for more information on how to locate a section at a specific place in memory Skeleton of a Linker Script File architecture architecture_name Specification core architecture derivative derivative_name Derivative definition processor processor_name Processor definition memory and or bus definitions section_layout space_name section placement statements 13 2 Syntax of the Linker Script Language This section describes what the LSL language looks like An LSL document is s
223. d in the RH850 Compiler ABI Specification Renesas Group For a complete description of the ELF and DWARF formats please refer to the Tool Interface Standard TIS 12 2 Intel Hex Record Format Intel Hex records describe the hexadecimal object file format for 8 bit 16 bit and 32 bit microprocessors The hexadecimal object file is an ASCII representation of an absolute binary object file There are six different types of records Data Record 8 16 or 32 bit formats End of File Record 8 16 or 32 bit formats Extended Segment Address Record 16 or 32 bit formats Start Segment Address Record 16 or 32 bit formats Extended Linear Address Record 32 bit format only Start Linear Address Record 32 bit format only To generate an Intel Hex output file specify the Control program option format IHEX Optionally specify the address size with Control program option address size By default the linker generates records in the 32 bit format 4 byte addresses General Record Format In the output file the record format is length offset type content checksum where is the record header 527 TASKING VX toolset for RH850 User Guide length is the record length which specifies the number of bytes of the content field This value occupies one byte two hexadecimal digits The linker outputs records of 255 bytes 32 hexadecimal digits or less that is length is never greater than OxFF
224. d in the environment variable LIB850 3 When the linker did not find the library it tries the default 1ib directory relative to the installation directory or a processor specific sub directory User library If you use your own library the linker searches the library in the current directory only 5 3 2 How the Linker Extracts Objects from Libraries A library built with the TASKING archiver ar850 always contains an index part at the beginning of the library The linker scans this index while searching for unresolved externals However to keep the index as small as possible only the defined symbols of the library members are recorded in this area When the linker finds a symbol that matches an unresolved external the corresponding object file is extracted from the library and is processed After processing the object file the remaining library index is searched If after a complete search of the library unresolved externals are introduced the library index will be scanned again After all files and libraries are processed and there are still unresolved externals 140 Using the Linker and you did not specify the linker option no rescan all libraries are rescanned again This way you do not have to worry about the library order on the command line and the order of the object files in the libraries However this rescanning does not work for weak symbols If you use a weak symbol construction like printf in an object file or
225. d long option names Options can have both short and long names Short option names always begin with a single minus character long option names always begin with two minus characters You can abbreviate long option names as long as it forms a unique name You can mix short and long option names on the command line 458 Tool Options Expire cache utility option access a Command line syntax access a Description Use the last access time instead of the last modification time to determine which files to delete Example xpire850 access days 7 installation dir mproject cache Related information 459 TASKING VX toolset for RH850 User Guide Expire cache utility option days d Command line syntax days n dn Description Remove all files older than n days from the cache Example To remove all files older than seven days enter xpire850 days 7 installation dir mproject cache Related information 460 Tool Options Expire cache utility option diag Command line syntax diag format all msg msg You can set the following output formats html HTML output rtf Rich Text Format text ASCII text Default format text Description With this option you can ask for an extended description of error messages in the format you choose The output is directed to stdout normally your screen and in the format you specify You can specify the following
226. d not be defined elsewhere and defined_symbol should be defined with static storage duration not extern or automatic clear noclear on off default restore By default uninitialized global or static variables are cleared to zero on startup With pragma noclear this step is skipped Pragma clear resumes normal behavior This pragma applies to constant data as well as non constant data See C compiler option no clear code_init on off default restore This pragma sets the init section attribute for t ext sections Use this pragma when you want to place code in RAM instead of in ROM As a result the startup code will copy code from ROM to RAM from where the code will be executed const_init on off default restore With this pragma const variables are allocated in an initialized data section data or in a cleared uninitialized data section bss Use this pragma when you want to place const data in RAM instead of in ROM For example after 18 C Language pragma const_init const int i const int j 2 pragma const_init restore variable i is placed ina bss section instead of ina const section and variable j is placed in a data section instead of ina const section const_data_memory space default restore Controls the allocation of constant data objects Same as C compiler option const data memory data_memory space default restore Controls the allocatio
227. dations for secure coding in the C programming language The goal of these rules and recommendations is to eliminate insecure coding practices and undefined behaviors that can lead to exploitable vulnerabilities The application of the secure coding standard will lead to higher quality systems that are robust and more resistant to attack This chapter contains an overview of the CERT C Secure Coding Standard recommendations and rules that are supported by the TASKING VX toolset For details see the CERT C Secure Coding Standard web site For general information about CERT secure coding see www cert org secure coding Identifiers Each rule and recommendation is given a unique identifier These identifiers consist of three parts a three letter mnemonic representing the section of the standard a two digit numeric value in the range of 00 99 e the letter C indicates that this is a C language guideline The three letter mnemonic is used to group similar coding practices and to indicate to which category a coding practice belongs The numeric value is used to give each coding practice a unique identifier Numeric values in the range of 00 29 are reserved for recommendations while values in the range of 30 99 are reserved for rules C compiler invocation With the C compiler option cert you can enable one or more checks for the CERT C Secure Coding Standard recommendations rules With diag cert you can see a list of the available checks
228. ddress ranges the end address is not part of the range 13 2 8 Architecture Definition architecture_definition architecture arch_name lt parameter_list y gt olt lt extends arch_name lt argument_list jolt gt lt arch_spec gt O12 e An architecture_definition defines a core architecture with the given arch_name as a unique name Atleast one space_def and at least one bus_def have to be present in an architecture_definition e An architecture_definition that uses the extends construct defines an architecture that inherits all elements of the architecture defined by the second arch_name The parent architecture must be defined in the LSL file as well gt 0 parameter_list parameter lt parameter gt O 1 parameter IDENTIFIER lt expr gt gt 0 argument_list expr lt expr gt 542 Linker Script Language LSL bus_def space_def endianness_def arch_spec 011 gt 0 l lt space_descr gt space _ def space space_name lt tag_attr gt A space_def defines an address space with the given space_name as a unique name within an architecture space _ descr space_property section_definition no space ref vector_table_statement reserved_range space_property id number as used in object mau expr align expr page_size expr lt range lt range p gt 0 gt elt page direction direction stack_def heap_def copy_table
229. derscore If you want to use linker labels in your C source for sections that have a dot in the name you have to replace all dots by underscores Example refer to a label with section name with dots from C Suppose the C source file foo c contains the following int myfunc int a some source lines return 1 This results in a section with the name text foo myfunc In the following source file main c all dots of the section name are replaced by underscores include lt stdio h gt extern void _lc_ub__text_foo_myfunc void main void printf The function myfunc is located at p n amp _lc_ub__text_foo_myfunc Example refer to the stack Suppose in an LSL file a stack section is defined with the name stack with the keyword stack You can refer to the begin and end of the stack from your C source as follows include lt stdio h gt extern char _lc_ub_stack extern char _lc_ue_stack void main printf Size of stack is d n l e stack _lc_ub_stack J stack grows from low to high From assembly you can refer to the end of the stack with 157 TASKING VX toolset for RH850 User Guide extern _ lc_ue_stack end of stack 5 9 Generating a Map File The map file is an additional output file that contains information about the location of sections and symbols You can customize the type of information that should be included in the map file To ge
230. dialog appears 2 Inthe left pane expand C C Build and select Settings In the right pane the Settings appear 3 On the Tool Settings tab select C Compiler MISRA C 4 Select the MISRA C version 1998 2004 or 2012 123 TASKING VX toolset for RH850 User Guide 5 Inthe MISRA C checking box select a MISRA C configuration Select a predefined configuration for conformance with the required rules in the MISRA C guidelines 6 Optional In the Custom 1998 Custom 2004 or Custom 2012 entry specify the individual rules On the command line you can use the option misrac c850 misrac all number number 3 8 C Compiler Error Messages The C compiler reports the following types of error messages in the Problems view of Eclipse F Fatal errors After a fatal error the compiler immediately aborts compilation E Errors Errors are reported but the compiler continues compilation No output files are produced unless you have set the C compiler option keep output files the resulting output file may be incomplete W Warnings Warning messages do not result into an erroneous assembly output file They are meant to draw your attention to assumptions of the compiler for a situation which may not be correct You can control warnings in the C C Build Settings Tool Settings C Compiler Diagnostics page of the Project Properties for menu C compiler option no warnings I Information Informa
231. div_t which have the same types Multibyte wide character and string conversions mblen s n mbtowc pwc s Nn wctomb s wc mbostowcs pwcs s n wcstombs s pwcs n Determines the number of bytes in the multi byte character pointed to by s At most n characters will be examined See also mbrien in Section 10 1 29 wchar h Converts the multi byte character in s to a wide character code and stores it in pwc At most n characters will be examined Converts the wide character wc into a multi byte representation and stores it in the string pointed to by s At most MB_CUR_MAX characters are stored Converts a sequence of multi byte characters in the string pointed to by s into a sequence of wide characters and stores at most n wide characters into the array pointed to by pwes See also mbsrtowcs in Section 10 1 29 wchar h Converts a sequence of wide characters in the array pointed to by pwes into multi byte characters and stores at most n multi byte characters into the string pointed to by s See also wcsrtowmb in Section 10 1 29 wchar h 10 1 26 string h and wchar h This header file provides numerous functions for manipulating strings By convention strings in C are arrays of characters with a terminating null character Most functions therefore take arguments of type 498 Libraries char However many functions have also parallel wide character functions which take arguments of type wchar_t T
232. download of program Program flash en downloading V Reset target 7 Goto main V Break on exit Reduce target state polling Flash settings Filter matched 2 of 2 items Initial download of program If enabled the target application is downloaded onto the target If disabled only the debug information in the file is loaded which may be useful when the application has already been downloaded or flashed earlier If downloading fails the debugger will shut down Verify download of program If enabled the debugger verifies whether the code and data has been downloaded successfully This takes some extra time but may be useful if the connection to the target is unreliable Program flash when downloading If enabled also flash devices are programmed if necessary Flash programming will not work when you use a simulator Reset target If enabled the target is immediately reset after downloading has completed Goto main If enabled only the C startup code is processed when the debugger is launched The application stops executing when it reaches the first C instruction in the function main Usually you enable this option in combination with the option Reset Target Break on exit If enabled the target halts automatically when the exit function is called Reduce target state polling 185 TASKING VX toolset for RH850 User Guide If you have set a breakpoint the debugger checks the status of the target every number of
233. ds as follows HEXA NOP The VAL argument is replaced by the character A which represents the hexadecimal value 10 of the argument VAL Example Argument String Operator To generate a literal string enclosed by single quotes you must use the argument string operator in the macro definition Consider the following macro definition STR_MAC MACRO STRING DB STRING ENDM The macro is called as follows STR_MAC ABCD The macro expands as follows DB ABCD Within double quotes DEF INE directive definitions can be expanded Take care when using constructions with single quotes and double quotes to avoid inappropriate expansions Since DEF INE expansion occurs before macro substitution any DEF INE symbols are replaced first within a macro argument string DEFINE LONG short STR_MAC MACRO STRING ESSAGE I This is a LONG STRING ESSAGE I This is a LONG STRING NDM ie If the macro is called as follows STR_MAC sentence 105 TASKING VX toolset for RH850 User Guide it expands as MESSAGE I This is a LONG STRING MESSAGE I This is a short sentence Macro Local Label Override Operator If you use labels in macros the assembler normally generates another unique name for the labels such as LOCAL__M_L000001 The macro operator prevents name mangling on macro local label
234. e Description A linker script file contains vital information about the core for the locating phase of the linker A linker script file is coded in LSL and contains the following types of information e the architecture definition describes the core s hardware architecture the memory definition describes the physical memory available in the system e the section layout definition describes how to locate sections in memory With this option you specify a linker script file via the control program to the linker If you do not specify this option the linker uses a default script file You can specify the existing file target 1s1 or the name of a manually written linker script file You can use this option multiple times The linker processes the LSL files in the order in which they appear on the command line Related information Section 5 7 Controlling the Linker with a Script 392 Tool Options Control program option make target Menu entry Command line syntax make target name Description With this option you can overrule the default target name in the make dependencies generated by the options preprocess make Em and dep file The default target name is the basename of the input file with extension o Example cc850 preprocess tmak make target mytarget o test c The compiler generates dependency lines with the default target name mytarget o instead of test o Related information Con
235. e The new file name is stored in a buffer which must have room for L_tmpnam characters Returns a pointer to the temporary name The file names are created in the current directory and all start with tmp At most TMP_MAX unique file names can be generated Description clearerr stream ferror stream feof stream perror s Clears the end of file and error indicators for stream Returns a non zero value if the error indicator for stream is set Returns a non zero value if the end of file indicator for stream is set Prints s and the error message belonging to the integer errno See Section 10 1 6 errno h 10 1 25 stdlib h and wchar h The header file st dlib h contains general utility functions which fall into the following categories Some have parallel wide character declared in wchar h 495 TASKING VX toolset for RH850 User Guide e Numeric conversions e Random number generation e Memory management Environment communication e Searching and sorting e Integer arithmetic e Multibyte wide character and string conversions Macros EXIT_SUCCES Predefined exit codes that can be used in the exit function EXIT_FAILURE 1 RAND_MAX Highest number that can be returned by the rand srand function 32767 B_CUR_MAX 1 Maximum number of bytes in a multibyte character for the extended character set specified by the current locale category LC_CTYPE see Section 10 1 15 ocale h Numeric
236. e If the memory has multiple parallel mappings towards the current address space you can select a specific named mapping in the 573 TASKING VX toolset for RH850 User Guide memory by appending map_name to the memory specifier The linker then maps memory offsets only through that mapping so the address es where the sections in the group are located are determined by that memory mapping group run_addr mem CPU1 A cached e The load_addr keyword changes the meaning of the section selection in the group the linker selects the load time ROM copy of the named section s instead of the regular sections Just like run_addr you can specify an absolute address or an address range group contiguous load_addr select mydata select ROM copy of mydata mydata The load time and run time addresses of a group cannot be set at the same time If the load time property is set for a group the group only restricts the positioning at load time of the group s sections It is not possible to set the address of a group that has a not unrestricted parent group The properties of the load time and run time start address are Atrun time before using an element in an overlay group the application copies the sections from their load location to their run time location but only if these two addresses are different For non overlay sections this happens at program start up The start addresses cannot be set to absolute value
237. e This product provides a measure that can be used in prioritizing the application of the rules These products range from 1 to 27 Rules and recommendations with a priority in the range of 1 4 are level 3 rules low severity unlikely expensive to repair flaws 6 9 are level 2 medium severity probable medium cost to repair flaws and 12 27 are level 1 high severity likely inexpensive to repair flaws The TASKING compiler checks most of the level 1 and some of the level 2 CERT C recommendations rules 121 TASKING VX toolset for RH850 User Guide For a complete overview of the supported CERT C recommendations rules by the TASKING compiler see Chapter 15 CERT C Secure Coding Standard To apply CERT C code checking to your application 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and select Settings In the right pane the Settings appear 3 On the Tool Settings tab select C Compiler CERT C Secure Coding 4 Make a selection from the CERT C secure code checking list 5 If you selected Custom expand the Custom CERT C entry and enable one or more individual recommendations rules On the command line you can use the option cert c850 cert all name name With diag cert you can see a list of the available checks or you can use a three letter mnemonic to list only the checks in a particular category For example diag pre lists all supporte
238. e begin and end of the stack ___ 1c _ub_stack_name for the begin of the stack and ___1e_ue_stack_name for the end of the stack The linker allocates space for the stack when there is a reference to either of the labels See also the stack keyword in Section 13 4 3 Defining Address Spaces Heap The keyword heap tells the linker to reserve a dynamic memory range for the malloc function Each heap section has a name With the keyword size you can change the size for the heap If the size is not specified the linker uses the size given by the min_size argument as defined for the heap in the architecture definition Normally the linker automatically tries to maximize the size unless you specified the keyword fixed group 575 TASKING VX toolset for RH850 User Guide heap myheap size 2k The linker creates two labels to mark the begin and end of the heap __1 _ub_heap_name for the begin of the heap and __ 1c_ue_heap_name for the end of the heap The linker allocates space for the heap when a reference to either of the section labels exists in one of the input object files Reserved section e The keyword reserved tells the linker to create an area or section of a given size The linker will not locate any other sections in the memory occupied by a reserved section with some exceptions Each reserved section has a name With the keyword size you can specify a size for a given reserved area or section gro
239. e default include directory 228 Tool Options The compiler now looks for the file myinc h in the directory where test c is located If the file is not there the compiler searches in the directory myinclude If it was still not found the compiler searches in the environment variable and then in the default include directory Related information C compiler option include file Include file at the start of a compilation C compiler option no stdinc Skip standard include files directory 229 TASKING VX toolset for RH850 User Guide C compiler option include file H Menu eniry 1 Select C Compiler Preprocessing The Pre include files box shows the files that are currently included before the compilation starts 2 To define a new file click on the Add button in the Pre include files box 3 Type the full path and file name or select a file Use the Edit and Delete button to change a file name or to remove a file from the list Command line syntax include file file Hfile Description With this option you include one or more extra files at the beginning of each C source file before other includes This is the same as specifying include file at the beginning of each of your C sources Example c850 include file stdio h testl c test2 c The file st dio h is included at the beginning of both test1 c andtest2 c Related information C compiler option include directory Add directory to include
240. e dependencies in a file C compiler option make target Specify target name for Em output 253 TASKING VX toolset for RH850 User Guide C compiler option rename sections R Menu eniry 1 Select C Compiler Allocation The Rename sections box shows the sections that are currently renamed 2 To rename a section click on the Add button in the Rename sections box 3 Type the rename rule in the format type format or format for example dat a module _ attrib Use the Edit and Delete button to change a section renaming or to remove an entry from the list Command line syntax rename sections type attribute format_string R type attribute format_string Default section name type module name Description By default the compiler extends the standard ELF section names with the module name and the name of the symbol that is allocated in the section You can use this option to create your own unique section names to ease selection in linker script files for locating With the type and attribute you can select which sections will be renamed When the type and attributes of a section match the section name will get the specified format string as suffix The following section types are allowed text data bss const sdata23 sbss23 sconst23 sdata sbss sconst zdata23 zbss23 zconst23 zdata zbss zconst and all You cannot use the all section type in combinat
241. e expression is calculated as a double word 64 bits Example _DW LSW 0x123456789abcdef stores OxEFCDAB89 DW MSW 0x123456789a stores 0x12000000 MSB expression Returns the most significant byte of the result of the expression The result of the expression is calculated as 16 bits MSH expression Returns the most significant half word bits 16 31 of the result of the absolute expression The result of the expression is calculated as a word 32 bits MSH expression is equivalent to expression gt gt 16 amp Oxffff MSW expression Returns the most significant word of the result of the expression The result of the expression is calculated as a double word 64 bits PCREL22 expression Forces 22 bit PC relative addressing of an instruction The expression is treated as a 22 bit offset 53 TASKING VX toolset for RH850 User Guide PCREL32 expression Forces 32 bit PC relative addressing of an instruction The expression is treated as a 32 bit offset STRCAT string1 string2 Concatenates string and string2 and returns them as a single string You must enclose string and string2 either with single quotes or with double quotes Example DEFINE ID STRCAT TAS KING ID TASKING STRCMP string1 string2 Compares string with string2 by comparing the characters in the string The function returns the difference between the characters at the first position where they
242. e following dialog appears 144 Using the Linker New C Project seco RH850 Project Settings Select a processor to continue Processor selection Core Architecture E RH850 FIH oes RH850 FLL Expand Selected RH850 P1x F RH850 R1x Collapse All v Actions _ Add startup file s to the project Add linker script file to the project iS 3 Enable the option Add linker script file to the project and click Finish Eclipse creates your project and the file project_name 1s1 in the project directory If you do not add the linker script file here you can always add it later with File New Linker Script File LSL To change the Linker Script File in Eclipse There are two ways of changing the LSL file in Eclipse e You can change the LSL file directly in an editor 1 Double click on the file project_name 1s1 The project LSL file opens in the editor area 145 TASKING VX toolset for RH850 User Guide ks myproject lsl 53 FUTTTLTLTTTTTTT TATA TATA AAA AAA ATA AAT ATA Ts File template 1sl Version template 1lsl 1 1 14 06 03 Description Eclipse project linker script file 1 Copyright 2013 2014 Altium BV IIILILLLLLLLLLLLLLLLLLLLLILLLLLLLLLLLLLLLILLLLLLLLELLLLLA if defined __PROC_V850E3__ include v850e3 1ls1 derivative my_v85 e3 extends v85 e3 i else include lt cpu lsl gt endif 2 You can edit
243. e following functions are only available for ISO C90 copysignf float f float s Copies the sign of the second argument s to the value of the first argument fand returns the result copysign double d double s Copies the sign of the second argument s to the value of the first argument d and returns the result isinff float f Test the variable fon being an infinite IEEE 754 value isinf double d Test the variable d on being an infinite IEEE 754 value isfinitef float f Test the variable fon being a finite IEEE 754 value isfinite double d Test the variable d on being a finite IEEE 754 value isnanf float f Test the variable fon being NaN Not a Number IEEE 754 isnan double d Test the variable d on being NaN Not a Number IEEE 754 scalbf float f int p Returns f 2 p for integral values without computing 2 N scalb double d int p Returns d 2 p for integral values without computing 2 N See also scalbn in Section 10 1 17 math h and tgmath h 10 1 11 inttypes h and stdint h The header files stdint h and inttypes h provide additional declarations for integer types and have various characteristics The stdint h header file contains basic definitions of integer types of certain sizes and corresponding sets of macros This header file clearly refers to the corresponding sections in the ISO C99 standard The inttypes h header file includes st dint h and adds portable formatting and conversion functions
244. e ob 33 0 just before obj2 o ar850 b obj3 0 mylib a obj2 0 The library my1ib a after these two invocations now looks like obj3 0 ob j2 0 objl o Related information Archiver option print t Print library contents 430 Tool Options Archiver option option file f Command line syntax option file file f file Description Instead of typing all options on the command line you can create an option file which contains all options and flags you want to specify With this option you specify the option file to the archiver Use an option file when the command line would exceed the limits of the operating system or just to store options and save typing You can specify the option option file f multiple times If you use instead of a filename it means that the options are read from stdin Format of an option file Multiple arguments on one line in the option file are allowed To include whitespace in an argument surround the argument with single or double quotes If you want to use single quotes as part of the argument surround the argument by double quotes and vise versa This has a single quote embedded This has a double quote embedded This has a double quote and a single quote embedded When a text line reaches its length limit use a to continue the line Whitespace between quotes is preserved This is a continuation line gt This is a cont
245. e of the location counter at the start of the directive processing You cannot initialize a block of memory in sections with prefix sbss or bss In those sections the assembler issues a warning and only reserves space just as with DS The BSB BSH BSW and BSD directives are variants of the BS directive The difference is the number of bits that are reserved for the count argument Directive Reserved bits BSB 8 BSH 16 BSW 32 BSD 64 Example The BSB directive is for example useful to define and initialize an array that is only partially filled section data DB 84 101 115 116 initialize 4 bytes BSB 96 0xFF reserve another 96 bytes initialized with OxFF endsec 60 Assembly Language Related Information DB Define Memory DS Define Storage 61 TASKING VX toolset for RH850 User Guide CALLS Syntax CALLS caller callee or CALLS caller stack_usage Description The first syntax creates a call graph reference between caller and callee The linker needs this information to build a call graph caller and callee are names of functions The second syntax specifies stack information When callee is an empty name this means we define the stack usage of the function itself The value specified is the stack usage in bytes at the time of the call including the return address A function can use multiple stacks This information is used
246. e once the exception status has been cleared There are intrinsic functions available to enable disable interrupts Pointers to an interrupt function You must use the type qualifier __i sr to create a pointer to an interrupt function This prevents that an interrupt function is accidentally called directly from an application through a function pointer Examples extern void isr void __attribute__ db extern void f void void fp_a void void fp_b void y void fp_c void void _ isr fp_isr_a void void _ isr fp_isr_b void 34 C Language int main void fp_a f ok non interrupt function non interrupt pointer fp_isr_a isr ok interrupt function interrupt pointer fp_b isr warning interrupt function non interrupt pointer fo isr D f ok non interrupt function interrupt pointer fp_c fp_isr_a warning interrupt pointer assigned to non interrupt pointer irsr i error cannot call an interrupt function fp_isr_a error cannot call an interrupt function return 0 Protect interrupt functions Interrupt functions may be removed from your application by the linker when they are not referenced They will reappear once the vector initialization code references the interrupt function Alternatively it is possible to use the protect attribute void isr void __attribute__ interrupt protect 1 10 5 Intrinsic Fu
247. e that the protect attribute will not prevent the compiler from removing an unused variable function see the used symbol attribute 15 TASKING VX toolset for RH850 User Guide pure You can use _attribute_ pure to specify that a function has no side effects although it may read global data Such pure functions can be subject to common subexpression elimination and loop optimization See also attribute const section section_name You can use ___attribute__ section name to specify that a function must appear in the object file in a particular section For example extern void foobar void __attribute__ section bar puts the function foobar in the section named bar See also pragma section used You can use __attribute__ used to prevent an unused symbol from being removed by both the compiler and the linker Example static const char copyright __attribute__ used Copyright 2012 Altium BV When there is no C code referring to the copyright variable the compiler will normally remove it The ___attribute__ used symbol attribute prevents this Because the linker should also not remove this symbol __ at tribute__ used implies__ att ribute__ protect unused You can use __attribute__ unused to specify that a variable or function is possibly unused The compiler will not issue warning messages about unused variables or functions weak Youcanuse__attribute__ weak to s
248. e the compiler generates software floating point instructions for single and double precision floating point Related information C compiler option fp model Floating point execution model 225 TASKING VX toolset for RH850 User Guide C compiler option global type checking Menu eniry 1 Select C Compiler Diagnostics 2 Enable the option Perform global type checking on C code Command line syntax global type checking Description The C compiler already performs type checking within each module Use this option when you want the linker to perform type checking between modules Related information 226 Tool Options C compiler option help Menu eniry Command line syntax help item You can specify the following arguments intrinsics i Show the list of intrinsic functions options o Show extended option descriptions pragmas p Show the list of supported pragmas typedefs t Show the list of predefined typedefs Description Displays an overview of all command line options With an argument you can specify which extended information is shown Example The following invocations all display a list of the available command line options c850 c850 help c850 The following invocation displays a list of the available pragmas c850 help pragmas Related information 227 TASKING VX toolset for RH850 User Guide C compiler option include directory l Menu eniry 1 Select C
249. e the compiler inserts the assembly body at the place the function is called you can create your own intrinsic function See Section 1 10 5 Intrinsic Functions 1 10 3 Floating Point Unit Support __fpu __nofpu By default hardware floating point instructions are supported if a floating point unit FPU is available on your selected processor core With the C compiler option fp model soft you can turn FPU support off With the function qualifiers ___fpu and ___nofpu you can overrule this behavior for a specific function Example __nofpu void no_fpufunc void hardware floating point instructions are not used 28 C Language __fpu void fpu_func void hardware floating point instructions can be used When a function has an explicit __ fu qualifier and option fpu none is used the compiler issues an error 1 10 4 Interrupt Functions By default the C compiler generates normal non interrupt functions To create an interrupt function the C compiler supports a number of function attributes They are described in the following sections For more information on interrupts see chapter Exceptions and Interrupts in the Architecture Specification Defining an interrupt function You can use the attribute interrupt vector to declare a function as an interrupt function You can use the __attribute__ keyword for this or you can use __interrupt vector With the optional vector argument you can bi
250. e used The Standard Library input output functions shall not be used The atof atoi atol and atoll functions of lt stdlib h gt shall not be used The library functions abort exit getenv and system of lt stdlib h gt shall not be used The library functions bsearch and qsort of lt stdlib h gt shall not be used The Standard Library time and date functions shall not be used The standard header file lt t gmath h gt shall not be used The exception handling features of lt fenv h gt should not be used All resources obtained dynamically by means of Standard Library functions shall be explicitly released 611 TASKING VX toolset for RH850 User Guide x 612 22 2 22 3 22 4 22 5 22 6 M SEE A block of memory shall only be freed if it was allocated by means of a Standard Library function The same file shall not be open for read and write access at the same time on different streams There shall be no attempt to write to a stream which has been opened as read only A pointer to a FILE object shall not be dereferenced The value of a pointer to a FILE shall not be used after the associated stream has been closed
251. e you connect the cable to the correct port 7 4 TASKING Debug Perspective After you have launched the debugger you are either asked if the TASKING Debug perspective should be opened or it is opened automatically The Debug perspective consists of several views To open views in the Debug perspective 1 Make sure the Debug perspective is opened 189 TASKING VX toolset for RH850 User Guide 2 From the Window menu select Show View 3 Select a view from the menu or choose Other for more views By default the Debug perspective is opened with the following views J TASKING Debug myproject myproject c RH850 Eclipse IDE vx yrz oja File Edit Source Refactor Navigate Search Project Debug Window Help mi Diti m Sy E Gril Rr MAS Fi WN SH m G a ae R E A i rb Or o Quick Access E E TASKING C C S TASKING Debug Debug 22 ie Y o 0 Variables 52 _ 0 Breakpoints E at Registers 23 ERA a myproject TASKING C C Debugger 4B e 7 Group Core m 4 RH850 Simulator VB50E3 6 19 14 11 45 AM Su y e ame Value 4 g Thread RH850 Suspended 7 amenn Name Value Usage 1 main0 myproject c 3 0x00000834 laale l i o0 2_STARTO 0x0000001e a o0 2 o0 3 Oxfedee180 4 Oxfedec000 4 m 4 4 A myproject c 53 Gi lid Disassembly 23 _ B Outline a include lt stdio h gt Address 0100000834 int main void P int main void a w 0x00000834 0780 0821
252. ece ease ease HAEE AOTRE 469 9 5 Meader Fles casei sau santgenesactauecasacdeeentarsauvnateqanesadbtwrcsaas dncneiactucnanducas a 470 9 6 Parallel Build csacs taeectcgenhonene phe bknuas nre EERE A aE AR E 470 TWO ENDTANOS ciae aaner aaa e E E E OE A E EOST E S 473 10 Te EI raty FUNCHONS vis cadccs ncncnsentancednnnscmnsnagdandnntnsamaingaiiadnesiniineaneheaditaeneas EEO 474 HOT Tes ASSO Nts h reeniros b n OE n a E Ea 474 101 2 COMPIOXEN oasec ce ess eee aw ecg cat aae a ngs eta duende E EE AEEA i aAa 474 MOET Sesta Maea ed shaadi a EEE E E eee eae ee eee 476 10 1 4 ctype h and wetype h 2 2 eee ce cece eee eee eee eee eee ree eens ee eee ee eseea ners naene 476 MO ESADO Meana a S ane iatanecatuaatanasasan gediaasatansnasenieensanseatn 477 VOTO 2 OrrnOi sais ec iaaa N a A E EE AAE E EEE 477 TWOP 7 OXCODE M arani riepa onara a EN EE A A E R AEO i 478 TOMB ACI P o T A T E A T 478 TASKING VX toolset for RH850 User Guide TO AOS nV E seta sinc dea dedeetehenesceusiaint Maiabed alae E wacatadecs indie sedene es 478 TOA atOs ie re tA AIE SPE EEEE cues ateuann eogie E T EE EET 479 10 1 11 intypes rand stdint Merisor anier e rE 479 MQ e a 2 VON e E cern A E E E E E 480 10143 ISO646 IN sii oe tit iene es aE ete et oe ee 480 TO AA IMIS A scsi adeno enuie sade ance nasnckat andanconaedenucyacdesuctanseatan saad anandennaken anuienchands 481 TOTAS locale ssc cacteds vacebsnceacksasesacesetece esee E a a E a aa aai 481 10 116 mallo Mori
253. ect The next example shows how to define a macro with arguments Note that the macro name and definition are placed between double quotes because otherwise the spaces would indicate a new option cc850 define MAX A B A gt B A B test c Related information Control program option undefine Remove preprocessor macro Control program option option file Specify an option file 370 Tool Options Control program option dep file Menu eniry Command line syntax dep file file Description With this option you tell the compiler to generate dependency lines that can be used in a Makefile In contrast to the option preprocess make the dependency information will be generated in addition to the normal output file By default the information is written to a file with extension d one for every input file When you specify a filename all dependencies will be combined in the specified file Example cc850 dep file test dep t test c The compiler compiles the file test c which results in the output file test src and generates dependency lines in the file test dep Related information Control program option preprocess make Generate dependencies for make 371 TASKING VX toolset for RH850 User Guide Control program option diag Menu eniry 1 From the Window menu select Show View Other TASKING Problems The Problems view is added to the current perspective 2
254. ect Properties for menu linker option no warnings Information Verbose information messages do not indicate an error but tell something about a process or the state of the linker To see verbose information use the linker option verbose S System errors System errors occur when internal consistency checks fail and should never occur When you still receive the system error message S6 message please report the error number and as many details as possible about the context in which the error occurred Display detailed information on diagnostics 1 From the Window menu select Show View Other TASKING Problems The Problems view is added to the current perspective 2 Inthe Problems view right click on a message A popup menu appears 3 Select Detailed Diagnostics Info A dialog box appears with additional information Display detailed information on diagnostics On the command line you can use the linker option diag to see an explanation of a diagnostic message 1k850 diag format all number 159 TASKING VX toolset for RH850 User Guide 160 Chapter 6 Using the Utilities The TASKING VX toolset for RH850 comes with a number of utilities cc850 A control program The control program invokes all tools in the toolset and lets you quickly generate an absolute object file from C and or assembly source input files amk A make utility which supports parallelism and utilizes the mult
255. ect Settings In the right pane the Settings appear 3 On the Tool Settings tab select Linker 4 Select the sub entries and set the options in the various pages You can find a detailed description of all linker options in Section 8 4 Linker Options Invocation syntax on the command line Windows Command Prompt 1k850 option file When you are linking multiple files either relocatable object files o or libraries a it is important to specify the files in the right order This is explained in Section 5 3 Linking with Libraries You can find a detailed description of all linker options in Section 8 4 Linker Options Example 1k850 ddefault 1sl test o This links and locates the file test o and generates the file test el1f 5 3 Linking with Libraries There are two kinds of libraries system libraries and user libraries System library System libraries are stored in the directory lt installation path gt lib v850e3 RH850 v850e3 libraries An overview of the system libraries is given in the table in Chapter 10 Libraries 138 Using the Linker Sources for the libraries are present in the directories Lib src lib src inthe form of an executable If you run the executable it will extract the sources in the corresponding directory To link the default C system libraries 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and s
256. ection 10 1 5 dbg h and the debugger takes place via a breakpoint which incidentally is not shown in the Breakpoints view Depending on the situation this may be a hardware breakpoint which may be in short supply Secondly proper operation requires certain code in the C library to have debug information This debug information should normally be present but might get lost when this information is stripped later in the development process 7 4 4 Disassembly View The Disassembly view shows target memory disassembled into instructions and or data If possible the associated C source code is shown as well The Address field shows the address of the current selected line of code To view the contents of a specific memory location type the address in the Address field If the address is invalid the field turns red 7 4 5 Expressions View The Expressions view allows you to evaluate and watch regular C expressions To add an expression Click OK to add the expression 1 Right click in the Expressions View and select Add Watch Expression The Add Watch Expression dialog appears 194 Using the Debugger 2 Enter an expression you want to watch during debugging for example the variable name i If you have added one or more expressions to watch the right click menu provides options to Remove and Edit or Enable and Disable added expressions You can access target registers directly using NAME For example arr RO
257. ective causes immediate termination of a macro expansion a FOR loop expansion or a level of expansion REPEAT loop expansion In case of nested loops or macros the BREAK directive returns to the previous The BREAK directive is for example useful in combination with the IF directive to terminate expansion when error conditions are detected The assembler does not allow a label with this directive Example FOR MYVAR IN 10 TO 20 i assembly source lines wb IF MYVAR gt 15 BREAK ENDIF ENDFOR 59 TASKING VX toolset for RH850 User Guide BS BSB BSH BSW BSD Syntax label BS count value label BSB count value label BSH count value label BSW count value label BSD count value Description With the Bs directive the assembler reserves a block of memory The reserved block of memory is initialized to the value of value or zero if omitted With count you specify the number of minimum addressable units MAUs you want to reserve and how much the location counter will advance The expression must be an integer greater than zero and cannot contain any forward references to address labels labels that have not yet been defined With value you can specify a value to initialize the block with Only the least significant MAU of value is used If you omit value the default is zero If you specify the optional abel it gets the valu
258. ed Alternatively if expression has a value of zero then the statements between the IF and ELSE directives will be skipped and the statements between the ELSE and ENDIF directives will be assembled You can nest IF directives to any level The ELSE and ELIF directive always refer to the nearest previous IF directive A label is not allowed with this directive Example Suppose you have an assemble source file with specific code for a test version for a demo version and for the final version Within the assembly source you define this code conditionally as follows IF TEST code for the test version ELIF DEMO code for the demo version 79 TASKING VX toolset for RH850 User Guide code for the final version ENDIF Before assembling the file you can set the values of the symbols TEST and DEMO in the assembly source before the IF directive is reached For example to assemble the demo version TEST SET 0 DEMO SE 1 Related Information Assembler option define Define preprocessor macro 80 Assembly Language INCLUDE Syntax INCLUDE filename lt filename gt Description With the INCLUDE directive you include another file at the exact location where the INCLUDE occurs This happens before the resulting file is assembled The INCLUDE directive wo
259. ed although the size of the available physical memory is larger than the sum of the section sizes Enable the first fit decreasing optimization when this occurs and re link your application The linker s default behavior is to place sections in the order that is specified in the LSL file that is working from low to high memory addresses or vice versa This also applies to sections within an unrestricted group If a memory range is partially filled and a section must be located that is larger than the remainder of this range then the section and all subsequent sections are placed in a next memory range As a result of this gaps occur at the end of a memory range When the first fit decreasing optimization is enabled the linker will first place the largest sections in the smallest memory ranges that can contain the section Small sections are located last and can likely fit in the remaining gaps Compress copy table option Ot OT The startup code initializes the application s data areas The information about which memory addresses should be zeroed and which memory ranges should be copied from ROM to RAM is stored in the copy table When this optimization is enabled the linker will try to locate sections in such a way that the copy table is as small as possible thereby reducing the application s ROM image Delete duplicate code option Ox OX Delete duplicate constant data option Oy OY These two optimizations remove code and cons
260. ed as macro FSS implementation Reads at most the next n 1 characters from the stream into array s until a newline is found Returns s or NULL or EOF WEOF on error FSS implementation Reads at most the next n 1 characters from the stdin stream into array s A newline is ignored Returns s or NULL or EOF WEOF on error FSS implementation Pushes character c back onto the input stream Returns EOF WEOF on error Put character c onto the given stream Returns EOF WEOF on error FSS implementation Same as fpuc fputwce except that is implemented as a macro FSS implementation Put character conto the stdout stream Returns EOF WEOF on error Implemented as macro FSS implementation Writes string s to the given stream Returns EOF WEOF on error FSS implementation Writes string s to the stdout stream Returns EOF WEOF on error FSS implementation fread ptr size nobj stream fwrite ptr size nobj stream Random access stdio h Reads nobj members of size bytes from the given stream into the array pointed to by ptr Returns the number of elements successfully read FSS implementation Writes nobj members of size bytes from to the array pointed to by ptrto the given stream Returns the number of elements successfully written FSS implementation Description fseek stream origin offset Sets the position indicator for stream FSS implementation When repositioning a binary file the ne
261. ed by __ att ribute__ noinline for one of the calls the generated code for the function will not contain any function calls 13 TASKING VX toolset for RH850 User Guide format type arg_string_index arg_check_start You can use __attribute__ format type arg_string_index arg_check_start to specify that functions take printf scanf strftime or strfmon style arguments and that calls to these functions must be type checked against the corresponding format string specification type determines how the format string is interpreted and should be printf scanf strftime or strfmon arg_string_index is a constant integral expression that specifies which argument in the declaration of the user function is the format string argument arg_check_startis a constant integral expression that specifies the first argument to check against the format string If there are no arguments to check against the format string that is diagnostics should only be performed on the format string syntax and semantics arg_check_start should have a value of 0 For strftime style formats arg_check_start must be 0 Example int foo int i const char my_format __attribute__ format printf 2 3 The format string is the second argument of the function foo and the arguments to check start with the third argument interrupt vector You can use __attribute__ interrupt vector to indicate that the specified function is an interrupt
262. edf8000 5 0x2000000 6 Oxa r7 0x0 x 4 You can change each register s value e You can search for a specific register right click on a register and from the popup menu select Find Register Enter a group or register name filter click the register you want to see and click OK The register of your interest will be shown in the view 7 4 12 Trace View If tracing is enabled the Trace view shows the code was most recently executed For example while you step through the application the Trace view shows the executed code of each step To enable tracing e Right click in the Trace view and select Trace A check mark appears when tracing is enabled The view has three tabs Source Instruction and Raw each of which represents the trace in a different way However not all target environments will support all three of these The view is updated automatically each time the target halts 198 Chapter 8 Tool Options This chapter provides a detailed description of the options for the compiler assembler linker control program make utility archiver and the HLL object dumper Tool options in Eclipse Menu entry For each tool option that you can set from within Eclipse a Menu entry description is available In Eclipse you can customize the tools and tool options in the following dialog 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and select Set
263. ee EO end The C compiler generates code to save and restore the used resources in the interrupt function An interrupt function has an alignment of 2 bytes and is allocated in a code section with the following standard section name e text As is the case with code sections for normal functions the standard section name is extended by default with the module name and symbol name You can overrule the default extension with C compiler option rename sections and or pragma section Like for normal functions the section type must be set to text See Section 1 11 Section Naming for details An interrupt function cannot return a value and cannot have parameters It is also not possible to call an interrupt function directly from an application Exception levels The C compiler supports the following exception levels and corresponding attributes Exception Description Attribute Return Save restore level instruction registers El level User interrupt FPU exception system call El level ei eiret EIPC EIPSW trap EIIC 30 C Language Exception Description Attribute Return Save restore level instruction registers FE level FENMI interrupt system error FEINT interrupt fe feret FEPC memory protection exception TLB exception FEPSW FEIC reserved instruction exception coprocessor unusable exception privilege instruction exception misalignment exception Hyper
264. eeeeee eens 546 13 211 SECTION SOLU sicie ie a a e aE E EE EE ANAE E 546 13 2 12 Section Layout Definition sepieiiiriiieerissrineorni pirms een eee een eea een eea tented 546 13 3 Expression EValUatlonicccc cic cccadeesacene te caeadevencnuacs canescecpnoers Hes tan oE a EES UER 551 13 4 Semantics of the Architecture Definition cece eeeeee eee e eee ee eee eee een ee een etree ees 552 13 4 1 Defining an Architecture 0 ce cece eee eee cee e eee eee e eee eens ianari 553 13 4 2 Defining Internal BUSES 0 e cee eee cece eee eee eee reece eens ee eseen eens enesies 554 13 4 3 Defining Address Spaces cecceeeee cette eee e etter e treet ee ee ee nent een eea eed 554 vi TASKING VX toolset for RH850 User Guide 13 34 42 MappInGS siie ereina rana E a raat R AAE AEN 558 13 5 Semantics of the Derivative Definition sessesesenererreresreterrertrerererrrrerernererenen 561 13 5 1 Defining a Derivative 2 cceeeeceee cence eee eee iai n a a aE 561 13 5 2 Instantiating Core Architectures 00 cceceeeeee cece eee eeeeeeeeceeeeeneeeeeaeeeeeneees 562 13 5 3 Defining Internal Memory and BUSES eeeeeeeee eee ee eee ee eee teeen teeta eenen es 562 13 6 Semantics of the Board Specification cccceceeeeeee eee eeeeeceeeeeseeeeeseeeeeaeeeeeaeeeees 564 13 6 1 Defining a ProceSSor c ecceeeeeec ence cence ai e a Eea 564 13 6 2 Instantiatin
265. eeeeeeee eee e eee ee eee eee eea een een eee eeneegs 4 1 2 3 Allocation of Uninitialized Constants cceeeeeee eee eee eee eee eee eee este ee ee een ees 5 1 2 4 Placing an Object at an Absolute Address at cceeeeeeeeeeeeeeeeeeee een een een eees 5 1 3 StatiG ASSErtiOns aiiim o ena e pas ehdaaectataehedsias a ER OE ENa x 6 14 Shift JIS Kani SUPPOLT piese be scopsesnsaes gesoncuns ences eibod incu EEEO EAS ETSEAN 6 1 5 Using Assembly in the C Source __asm sssssssssssssrsrersrerisrerttrtrerreririsrertrrsreret 7 1 6 AttriDUTES nana a E O E A E E AE E Aa 12 1 7 Pragmas to Control the Compiler cceceeeeee eee eee e eee eee eter ee een eee teeta een eea een eeas 17 1 8 Predefined Preprocessor Macros cccceceeeecee eee e eee e teen eee ee ese eeeeee re eneseeeneeeaes 22 1 9 Switch Statement 20 0 nee et ee ee nee eeeeneeaeeaes 23 1 10 FUNCIONS srne a EAE i paternity E E cence vienna ental 26 1 10 1 Galling Convention iineoae inaa a E E ana anes 26 1 10 2 Inlining Functions inline ieee ete eee eee eee eee nese eee ee ee eea teeta tent eaeeeea ee 27 1 10 3 Floating Point Unit Support __fpu NOfFPU 2 cece eee teeter eee eterna eeaes 28 1 10 4 Interrupt FUNCTIONS iosia eaa hanes nacnomes EAE E foes EEE ounce no 29 1 10 25 I tinsie FUNCIONS sicce avid cers advadeen rerainan R OEE deeds td 35 Tig Section NAMING s wicasessokeene sabetwes areca ee E aa SEa o ces mec deid ane
266. efault the floating point unit FPU is used if the selected core supports one If an FPU is present the macro __ FPU__ is defined in the C source file Use this option to disable the use of the FPU Functions that have the __ fpu function qualifier are not affected by this option You can also disable the FPU for specific functions by using the __nofpu function qualifier With fp model trap operations trap on floating point exceptions By default the control program uses the non trapping versions of the floating point library Libfp a With this option you tell the control program to use the trapping version libfpt a If you use trapping exceptional floating point cases are intercepted and can be handled separately by an application defined exception handler An example of an exception handler can be found in spe c With fp model negzero you allow the compiler to ignore the sign of 0 0 values An example is to replace a a by zero Related information Pragmas STDC FP_CONTRACT fp_negzero fp_nonan and fp_rewrite in Section 1 7 Pragmas to Control the Compiler C compiler option eabi float control level of EABI compliancy Section 1 10 3 Floating Point Unit Support __fpu __nofpu 379 TASKING VX toolset for RH850 User Guide Control program option fpu Menu eniry Eclipse automatically sets the correct option based on the selected processor Command line syntax fpu type You can specify the following ar
267. eger constant expression with type size_t that is the offset _member in bytes of _member within structure type _type 10 1 23 stdint h See Section 10 1 11 inttypes h and stdint h 10 1 24 stdio h and wchar h Types The header file stdio h contains functions for performing input and output A number of functions also have a parallel wide character function or macro defined in wchar h The header file wchar h also includes stdio h In the C language many I O facilities are based on the concept of streams The stdio h header file defines the data type FILE which holds the information about a stream A FILE object is created with the function fopen The pointer to this object is used as an argument in many of the in this header file The FILE object can contain the following information e the current position within the stream e pointers to any associated buffers e indications of for read write errors e end of file indication The header file also defines type fpos_t aS anunsigned long Macros stdio h Description NULL Expands to 0 zero BUFSIZ Size of the buffer used by the setbuf setvbuf function 512 EOF End of file indicator Expands to 1 WEOF End of file indicator Expands to UINT_MAX defined in limits h NOTE WEOF need not to be a negative number as long as its value does not correspond to a member of the wide character set Defined in wchar h FOPEN_MAX Number of files that can be opened simultane
268. el DSH expression label DSW expression label DSD expression Description With the Ds directive the assembler reserves a block in memory The reserved block of memory is not initialized to any value With the expression you specify the number of MAUs Minimal Addressable Units that you want to reserve and how much the location counter will advance The expression must evaluate to an integer greater than zero and cannot contain any forward references symbols that have not yet been defined If you specify the optional abel it gets the value of the location counter at the start of the directive processing The DSB DSH DSW and DSD directives are variants of the DS directive The difference is the number of bits that are reserved per expression argument Directive Reserved bits DSB 8 DSH 16 DSW 32 DSD 64 Example section bss RES DS 543 allocate 8 bytes endsec Related Information BS Block Storage DB Define Memory 66 Assembly Language END Syntax END Description With the optional END directive you tell the assembler that the end of the module is reached If the assembler finds assembly source lines beyond the END directive it ignores those lines and issues a warning You cannot use the END directive in a macro expansion The assembler does not allow a label with this directive Example section text source lines
269. elect Settings In the right pane the Settings appear 3 On the Tool Settings tab select Linker Libraries 4 Enable the option Link default libraries When you want to link system libraries from the command line you must specify this with the option library l For example to specify the system library Libc a type 1k850 library c test o User library You can create your own libraries Section 6 3 Archiver describes how you can use the archiver to create your own library with object modules To link user libraries 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and select Settings In the right pane the Settings appear 3 On the Tool Settings tab select Linker Libraries 4 Add your libraries to the Libraries box When you want to link user libraries from the command line you must specify their filenames on the command line 1k850 start o mylib a If the library resides in a sub directory specify that directory with the library name 1k850 start o mylibs mylib a If you do not specify a directory the linker searches the library in the current directory only 139 TASKING VX toolset for RH850 User Guide Library order The order in which libraries appear on the command line is important By default the linker processes object files and libraries in the order in which they appear at the command line Therefore when you use a weak
270. else elif and endif preprocessor directives shall reside in the same file as the if or ifdef directive to which they are related Standard libraries X 604 20 1 20 2 20 3 R R R Reserved identifiers macros and functions in the standard library shall not be defined redefined or undefined The names of standard library macros objects and functions shall not be reused The validity of values passed to library functions shall be checked MISRA C Rules 20 4 R Dynamic heap memory allocation shall not be used 20 5 R The error indicator errno shall not be used 20 6 R The macro offsetof in library lt stddef h gt shall not be used 20 7 R The set jmp macro and the long jmp function shall not be used 20 8 R The signal handling facilities of lt signal h gt shall not be used 20 9 R The input output library lt stdio h gt shall not be used in production code 20 10 R The library functions atof atoi and atol from library lt stdlib h gt shall not be used 20 11 R The library functions abort exit getenv and system from library lt stdlib h gt shall not be used 20 12 R The time handling functions of library lt t ime h gt shall not be used Run time failures x 21 1 R Minimization of run time failures shall be ensured by the use of at least one of a static analysis tools techniques b dynamic analysis tools techniques c explicit coding of checks to handle run time fault
271. embler looks in the same directory as the source file 2 When the assembler did not find the include file it looks in the directories that are specified in the Assembler Include Paths page in the C C Build Settings Tool Settings tab of the Project Properties dialog equivalent to option include directory l 3 When the assembler did not find the include file because it is not in the specified include directory or because no directory is specified it looks in the path s specified in the environment variable AS850 INC 4 When the assembler still did not find the include file it finally tries the default include directory relative to the installation directory Example Suppose that the assembly source file test asm contains the following lines INCLUDE myinc inc 129 TASKING VX toolset for RH850 User Guide You can call the assembler as follows as850 Imyinclude test asm First the assembler looks for the file myinc asm in the directory where test asm is located If the file is not there the assembler searches in the directory myinclude If it was still not found the assembler searches in the environment variable AS850INC and then in the default include directory 4 4 Assembler Optimizations The assembler can perform various optimizations that you can enable or disable 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and select
272. ement on TP data zdata Initialized data addressed with 16 bit displacement on RO data zdata23 Initialized data addressed with 23 bit displacement on RO data bss Uninitialized data cleared addressed with 32 bit absolute data addressing sbss Uninitialized data cleared addressed with 16 bit displacement data on TP sbss23 Uninitialized data cleared addressed with 23 bit displacement data on TP 91 TASKING VX toolset for RH850 User Guide Section name Description Section type zbss Uninitialized data cleared addressed with 16 bit displacement data on RO zbss23 Uninitialized data cleared addressed with 23 bit displacement data on RO debug Debug section debug The section attributes are case insensitive The defined attributes are Attribute Description Allowed on type ALIGN value Align the section to the value specified value must be a power CODE DATA of two AT address Locate the section at the given address CODE DATA CLEAR Sections are zeroed at startup DATA CLUSTER name Cluster code sections with companion debug sections Used CODE DATA by the linker during removal of unreferenced sections The DEBUG name must be unique for this module not for the application INIT Defines that the section contains initialization data which is CODE DATA copied from ROM to RAM at program startup LINKONCE tag For internal use o
273. en 0 9 The level of a message is printed between parentheses after the warning number If you do not use the w option the default warning level is 8 Example To suppress warnings above level 5 ar850 extract warning 5 mylib a objl o Related information 437 TASKING VX toolset for RH850 User Guide 8 8 HLL Object Dumper Options The high level language HLL dumper hldump850 is a program to dump information about an absolute object file e1f Short and long option names Options can have both short and long names Short option names always begin with a single minus character long option names always begin with two minus characters You can abbreviate long option names as long as it forms a unique name You can mix short and long option names on the command line Options can have flags or suboptions To switch a flag on use a lowercase letter or a ongflag To switch a flag off use an uppercase letter or a ongflag Separate longflags with commas The following two invocations are equivalent hlidump850 FdhMsy test elf hidump8s50 dump format dump thllsymbols modules sections symbols test elf When you do not specify an option a default value may become active 438 Tool Options HLL object dumper option class c Command line syntax class class c class You can specify one of the following classes all a Dump contents of all sections code c Dump contents of code sec
274. en nested can have different minimal addressable units MAU alignment restrictions and page sizes All address spaces have a number that identifies the logical space id The following table lists the different address spaces for the architecture 850 as defined in 850_arch 1s1l Space Id MAU Description linear 1 l8 Linear address space The architecture in LSL notation The best way to write the architecture definition is to start with a drawing The following figure shows a part of the architecture 850 space linear bus systern The figure shows one address spaces called 1inear The address space has attributes like a number that identifies the logical space id a MAU and an alignment In LSL notation the definition of these address spaces looks as follows space linear id 1 mau 8 map size 4G dest bus system The keyword map corresponds with the arrows in the drawing You can map address space gt address space not shown in the drawing address space gt bus 150 Using the Linker memory gt bus not shown in the drawing bus gt bus not shown in the drawing Next the internal bus named system must be defined in LSL bus system mau 8 width 32 there are 32 data lines on the bus This completes the LSL code in the architecture definition Note that all code above goes into the architecture definition thus between architecture V850
275. endsec END End of assembly module 67 TASKING VX toolset for RH850 User Guide EQU Syntax symbol EQU expression Description With the EQU directive you assign the value of expression to symbol permanently The expression can be relative or absolute Once defined you cannot redefine the symbol With the GLOBAL directive you can declare the symbol global Example To assign the value 0x400 permanently to the symbol MY SYMBOL MYSYMBOL EQU 0x4000 You cannot redefine the symbol MySYMBOL after this Related Information SET Set temporary value to a symbol 68 EXTERN Syntax EXTERN symbol symbol Description Assembly Language With the EXTERN directive you define an external symbol It means that the specified symbol is referenced in the current module but is not defined within the current module This symbol must either have been defined outside of any module or declared as globally accessible within another module with the GLOBAL directive If you do not use the EXTERN directive and the symbol is not defined within the current module the assembler issues a warning and inserts the EXTERN directive A label is not allowed with this directive Example EXTERN AA CC DD defined elsewher Related Information GLOBAL Declare global section symbol 69 TASKING VX toolset for RH850 User Guide FOR ENDFOR Synta
276. enerated code You can customize the amount and form of information If the assembler generates errors or warnings these are reported in the list file just below the source line that caused the error or warning To generate a list file 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and select Settings In the right pane the Settings appear 3 On the Tool Settings tab select Assembler List File 4 Enable the option Generate list file 5 Optional Enable the options to include that information in the list file Example on the command line Windows Command Prompt The following command generates the list file test 1st as850 l test asm See Section 11 1 Assembler List File Format for an explanation of the format of the list file 4 6 Assembler Error Messages The assembler reports the following types of error messages in the Problems view of Eclipse F Fatal errors After a fatal error the assembler immediately aborts the assembly process E Errors Errors are reported but the assembler continues assembling No output files are produced unless you have set the assembler option keep output files the resulting output file may be incomplete W Warnings Warning messages do not result into an erroneous assembly output file They are meant to draw your attention to assumptions of the assembler for a situation which may not be correct You can control
277. enerates the file test out This file is used again and linked together with test2 o to create the file test e1f the default name if no output filename is given in the default ELF DWARF 2 format With incremental linking it is normal to have unresolved references in the output file until all o files are linked and the final cut or e1f file has been reached The option incremental r for incremental linking also suppresses warnings and errors because of unresolved symbols 141 TASKING VX toolset for RH850 User Guide 5 5 Importing Binary Files With the TASKING linker it is possible to add a binary file to your absolute output file In an embedded application you usually do not have a file system where you can get your data from With the linker option import object you can add raw data to your application This makes it possible for example to display images on a device or play audio The linker puts the raw data from the binary file in a section The section is aligned on a 4 byte boundary The section name is derived from the filename in which dots are replaced by an underscore So when importing a file called my mp3 a section with the name my_mp3 is created In your application you can refer to the created section by using linker labels For example include lt stdio h gt __ data extern char _lc_ub_my_mp3 linker labels __ data extern char _lc_ue_my_mp3 char mp3 amp _lc_ub_my_mp3 void main void int s
278. ents it causes a formfeed the next source line is printed on the next page in the list file The PAGE directive itself is not printed You can omit an argument by using two adjacent commas If the remaining arguments after an argument are all empty you can omit them Example PAGE formfeed the next source line is printed on the next page in the list file PAGE 96 set page width to 96 Note that you can omit the last four arguments PAGE 3 3 use 3 line top bottom margins Related Information TITLE Set program title in header of assembler list file 87 TASKING VX toolset for RH850 User Guide Assembler option list file 88 Assembly Language REPEAT ENDREP Syntax label REPEAT expression ENDREP Description With the REPEAT ENDREP directive you can repeat a sequence of assembly source lines With expression you specify the number of times the loop is repeated If the expression evaluates to a number less than or equal to 0 the sequence of lines will not be included in the assembler output The expression result must be an absolute integer and cannot contain any forward references symbols that have not already been defined The REPEAT directive may be nested to any level If you specify abel it gets the value of the location counter at the start of the directive processing Example In this example the loop is repeated 3 times Effectively
279. epresented by 1 Examples v1 0r1 gt 1 v1 0rb gt 1 _ STDC __ Identifies the level of ANSI standard The macro expands to 1 if you set option language Control language extensions otherwise expands to 0 __STDC_HOSTED__ Always expands to 0 indicating the implementation is not a hosted implementation __STDC_VERSION __ Identifies the ISO C version number Expands to 199901L for ISO C99 or 199409L for ISO C90 __TASKING__ Identifies the compiler as a TASKING compiler Expands to 1 if a TASKING compiler is used _ TIME Expands to the compilation time hh mm ss __VERSION__ Identifies the version number of the compiler For example if you use version 2 111 of the compiler _VERSION__ expands to 2001 dot and revision number are omitted minor version number in 3 digits VX__ Identifies the VX toolset C compiler Expands to 1 22 C Language Example ifdef _ FPU__ this part is only valid if an FPU is present endif 1 9 Switch Statement The TASKING C compiler supports two ways of code generation for a switch statement a jump chain linear switch or a jump table A jump chain is comparable with an if else if else if else construction A jump table is a table filled with target addresses for each possible switch value The switch argument is used as an index within this table By default the compiler will automatically choose the most efficient switch implemen
280. er 9 nfluencing the Build Time Select a target processor core Processor options affect the invocation of all tools in the toolset In Eclipse you only need to set them once Based on the target processor the compiler includes a special function register file This is a regular include file which enables you to use virtual registers that are located in memory 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and select Processor In the right pane the Processor page appears 3 From the Processor selection list select a processor To access the C compiler options 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and select Settings In the right pane the Settings appear 111 TASKING VX toolset for RH850 User Guide 3 On the Tool Settings tab select C Compiler 4 Select the sub entries and set the options in the various pages Note that the C compiler options are used to create an object file from a C file The options you enter in the Assembler page are not only used for hand coded assembly files but also for intermediate assembly files You can find a detailed description of all C compiler options in Section 8 2 C Compiler Options Invocation syntax on the command line Windows Command Prompt c850 option file 3 3 The C Startup Code You need the run time startup
281. er takes the following files for input and output Csource file we compiler intermediate file mil assembly file SIC This chapter first describes the compilation process which consists of a frontend and a backend part Next it is described how to call the C compiler and how to use its options An extensive list of all options and their descriptions is included in Section 8 2 C Compiler Options Finally a few important basic tasks are described such as including the C startup code and performing various optimizations 3 1 Compilation Process During the compilation of a C program the C compiler runs through a number of phases that are divided into two parts frontend and backend The backend part is not called for each C statement but starts after a complete C module or set of modules has been processed by the frontend in memory This allows better optimization The C compiler requires only one pass over the input file which results in relative fast compilation Frontend phases 1 The preprocessor phase The preprocessor includes files and substitutes macros by C source It uses only string manipulations on the C source The syntax for the preprocessor is independent of the C syntax but is also described in the ISO IEC 9899 1999 E standard 109 TASKING VX toolset for RH850 User Guide The scanner phase The scanner converts the preprocessor output to a stream of tokens The parser phase The tokens are fed to
282. erated assembly C compiler option source Additional options C compiler options Control program options Assembler Eclipse option Description or option Preprocessing Use TASKING preprocessor Defined symbols Assembler option preprocessor type Assembler option define Pre include files Assembler option include file Include Paths 201 TASKING VX toolset for RH850 User Guide Eclipse option Description or option Include paths Assembler option include directory Symbols Generate symbolic debug Assembler option debug info Case insensitive identifiers Assembler option case insensitive Emit local EQU symbols Emit local non EQU symbols Assembler option emit locals equ Assembler option emit locals symbols Set default symbol scope to global Assembler option symbol scope Optimization Optimize generic instructions Assembler option optimize generics Optimize jump chains Assembler option optimize jumpchains Optimize instruction size Assembler option optimize instr size List File Generate list file Control program option list files List Assembler option list format List section summary Diagnostics Assembler option section info list Suppress warnings Assembler option no warnings num Suppress all warnings Assembler option no
283. erated when a function pointer is set to refer to a function of an incompatible type Calling this function through the function pointer will result in undefined behavior Example void my_function int a int main void int new_function int a my_function return new_function 10 the behavior is undefined 15 3 Expressions EXP EXP01 C EXP12 C EXP30 C EXP32 C EXP33 C Do not take the size of a pointer to determine the size of the pointed to type The size of the object s allocated by malloc calloc or realloc should be a multiple of the size of the base type of the result pointer Therefore the sizeof expression should be applied to this base type and not to the pointer type Do not ignore values returned by functions The compiler gives this warning when the result of a function call is ignored at some place although it is not ignored for other calls to this function This warning will not be issued when the function result is ignored for all calls or when the result is explicitly ignored with a void cast Do not depend on order of evaluation between sequence points Between two sequence points an object should only be modified once Otherwise the behavior is undefined Do not access a volatile object through a non volatile reference If an attempt is made to refer to an object defined with a volatile qualified type through use of an lvalue with non volatile qualified type the behavior is
284. ero Abus can only have a mapping on a destination bus through dest bus mapping map_descr i O 1 map lt map_name gt map_descr lt map_descr gt dest destination dest_dbits range dest_offset expr size expr src_dbits range src_offset expr reserved priority number exec_priority number tag Amap descr requires at least the size and dest statements Amap descr contains zero or one priority statement if absent the default value is 0 Amap descr contains zero or one exec_priority statement e Each map_descr can occur only once You can define multiple mappings from a single source Overlap between source ranges or destination ranges is not allowed e Ifthe src_dbits or dest_dbits statement is not present its value defaults to the width value if the source destination is a bus and to the mau size otherwise 541 TASKING VX toolset for RH850 User Guide e The reserved statement is allowed only in mappings defined for a memory destination space space_name bus lt proc_name p gt 0lt bus_name core_name e A space_name refers to a defined address space e A proc_name refers to a defined processor e A core_name refers to a defined core e A bus_name refers to a defined bus The following mappings are allowed source to destination space gt space space gt bus e bus gt bus memory gt bus range expr expr e With a
285. ero For x or X 0x and 0X will be prefixed to the number For e E f g G the output always contains a decimal point trailing zeros are not removed A number specifying a minimum field width The converted argument is printed in a field with at least the length specified here If the converted argument has fewer characters than specified it will be padded at the left side or at the right when the flag was specified with spaces Padding to numeric fields will be done with zeros when the flag 0 is also specified only when padding left Instead of a numeric value also may be specified the value is then taken from the next argument which is assumed to be of type int A period This separates the minimum field width from the precision A number specifying the maximum length of a string to be printed Or the number of digits printed after the decimal point only for floating point conversions Or the minimum number of digits to be printed for an integer conversion Instead of a numeric value also may be specified the value is then taken from the next argument which is assumed to be of type int A length modifier h hh I Il L j z or t h indicates that the argument is to be treated as a short or unsigned short hh indicates that the argument is to be treated as a char or unsigned char l should be used if the argument is a long integer Il fora long long L indicates that the argument isal
286. ers and other sections Only one 111 argument is allowed The vector field defines the content of vector with the number specified by id If a range is specified forid p q s t all vectors in the ranges inclusive are defined the same way With i111 symbol_name the vector must jump to this symbol If the section in which the symbol is defined fits in the vector table size may be gt m locate the section at the location of the vector Otherwise insert code to jump to the symbol s value A template interrupt handler section name symbol name for the target code must be supplied in the LSL file 111 value s fills the vector with the specified MAU values With i111 1loop the vector jumps to itself With the optional offsef you can specify an offset from the vector table entry When the keyword optional is set on a vector specification with a symbol value and the symbol is not found no error is reported A default fill value is used if the symbol was not found With other values the attribute has no effect Reserved address ranges The reserved keyword specifies to reserve a part of an address space even if not all of the range is covered by memory See also the reserved keyword in Section 13 8 3 Creating or Modifying Special Sections Start address e The start_address keyword specifies the start address for the position where the C startup code is located When a processor is reset it initializes its program coun
287. ers instead of stderr enter as850 rror file errors ers test src Related information Section 4 6 Assembler Error Messages 281 TASKING VX toolset for RH850 User Guide Assembler option error limit Menu entry 1 Select Assembler Diagnostics 2 Enter a value in the Maximum number of emitted errors field Command line syntax error limit number Default 42 Description With this option you tell the assembler to only emit the specified maximum number of errors When 0 null is specified the assembler emits all errors Without this option the maximum number of errors is 42 Related information Section 4 6 Assembler Error Messages 282 Tool Options Assembler option fpu Menu entry Eclipse automatically sets the correct option based on the selected processor Command line syntax fpu type You can specify the following arguments double Double single precision FPU single Single precision FPU none No FPU available Default fpu none Description With this option you can select the hardware floating point configuration of the used processor With double you can use hardware floating point instructions for single and double precision floating point With single you can use hardware floating point instructions for single precision floating point and software floating point instructions for double precision floating point With none you can only use software floating point instructions for si
288. ersion routines for input and output errno Can be set to ERANGE by the following functions exp strtol strtoul andtan These functions may produce results that are out of the valid range for the return type If so the result of the function will be the largest representable value for that type and errno is set to ERANGE errno is set to EDOM by the following functions acos asin log pow and sqrt If the arguments for these functions are out of their valid range e g sqrt 1 errno is set to EDOM errno can be set to ERR_POS by the file positioning functions ftel1 fsetpos and fgetpos 3 ungetc Currently the ungetc buffer is static For each file entry in the icb structure array there is one character available in the buffer to unget a character 4 local buffers tmpnam creates a temporary filename and returns a pointer to a local static buffer This is according to the ANSI definition Changing this function such that it creates the name in a user specified buffer requires another calling interface Thus the function would be no longer portable 515 TASKING VX toolset for RH850 User Guide strtok scans through a string and remembers that the string and the position in the string for subsequent calls This function is not reentrant by design Making it reentrant requires support of a kernel to store the information on a per process basis rand generates a sequence of random numbers The
289. es for the sections in a group The linker creates labels that allow you to refer to the begin and end address of a group from within the application software Labels ___1 _gb_group_name and ___le_ge_group_name mark the begin and end of the group respectively where the begin is the lowest address used within this group and the end is the highest address used Notice that a group not necessarily occupies all memory between begin and end address The given label refers to where the section is located at run time versus load time 1 Assign properties to the sections in a group like alignment and read write attributes These properties are assigned to all sections in the group and subgroups and override the attributes of the input sections e The align field tells the linker to align all sections in the group according to the align value The alignment of a section is first determined by its own initial alignment and the defined alignment for the address space Alignments are never decreased if multiple alignments apply to a section the largest one is used The attributes field tells the linker to assign one or more attributes to all sections in the group This overrules the default attributes By default the linker uses the attributes of the input sections You can set the r w or rw attributes and you can switch between the b and s attributes The copy field tells the linker to locate a read only section in RAM and generate a ROM
290. es of the pragma directive shall be documented and explained This rule is really a documentation issue The compiler will flag all pragma directives as violations 3 5 R The implementation defined behavior and packing of bit fields shall be documented if being relied upon x 3 6 R All libraries used in production code shall be written to comply with the provisions of this document and shall have been subject to appropriate validation Character sets 4 1 4 2 598 R R Only those escape sequences that are defined in the ISO C standard shall be used Trigraphs shall not be used Identifiers 51 R 52 R 5 3 R 54 R 55 A 56 A 57 A Types 6 1 R 6 2 R 6 3 A 6 4 R 6 5 R Constants 7 1 R MISRA C Rules Identifiers internal and external shall not rely on the significance of more than 31 characters Identifiers in an inner scope shall not use the same name as an identifier in an outer scope and therefore hide that identifier A typedef name shall be a unique identifier A tag name shall be a unique identifier No object or function identifier with static storage duration should be reused No identifier in one name space should have the same spelling as an identifier in another name space with the exception of structure and union member names No identifier name should be reused The plain char type shall be used only for storage and use of character values signed and unsigned
291. es the build time even improves further when specifying more parallel jobs than the number of cores In Eclipse you can control the parallel build behavior 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane select C C Build In the right pane the C C Build page appears 3 On the Behaviour tab select Use parallel build 4 You can specify the number of parallel jobs or you can use an optimal number of jobs In the last case amk will fork as many jobs in parallel as cores are available 471 TASKING VX toolset for RH850 User Guide 472 Chapter 10 Libraries This chapter contains an overview of all library functions that you can call in your C source This includes all functions of the standard C library ISO C99 and some functions of the floating point library Section 10 1 Library Functions gives an overview of all library functions you can use grouped per header file A number of functions declared in wchar h are parallel to functions in other header files These are discussed together Section 10 2 C Library Reentrancy gives an overview of which functions are reentrant and which are not C library floating point library run time library The following libraries are included in the RH850 toolset The directory 1ib v850e3 contains all libraries Both Eclipse and the control program cc850 automatically select the appropriate libraries depending on the specified options
292. es ws no image fill_spec IS fill_values 23 aggregate_section_statement group_descr NES fill fill_values expr expr lt expr gt lt section_statement gt group descr if_ statement section_creation_statement struct_statement 0 1 group lt group_name gt lt group specs y gt section_statement For every group with a name the linker defines a label 548 Linker Script Language LSL No two groups for address spaces of a core can have the same group_name group_specs group_spec group_spec lt group_spec gt group_alignment attributes copy nocopy group_load_address fill lt fill_values gt group_page group_run_address group_type allow_cross_references priority number tag The allow cross references property is only allowed for overlay groups Sub groups inherit all properties from a parent group group_alignment attributes attribute group_load_address group_page group_run_address group_type align expr attributes lt attribute gt readable sections writable sections executable code sections initialized sections scratch sections blanked cleared sections protected sections CwOHnrHK ER N mo load_addr lt load_or_run_addr gt page lt expr gt t page_size expr lt range lt range j gt 9st run_addr lt load_or_run_addr gt clustered
293. essor used implements an MMU With this directive you can use MMU instructions in the assembly file This is the same as specifying has mmu on the command line The assembler does not allow a label with this directive Related Information Assembler option has mmu 75 TASKING VX toolset for RH850 User Guide HAS SIMD Syntax HAS_SIMD Description With the HAS_SIMD directive you tell the assembler that the processor used implements SIMD With this directive you can use SIMD instructions in the assembly file This is the same as specifying has simd on the command line The assembler does not allow a label with this directive Related Information Assembler option has simd 76 Assembly Language HAS_THREAD Syntax HAS_ THREAD Description With the HAS_THREAD directive you tell the assembler that the processor used implements hardware thread support With this directive you can use hardware thread support instructions in the assembly file This is the same as specifying has thread on the command line The assembler does not allow a label with this directive Related Information Assembler option has thread 77 TASKING VX toolset for RH850 User Guide HAS_ VIRTUAL Syntax HAS_VIRTUAL Description With the HAS_ VIRTUAL directive you tell the assembler that the processor used implements virtualization support With this directive you can use virtualization instructions in the assembly f
294. ete button to change a warning number or to remove a number from the list Command line syntax no warnings number number w number number Description With this option you can suppresses all warning messages or specific warning messages On the command line this option works as follows e If you do not specify this option all warnings are reported e If you specify this option but without numbers all warnings are suppressed e If you specify this option with a number or a range only the specified warnings are suppressed You can specify the option no warnings number multiple times Example To suppress warnings 537 and 538 enter c850 test c no warnings 537 538 Related information C compiler option warnings as errors Treat warnings as errors Pragma warning 246 Tool Options C compiler option optimize O Menu eniry 1 Select C Compiler Optimization 2 Select an optimization level in the Optimization level box Command line syntax optimize flags Oflags You can set the following flags coalesce a A Coalescer remove unnecessary moves ipro b B Interprocedural register optimizations cse c C Common subexpression elimination expression e E Expression simplification flow f F Control flow simplification glo g G Generic assembly code optimizations inline i l Automatic function inlining loop VL Loop transformations forward o O Forward store pr
295. example is generated as ie type func mov 1 x411 add r6 611 cmp 0 rl1l blt L3 cmp 9 r11 bgt L3 shl 2 P11 mov SLZA add rid ELZ ld w O ri2 xrl2 24 C Language jmp r12 align 4 L22 jump table with absolute addresses dw L4 dw SLI dw L3 dw L3 dw b3 dw L3 dw SD3 dw L3 dw L3 dw SLG L4 mov peL br L7 SLIG mov 5 LLL br L8 l6 mov 27211 br L9 Palle oe mov 1 11 LOS L8 L73 st w r1l1 baserel23 _g gp jmp 1p Automatic mode With switch auto this is the default the compiler automatically selects the best method to implement a switch statement The method is chosen based upon the properties of a switch statement and the selected setting for the speed size tradeoff How to overrule the default switch method You can overrule the compiler chosen switch method by using a pragma pragma switch linear force jump chain code pragma switch jumptab force jump table code pragma switch auto let the compiler decide the switch method used this is the default pragma switch restore restore previous switch method The switch pragmas must be placed before the switch statement Nested switch statements use the same switch method unless the nested switch is implemented in a separate function which is preceded by a different switch pragma 25 TASKING VX toolset for RH850 User Guide Example place pragma before function body prag
296. exceed the size of string Examples ABCD 0x44434241 ETE to enclose a quote double it A BC or to enclose a quote escape it AB 1 0x4341 string used in expression EN null string DW abcdef 0x64636261 ef are ignored warning string value truncated ab cd you can concatenate two strings with the operator 47 TASKING VX toolset for RH850 User Guide This results in abcd TASKING 0O 4 results in the substring TASK 2 6 3 Expression Operators The next table shows the assembler operators They are ordered according to their precedence Operators of the same precedence are evaluated left to right Parenthetical expressions have the highest priority innermost first Valid operands include numeric constants literal ASCII strings and symbols Most assembler operators can be used with both integer and floating point values If one operand has an integer value and the other operand has a floating point value the integer is converted to a floating point value before the operator is applied The result is a floating point value Type Operator Name Description parenthesis Expressions enclosed by parenthesis are evaluated first Unary plus Returns the value of its operand minus Returns the negative of its operand one s complement Integer only Returns the one s complement of its operand It cannot be used with a floating point operand logical ne
297. extended option descriptions Description Displays an overview of all command line options When you specify the argument options you can list detailed option descriptions Example The following invocations all display a list of the available command line options expiresg50 xpire850 help expire850 To see a detailed description of the available options enter xpire850 help options Related information 463 TASKING VX toolset for RH850 User Guide Expire cache utility option megabytes m Command line syntax megabytes m mm Description Reduce the size of the cache to m MBytes by removing files from the cache starting with the oldest file With a size of 0 zero you clear the entire cache Example To reduce the compiler cache size to 4 MB enter xpire850 megabytes 4 installation dir mproject cache Older files are removed until the total size of the cache is smaller than 4 MB To clear the compiler cache enter xpire850 megabytes 0 installation dir mproject cache Related information 464 Tool Options Expire cache utility option totals t Command line syntax totals t Description Show the total size of the cache and the number of directories and files This option is implicit when invoked without the days and megabytes options Example expire850 t installation dir mproject cache installation dir mproject cache c850cache 1 MB 3 directories 3
298. f static objects by compound literals The middle operand ofa operator may be omitted Allow a compound statement inside braces as expression Allow arithmetic on void pointers and function pointers Allow a range of values after a single case label e Additional preprocessor directive warning Allow comma operator conditional operator and cast as Ivalue An inline function without static or extern will be global e An extern inline function will not be compiled on its own e An__attribute__ directly following a struct union definition relates to that tag instead of to the objects in the declaration For a more complete description of these extensions you can refer to the UNIX gcc info pages info gcc Shift JIS Kanji support With language kanji Ak you tell the compiler to support Shift JIS encoded Kanji multi byte characters in strings wide character constants and comments Without this option encodings with Ox5c as the second byte conflict with the use of the backslash as an escape character Shift JIS in comments is supported regardless of this option Note that Shift JIS also includes Katakana and Hiragana Comments in ISO C90 mode With language comments Ap you tell the compiler to allow C style comments in ISO C90 mode option iso 90 In ISO C99 mode this style of comments is always accepted Check assignment of string literal to non const string pointer With
299. f the following characters Do not show the command By default commands are shown prior to their output Continue upon error This means that amk ignores a non zero exit code of the command Execute the command even when you use option n dry run Execute the command on the foreground with standard input standard output and error output available Built in commands Command Description true This command does nothing Arguments are ignored false This command does nothing except failing with exit code 1 Arguments are ignored echo arg Display a line of text exit code Exit with defined code Depending on the program arguments and or the extra rule options this will cause amk to exit with the provided code Please note that exit 0 has currently no result argfile file arg Create an argument file suitable for the option file f option of all the other tools The first argfile argument is the name of the file to be created Subsequent arguments specify the contents An existing argument file is not modified unless necessary So the argument file itself can be used to create a dependency to options of the command for updating a target rm option file Remove the specified file s The following options are available r recursive Remove directories and their contents recursively f force Force deletion Ignore non existent files never prompt i interactive Interactive Pr
300. f the make utility will be non zero after one or more warnings As a consequence the make utility now also stops after encountering a warning You can also limit this option to specific warnings by specifying a comma separated list of warning numbers Related information Parallel make utility option no warnings Suppress some or all warnings 422 Tool Options 8 7 Archiver Options The archiver and library maintainer ar850 is a tool to build library files and it offers the possibility to replace extract and remove modules from an existing library The invocation syntax is ar850 key_option sub_option library object_file This section describes all options for the archiver Some suboptions can only be used in combination with certain key options They are described together Suboptions that can always be used are described separately For detailed information about the archiver see Section 6 3 Archiver Short and long option names Options can have both short and long names Short option names always begin with a single minus character long option names always begin with two minus characters You can abbreviate long option names as long as it forms a unique name You can mix short and long option names on the command line Overview of the options of the archiver utility The following archiver options are available Description Option Sub option Main func
301. fect of optimization level on SCA results The SCA implementation in the TASKING compilers has the following limitations Some violations of rules will only be detected when a particular optimization is enabled because they rely on the analysis done for that optimization or on the transformations performed by that optimization In particular the constant propagation and the CSE PRE optimizations are required for some checks It is preferred that you enable these optimizations These optimizations are enabled with the default setting of the optimization level O2 Some checks require cross module inspections and violations will only be detected when multiple source files are compiled and linked together by the compiler in a single invocation 3 7 1 C Code Checking CERT C The CERT C Secure Coding Standard provides rules and recommendations for secure coding in the C programming language The goal of these rules and recommendations is to eliminate insecure coding practices and undefined behaviors that can lead to exploitable vulnerabilities The application of the secure coding standard will lead to higher quality systems that are robust and more resistant to attack For details about the standard see the CERT C Secure Coding Standard web site For general information about CERT secure coding see www cert org secure coding 120 Using the C Compiler Versions of the CERT C standard Version 1 0 of the CERT C Secure Coding Standard is
302. file If you do not specify a filename the file 1k850 1d f is used Related information Linker option map file format Map file formatting 338 Tool Options Linker option IsI file d Menu entry An LSL file can be generated when you create your project in Eclipse 1 From the File menu select File New TASKING RH850 C Project The New C Project wizard appears 2 Fill in the project settings in each dialog and click Next gt until the RH850 Project Settings appear 3 Enable the optionAdd linker script file to the project and click Finish Eclipse creates your project and the file project 1s1 in the project directory The LSL file can be specified in the Properties dialog 1 Select Linker Script File 2 Specify a LSL file in the Linker script file Isl field default ProjName 1s1 Command line syntax lsl file file dfile Description A linker script file contains vital information about the core for the locating phase of the linker A linker script file is coded in LSL and contains the following types of information e the architecture definition describes the core s hardware architecture the memory definition describes the physical memory available in the system e the section layout definition describes how to locate sections in memory With this option you specify a linker script file to the linker If you do not specify this option the linker uses a default script file You can specify the
303. file you can use the TITLE directive to specify the program title which is printed at the top of each page in the assembler list file If you use the TITLE directive without the argument the title becomes empty This is also the default The specified title is valid until the assembler encounters a new TITLE directive The TITLE directive itself will not be printed in the source listing If the page width is too small for the title to fit in the header it will be truncated Example TITLE This is the title Related Information PAGE Format the assembler list file STITLE Set program subtitle in header of assembler list file Assembler option list file 98 Assembly Language TYPE Syntax symbol TYPE typeid Description With the TYPE directive you set a symbols type to the specified value in the ELF symbol table Valid symbol types are FUNC The symbol is associated with a function or other executable code OBJECT The symbol is associated with an object such as a variable an array or a structure FILE The symbol name represents the filename of the compilation unit Labels in code sections have the default type FUNC Labels in data sections have the default type OBJECT Example Afunc type func Related Information SIZE Set symbol size 99 TASKING VX toolset for RH850 User Guide UNDEF Syntax UNDEF symbol Description With the UN
304. file search path 230 Tool Options C compiler option inline Menu eniry 1 Select C Compiler Optimization 2 Enable the option Always inline function calls Command line syntax inline Description With this option you instruct the compiler to inline calls to functions without the __ noinline function qualifier whenever possible This option has the same effect as a pragma inline atthe start of the source file Example To always inline function calls c850 inline test c Related information Section 1 10 2 Inlining Functions inline 231 TASKING VX toolset for RH850 User Guide C compiler option inline max incr inline max size Menu eniry 1 Select C Compiler Optimization 2 Inthe Maximum size increment when inlining field enter a value default 1 3 Inthe Maximum size for functions to always inline field enter a value default 1 Command line syntax inline max incr percentag default 1 inline max size threshold default 1 Description With these options you can control the automatic function inlining optimization process of the compiler These options have only effect when you have enabled the inlining optimization option optimize inline or Optimize most Regardless of the optimization process the compiler always inlines all functions that have the function qualifier inline With the option inline max size you can specify the maximum size of functions that the
305. files Related information 465 TASKING VX toolset for RH850 User Guide Expire cache utility option verbose v Command line syntax verbose v Description With this option you put the expire cache utility in veroose mode The utility shows which files are being deleted Example xpire850 v megabytes 0 installation dir mproject cache 2014 06 05 12 36 15 installation dir mproject cache c850cache cstart 30aa7935 2014 06 05 12 36 17 installation dir mproject cache c850cache myproject 6f0a3ba4 2014 06 05 12 36 18 installation dir mproject cache c850cache sync_on_halt bab2c716 Related information 466 Tool Options Expire cache utility option version V Command line syntax version V Description Display version information and exit The expire cache utility ignores all other options Related information 467 TASKING VX toolset for RH850 User Guide 468 Chapter 9 Influencing the Build Time In general many settings have influence on the build time of a project Any change in the tool settings of your project source will have more or less impact on the build time The following sections describe several issues that can have significant influence on the build time 9 1 Optimization Options In general any optimization may require more work to be done by the compiler But this does not mean that disabling all optimizations level 0 gives the fastest compilation time Disabling optimizatio
306. files information invocation i l Include information on invocation and tools link k K Include link result information locate VL Include locate result information memory m M Include memory usage information nonalloc n N _ Include information of non alloc sections overlay 0 O Include overlay information statics q Q Include module local symbols information crossref r R Include cross references information Isl s S Include processor and memory information rules u U Include locate rules Use the following options for predefined sets of flags map file format 0 m0 Link information Alias for mcDfikLMNoQrSU map file format 1 m1 Locate information Alias for mCDfiKIMNoQRSU map file format 2 m2 Most information Alias for mcdfiklmNoQrSu Default map file format 2 342 Tool Options Description With this option you specify which information you want to include in the map file On the command line you must use this option in combination with the option map file M Related information Linker option map file Generate map file Section 11 2 Linker Map File Format 343 TASKING VX toolset for RH850 User Guide Linker option misra c report Menu eniry Command line syntax misra c report file Description With this option you tell the linker to create a MISRA C Quality Assurance report This report lists the various modules in the project with the respective MISRA C settings
307. files which are not present You can include several files Include files may be nested Example include makefile2 makefile3 White spaces tabs or spaces in front of the directive are allowed 6 2 3 Macro Definitions A macro is a symbol name that is replaced with its definition before the makefile is executed Although the macro name can consist of lowercase or uppercase characters uppercase is an accepted convention When a line does not start with white space and contains the assignment operator or then the line is interpreted as a macro definition White space around the assignment operator and white space at the end of the line is discarded Single character macro evaluation happens by prefixing the name with To evaluate macros with names longer than one character put the name between parentheses or curly braces Macro names may contain anything even white space or other macro evaluations Example DINNER FOOD and BEVERAGE FOOD pizza BEVERAGE sparkling water FOOD with cheese 165 TASKING VX toolset for RH850 User Guide With the operator you can add a string to an existing macro An extra space is inserted before the added string automatically Macros are evaluated recursively Whenever DINNER or DINNER is mentioned after the above it will be replaced by the text pizza with cheese and sparkling water The left hand side in a ma
308. for that label You can see a label pragma as a kind of macro mechanism that inserts a pragma in front of the statement after the label and that adds a corresponding pragma restore after the statement Compared to regular pragmas label pragmas offer the following advantages The pragma text does not clutter the code it can be defined anywhere before a function or even ina header file So the pragma setting and the source code are uncoupled When you use different header files you can experiment with a different set of pragmas without altering the source code The pragma has an implicit end the end of the statement can be a loop or block So no need for pragma restore endoptimize etc Example pragma labl optimize P volatile int v void void int i a 17 TASKING VX toolset for RH850 User Guide a 42 lab1 for i l i lt 10 i the entire for loop is part of the pragma optimize a i v a Supported pragmas The compiler recognizes the following pragmas other pragmas are ignored Pragmas marked with support a label prefix STDC FP_CONTRACT on off default restore This is a standard ISO C99 pragma With this pragma you can control the contract flag of C compiler option fp model alias symbol defined_symbol Define symbol as an alias for defined_symbol It corresponds to an equate directive QU at assembly level The symbol shoul
309. formats html rtf or text default To create a file with the descriptions you must redirect the output With the suboption all the descriptions of all error messages are given If you want the description of one or more selected error messages you can specify the error message numbers separated by commas or you can specify a range With this option the expire cache utility does not remove any files Example To display an explanation of message number 204 enter xpire850 diag 204 This results in the following message and explanation E204 failed to remove lt file gt lt lt cause gt gt The removal of the indicated file failed The lt cause gt provides more details of the problem To write an explanation of all errors and warnings in HTML format to file expire850_errors html use redirection and enter xpire850 diag html all gt expire850_errors html Related information 461 TASKING VX toolset for RH850 User Guide Expire cache utility option dry run n Command line syntax dry run n Description With this option you put the expire utility in verbose mode The utility shows which files would be deleted without actually removing them Related information Expire cache utility option verbose Verbose output 462 Tool Options Expire cache utility option help Command line syntax help item You can specify the following argument options Show
310. fter x in the direction of y Returns y is x y Not implemented 484 Libraries math h tgmath h Description nexttoward nexttowardf nexttowardl nexttoward Same as nextafter except that the second argument in all three variants is of type long double Returns y if x y Not implemented Positive difference maximum minimum math h tgmath h Description fdim fdimf fdiml fdim Returns the positive difference between x y Not implemented fmax fmaxf fmaxl fmax Returns the maximum value of their arguments Not implemented fmin fminf fminl fmin Returns the minimum value of their arguments Not implemented Error and gamma Not implemented math h tgmath h Description erf erff erfl erf Computes the error function of x Not implemented erfc erfcf erfcl erc Computes the complementary error function of x Not implemented lgamma lgammaf lgammal lgamma Computes the 1log I x Not implemented tgamma tgammaf tgammal tgamma ComputesT x Not implemented Comparison macros The next are implemented as macros For any ordered pair of numeric values exactly one of the relationships less greater and equal is true These macros are type generic and therefore do not have a parallel function in tgmath h All arguments must be expressions of real floating type math h tgmath h Description isgreater Returns the value of x gt y isgreaterequal Returns the value of x gt y isless Ret
311. function only works in struct statements exists int exists section_name The function returns 1 if the section section_name exists in one or more object file O otherwise If the section is not present in input object files but generated from LSL the result of this function is undefined To check whether the section mysect ion exists in one of the object files that is specified to the linker exists mysection max int max expr expr Returns the value of the expression that has the largest value To get the highest value of two symbols max syml sym2 min int min expr expr Returns the value of the expression hat has the smallest value To get the lowest value of two symbols min syml sym2 sizeof int sizeof size_id Returns the size of the object group section or memory the identifier refers to To get the size of the section asection 539 TASKING VX toolset for RH850 User Guide sizeof sect asection The group and sect arguments only works in assignments and struct statements The mem argument can be used anywhere in section layouts 13 2 6 LSL Definitions in the Linker Script File lt definition gt description architecture_definition derivative_definition definition l board_spec l l section_definition section_setup e Atleast one architecture definition must be present in the LSL file 13 2 7 Memory and Bus Definitions mem def memory
312. g Separate longflags with commas The following two invocations are equivalent cc850 Wc Oac test c cc850 pass c optimize t coalesce cse test c When you do not specify an option a default value may become active 361 TASKING VX toolset for RH850 User Guide Control program option address size Menu entry 1 Select Linker Output Format 2 Enable the option Generate Intel Hex format file and or Generate S records file 3 Specify the Size of addresses Eclipse always uses the project name as the basename for the output file Command line syntax address size addr_size Description If you specify IHEX or SREC with the control option format you can additionally specify the record length to be emitted in the output files With this option you can specify the size of the addresses in bytes record length For Intel Hex you can use the values 1 2 or 4 bytes default For Motorola S you can specify 2 S1 records 3 S2 records or 4 bytes S3 records default If you do not specify addr_size the default address size is generated Example To create the SREC file test sre with S1 records type cc850 format SREC address size 2 test c Related information Control program option format Set linker output format Control program option output Output file 362 Tool Options Control program option case insensitive Menu entry 1 Select Assembler Symbols 2 Ena
313. g Derivatives 0c cccceeeee eee renee eet e eee eens ee eee ee eseseeseenesenes 565 13 6 3 Defining External Memory and BUSES ceeeeeeeeeeee eee ee eee teeta teeta eeeen es 565 13 7 Semantics of the Section Setup Definition 0 cece eect e eee eter eee eeaeen een eeaeed 566 13 7 1 Setting up a Section 2 2 cece tee tenet eter e tear e eee n een eea een eea een eeaeeas 567 13 8 Semantics of the Section Layout Definition cceceeeeeee teen ee eee eee ee eee een een eee eed 567 13 8 1 Defining a Section Layout ccc cece cece eee irkinin siensia mineti 568 13 8 2 Creating and Locating Groups of Sections cece eeeeeee eee eee eee eee een een eees 569 13 8 3 Creating or Modifying Special Sections 0 cee eeeeeeeeeeeeeeeeeeeeeeneeeeeneees 575 13 8 4 Creating Symbols 0 2 0 0 cece cece e eee eee e eee e een teens neta esata eeaeea een eeeeeneeaeed 579 13 8 5 Conditional Group Statement ccceeeeee cee eee eee een eeeeeneeeeeneeeeeaeeneeneees 579 14 Debug Target Configuration FileS 0c ccceceeeeeeec eee ee eee eaaa aiaiai n iaaa 581 14 1 Custom Board Support cece ener etn eter ee eteeei eta 581 14 2 Description of DTC Elements and Attributes cceceeeee eee eeeneee eee eee een eeaeeneeaeed 582 15 CERT C Secure Coding Standard seisen cinirenen i renee E E R aN 585 15 1 Preprocessor PRE si icccsisscskstecehpatantacuau
314. g off use an uppercase letter or a ongflag Separate longflags with commas The following two invocations are equivalent c850 Oac test c c850 optimize t coalesce tcse test c When you do not specify an option a default value may become active 205 TASKING VX toolset for RH850 User Guide C compiler option cache Menu eniry 1 Select C Compiler Optimization Compilation Speed 2 Enable the option Cache generated code to improve the compilation speed 3 Inthe Directory for cached files field enter the name for the location of the cache Command line syntax cache directory Default on command line current directory Default in Eclipse cache directory under project directory Description This option enables a cache for output files in the specified directory When the source code after preprocessing and relevant compiler options and the compiler version are the same as in a previous invocation the previous result is copied to the output file The cache only works when there is a single C input file and a single output file You can also enable the cache and specify the cache directory with the environment variable CB50CACHE This option takes precedence over the environment variable The cache directory may be shared for instance by placing it on a network drive You can control the maximum size and or age of the cache directory with the separate expiration tool expire850 The compiler creates a d
315. gate Returns 1 if the operands value is 0 otherwise 0 For example if buf is 0 then buf is 1 If buf has a value of 1000 then buf is 0 Arithmetic multiplication Yields the product of its operands division Yields the quotient of the division of the first operand by the second For integer operands the divide operation produces a truncated integer result modulo Integer only This operator yields the remainder from the division of the first operand by the second addition Yields the sum of its operands subtraction Yields the difference of its operands Shift lt lt shift left Integer only Causes the left operand to be shifted to the left and zero filled by the number of bits specified by the right operand gt gt shift right Integer only Causes the left operand to be shifted to the right by the number of bits specified by the right operand The sign bit will be extended 48 Assembly Language Type Operator Name Description Relational lt less than Returns an integer 1 if the indicated condition is TRUE or an integer 0 if the indicated condition is h lt ess than or equa FALSE gt greater than greater than or equal For example if D has a value of 3 and E has a value of 5 then the result of the expression D lt E is 1 and equal the result of the expression D gt E is 0 not equal Use tests for equality involving floating point v
316. generate any debug information Related information 273 TASKING VX toolset for RH850 User Guide Assembler option define D Menu entry 1 Select Assembler Preprocessing The Defined symbols box right below shows the symbols that are currently defined 2 To define a new symbol click on the Add button in the Defined symbols box 3 Type the symbol definition for example demo 1 Use the Edit and Delete button to change a macro definition or to remove a macro from the list Command line syntax define macro_name macro_definition Dmacro_name macro_definition Description With this option you can define a macro and specify it to the assembler preprocessor If you only specify a macro name no macro definition the macro expands as 1 You can specify as many macros as you like Simply use the Add button to add new macro definitions On the command line use the option define D multiple times If the command line exceeds the limit of the operating system you can define the macros in an option file which you then must specify to the assembler with the option option file f file Defining macros with this option instead of in the assembly source is for example useful in combination with conditional assembly as shown in the example below This option has the same effect as defining symbols via the DEFINE SET and EQU directives similar to define in the C language With the MA
317. gle quote embedded This has a double quote embedded This has a double quote and a single quote embedded When a text line reaches its length limit use a to continue the line Whitespace between quotes is preserved This is a continuation line gt This is a continuation line e Itis possible to nest command line files up to 25 levels 397 TASKING VX toolset for RH850 User Guide Example Suppose the file myoptions contains the following lines debug info define DEMO 1 test Specify the option file to the control program cc850 option file myoptions This is equivalent to the following command line cc850 debug info define DEMO 1 test c Related information 398 Tool Options Control program option output o Menu eniry Eclipse always uses the project name as the basename for the output file Command line syntax output file o file Description By default the control program generates a file with the same basename as the first specified input file With this option you specify another name for the resulting absolute object file The default output format is ELF DWARF but you can specify another output format with option format Example cc850 test c prog c The control program generates an ELF DWARF object file default with the name test elf To generate the file result elf cc850 output result elf test c prog c Related informa
318. gma directives as violations defined shall only be used in one of the two standard forms Pointer arithmetic should not be used No more than 2 levels of pointer indirection should be used A violation is reported when a pointer with three or more levels of indirection is declared No relational operators between pointers to different objects In general checking whether two pointers point to the same object is impossible The compiler will only report a violation for a relational operation with incompatible pointer types Non constant pointers to functions shall not be used Functions assigned to the same pointer shall be of identical type MISRA C Rules 106 Automatic address may not be assigned to a longer lived object 107 The null pointer shall not be de referenced A violation is reported for every pointer dereference that is not guarded by a NULL pointer test 108 All st ruct union members shall be fully specified 109 Overlapping variable storage shall not be used A violation is reported for every union declaration 110 R Unions shall not be used to access the sub parts of larger types A violation is reported for a union containing a struct member 111 R Bit fields shall have type unsigned int or signed int 112 R Bit fields of type signed int shall be at least 2 bits long 113 R All struct union members shall be named 114 R Reserved and standard library names shall not be redefined 115 R Standard li
319. guments double Double single precision FPU single Single precision FPU none No FPU available Default fpu none Description With this option you can select the hardware floating point configuration of the used processor With double the compiler generates hardware floating point instructions for single and double precision floating point With single the compiler generates hardware floating point instructions for single precision floating point and software floating point instructions for double precision floating point With none the compiler generates software floating point instructions for single and double precision floating point Related information Control program option fp model Floating point execution model 380 Tool Options Control program option global type checking Menu eniry 1 Select C Compiler Diagnostics 2 Enable the option Perform global type checking on C code Command line syntax global type checking Description The C compiler already performs type checking within each module Use this option when you want the linker to perform type checking between modules The control program passes this option to both the C compiler and the linker Related information 381 TASKING VX toolset for RH850 User Guide Control program option help Menu entry Command line syntax help item You can specify the following argument options o Show extended option descript
320. h a lower priority but only if the two rules have the same type and the same properties The relative order of rules of different types or different properties is not affected by this priority value You can set the priority with the priority group attribute in LSL The sections to which the rule applies restrictions between sections are shown in this column lt ordered contiguous clustered For contiguous sections the linker uses the section order as shown here Clustered sections can be located in any relative order Removed Sections This part of the map file shows the sections which are removed from the output file as a result of the optimization option to delete unreferenced sections and or duplicate code or constant data linker option optimize cxy Section File Library Symbol Reason 526 The name of the section which has been removed The name of the input object file where the section is removed from The name of the library where the object file is part of The symbols that were present in the section The reason why the section has been removed This can be because the section is unreferenced or duplicated Chapter 12 Object File Formats This chapter describes the format of several object files 12 1 ELF DWARF Object Format The TASKING VX toolset for RH850 by default produces objects in the ELF DWARF 3 format The ELF DWARF Object Format for the RH850 toolset follows the convention as describe
321. h this pragma you can control the nonan flag of C compiler option fp model 19 TASKING VX toolset for RH850 User Guide fp_rewrite on off default restore With this pragma you can control the rewrite flag of C compiler option fp model inline noinline smartinline default restore See Section 1 10 2 Inlining Functions inline inline_max_incr value default restore inline_max_size value default restore With these pragmas you can control the automatic function inlining optimization process of the compiler It has effect only when you have enabled the inlining optimization C compiler option optimize inline See C compiler options inline max incr inline max size macro default restore nomacro on off default restore Turns macro expansion on or off By default macro expansion is enabled message message Print the message string s on standard output nomisrac nr default restore Without arguments this pragma disables MISRA C checking Alternatively you can specify a comma separated list of MISRA C rules to disable See C compiler option misrac and Section 3 7 2 C Code Checking MISRA C optimize flags endoptimize default restore You can overrule the C compiler option optimize for the code between the pragmas optimize and endopt imize The pragma works the same as C compiler option optimize See Section 3 6 Co
322. h this variable you specify one or more additional directories in which the assembler looks for include files See Section 4 3 How the Assembler Searches Include Files C850INC With this variable you specify one or more additional directories in which the C compiler looks for include files See Section 3 4 How the Compiler Searches Include Files CC850BIN When this variable is set the control program prepends the directory specified by this variable to the names of the tools invoked LIB850 With this variable you specify one or more additional directories in which the linker looks for libraries See Section 5 3 1 How the Linker Searches Libraries PATH With this variable you specify the directory in which the executables reside This allows you to call the executables when you are not in the bin directory Usually your system already uses the PATH variable for other purposes To keep these settings you need to add rather than replace the path Use a semicolon to separate path names TMPDIR With this variable you specify the location where programs can create temporary files Usually your system already uses this variable In this case you do not need to change it See the documentation of your operating system on how to set environment variables 204 Tool Options 8 2 C Compiler Options This section lists all C compiler options Options in Eclipse versus options on the command line Most command line options h
323. hall not be used 594 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 MISRA C Rules The value of an expression shall be evaluation order independent This rule is checked using worst case assumptions This means that a violation will be reported when a possible alias may cause the result of an expression to be evaluation order dependent No dependence should be placed on operator precedence rules Mixed arithmetic should use explicit casting Tests of a non Boolean value against 0 should be made explicit F P variables shall not be tested for exact equality or inequality Constant unsigned integer expressions should not wrap around There shall be no unreachable code All non null statements shall have a side effect A null statement shall only occur on a line by itself Labels should not be used The goto statement shall not be used The continue statement shall not be used The break statement shall not be used except in a switch An if or loop body shall always be enclosed in braces All if else if constructs should contain a final else Every non empty case Clause shall be terminated with a break All switch statements should contain a final default case A switch expression should not represent a Boolean case Every switch shall have at least one case Floating point variables shall not be used as loop counters
324. haracter support on non Japanese systems like PCs you can use the Shift JIS Kanji Code standard This standard combines two successive ASCII characters to represent one Kanji character A valid Kanji combination is only possible within the following ranges e First high byte is in the range 0x81 Ox9f or Oxe0 Oxef Second low byte is in the range 0x40 0x7e or 0x80 Oxfc C Language Compiler option Ak enables support for Shift JIS encoded Kanji multi byte characters in strings and wide character constants Without this option encodings with 0x5c as the second byte conflict with the use of the backslash as an escape character Shift JIS in comments is supported regardless of this option Note that Shift JIS also includes Katakana and Hiragana Example Example usage of Shift JIS Kanji Do not switch off option Ak At the position of the italic text you can put your Shift JIS Kanji code int i put Shift JIS Kanji here char cl char c2 unsigned int ui const char mes put Shift JIS Kanji here const unsigned int ar 5 J K a n Jer 2 SG 5 Japanese array void main void i int cl i put Shift JIS Kanji here continuous comment c2 mes 9 ui ar 0 1 5 Using Assembly in the C Source _asm With the keyword ___asm you can use assembly instructions in the C source and pass C variables as operands to the assembly code Be aware that C modules that contain assembly
325. hat have the __ fpu function qualifier are not affected by this option You can also disable the FPU for specific functions by using the __nofpu function qualifier With fp model trap operations trap on floating point exceptions Make sure you specify the corresponding trapping floating point library to the linker With fp model negzero you allow the compiler to ignore the sign of 0 0 values An example is to replace a a by zero Related information Pragmas STDC FP_CONTRACT fp_negzero fp_nonan and fp_rewrite in Section 1 7 Pragmas to Control the Compiler C compiler option eabi float control level of EABI compliancy Section 1 10 3 Floating Point Unit Support __fpu __nofpu 224 Tool Options C compiler option fpu Menu eniry Eclipse automatically sets the correct option based on the selected processor Command line syntax fpu type You can specify the following arguments double Double single precision FPU single Single precision FPU none No FPU available Default fpu none Description With this option you can select the hardware floating point configuration of the used processor With double the compiler generates hardware floating point instructions for single and double precision floating point With single the compiler generates hardware floating point instructions for single precision floating point and software floating point instructions for double precision floating point With non
326. he Linker Script Language refer to Chapter 13 Linker Script Language LSL 5 8 Linker Labels The linker creates labels that you can use to refer to from within the application software Some of these labels are real labels at the beginning or the end of a section Other labels have a second function these labels are used to address generated data in the locating phase The data is only generated if the label is used Linker labels are labels starting with __1c_ The linker assigns addresses to the following labels when they are referenced Label Description lc_ub_name Begin of section name Also used to mark the begin of the stack or heap or copy table lc_b_name lc_ue_name End of section name Also used to mark the end of the stack or heap lc_e_name __1lc_cb_name Start address of an overlay section in ROM __1lce_ce_name End address of an overlay section in ROM __1lc_gb_name Begin of group name This label appears in the output file even if no reference to the label exists in the input file lc_ge_name End of group name This label appears in the output file even if no reference to the label exists in the input file 156 Using the Linker The linker only allocates space for the stack and or heap when a reference to either of the section labels exists in one of the input object files At C level all linker labels start with one leading underscore the compiler adds an extra un
327. he calender time pointed to by timer to local time in the form of a string This is equivalent to asctime localtime timer gmtime timer Converts the calender time pointed to by timerto the broken down time expressed as UTC Returns a pointer to the broken down time localtime timer Converts the calendar time pointed to by timer to the broken down time expressed as local time Returns a pointer to the broken down time Formatted time The next function has a parallel function defined in wchar h time h wchar h strftime s smax fmt tm tp wcsftime s smax fmt tm tp Formats date and time information from struct tm tp into s according to the specified format fmt No more than smax characters are placed into s The formatting of strftime is locale specific using the LC_TIME category see Section 10 1 15 ocale h You can use the next conversion specifiers a abbreviated weekday name A full weekday name b abbreviated month name 501 TASKING VX toolset for RH850 User Guide B C C d D e oF 9 G h H l j mM M n p Yor R S At T ou U V Yw W xX X WY Y YZ LZ A 502 full month name locale specific date and time representation same as a b e T ZY last two digits of the year day of the month 01 31 same as m d y day of the month 1 31 with single digits preceded by a space ISO 8601 date format sY m d last two digits of the week based
328. he command line exceeds the limit of the operating system you can define the macros in an option file which you then must specify to the compiler with the option option file f file Defining macros with this option instead of in the C source is for example useful to compile conditional C source as shown in the example below Example Consider the following C program with conditional code to compile a demo program and a real program void main void if DEMO demo_func compile for the demo program else real_func compile for the real program endif You can now use a macro definition to set the DEMO flag 215 TASKING VX toolset for RH850 User Guide c850 define DEMO test c c850 define DEMO 1 test c Note that both invocations have the same effect The next example shows how to define a macro with arguments Note that the macro name and definition are placed between double quotes because otherwise the spaces would indicate a new option c850 define MAX A B A gt B A B test c Related information C compiler option undefine Remove preprocessor macro C compiler option option file Specify an option file 216 Tool Options C compiler option dep file Menu eniry Eclipse uses this option in the background to create a file with extension d one for every input file Command line syntax dep file file Description With this option you tell
329. he parent cores and memories With the keyword extends you create a child derivative 561 TASKING VX toolset for RH850 User Guide derivative name_child_deriv extends name_parent_deriv definitions As with a core architecture a derivative can have any number of parameters These are identifiers which get values assigned on instantiation or extension of the derivative You can use them in any expression within the derivative definition derivative name_child_deriv parml1 parm2 1 extends name_parent_deriv arguments definitions 13 5 2 Instantiating Core Architectures With the keyword core you instantiate a core architecture in a derivative e With the keyword architecture you tell the linker that the given core has a certain architecture The architecture name refers to an existing architecture definition in the same LSL file For example if you have two cores called mycore_1 and mycore_2 that have the same architecture called mycorearch you must instantiate both cores as follows core mycore_1 architecture mycorearch core mycore_2 architecture mycorearch If the architecture definition has parameters you must specify the arguments that correspond with the parameters For example mycorearch1 expects two parameters which are used in the architecture definition core mycore architecture mycorearchl 1 2 13 5 3 Defining Internal Memory and Buses With the keyword memory you def
330. he size of the resulting assembler file and thus the size of the object file For the final application compile your C files without debug information The DWARF debug format allows for a flexible approach as to how much symbolic information is included as long as the structure is valid Adding all possible DWARF data for a program is not practical The amount of DWARF information per compilation unit can be huge And for large projects with many object modules the link time can grow unacceptably long That is why the compiler has several debug information levels In general terms one can say the higher the level the more DWARF information is produced The DWARF data in an object module is not only used for debugging The toolset can also do type checking of the whole application In that case the linker will use the DWARF information of all object modules to determine if every use of a symbol is done with the same type In other words if the application is built with type checking enabled then the compiler will add DWARF information too Small set of debug information With this suboption only DWARF call frame information and type information are generated This enables you to inspect parameters of nested functions The type information improves debugging You can perform a stack trace but stepping is not possible because debug information on function bodies is not generated You can use this suboption for example to compact libraries 21
331. he status of the heap memory This can be illustrated with the following example string char malloc 100 strcpy string abcdefgh free string If you step through these lines during debugging the Heap view shows the situation after each line has been executed Before any of these lines has been executed there is no memory allocated and the Heap view is empty After the first line the Heap view shows that memory is occupied the description tells where the block starts how large it is 100 MAUs and what its content is 0x0 0x0 196 Using the Debugger After the second line abcdefgh has been copied to the allocated block of memory The description field of the Heap view again shows the actual contents of the memory block 0x61 0x62 The third line frees the memory The Heap view is empty again because after this line no memory is allocated anymore 7 4 9 Logging View Use the Logging view to control the generation of internal log files This view is intended mainly for use by or at the request of Altium support personnel 7 4 10 RTOS View The debugger has special support for debugging real time operating systems RTOSs This support is implemented in an RTOS specific shared library called a kernel support module KSM or RTOS aware debugging module RADM You have to create your own OSEK Run Time Interface ORTI and specify this file on the Miscellaneous tab while configuring a customized
332. hese functions are declared in wchar h Copying and concatenation functions string h wchar h Description memcpy s1 s2 n memmove s1 s2 n strcpy s1 s2 strncpy s1 s2 n strcat s1 s2 strncat s1 s2 n wmemcpy s1 s2 n wmemmove s1 s2 Nn wescpy s1 s2 wesnecpy s1 s2 n wescat sl1 s2 wesncat s1 s2 n Comparison functions string h wchar h Copies n characters from s2 into s7 and returns s1 If s1 and s2 overlap the result is undefined Same as memcpy but overlapping strings are handled correctly Returns s7 Copies s2 into s1 and returns s7 If s1 and s2 overlap the result is undefined Copies not more than n characters from s2 into s7 and returns s7 If s7 and s2 overlap the result is undefined Appends a copy of s2 to s7 and returns s1 If s7 and s2 overlap the result is undefined Appends not more than n characters from s2 to s7 and returns s7 If s7 and s2 overlap the result is undefined Description memcemp s1 s2 n strcmp s1 s2 strnemp s1 s2 n Strcoll sl s2 strxfrm sl s2 n Search functions string h wmememp s1 s2 n wcscmp s1 s2 wcsncmp s1 s2 n wcscoll s1 s2 wesxfrm si1 s2 n wehar h memchr s Cc Nn wmemchr s Cc n Compares the first n characters of s7 to the first n characters of s2 Returns lt 0 if s1 lt s2 0if s
333. hout numbers all warnings are suppressed e If you specify this option with a number only the specified warning is suppressed You can specify the option no warnings number multiple times Example To suppress warnings 751 and 756 enter amk no warnings 751 756 Related information Parallel make utility option warnings as errors Treat warnings as errors 419 TASKING VX toolset for RH850 User Guide Parallel make utility option silent s Command line syntax silent S Description With this option you tell the make utility to perform its tasks without printing the commands it executes Error messages are normally printed Example amk s The make utility rebuilds your files but does not print the commands it executes during the make process Related information Parallel make utility option n Perform a dry run 420 Tool Options Parallel make utility option version V Command line syntax version V Description Display version information The make utility ignores all other options or input files Related information 421 TASKING VX toolset for RH850 User Guide Parallel make utility option warnings as errors Command line syntax warnings as errors number Description If the make utility encounters an error it stops When you use this option without arguments you tell the make utility to treat all warnings as errors This means that the exit status o
334. however executed or b cause control flow to change Before preprocessing a null statement shall only occur on a line by itself it may be followed by a comment provided that the first character following the null statement is a white space character The goto statement shall not be used The continue statement shall not be used For any iteration statement there shall be at most one break statement used for loop termination A function shall have a single point of exit at the end of the function The statement forming the body of a switch while do while or for statement be a compound statement An if expression construct shall be followed by a compound statement The else keyword shall be followed by either a compound statement or another if statement Allif else if constructs shall be terminated with an else clause Switch statements 602 15 1 15 2 15 3 15 4 15 5 R R R R R A switch label shall only be used when the most closely enclosing compound statement is the body of a switch statement An unconditional break statement shall terminate every non empty switch clause The final clause of a switch statement shall be the default clause A switch expression shall not represent a value that is effectively Boolean Every switch statement shall have at least one case clause Functions 16 1 R 16 2 R 16 3 R 16 4 R 16 5 R 16 6 R 16 7 A 16 8 R 16 9 R 16 10 R M
335. iadaaetanencusecens aedeeanteddaniildeasnarancneideecnsa nee 585 15 2 Declarations and Initialization DCL 0 0 0 cece eee eee e eee tenet eee eea een eeaeeneeaeed 586 15 3 Expressions EXP cicien E honed E AE EAE E AEA noone 587 15 4 Integers INT einen tena esinind coda qangetheas ee E E E E aea OEE 588 15 5 Floating Point REP isro area saaa a aa E e S TORE E Ea GRENE 588 15 6 Arrays ARR remainn n a a E i EEE EAA 589 15 7 Characters and Strings STR cceeeeeeeeeeee eee eeeeeceeeeeceeseeseeeeeseeseeseeeeeeeeseenees 589 15 8 Memory Management MEM cceeceeeeeeeeee eee ee eee ee eee ee eee en esata tensa teeta tent ea nee ea 589 15 9 Environment ENV s iicr eson eaa el ersacwnage EErEE EEE a EEEa SEEE 590 15 10 Si0NalS SIG asiana en aaae E AA a E EE E aE ASEE 590 15 11 Miscellaneous MSC 0 2 0 0 cceceeeee nee eee eee ee nese een eea een eea eed eea een eeaeeaeeaeeaeeaneneeanenes 591 16 MISRA G RUGS errr retirei ce rianan eaaa EAEE AE ES EA desc EN E EEEa EE ENET 593 IE EMISRA CA 998 ianareo a r a a TE E A A 593 16 2 MISRA G 2004 kancanana E aAA Enna h E tanbagazacseaace 597 163 MISRA C2012 ie inie a a a a a a a e a aa OEE 605 vii TASKING VX toolset for RH850 User Guide viii Chapter 1 C Language This chapter describes the target specific features of the C language including language extensions that are not standard in ISO C For example pragmas are a way to control the compiler from withi
336. ialized Constants Uninitialized constant data is treated like it is initialized with O zero For example const int i is treated as const int i 0 With the default compiler settings the example above will be allocated as Section const t i global _i align 4 size ie 4 _i type object db db db db endsec Qo eo ao When pragma noclear is used normally the noclear attribute is added to a section However this does not apply to sections in ROM With pragma const_init the constant data is placed in RAM bss in that case you can use the pragma noclear 1 2 4 Placing an Object at an Absolute Address _at Just like you can declare a variable in a specific part of memory using memory qualifiers you can also place an object or a function at an absolute address in memory With the attribute __at you can specify an absolute address Instead of __at you can also use __attribute__ at The address is a 32 bit linear address Examples unsigned char Display 80 24 __at 0x2000 The array Display is placed at address 0x2000 In the generated assembly an absolute section is created On this position space is reserved for the variable Display int i __at 0x1000 1 void f void __at 0xa0001000 __nop The function f is placed at address 0xa0001000 TASKING VX toolset for RH850 User Guide Restrictions Take note of the following restrictions if you place a variable at an abs
337. ibutes Attributes that define how the section should be linked or located Target The hardware board on which an application is executing A board contains at least one processor However a complex target may contain multiple processors and external memory and may be shared between processors Unresolved A reference to a symbol for which the linker did not find a definition yet reference 5 1 1 Phase 1 Linking The linker takes one or more relocatable object files and or libraries as input A relocatable object file as generated by the assembler contains the following information Header information Overall information about the file such as the code size name of the source file it was assembled from and creation date Object code Binary code and data divided into various named sections Sections are contiguous chunks of code that have to be placed in specific parts of the memory The program addresses start at zero for each section in the object file e Symbols Some symbols are exported defined within the file for use in other files Other symbols are imported used in the file but not defined external symbols Generally these symbols are names of routines or names of data objects Relocation information A list of places with symbolic references that the linker has to replace with actual addresses When in the code an external symbol a symbol defined in another file or in a library is referenced the assem
338. ic expansion g G List expansion of generic instructions generic i l List generic instructions line VL List C preprocessor line directives macro m M List macro definitions empty line n N List empty source lines and comment lines newline conditional p P List conditional assembly equate q Q List equate and set directives EQU SET relocations r R List relocations characters r hll s S List HLL symbolic debug informations equate values v V List equate and set values wrap lines wW Wrap source lines macro expansion x X List macro expansions cycle count y Y List cycle counts define expansion z Z List define expansions Use the following options for predefined sets of flags list format 0 LO All options disabled Alias for list format DEGILMNPQRSVWXYZ list format 1 L1 All options enabled Alias for list format degilmnpqrsvwxyz Default list format dEGilMnPqrsVwXxyZ 295 TASKING VX toolset for RH850 User Guide Description With this option you specify which information you want to include in the list file On the command line you must use this option in combination with the option list file l Related information Assembler option list file Generate list file Assembler option section info list Display section information in list file 296 Tool Options Assembler option make target Menu entry Command line syntax make target name Description
339. ied input file A list file shows the generated object code and the relative addresses Note that the assembler generates a relocatable object file with relative addresses With the optional file you can specify a name for the list file This is only possible if you specify only one input file to the control program If you do not specify a file name or you specify more than one input file the control program names the generated list file s after the specified input file s with extension 1st Note that object files and library files are not counted as input files Related information Assembler option list file Generate list file Assembler option list format Format list file 391 TASKING VX toolset for RH850 User Guide Control program option IsI file d Menu eniry An LSL file can be generated when you create your project in Eclipse 1 From the File menu select File New TASKING RH850 C Project The New C Project wizard appears 2 Fill in the project settings in each dialog and click Next gt until the RH850 Project Settings appear 3 Enable the option Add linker script file to the project and click Finish Eclipse creates your project and the file project 1s1 in the project directory The LSL file can be specified in the Properties dialog 1 Select Linker Script File 2 Specify a LSL file in the Linker script file Isl field default ProjName 1s1 Command line syntax lsl file file dfil
340. if it is not quoted it is looked up as an ordinary symbol macro or label Example IF DEFINED ANGLE is symbol ANGLE defined IF DEFINED ANGLE does label ANGLE exist HA expression Returns the upper 16 bits of a value adjusted for a signed addition HA expression is equivalent to expression 0x800 gt gt 16 amp Oxffff expressioncan be any relocatable or absolute expression Example movhi ha _world r0 rl11 HI expression Returns the upper 16 bits of a value HI expression is equivalent to expression gt gt 16 amp Oxffff expression can be any relocatable or absolute expression LO expression Returns the lower 16 bits of a value LO expression is equivalent to expression amp Oxffff expression can be any relocatable or absolute expression 52 Assembly Language LSB expression Returns the east significant byte of the result of the expression The result of the expression is calculated as 16 bits Example DB LSB 0x1234 stores 0x34 DB MSB 0x1234 stores 0x12 LSH expression Returns the east significant half word bits 0 15 of the result of the absolute expression The result of the expression is calculated as a word 32 bits Example DH LSH 0x12345678 stores 0x7856 DH MSH 0x123456 stores 0x1200 LSW expression Returns the east significant word bits 0 31 of the result of the expression The result of th
341. ificance of more than 31 characters The same identifier shall not be used in multiple name spaces Specific length typedefs should be used instead of the basic types Use unsigned char or signed char instead of plain char Floating point implementations should comply with a standard The bit representation of floating point numbers shall not be used A violation is reported when a pointer to a floating point type is converted to a pointer to an integer type 593 TASKING VX toolset for RH850 User Guide 17 R typedef names shall not be reused 18 A Numeric constants should be suffixed to indicate type A violation is reported when the value of the constant is outside the range indicated by the suffixes if any 19 R Octal constants other than zero shall not be used 20 R All object and function identifiers shall be declared before use 21 R Identifiers shall not hide identifiers in an outer scope 22 A Declarations should be at function scope where possible x 23 A _ All declarations at file scope should be static where possible 24 R Identifiers shall not have both internal and external linkage x 25 R Identifiers with external linkage shall have exactly one definition 26 R Multiple declarations for objects or functions shall be compatible x 27 A External objects should not be declared in more than one file 28 A The register storage class specifier should not be used 29 R The use ofa tag shall ag
342. ification between square brackets The filename is printed if and if a function scope is known the function name is printed between the square brackets as well If multiple files with the same name exist the unique part of the path is added For example 180 Using the Utilities 00004100 4 int count file c somefunc 00004104 4 int count x a c 00004108 4 int count y a c foo Global symbols do not get information in square brackets Assembly level symbol table This part contains a symbol listing based on the assembly level ELF symbols found in the object file s The symbols are sorted on address Address The start address of the symbol Hexadecimal 8 digits 32 bit Size The size of the symbol from the ELF info in bytes If this field is empty the size is zero Type Code or Data depending on the section the symbol belongs to If this field is empty the symbol does not belong to a section Name The name of the ELF symbol 181 TASKING VX toolset for RH850 User Guide 6 5 Expire Cache Utility With the utility expire850 you can limit the size of the cache C compiler option cache by removing all files older than a few days or by removing older files until the total size of the cache is smaller than a specified size See also Section 9 4 Compiler Cache The invocation syntax is expire850 option cache directory The compiler cache is present in the directory c850cache under the specified cache directory
343. ile This is the same as specifying has virtualization on the command line The assembler does not allow a label with this directive Related Information Assembler option has virtualization 78 Assembly Language IF ELIF ELSE ENDIF Syntax IF expression ELIF expression the ELIF directive is optional ELSE the ELSE directive is optional ENDIF Description With the IF ENDIF directives you can create a part of conditional assembly code The assembler assembles only the code that matches a specified condition The expression must evaluate to an absolute integer and cannot contain forward references If expression evaluates to zero the IF condition is considered FALSE any non zero result of expression is considered as TRUE If the optional ELSE and or ELIF directives are not present then the source statements following the IF directive and up to the next ENDIF directive will be included as part of the source file being assembled only if the expression had a non zero result If the expression has a value of zero the source file will be assembled as if those statements between the IF and the ENDIF directives were never encountered If the ELSE directive is present and expression has a nonzero result then the statements between the IF and ELSE directives will be assembled and the statement between the ELSE and ENDIF directives will be skipp
344. ile that is ready for locating In the last pass you call the linker without this option with the final linker output file out The linker will now locate the file Example In this example the files test1 0 test2 0 and test3 o are incrementally linked 1 1k850 incremental testl o test2 o0 output test out test1 o and test2 0 are linked 2 1k850 incremental test3 0 test out test3 0 and test out are linked task1 out is created 3 1k850 taskl out task1 out is located Related information Section 5 4 Incremental Linking 331 TASKING VX toolset for RH850 User Guide Linker option keep output files k Menu eniry Eclipse always removes the output files when errors occurred Command line syntax keep output files k Description If an error occurs during linking the resulting output file may be incomplete or incorrect With this option you keep the generated output files when an error occurs By default the linker removes the generated output file when an error occurs This is useful when you use the make utility If the erroneous files are not removed the make utility may process corrupt files ona subsequent invocation Use this option when you still want to use the generated file For example when you know that a particular error does not result in a corrupt object file or when you want to inspect the output file or send it to Altium support Related information Linker option warnings as e
345. iminated and the alias checking algorithm assumes that objects with static storage cannot be referenced from functions outside the current module This option only makes sense when you specify all modules of an application on the command line Example cc850 static modulel c module2 c module3 c Related information 404 Tool Options Control program option undefine U Menu eniry 1 Select C Compiler Preprocessing The Defined symbols box shows the symbols that are currently defined 2 To remove a defined symbol select the symbol in the Defined symbols box and click on the Delete button Command line syntax undefine macro_name Umacro_name Description With this option you can undefine an earlier defined macro as with undef This option is for example useful to undefine predefined macros The following predefined ISO C standard macros cannot be undefined __ FILE _ current source filename __LINE__ current source line number int type __ TIME _ hh mm ss __ DATE __ Mmm dd yyyy __STDC__ level of ANSI standard The control program passes the option undefine U to the compiler Example To undefine the predefined macro _ TASK ING__ cc850 undefine __TASKING__ test c Related information Control program option define Define preprocessor macro Section 1 8 Predefined Preprocessor Macros 405 TASKING VX toolset for RH850 User Guide Control program option verbose v Menu entry 1
346. in MAUs in which the startup code moves data e The dest statement is only required when the startup code initializes memory used by another processor that has no access to ROM e A space_name refers to a defined address space start_addr start_address start_addr_descr lt start_addr_descr gt start_addr_descr run_addr expr symbol symbol_name e A symbol_name refers to the section that contains the startup code vector_table_statement vector _table section_name vecttab_spec lt vecttab_spec gt lt vector_def gt vecttab_spec vector_size expr size expr id_symbol_prefix symbol_name run_addr addr_absolute template section_name template_symbol symbol_name vector _prefix section_name fill vector_value no_inline 544 Linker Script Language LSL copy tag vector_def vector vector_spec lt vector_spec gt J vector_spec id vector_id_spec fill vector_value optional tag vector_id_spec number range lt range gt vector _ value symbol_name number lt number gt loop lt expr jst reserved_rang reserved lt tag_attr gt expr expr 7 The end address is not part of the range endianness_def endianness lt endianness_type gt ndianness_typ big little 13 2 9 Derivative Definition derivative_definition derivative derivative_na
347. in a switch without a default part This check will add one function call to every switch without a default part but it will have little impact on the execution speed 256 Tool Options Malloc consistency checks This option enables the use of wrappers around the functions malloc realloc free that will check for common dynamic memory allocation errors like buffer overflow e write to freed memory e multiple calls to free passing invalid pointer to free Enabling this check will extract some additional code from the library but it will not enlarge your application code The dynamic memory usage will increase by a couple of bytes per allocation Related information Pragma runtime 257 TASKING VX toolset for RH850 User Guide C compiler option source s Menu eniry 1 Select C Compiler Miscellaneous 2 Enable the option Merge C source code with generated assembly Command line syntax source sS Description With this option you tell the compiler to merge C source code with generated assembly code in the output file The C source lines are included as comments Related information Pragmas source nosource 258 Tool Options C compiler option static Menu eniry Command line syntax static Description With this option the compiler treats external definitions at file scope except for main as if they were declared static As a result unused functions will be eliminated and the a
348. in csinf csinl csinh csinhf csinhl esqrt csqrtf csqrtl ctan ctanf ctanl ctanh ctanhf ctanhl ctime difftime div ldiv lldiv erf erfl erff calloc uses static buffer management structures See malloc 5 Sets errno via calls to other functions Sets errno via calls to other functions Sets errno via calls to other functions Sets errno via calls to other functions Not implemented Sets errno via calls to other functions Sets errno via calls to other functions Sets errno via calls to other functions Uses global File System Simulation buffer _dbg_request Calls fclose See 1 Modifies iob See 1 Uses global File System Simulation buffer _dbg_request Sets errno via calls to other functions Calls close cosh calls exp which sets errno If errno is discarded cosh is reentrant Sets errno via calls to other functions Sets errno via calls to other functions Sets errno via calls to other functions Sets errno via calls to other functions Sets errno via calls to other functions Sets errno via calls to other functions Calls asctime Not implemented 507 TASKING VX toolset for RH850 User Guide Function Not reentrant because erfc erfcf erfcl exit exp expf expl exp2 exp2f exp21 xpml expmlf expmll fabs fabsf fabsl Eclose fdim fdimf fdiml fFeclearexcept Fegetenv fegetexceptflag fFegetround fFeholdexept feof feraiseexcept ferror fesetenv fesetexceptflag Fesetr
349. in one standard processor with some external memory that executes one task A complex target board may contain multiple standard processors and DSPs combined with configurable IP cores loaded in an FPGA Each core may execute a different program and external memory may be shared by multiple cores The linker takes the following files for input and output relocatable objectfiles o relocatable linker object file out relocatable object library a linker scriptfile 1s1 linker map file map ee nie errormessages elk memory definition relocatable linker objectfile out file mdf Intel Hex ELF DWARF Motorola S record absolute object file absolute object file absolute object file hex elf Sre This chapter first describes the linking process Then it describes how to call the linker and how to use its options An extensive list of all options and their descriptions is included in Section 8 4 Linker Options To control the link process you can write a script for the linker This chapter shortly describes the purpose and basic principles of the Linker Script Language LSL on the basis of an example A complete description of the LSL is included in Linker Script Language 5 1 Linking Process The linker combines and transforms relocatable object files o into a single absolute object file This process consists of two phases the linking phase and the locating phase In the first phase the linker combines the su
350. ine physical memory that is present on the target board The memory name is used to identify the memory and does not conflict with other identifiers It is common to define internal memory on chip in the derivative definition External memory off chip memory is usually defined in the board specification See Section 13 6 3 Defining External Memory and Buses 562 Linker Script Language LSL The type field specifies a memory type rom read only memory it can only be written at load time e rami random access volatile writable memory writing at run time is possible while writing at load time has no use since the data is not retained after a power down nvram non volatile ram writing is possible both at load time and run time blockram writing is possible both at load time and run time Changes are applied in RAM so after a full device reset the data in a blockram reverts to the original state The optional reserved qualifier before the memory type tells the linker not to locate any section in the memory by default You can locate sections in such memories using an absolute address or range restriction see subsection Locating a group in Section 13 8 2 Creating and Locating Groups of Sections The mau field specifies the MAU size Minimum Addressable Unit of the memory This field is required The size field specifies the size in MAU of the memory This field is required The priority field specifies a locate priority f
351. ings w Menu eniry 1 Select Linker Diagnostics The Suppress warnings box shows the warnings that are currently suppressed 2 To suppress a warning click on the Add button in the Suppress warnings box 3 Enter the numbers separated by commas of the warnings you want to suppress for example 135 136 Or you can use the Add button multiple times 4 To suppress all warnings enable the option Suppress all warnings Use the Edit and Delete button to change a warning number or to remove a number from the list Command line syntax no warnings number w number Description With this option you can suppresses all warning messages or specific warning messages On the command line this option works as follows e If you do not specify this option all warnings are reported e If you specify this option but without numbers all warnings are suppressed e If you specify this option with a number only the specified warning is suppressed You can specify the option no warnings number multiple times Example To suppress warnings 135 and 136 enter 1k850 no warnings 135 136 test o Related information Linker option warnings as errors Treat warnings as errors 348 Linker option optimize O Menu entry 1 Select Linker Optimization 2 Select one or more of the following options e Delete unreferenced sections e Link time global optimizations e Use a first fit decreasing algorithm
352. interpreted as object files and are passed to the linker e Files with a out suffix are interpreted as linked object files and are passed to the locating phase of the linker The linker accepts only one out file in the invocation e Files with a 1s1 suffix are interpreted as linker script files and are passed to the linker 161 TASKING VX toolset for RH850 User Guide Options The control program accepts several command line options If you specify an unknown option to the control program the control program looks if it is an option for a specific tool If so it passes the option directly to the tool However it is recommended to use the control program options pass Wc Wa WI to pass arguments directly to tools For a complete list and description of all control program options see Section 8 5 Control Program Options Example with verbose output cc850 verbose test c The control program calls all tools in the toolset and generates the absolute object file test e1f With option verbose v you can see how the control program calls the tools t pnath c850 fp model cFlnrSTz fpu none o cc3248a srce test c path as850 o cc3248b 0 cc3248a sre path 1k850 o test elf dv850e2 1sl1 map file cc3248b 0 le lfp lrt Lpath lib v850e2 The control program produces unique filenames for intermediate steps in the compilation process such as cc3248a src and cc3248b 0 in the example above which
353. inuation line e Itis possible to nest command line files up to 25 levels Example Suppose the file myoptions contains the following lines x mylib a objl o w5 431 TASKING VX toolset for RH850 User Guide Specify the option file to the archiver ar850 option file myoptions This is equivalent to the following command line ar850 x mylib a objl o w5 Related information 432 Tool Options Archiver option print t Command line syntax print symbols 0 1 t s0 s1 Description Print a table of contents of the library to standard output With the suboption s0 the archiver displays all symbols per object file symbols 0 s0 Displays per object the name of the object itself and all symbols in the object symbols 1 s1 Displays the symbols of all object files in the library in the form library_name object_name symbol_name Example ar850 print mylib a The archiver prints a list of all object modules in the library mylib a ar850 t s0 mylib a The archiver prints per object all symbols in the library For example hello o symbols _main _world Related information 433 TASKING VX toolset for RH850 User Guide Archiver option replace r Command line syntax replace after posname before posname create new newer only verbose r a posname b posname c n u v Description You can use the option replace r for several purpose
354. ion with an attribute The following attributes are allowed init noclear When you specify an optional attribute only sections that have the attribute will be renamed When you do not specify an attribute only sections that do not have any of the listed attributes will be renamed Note that the listed attributes are mutually exclusive if a section uses one of the attributes the other attributes will not be used When the type and attribute are omitted or type all is used all sections will be renamed With the format_string you specify the string that extends the ELF section name The format string can contain characters and may contain the following format specifiers attrib section attributes separated by underscores The cluster attribute used when debug information is enabled is not included module module name 254 Tool Options name object name name of variable or function In format specifier expansions dots are replaced with dollars When the format_string is omitted only the section type will be used as the section name Example To rename sections of memory type data to data c850 variable_name C850 rename sections data c850 name test c To generate the section name type NI EW instead of the default section name type module_name symbol_name enter c850 RNEW test c To generate the section name section_type_prefix instead of the default section name section_type_prefix modu
355. ions Description Displays an overview of all command line options When you specify the argument options you can list detailed option descriptions Example The following invocations all display a list of the available command line options cc850 cc850 help cc850 To see a detailed description of the available options enter cc850 help options Related information 382 Tool Options Control program option include directory l Menu eniry 1 Select C Compiler Include Paths The Include paths box shows the directories that are added to the search path for include files 2 To define a new directory for the search path click on the Add button in the Include paths box 3 Type or select a path Use the Edit and Delete button to change a path or to remove a path from the list Command line syntax include directory path Ipath Description With this option you can specify the path where your include files are located A relative path will be relative to the current directory The control program passes this option to the compiler and the assembler Example Suppose that the C source file test c contains the following lines include lt stdio h gt include myinc h You can call the control program as follows cc850 include directory myinclude test c First the compiler looks for the file st dio h in the directory myinclude relative to the current directory If it was not found the co
356. iple cores found on modern host hardware ar850 An archiver With this utility you create and maintain library files with relocatable object modules o generated by the assembler hidump850 A high level language HLL object dumper With this utility you can dump information about an absolute object file e1 Key features are a disassembler with HLL source intermixing and HLL symbol display and a HLL symbol listing of static and global symbols expire850 A utility to limit the size of the cache by removing all files older than a few days or by removing older files until the total size of the cache is smaller than a specified size 6 1 Control Program The control program is a tool that invokes all tools in the toolset for you It provides a quick and easy way to generate the final absolute object file out of your C sources without the need to invoke the compiler assembler and linker manually The invocation syntax is ec850 option file Recognized input files e Files with a c suffix are interpreted as C source programs and are passed to the compiler Files with a asm suffix are interpreted as hand written assembly source files which have to be passed to the assembler e Files with a src suffix are interpreted as compiled assembly source files They are directly passed to the assembler e Files with a a suffix are interpreted as library files and are passed to the linker e Files with a o suffix are
357. iquely identifies the section The size of the input section The offset relative to the start of the output section The resulting output section name and id The size of the output section List File Formats Module Local Symbols This part of the map file shows a table for each local scope within an object file Each table has three columns 1 the symbol name 2 the address of the symbol and 3 the space where the symbol resides in The table is sorted on symbol name within each space By default this part is not shown in the map file You have to turn this part on manually with linker option map file format statics module local symbols Cross References This part of the map file lists all symbols defined in the object modules and for each symbol the object modules that contain a reference to the symbol are shown Also symbols that remain undefined are shown Call Graph This part of the map file contains a schematic overview that shows how library functions call each other To obtain call graph information the assembly file must contain CALLS directives The following example is a part of a call graph in the textual version of the map file map START s0 0 136 _main s0 8 136 os _printf s0 40 128 __doprint s0 24 88 a __io_putc s0 8 64 _fpute s0 8 56 a __flsbuf s0 24 48 __fflush ba __ write __c_init s0 0 0 _ fflush s0 24 24 _ write _ l
358. irectory c850cache in the directory specified with the option cache or the environment variable C850CACHE The directory is only created when it does not yet exist The cache files are stored in this directory Example To improve the compilation speed and put cached files in directory cache enter c850 cache cache test c Related information Section 9 4 Compiler Cache Section 6 5 Expire Cache Utility 206 Tool Options C compiler option cert Menu eniry 1 Select C Compiler CERT C Secure Coding 2 Make a selection from the CERT C secure code checking list 3 If you selected Custom expand the Custom CERT C entry and enable one or more individual recommendations rules Command line syntax cert all name name Default format all Description With this option you can enable one or more checks for CERT C Secure Coding Standard recommendations rules When you omit the argument all checks are enabled name is the name of a CERT recommendation rule consisting of three letters and two digits Specify only the three letter mnemonic to select a whole category For the list of names you can use see Chapter 15 CERT C Secure Coding Standard On the command line you can use diag cert to see a list of the available checks or you can use a three letter mnemonic to list only the checks in a particular category For example diag pre lists all supported preprocessor checks Example To enable the che
359. is option you can check the source code for syntax errors without generating code This saves time in developing your application The assembler reports any warnings and or errors This option is available on the command line only Related information C compiler option check Check syntax 272 Tool Options Assembler option debug info g Menu entry 1 Select Assembler Symbols 2 Select an option from the Generate symbolic debug list Command line syntax debug info flags g flags You can set the following flags asm a A Assembly source line information hll h H Pass high level language debug information HLL local VL Assembler local symbols debug information smart s S Smart debug information Default debug info hll Default without flags debug info smart Description With this option you tell the assembler which kind of debug information to emit in the object file You cannot specify debug info asm hll Either the assembler generates assembly source line information or it passes HLL debug information When you specify debug info smart the assembler selects which flags to use If high level language information is available in the source file the assembler passes this information same as debug info asm hll local If not the assembler generates assembly source line information same as debug info asm hll local With debug info AHLS the assembler does not
360. is option you tell the control program to keep temporary files it generates during the creation of the absolute object file Example cc850 keep temporary files test c The control program keeps all intermediate files it generates while creating the absolute object file test elf Related information 386 Tool Options Control program option library l Menu eniry 1 Select Linker Libraries The Libraries box shows the list of libraries that are linked with the project 2 To add a library click on the Add button in the Libraries box 3 Type or select a library including its path 4 Optionally disable the option Link default libraries Use the Edit and Delete button to change a library name or to remove a library from the list Command line syntax library name lname Description With this option you tell the linker via the control program to use system library 1ibname a where name is a string The linker first searches for system libraries in any directories specified with library directory then in the directories specified with the environment variable L1B850 unless you used the option ignore default library path Example To search in the system library 1ibc a C library cc850 test o mylib a library c The linker links the file test o and first looks in library mylib a in the current directory only then in the system library 1ibc a to resolve unresolved symbols Related information C
361. itution string that you can use on all following source lines The assembler searches all succeeding lines for an occurrence of symbol and replaces it with string If the symbol occurs in a double quoted string it is also replaced Strings between single quotes are not expanded This directive is useful for providing better documentation in the source program A symbol can consist of letters digits and underscore characters _ and the first character cannot be a digit Macros represent a special case DEFINE directive translations will be applied to the macro definition as it is encountered When the macro is expanded any active DEFINE directive translations will again be applied The assembler issues a warning if you redefine an existing symbol A label is not allowed before this directive Example Suppose you defined the symbol LEN with the substitution string 32 DEFINE LEN 32 Then you can use the symbol LEN for example as follows DS LEN MESSAGE The length is LEN The assembler preprocessor replaces LEN with 32 and assembles the following lines DS 32 MESSAGE The length is 32 Related Information UNDEF Undefine a DEFINE symbol MACRO ENDM Define a macro 65 TASKING VX toolset for RH850 User Guide DS DSB DSH DSW DSD Syntax label DS expression label DSB expression lab
362. ivative definition The derivative definition describes the configuration of the internal on chip bus and memory system Basically it tells the linker how to convert offsets on the buses specified in the architecture definition into offsets in internal memory Microcontrollers and DSPs often have internal memory and I O sub systems apart from one or more cores The design of such a chip is called a derivative Altium provides LSL descriptions of supported derivatives along with SFR files which provide easy access to registers in I O sub systems from C and assembly programs When you build an ASIC or use a derivative that is not yet supported by the TASKING tools you may have to write a derivative definition 533 TASKING VX toolset for RH850 User Guide When you want to use multiple cores of the same type you must instantiate the cores in a derivative definition since the linker automatically instantiates only a single core for an unused architecture See Section 13 5 Semantics of the Derivative Definition for a detailed description of LSL in the derivative definition The processor definition The processor definition describes an instance of a derivative Typically the processor definition instantiates one derivative only single core processor A processor that contains multiple cores having the same homogeneous or different heterogeneous architecture can also be described by instantiating multiple derivatives of the same or
363. ive Bits DB 8 DH 16 DW 32 DD 64 The value of the arguments must be in range with the size of the directive floating point numbers are not allowed If the evaluated argument is too large to be represented in a half word word double word the assembler issues a warning and truncates the value String constants Single character strings are stored in a byte whose lower seven bits represent the ASCII value of the character for example DB R 0x52 Multiple character strings are stored in consecutive byte addresses as shown below The standard C language escape characters like n are permitted DB AB p C 0x41420043 second argument is empty Example When a string is supplied as argument of a directive that initializes multiple bytes each character in the string is stored in consecutive bytes whose lower seven bits represent the ASCII value of the character starting at the most significant byte little endian For example 63 TASKING VX toolset for RH850 User Guide HTBL DH ABC D WIBL DW ABC DTBL DD ABCEFGHI Related Information BS Block Storage DS Define Storage 64 r r r results in 0x424100004400 the results in 0x43424100 results in 0x4847464544434241 Cc the is truncated TIT is truncated Assembly Language DEFINE Syntax _DEFINE symbol string Description With the DEF INE directive you define a subst
364. ize amp _lc_ue_my_mp3 amp _lc_ub_my_mp3 int i for i 0 i lt size it t putchar mp3 i Because the compiler does not know in which space the linker will locate the imported binary you have to make sure the symbols refer to the same space in which the linker will place the imported binary You do this by using the memory qualifier ___ data otherwise the linker cannot bind your linker symbols If you want to use the export functionality of Eclipse the binary file has to be part of your project 5 6 Linker Optimizations During the linking and locating phase the linker looks for opportunities to optimize the object code Both code size and execution speed can be optimized To enable or disable optimizations 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and select Settings In the right pane the Settings appear 142 Using the Linker 3 On the Tool Settings tab select Linker Optimization 4 Enable one or more optimizations You can enable or disable the optimizations described below The command line option for each optimization is given in brackets Delete unreferenced sections option Oc OC This optimization removes unused sections from the resulting object file First fit decreasing option Ol OL When the physical memory is fragmented or when address spaces are nested it may be possible that a given application cannot be locat
365. ized An element of an object shall not be initialized more than once Where designated initializers are used to initialize an array object the size of the array shall be specified explicitly The essential type model 10 1 10 2 10 3 10 4 R R R R Operands shall not be of an inappropriate essential type Expressions of essentially character type shall not be used inappropriately in addition and subtraction operations The value of an expression shall not be assigned to an object with a narrower essential type or of a different essential type category Both operands of an operator in which the usual arithmetic conversions are performed shall have the same essential type category 607 TASKING VX toolset for RH850 User Guide 10 5 A 10 6 R 10 7 R 10 8 R The value of an expression should not be cast to an inappropriate essential type The value of a composite expression shall not be assigned to an object with wider essential type If a composite expression is used as one operand of an operator in which the usual arithmetic conversions are performed then the other operand shall not have wider essential type The value of a composite expression shall not be cast to a different essential type category or a wider essential type Pointer type conversions 11 2 R 11 3 R 11 4 A 11 5 A 11 6 R 11 7 R 11 8 R 11 9 R Expressions 12 1 A 12 2 R 12 3 A 12 4 A Side effec
366. ject Arguments tab If your application s main function takes arguments you can pass them in this tab Arguments are conventionally passed in the argv array Because this array is allocated in target memory make sure you have allocated sufficient memory space for it 186 TASKING C C Debugger Create manage and run configurations 5 1 Ce xlex Name myproject type filter text a St TASKING C C Debugger ite myproject Filter matched 2 of 2 items Source tab Target i Initialization Project C C program arguments argl arg2 arg3 arg Working directory F Use default working directory S workspace _loc myproject ty Source Miscellaneous Workspace File System Apply Variables Using the Debugger On the Source tab you can add additional source code locations in which the debugger should search for debug data TASKING C C Debugger Create manage and run configurations Vexlax type filter text a TASKING C C Debugger ite myproject Name myproject Target Initialization 2 Project 09 Arguments Source Miscellaneous Source Lookup Path b te Default Restore Default E Search for duplicate source files on the path Filter matched 2 of 2 items Apply Cas Gee e Usually the default source code location is correct Miscellaneous tab On the
367. ke utility encounters an error it stops building the current target but proceeds with the other targets that are defined in the makefile Related information 416 Tool Options Parallel make utility option list targets l Command line syntax list targets 1 Description With this option the make utility lists all primary targets that are out of date Example amk 1 list of targets Related information 417 TASKING VX toolset for RH850 User Guide Parallel make utility option makefile f Command line syntax makefile my_makefile f my_makefile Description By default the make utility uses the file makefile to build your files With this option you tell the make utility to use the specified file instead of the file makefile Multiple f options act as if all the makefiles were concatenated in a left to right order If you use instead of a makefile name it means that the information is read from stdin Example amk f mymake The make utility uses the file mymake to build your files Related information 418 Tool Options Parallel make utility option no warnings w Command line syntax no warnings number w number Description With this option you can suppresses all warning messages or specific warning messages On the command line this option works as follows e If you do not specify this option all warnings are reported e If you specify this option but wit
368. kefile Functions A function not only expands but also performs a certain operation The following functions are available filter pattern item The filter function filters a list of items using a pattern It returns items that do match any of the pattern words removing any items that do not match The patterns are written using 3 S filter c h test c test h test o readme txt project output c results in test c test h output c filter out pattern item The filter out function returns all items that do not match any of the pattern words removing the items that do match one or more This is the exact opposite of the filter function S filter out c h test c test h test o readme txt project output c results in test o readme txt project foreach var name item action The foreach function runs through a list of items and performs the same action for each item The var name is the name of the macro which gets dynamically filled with an item while iterating through the item list In the action you can refer to this macro For example S foreach T test filter output T c T h results in test c test h filter c filter h output c output h 6 2 5 Conditional Processing Lines containing ifdef ifndef else or endif are used for conditional processing of the makefile They are used in the following way ifdef macro name if lines else else lines endif The if
369. kend Coalescer option Oa OA The coalescer seeks for possibilities to reduce the number of moves MOV instruction by smart use of registers This optimizes both speed and code size Interprocedural register optimization option Ob OB Register allocation is improved by taking note of register usage in functions called by a given function Peephole optimizations option Oy OY The generated assembly code is improved by replacing instruction sequences by equivalent but faster and or shorter sequences or by deleting unnecessary instructions Generic assembly optimizations option Og OG A set of target independent optimizations that increase speed and decrease code size 116 Using the C Compiler 3 6 3 Optimize for Code Size or Execution Speed You can tell the compiler to focus on execution speed or code size during optimizations You can do this by specifying a size speed trade off level from 0 speed to 4 size This trade off does not turn optimization phases on or off Instead its level is a weight factor that is used in the different optimization phases to influence the heuristics The higher the level the more the compiler focusses on code size optimization To choose a trade off value read the description below about which optimizations are affected and the impact of the different trade off values Note that the trade off settings are directions and there is no guarantee that these are followed The compiler may de
370. l 111 field contains a bit pattern that the linker writes to all memory addresses that remain unoccupied during the locate process The result of the expression or list of expressions is used as values to write to memory each in MAU memory mem_name type rom mau 8 write_unit 4 fill Oxaa size 64k priority 2 563 TASKING VX toolset for RH850 User Guide map map_name map_ description With the bus keyword you define a bus in a derivative definition Buses are described in Section 13 4 2 Defining Internal Buses 13 6 Semantics of the Board Specification Keywords in the board specification processor derivative bus mau width map memory type reserved rom ram nvram blockram mau size speed priority exec_priority 711 write_unit map map dest bus space dest_dbits dest_offset size src_dbits src_offset priority exec_priority reserved 13 6 1 Defining a Processor If you have a target board with multiple processors that have the same derivative you need to instantiate each individual processor in a processor definition This information tells the linker which processor has which derivative and enables the linker to distinguish between the present processors If you use processors that all have a unique derivative you may omit the processor definitions In this case the linker assumes that for each derivative definition in the LSL file there is one processor The linker uses
371. l Not implemented log2 log2f log21 Not implemented logb logbf logbl Not implemented longjmp lrint lrintf lrintl Not implemented lround lroundf lLroundl Not implemented lseek Calls _Iseek 510 Function Not reentrant because lstat malloc mblen mbrlen mbrtowc mbsinit mbsrtowcs mbstowcs mbtowc memchr wmemchr memcmp wmemcmp memcpy wmemcpy memmnov wmemmov memset wmemset mktime modf modff modfl nan nanf nanl nearbyint nearbyintf nearbyintl nextafter nextafterf nextafterl nexttoward nexttowardf nexttowardl offsetof open perror pow powf powl printf wprintf putc putwc putchar putwchar Not implemented Needs kernel support See 5 N A skeleton function Sets errno Sets errno Sets errno N A skeleton function N A skeleton function Not implemented Not implemented Not implemented Not implemented Calls _open Uses errno See 2 Sets errno See 2 Uses iob See Uses iob See Uses iob See 1 1 1 1 puts Uses iob See qsort raise Updates the signal handler table rand Uses static variable to remember latest random number Must diverge from ISO C standard to define reentrant rand See 4 read Calls _read 511 TASKING VX toolset for RH850 User Guide Function Not reentrant because realloc remainder remainderf remainderl remove remquo remquof remquol rename rewind rint rintf rintl
372. ld be changed This requires adaptation of the library to the multi tasking environment The library modules must use a process identification as an index for determining which iob array to use Thus the library is suitable for interfacing to that kernel only Another approach for the iob declaration problem is to declare the array static in one of the modules which create a task Thus there can be more than one iob array is the system without having conflicts at link time This brings several restrictions Only the module that holds the declaration of the static iob can use the standard file handles stdin stdout and stderr which are the first three entries in iob Thus all I O for these three file handles should be located in one module 2 errno declaration Several functions in the C library set the global variable errno After completion of the function the user program may consult this variable to see if some error occurred Since most of the functions that set errno already have a return type this is the reason for using errno it is not possible to check successful completion via the return type The library routines can set errno to the values defined in errno h See the file errno h for more information errno can be set to ERR_FORMAT by the print and scan functions in the C library if you specify illegal format strings errno will never be set to ERR_NOLONG or ERR_NOPOINT since the C library supports long and pointer conv
373. le_name symbol_name enter c850 R test c Related information Section 1 11 Section Naming 255 TASKING VX toolset for RH850 User Guide C compiler option runtime r Menu eniry 1 Select C Compiler Debugging 2 Enable or disable one or more of the following run time error checking options e Generate code for bounds checking e Generate code to detect unhandled case in a switch e Generate code for malloc consistency checks Command line syntax runtime flag r flags You can set the following flags bounds b B bounds checking case c C report unhandled case in a switch malloc m M malloc consistency checks Default without flags rbcm Description This option controls a number of run time checks to detect errors during program execution Some of these checks require additional code to be inserted in the generated code and may therefore slow down the program execution The following checks are available Bounds checking Every pointer update and dereference will be checked to detect out of bounds accesses null pointers and uninitialized automatic pointer variables This check will increase the code size and slow down the program considerably In addition some heap memory is allocated to store the bounds information You may enable bounds checking for individual modules or even parts of modules only see pragma runtime Report unhandled case in a switch Report an unhandled case value
374. ler emits a warning if code or data starts without a section definition The compiler automatically generates sections If you program in assembly you have to define sections yourself For more information about locating sections see Section 5 7 8 The Section Layout Definition Locating Sections Section definition Sections are defined with the SECTION ENDSEC directive and have a name The names have a special meaning to the locating process and have to start with a predefined name optionally extended by a dot 49 TASKING VX toolset for RH850 User Guide and a user defined name Optionally you can specify the at attribute to locate a section at a specific address SECTION name at address instructions etc ENDSEC See the description of the SECTION directive for more information Examples SECTION data Declare a data section Fo te ees ENDSEC SECTION data abs at 0x0 Declare a data abs section at an absolute address we dele ENDSEC 2 8 Built in Assembly Functions The TASKING assembler has several built in functions to support data conversion string comparison and math computations You can use functions as terms in any expression Syntax of an assembly function function_name argument argument Functions start with the character and have zero or more arguments and are always followed by opening and closing parenthese
375. lias checking algorithm assumes that objects with static storage cannot be referenced from functions outside the current module This option only makes sense when you specify all modules of an application on the command line To overrule this option for a specific function or variable you can use the export attribute For example when a variable is accessed from assembly int i __attribute__ export i has external linkage With the export attribute the compiler will not perform optimizations that affect the unknown code Example c850 static modulel c module2 c module3 c Related information 259 TASKING VX toolset for RH850 User Guide C compiler option stdout n Menu eniry Command line syntax stdout n Description With this option you tell the compiler to send the output to stdout usually your screen No files are created This option is for example useful to quickly inspect the output or to redirect the output to other tools Related information 260 Tool Options C compiler option string literal memory Menu entry 1 Select C Compiler Allocation 2 From the For string literals use list select an allocation Command line syntax string literal memory space You can specify the following space arguments __ data __zdata __sdata Default __sdata Description With this option you can control the allocation of string literals String literals are allocated in ___sdata
376. lib h and wchar h Section 10 1 26 string h and wchar h and Section 10 1 27 time h and wchar h The remaining functions are described below They perform conversions between multi byte characters and wide characters In these functions ps points to struct most ate_t which holds the conversion state information necessary to convert between sequences of multibyte characters and wide characters 503 TASKING VX toolset for RH850 User Guide typedef struct wchar_t wc_value wide character value solved so far unsigned short n_bytes number of bytes of solved multibyte unsigned short encoding encoding rule for wide mbstate_t character lt gt multibyte conversion When multibyte characters larger than 1 byte are used this struct will be used to store the conversion information when not all the bytes of a particular multibyte character have been read from the source In this implementation multi byte characters are 1 byte long MB_CUR_MAX and MB_LEN_ MAX are defined as 1 and this will never occur mbsinit ps mosrtowcs pwes src N ps wesrtombs s src n ps mbrtowc pwc s n ps wcertomb s wc ps btowc c wctob c mbrlen s n ps 10 1 30 wctype h Determines whether the object pointed to by ps is an initial conversion state Returns a non zero value if so Restartable version of mostowcs See Section 10 1 25 stdlib h and wchar h The initial
377. limiting commas in succession with no intervening spaces macroname ARG1 ARG3 the second argument is a null argument e terminate the argument list with a comma the arguments that normally would follow are now considered null macroname ARGI1 the second and all following arguments are null e declare the argument as a null string No character is substituted in the generated statements that reference a null argument 2 10 3 Using Operators for Macro Arguments The assembler recognizes certain text operators within macro definitions which allow text substitution of arguments during macro expansion You can use these operators for text concatenation numeric conversion and string handling Operator Name Description Macro argument concatenation Concatenates a macro argument with adjacent alphanumeric characters Return decimal value of symbol Substitutes the symbol sequence with a character string that represents the decimal value of the symbol Return hex value of symbol Substitutes the symbol sequence with a character string that represents the hexadecimal value of the symbol i Macro string delimiter Allows the use of macro arguments as literal strings S Macro local label override Prevents name mangling on labels in macros 103 TASKING VX toolset for RH850 User Guide Example Argument Concatenation Operator Consider the following macro definition MAC_A MACRO val reg mov
378. linker extracts the object that contains the definition from the library By default the linker processes object files and libraries in the order in which they appear on the command line If you specify the option first library first the linker always tries to take the symbol definition from the library that appears first on the command line before scanning subsequent libraries This is for example useful when you are working with a newer version of a library that partially overlaps the older version Because they do not contain exactly the same functions you have to link them both However when a function is present in both libraries you may want the linker to extract the most recent function Example Consider the following example 1k850 first library first a a test o b a If the file test o calls a function which is both present in a a and b a normally the function in b a would be extracted With this option the linker first tries to extract the symbol from the first library a a Note that routines in b a that call other routines that are present in both a a and b a are now also resolved from a a Related information Linker option no rescan Rescan libraries to solve unresolved externals 324 Tool Options Linker option global type checking Menu entry Command line syntax global type checking Description Use this option when you want the linker to check the types of variable and function references again
379. lled Searches an environment list for a string s Returns a pointer to the contents of s NOTE this function is not implemented because there is no OS 497 TASKING VX toolset for RH850 User Guide system s Passes the string s to the environment for execution NOTE this function is not implemented because there is no OS Searching and sorting bsearch key base n size cmp qsort base n size cmp Integer arithmetic int abs j long labs j long long llabs j div_t div x y ldiv_t ldiv x y lidiv_t lldiv x y This function searches in an array of n members for the object pointed to by key The initial base of the array is given by base The size of each member is specified by size The given array must be sorted in ascending order according to the results of the function pointed to by cmp Returns a pointer to the matching member in the array or NULL when not found This function sorts an array of n members using the quick sort algorithm The initial base of the array is given by base The size of each member is specified by size The array is sorted in ascending order according to the results of the function pointed to by cmp Compute the absolute value of an int long int andlong long int j respectively Compute x y and x y in a single operation X and y have respectively type int long int and long long int The result is stored in the members quot and rem of struct div_t ldiv_t and 11
380. locate sections Address space Type Properties The names of the address spaces as defined in the linker script file 1s1 The names are constructed of the derivative name followed by a colon the core name another colon and the space name The rule type ordered contiguous clustered unrestricted Specifies how sections are grouped By default a group is unrestricted which means that the linker has total freedom to place the sections of the group in the address space absolute The section must be located at the address shown in the Properties column ranged The section must be located anywhere in the address ranges shown in the Properties column end addresses are not included in the range page The sections must be located in some address range with a size not larger than shown in the Properties column the first number is the page size the second part is the address range restriction within the page ranged page Both the ranged and the paged restriction apply In the Properties column the range restriction is listed first followed by the paged restriction between parenthesis ballooned After locating all sections the largest remaining gap in the space is used completely for the stack and or heap The contents depends on the Type column 525 TASKING VX toolset for RH850 User Guide Prio Sections The locate priority of the rule A higher priority value gives a rule precedence over a rule wit
381. located in sbss Mysectl1 pragma endsection char e allocated in sbss example e 40 Chapter 2 Assembly Language This chapter describes the most important aspects of the TASKING assembly language for RH850 For a complete overview of the architecture you are using refer to the target s Architecture Specification For a description of the assembly instruction set refer to the RH850 Family User s Manual 2 1 Assembly Syntax An assembly program consists of statements A statement may optionally be followed by a comment Any source statement can be extended to more lines by including the line continuation character as the last character on the line The length of a source statement first line and continuation lines is only limited by the amount of available memory Mnemonics directives and other keywords are case insensitive Labels symbols directive arguments and literal strings are case sensitive The syntax of an assembly statement is label instruction directive macro_call comment label A label is a special symbol which is assigned the value and type of the current program location counter A label can consist of letters digits and underscore characters _ The first character cannot be a digit The label can also be a number A label which is prefixed by whitespace spaces or tabs has to be followed by a colon The size of an identifier is only limited by the amount of available memory n
382. log Here you can select which Filter sections you want to see in the map file and how A Enable All sections that are marked with Highlight in the Configure Section Filter Highlighting dialog will be highlighted in the table 523 TASKING VX toolset for RH850 User Guide Icon Action Description All sections that are marked with Collapse in the Configure Section Filter i Enable Collapsing dialog will appear collapsed in the table Only Show All lines that are not part of the selection in the Configure Section Filter Matching Lines dialog will be hidden Show Gaps Also shows the gaps in the map file Click the button again to hide the gaps Configure Section Filter Dialog In this dialog you can filter which sections you want to see in the map file and how Click Add to add a new filter Explanation of the columns and fields Highlight Marks the section as a candidate for highlighting Turn on Enable Highlighting to see the effect Color The highlight color Collapse Marks the section as a candidate for collapsing Turn on Enable Collapsing to see the effect Section name A filter to select a section or group of sections Wildcards are allowed Wildcards follow the rules of regular expressions To get help on which wildcards are supported press Cirl space Click an item in the list for help double click to add the wildcard Start address The first address of the section in the address space for thi
383. lset for RH850 User Guide 6 4 HLL Object Dumper The high level language HLL dumper hldump850 is a program to dump information about an absolute object file e1 Key features are a disassembler with HLL source intermixing and HLL symbol display and a HLL symbol listing of static and global symbols 6 4 1 Invocation Command line invocation You can call the HLL dumper from the command line The invocation syntax is hidump850 option file The input file must be an ELF file with or without DWARF debug info e1 The HLL dumper can process multiple input files Files and options can be intermixed on the command line Options apply to all supplied files If multiple files are supplied the disassembly of each file is preceded by a header to indicate which file is dumped For example For a complete list and description of all options see Section 8 8 HLL Object Dumper Options With hldump850 help you will see the options on stdout 6 4 2 HLL Dump Output Format The HLL dumper produces output in text format by default but you can also specify the XML output format with output type xml The XML output is mainly for use in the Eclipse editor The output is printed on stdout unless you specify an output file with output filename The parts of the output are dumped in the following order 1 Module list 2 Section list Section dump disassembly HLL symbol table Assembly level symbol table O a A Ww
384. ltium Altium supplies LSL files in the include 1s1 directory The file v850_arch 1s1 defines the base architecture for all cores The files default 1sl1 and v850e3 1s1 extend the base architecture for each RH850 core The architecture definition of the LSL file should not be changed by you unless you also modify the core s hardware architecture If the LSL file describes a multi core system an architecture definition must be available for each different type of core The linker uses the architecture name in the LSL file to identify the target For example the default library search path can be different for each core architecture The derivative definition The derivative definition describes the configuration of the internal on chip bus and memory system Basically it tells the linker how to convert offsets on the buses specified in the architecture definition into offsets in internal memory Microcontrollers and DSPs often have internal memory and I O sub systems apart from one or more cores The design of such a chip is called a derivative When you want to use multiple cores of the same type you must instantiate the cores in a derivative definition since the linker automatically instantiates only a single core for an unused architecture Altium supplies LSL files for each derivative derivative 1s1 When you build an ASIC or use a derivative that is not yet supported by the TASKING tools you may have to write a derivative definition
385. ma switch jumptab void test unsigned char val function containing the switch switch val use jump table On the command line you can use C compiler option switch 1 10 Functions 1 10 1 Calling Convention Parameter passing A lot of execution time of an application is spent transferring parameters between functions The fastest parameter transport is via registers Therefore function parameters are first passed via registers If no more registers are available for a parameter the compiler pushes parameters on the stack starting at the address pointed by SP towards higher addresses Parameter Register Arithmetic 8 bit r6 r9 Arithmetic 16 bit r6 r9 Arithmetic 32 bit r6 r9 Arithmetic 64 bit r6r7 r8r9 Pointer r6 r9 _Complex double r6r7r8r9 Registers available for parameter passing are r6 r9 Up to 4 arithmetic types and or 4 pointers can be passed this way A 64 bit argument is passed in an even odd data register pair Parameter registers skipped because of alignment for a 64 bit argument are not used by subsequent 32 bit arguments Any remaining function arguments are passed on the stack Structures are passed via the stack The compiler uses the EP register as the frame pointer to access data on the stack Examples 26 C Language void funcl int i char p char c v6 T r8 void func2 int il double d int iZ r6 r8r9 stack Function retur
386. me lt parameter_list y gt olt lt extends derivative_name lt argument_list gt l1 gt lt derivative_spec gt g1 A derivative _definition defines a derivative with the given derivative_name as a unique name derivative_spec core _ def bus_def mem_def section_definition no processor name section setup core _ def core core name lt core descr pro y A core_def defines a core with the given core_name as a unique name Atleast one core_def must be present ina derivative_definition core_descr architecture arch_name lt argument_list gt l1 545 TASKING VX toolset for RH850 User Guide endianness endianness_typ lt endianness_type gt An arch_name refers to a defined core architecture e Exactly one architecture statement must be present in a core_def 13 2 10 Processor Definition and Board Specification board_spec proc def bus_def mem_def proc_def processor proc_name proc_descr proc_ descr derivative derivative_name lt argument_list y gt olt e A proc_def defines a processor with the proc_name as a unique name e If you do not explicitly define a processor for a derivative in an LSL file the linker defines a processor with the same name as that derivative e A derivative_name refers to a defined derivative e A proc def contains exactly one derivative statement 13 2 11 Section Setup 1 section_setup secti
387. mem_name lt tag_attr gt 1 lt mem_ descr P A mem def defines a memory with the mem_name as a unique name O 1 mem_descr type lt reserved gt mem_type mau expr size expr speed number priority number exec_priority number fill lt fill _values gt write_unit expr mapping e A mem def contains exactly one type statement A mem def contains exactly one mau statement non zero size e A mem def contains exactly one size statement e A mem def contains zero or one priority or speed statement if absent the default value is 1 A mem def contains zero or one exec_priority statement e A mem def contains zero or one fill statement e A mem def contains zero or one write_unit statement A mem def contains at least one mapping mem_type rom attrs rx ram attrs rw 540 fill_values i bus_def Linker Script Language LSL nvram attrs blockram rwx expr expr lt expr gt gt 0 bus bus_name lt bus_descr gt A bus_def statement defines a bus with the given bus_name as a unique name within a core architecture bus_descr mau expr width expr bus width nr of data bits mapping legal destination bus only The mau and width statements appear exactly once in a bus_descr The default value for width is the mau size e The bus width must be an integer times the bus MAU size e The MAU size must be non z
388. memory device the linker must know its start address its size and whether the memory is read write accessible RAM or read only accessible ROM How and where code and data should be placed in the physical memory Embedded systems can have complex memory systems If for example on chip and off chip memory devices are available the code and data located in internal memory is typically accessed faster and with dissipating less power To improve the performance of an application specific code and data sections should be located in on chip memory By writing your own LSL file you gain full control over the locating process The underlying hardware architecture of the target processor To perform its task the linker must have a model of the underlying hardware architecture of the processor you are using For example the linker must know how to translate an address used within the object file a logical address into an offset in a particular memory device a physical address In most linkers this model is hard coded in the executable and can not be modified For the TASKING linker this hardware model is described in the linker script file This solution is chosen to support configurable cores that are used in system on chip designs When you want to write your own linker script file you can use the standard linker script files with architecture descriptions delivered with the product See also Section 5 7 Controlling the Linker with a Script
389. micolon should be included following the macro expansion Inadvertently inserting a semicolon can change the control flow of the program 15 2 Declarations and Initialization DCL DCL30 C DCL31 C 586 Declare objects with appropriate storage durations The lifetime of an automatic object ends when the function returns which means that a pointer to the object becomes invalid Declare identifiers before using them The ISO C90 standard allows implicit typing of variables and functions Because implicit declarations lead to less stringent type checking they can often introduce unexpected and erroneous behavior or even security vulnerabilities The ISO C99 standard requires type identifiers and forbids implicit function declarations For backwards compatibility reasons the VX toolset C compiler assumes an implicit declaration and continues translation after issuing a warning message W505 or W535 DCL32 C DCL35 C CERT C Secure Coding Standard Guarantee that mutually visible identifiers are unique The compiler encountered two or more identifiers that are identical in the first 31 characters The ISO C99 standard allows a compiler to ignore characters past the first 31 in an identifier Two distinct identifiers that are identical in the first 31 characters may lead to problems when the code is ported to a different compiler Do not invoke a function using a type that does not match the function definition This warning is gen
390. mpiler Optimizations runtime flags default restore With this pragma you can control the generation of additional code to check for a number of errors at run time The pragma argument syntax is the same as for the arguments of the C compiler option runtime You can use this pragma to control the run time checks for individual statements In addition objects declared when the bounds sub option is disabled are not bounds checked The malloc sub option cannot be controlled at statement level as it only extracts an alternative malloc implementation from the library 20 C Language section type whitespace format_string endsection default restore Rename sections by adding a format_string to all section names specified with type or restore default section naming If you specify only a format_string without a type the suffix is added to all section names See Section 1 11 Section Naming C compiler option rename sections and assembler directive SECTION for more information source nosource on off default restore With these pragmas you can choose which C source lines must be listed as comments in assembly output See C compiler option source stdinc on off default restore This pragma changes the behavior of the include directive When set the C compiler options include directory and no stdinc are ignored string_literal_memory space default restore
391. mpiler searches in the environment variable and then in the default include directory The compiler now looks for the file myinc h in the directory where test c is located If the file is not there the compiler searches in the directory myinclude If it was still not found the compiler searches in the environment variable and then in the default include directory Related information C compiler option include directory Add directory to include file search path C compiler option include file Include file at the start of a compilation 383 TASKING VX toolset for RH850 User Guide Control program option iso Menu eniry 1 Select C Compiler Language 2 From the Comply to C standard list select ISO C99 or ISO C90 Command line syntax iso 90 99 Default iso 99 Description With this option you select the ISO C standard C90 is also referred to as the ANSI C standard C99 refers to the newer ISO IEC 9899 1999 E standard C99 is the default Independent of the chosen ISO standard the control program always links libraries with C99 support Example To select the ISO C90 standard on the command line cc850 iso 90 test c Related information C compiler option iso ISO C standard 384 Tool Options Control program option keep output files k Menu eniry Eclipse always removes generated output files when an error occurs Command line syntax keep output files k Description If an
392. n towctrans wc wctrans tolower towctrans wc wctrans toupper 10 2 C Library Reentrancy Some of the functions in the C library are reentrant others are not The table below shows the functions in the C library and whether they are reentrant or not A dash means that the function is reentrant Note that some of the functions are not reentrant because they set the global variable errno or call other functions that eventually set errno If your program does not check this variable and errno is the only reason for the function not being reentrant these functions can be assumed reentrant as well The explanation of the cause why a function is not reentrant sometimes refers to a footnote because the explanation is too lengthy for the table 505 TASKING VX toolset for RH850 User Guide Function Not reentrant because _close Uses global File System Simulation buffer _dbg_request _doflt Uses I O functions which modify iob See 1 _doprint Uses indirect access to static iob array See 1 _doscan Uses indirect access to iob and calls ungetc access to local static ungetc buffer See 1 _Exit See exit _filbuf Uses iob which is not reentrant See 1 _flsbuf Uses iob See 1 _getflt Uses iob See 1 _iob Defines static iob See 1 _lseek Uses global File System Simulation buffer _dbg_request _open Uses global File System Simulation buffer _dbg_request _read Uses global
393. n Speed cccceeceeeeeeeeeeeeeeeeeeeeeeeeees 117 3 7 Static Code Analy Sis neseno oa eneen renio aN E E EEE N ORE E 119 3 7 1 C Code Checking CERT C ainssi einek eee eee nee nets een nT ARRE EEEE TaSi aS 120 3 7 2 C Code Checking MISRA C eect eter e teeter entree ee arene ee tenet een eeaeed 122 3 8 C Compiler Error Messages cceeeeee nee ee eee een eee een eeeeeaeeaeeaeeaeeaeeaeeaeeaeeaeeaeeaes 124 4 Using the Assembler siisici ce sctiastaceat te ue ers icine degen vd nee R EE ce ve degassed eeu NOTERER 127 4A 2ASsembly Process simsimas A AEE E Da AREE E O 127 4 2 Calling the Assembler cceceee cece nee ee eee e eee e eee e eaten eee ee neta eed eeaeeneeaeeaeeaeeneeaeeaes 128 4 3 How the Assembler Searches Include Files ccceeeeeeeeeeeeeeeeeee eee eee eeeeeeeeeeneeees 129 4 4 Assembler Optimizations sioi c issci dc tevecias eee deanna ave ei eset edie 130 4 5 Generating a List File sr padaeincecane wasting e a e an EO TSE 131 4 6 Assembler Error Messages 2 cceceeenecee eee ee nese cee eee snes ee eseeeseseeereneneseeeeseeges 131 5 Using the LINKET moct io a E EEE EE OA EAE TAEA A R eens 133 SA LiNKINg Process arsta ie e ET Ena ae aea a ac E I EEN TE 133 9 Phase Ni LINKING ipade a T ai Aen OS an 135 512 P ase 2 LOGAM sre rerna er ree E a i ues Ea EE aA 136 5 2 Calling the LINKET itch ssnn arene ett sha E cine ghey elem 137 9 3 Linking With Librarie S e
394. n be either from low_to_high addresses stack grows upwards this is the default or from high_to_low addresses stack grows downwards The min_size is required By default the linker tries to maximize the size of the stacks and heaps After locating all sections the largest remaining gap in the space is used completely for the stacks and heaps If you specify the keyword fixed you can disable this so called balloon behavior The size is also fixed if you used a stack or heap in the software layout definition in a restricted way For example when you override a stack with another size or select a stack in an ordered group with other sections The id keyword matches stack information generated by the compiler with a stack name specified in LSL This value assigned to this keyword is strongly related to the compiler s output so users are not supposed to change this configuration Optionally you can specify an alignment for the stack with the argument align This alignment must be equal or larger than the alignment that you specify for the address space itself The heap keyword defines a heap in the address space and assigns a name to it The definition of a heap is similar to the definition of a stack See also the heap keyword in Section 13 8 3 Creating or Modifying Special Sections Stacks and heaps are only generated by the linker if the corresponding linker labels are referenced in the object files See Section 13 8 Semantics of
395. n be made weak Example LOOPA EQU 1 definition of symbol LOOPA GLOBAL LOOPA j LOOPA will be globally accessible by other modules WEAK LOOPA mark symbol LOOPA as weak Related Information EXTERN Import global section symbol GLOBAL Declare global section symbol 101 TASKING VX toolset for RH850 User Guide 2 10 Macro Operations Macros provide a shorthand method for inserting a repeated pattern of code or group of instructions You can define the pattern as a macro and then call the macro at the points in the program where the pattern would repeat Some patterns contain variable entries which change for each repetition of the pattern Others are subject to conditional assembly When a macro is called the assembler executes the macro and replaces the call by the resulting in line source statements In line means that all replacements act as if they are on the same line as the macro call The generated statements may contain substitutable arguments The statements produced by a macro can be any processor instruction almost any assembler directive or any previously defined macro Source statements resulting from a macro call are subject to the same conditions and restrictions as any other statements Macros can be nested The assembler processes nested macros when the outer macro is expanded 2 10 1 Defining a Macro The first step in using a macro is to define it The definition of
396. n expression elimination Expression C source simplification still enabled pragma endoptimize Disable common expression ee elimination pragma endoptimize Disable expression simplification The compiler optimizes the code between the pragma pair as specified You can enable or disable the optimizations described in the following subsection The command line option for each optimization is given in brackets 3 6 1 Generic Optimizations frontend Common subexpression elimination CSE option Oc OC The compiler detects repeated use of the same sub expression Such a common expression is replaced by a variable that is initialized with the value of the expression to avoid recomputation This method is called common subexpression elimination CSE Expression simplification option Oe OE Multiplication by 0 or 1 and additions or subtractions of 0 are removed Such useless expressions may be introduced by macros or by the compiler itself for example array subscripting Constant propagation option Op OP A variable with a known value is replaced by that value Automatic function inlining option Oi Ol Small functions that are not too often called are inlined This reduces execution time at the cost of code size Control flow simplification option Of OF A number of techniques to simplify the flow of the program by removing unnecessary code and reducing the number of jumps For example 1
397. n file are allowed e To include whitespace in an argument surround the argument with single or double quotes e If you want to use single quotes as part of the argument surround the argument by double quotes and vise versa This has a single quote embedded This has a double quote embedded This has a double quote and a single quote embedded When a text line reaches its length limit use a to continue the line Whitespace between quotes is preserved This is a continuation line gt This is a continuation line 302 Itis possible to nest command line files up to 25 levels Example Suppose the file myoptions contains the following lines debug asm local test src Specify the option file to the assembler as850 option file myoptions This is equivalent to the following command line as850 debug asm local test src Related information Tool Options 303 TASKING VX toolset for RH850 User Guide Assembler option output o Menu entry Eclipse names the output file always after the input file Command line syntax output file o file Description With this option you can specify another filename for the output file of the assembler Without this option the basename of the assembly source file is used with extension o Example To create the file relobj o instead of asm o enter as850 output relobj o asm src Related information 304
398. n of non constant data objects Same as C compiler option data memory default_code __near ___ far default restore Controls whether functions are by default__ near or __far If you do not use an explicit qualifier Same as C compiler option default code If you do not use the pragma or option the default is__ near default_data __near __ far default restore Controls whether __sdata or ___zdata objects are by default ___ near or__far Same as C compiler option default data If you do not use the pragma or option the default is__ far extension isuffix on off default restore Enables a language extension to specify imaginary floating point constants With this extension you can use an i suffix on a floating point constant to make the type _Imaginary float 0 5i extern symbol Normally when you use the C keyword extern the compiler generates an EXTERN directive in the generated assembly source However if the compiler does not find any references to the extern symbol in the C module it optimizes the assembly source by leaving the EXTERN directive out With this pragma you can force an external reference EXTERN assembler directive even when the symbol is not used in the module fp_negzero on off default restore With this pragma you can control the negzero flag of C compiler option fp model fp_nonan on off default restore Wit
399. n the C source The TASKING VX toolset for RH850 C compiler complies to the document RH850 Compiler ABI Specification fully supports the ISO C standard and adds extra possibilities to program the special functions of the target In addition to the standard C language the compiler supports the following e keywords to specify memory types for data and functions attribute to specify absolute addresses e intrinsic built in functions that result in target specific assembly instructions pragmas to control the compiler from within the C source predefined macros the possibility to use assembly instructions in the C source e keywords for inlining functions and programming interrupt routines e libraries All non standard keywords have two leading underscores __ In this chapter the target specific characteristics of the C language are described including the above mentioned extensions 1 1 Data Types The C compiler supports the ISO C99 defined data types The sizes of these types are shown in the following table C Type Size Align Limits _Bool 1 8 Oor1 lsignedchar i iti i t OC dSCO O d C W unsigned char 8 8 0 2 1 short 16 16 215 27 4 unsigned short 16 16 0 218 1 int 32 32 251 291 1 unsigned int 32 32 0 27 1 TASKING VX toolset for RH850 User Guide C Type Size Align Limits enum 3
400. n values The C compiler uses registers to store C function return values depending on the function return types Return Type Register Arithmetic and structures r10 8 bit Arithmetic and structures r10 16 bit Arithmetic and structures r10 32 bit Arithmetic and structures r10r11 64 bit _Complex double r10r11r12r13 Objects larger than 64 bits are returned via the stack For structures larger than 64 bits the first parameter register r6 contains a pointer to the return buffer 1 10 2 Inlining Functions inline With the C compiler option optimize inline the C compiler automatically inlines small functions in order to reduce execution time smart inlining The compiler inserts the function body at the place the function is called The C compiler decides which functions will be inlined You can overrule this behavior with the two keywords inline ISO C and___noinline With the inline keyword you force the compiler to inline the specified function regardless of the optimization strategy of the compiler itself inline unsigned int abs int val unsigned int abs_val val if val lt 0 abs_val return abs_val val If a function with the keyword inline is not called at all the compiler does not generate code for it You must define inline functions in the same source module as in which you call the function because the compiler only inlines a function in the module that contains
401. n with other debugging targets than a simulator 7 3 Troubleshooting If the debugger does not launch properly this is likely due to mistakes in the settings of the execution environment or to an improper connection between the host computer and the execution environment Always read the notes for your particular execution environment Some common problems you may check for are Problem Solution Wrong device name inthe launch Make sure the specified device name is correct configuration Invalid baud rate Specify baud rate that matches the baud rate the execution environment is configured to expect No power to the execution Make sure the execution environment or attached probe is powered environment Wrong type of RS 232 cable Make sure you are using the correct type of RS 232 cable Cable connected to the wrong port Some target machines and hosts have several ports Make sure on the execution environment or host you connect the cable to the correct port Conflict between communication A device driver or background application may use the same ports communications port on the host system as the debugger Disable any service that uses the same port number or choose a different port number if possible Port already in use by another user The port may already be in use by another user on some UNIX hosts or being allocated by a login process Some target machines and hosts have several ports Make sur
402. n_setup stack min_size grows low to high high to low align fixed id heap min_size grows low_to_high high_to_low align fixed id copytable align copy unit dest page 566 Linker Script Language LSL vector_table vector_size size id_symbol_prefix run_addr template template_symbol vector_prefix Ea no_inline copy vector id ELLI loop optional reserved start_address run_addr symbol 13 7 1 Setting up a Section With the keyword section_setup you can define stacks heaps copy tables vector tables start address and or reserved address ranges outside their address space definition section_setup my_space vector table statements reserved address range stack definition heap definition copy table definition start adress See the subsections Stacks and heaps Copy tables Start address Vector table and Reserved address ranges in Section 13 4 3 Defining Address Spaces for details on the keywords stack heap copytable vector_table and reserved 13 8 Semantics of the Section Layout Definition Keywords in the section layout definition section_layout direction low_to_high high_to_low group align attributes t Y web i sp copy 567 TASKING VX toolset for RH850 User Guide nocopy 3 iT ordered contiguous clustered overlay allow_cross_references load_addr mem run_addr mem page page_size priority select stack size heap size reserved size attributes row x fill alloc
403. nal bus called i_bus This internal bus resides on a core called mycore The source bus has 16 data lines whereas the destination bus has only 8 data lines Therefore the keywords src_dbits and dest_dbits specify which source data lines are mapped on which destination data lines architecture mycore bus i_bus mau 4 space i_space map dest bus i_bus size 256 bus e_bus mau 16 width 16 map dest bus mycore i_bus src_dbits 0 7 dest_dbits 0 7 It is not possible to map an internal bus to an external bus 560 Linker Script Language LSL 13 5 Semantics of the Derivative Definition Keywords in the derivative definition derivative extends core architecture bus mau width map memory type reserved rom ram nvram mau size speed priority exec_priority Fill write_unit map section_layout section_setup map dest bus space dest_dbits dest_offset size sre dbits sre offset BrLOrity exec_priority reserved 13 5 1 Defining a Derivative blockram With the keyword derivative you define a derivative and assign a unique name to it The name is used to refer to it at other places in the LSL file derivative name definitions If you are defining multiple derivatives that show great resemblance you can define the common features in a parent derivative and extend this with a child derivative that contains specific features The child inherits all features of t
404. nals are possible asynchronous events that may require special processing Each signal is named by a number The following signals are defined SIGINT 1 Receipt of an interactive attention signal SIGIL 2 Detection of an invalid function message SIGFPE 3 An erroneous arithmetic operation for example zero divide overflow SIGSEGV 4 An invalid access to storage SIGTERM 5 A termination request sent to the program SIGABRT 6 Abnormal termination such as is initiated by the abort function The next function sends the signal sig to the program int raise int sig 486 Libraries The next function determines how subsequent signals will be handled signalfunction signal int signalfunction The first argument specifies the signal the second argument points to the signal handler function or has one of the following values SIG_DFL Default behavior is used SIG_IGN The signal is ignored The function returns the previous value of signalfunction for the specific signal or STG_ERR if an error occurs 10 1 20 stdarg h The facilities in this header file gives you a portable way to access variable arguments lists such as needed for as fprintf and vfprintf va_copy is new in ISO C99 This header file contains the following macros va_arg va_list ap type Returns the value of the next argument in the variable argument list Its return type has the type of the given argument type A next call to this macro will return the
405. nctions Some specific assembly instructions have no equivalence in C Intrinsic functions give the possibility to use these instructions Intrinsic functions are predefined functions that are recognized by the compiler The compiler generates the most efficient assembly code for these functions The compiler always inlines the corresponding assembly instructions in the assembly source rather than calling it as a function This avoids parameter passing and register saving instructions which are normally necessary during function calls Intrinsic functions produce very efficient assembly code Though it is possible to inline assembly code by hand intrinsic functions use registers even more efficiently At the same time your C source remains very readable You can use intrinsic functions in C as if they were ordinary C library functions All intrinsics begin with a double underscore character __ The TASKING C compiler for RH850 recognizes the following intrinsic functions Intrinsics used by the compiler __alloc void volatile __alloc _ size_t size Used by the compiler to allocate space on the stack for a VLA Variable length array Returns a pointer to space in external memory of size bytes length NULL if there is not enough space left 35 TASKING VX toolset for RH850 User Guide __ free void volatile __free void ptr Used by the compiler to free the allocated space pointed to by pt r for a VLA Variable length arra
406. nctions shall not be used Void expressions shall not be passed as function parameters const should be used for reference parameters not modified A function should have a single point of exit Every exit point shall have a return of the declared return type For void functions return shall not have an expression Function calls with no parameters should have empty parentheses If a function returns error information it should be tested A violation is reported when the return value of a function is ignored include shall only be preceded by other directives or comments Non standard characters shall not occur in include directives include shall be followed by either lt filename gt or filename Plain macros shall only be used for constants qualifiers specifiers Macros shall not be define d and undef d within a block undef should not be used A function should be used in preference to a function like macro A function like macro shall not be used without all arguments Macro arguments shall not contain pre preprocessing directives A violation is reported when the first token of an actual macro argument is Macro definitions parameters should be enclosed in parentheses Don t use undefined identifiers in pre processing directives A macro definition shall contain at most one or operator All uses of the pragma directive shall be documented This rule is really a documentation issue The compiler will flag all pra
407. nd line syntax include directory path Ipath Description With this option you can specify the path where your LSL include files are located A relative path will be relative to the current directory The order in which the linker searches for LSL include files is 1 The pathname in the LSL file and the directory where the LSL file is located only for include files that are enclosed in 2 The path that is specified with this option 3 The default directory PRODDIR include 1sl Example Suppose that your linker script file myl1s1 1s1 contains the following line include myinc inc You can call the linker as follows 1k850 include directory c proj include lsl file mylsl lsl test o First the linker looks for the file myinc inc in the directory where myls1 1s1 is located If it does not find the file it looks in the directory c proj include this option Finally it looks in the directory PRODDIR include l1sl Related information Linker option IsI file Specify linker script file 330 Tool Options Linker option incremental r Menu entry Command line syntax incremental p Description Normally the linker links and locates the specified object files With this option you tell the linker only to link the specified files The linker creates a linker output file out You then can link this file again with other object files until you have reached the final linker output f
408. nd the interrupt function to a specific vector Depending on the vector number the interrupt function is an El level FE level or DB level interrupt Without the vector the function is an El level interrupt and is not bound to an interrupt vector You can assign an unbound function to an interrupt vector in the linker LSL file The linker generates sections with the vectors of the specified interrupt numbers vector_vector For information on locating the interrupt vector table and the possibility to copy the vector tables from ROM to RAM at startup see subsection Vector table in Section 13 4 3 Defining Address Spaces in Chapter 13 Linker Script Language LSL For example void isr void __attribute__ interrupt return Or you can use void isr void __interrupt__ return This example creates an El level interrupt function but the C compiler does not bind it to an interrupt vector This has to be done by application code 29 TASKING VX toolset for RH850 User Guide When you use the vector argument the C compiler generates code to bind the function to an interrupt vector For example void isr void __attribute__ interrupt 16 return results into section text interrupt isr interrupt function global _isr align 2 _isr type func eiret return from EI level interrupt size _isr _isr endsec global vector_16 interrupt vector label vector_16 equ _isr calls B
409. nded to use this directive in hand coded assembly Example MISRAC MISRA C 2004 64 e2 0b e e11 27 6 ef83 e1 ef 66 cb75 afl1 eff e7 e7 8d 63 87ff7 6f 3 4 Related Information Section 3 7 2 C Code Checking MISRA C C compiler option misrac 86 Assembly Language PAGE Syntax PAGE pagewidth pagelength blanktop blankbtm blankleft Default PAGE 132 72 0 0 0 Description If you generate a list file with the assembler option list file you can use the directive PAGE to format the generated list file The arguments may be any positive absolute integer expression and must be separated by commas pagewidth Number of columns per line The default is 132 the minimum is 40 pagelength Total number of lines per page The default is 72 the minimum is 10 As a special case a page length of 0 turns off page breaks blanktop Number of blank lines at the top of the page The default is 0 the minimum is 0 and the maximum must be a value so that blanktop blankbtm lt pagelength 10 blankbtm Number of blank lines at the bottom of the page The default is 0 the minimum is 0 and the maximum must be a value so that blanktop blankbtm lt pagelength 10 blankleft Number of blank columns at the left of the page The default is 0 the minimum is 0 and the maximum must maintain the relationship blankleft lt pagewiath If you use the PAGE directive without argum
410. near r0 relative initialized cleared r0 disp16 zdata zbss data __zdata _ far far r0 relative initialized cleared r0 disp23 zdata23 zbss23 data __zdata __near near r0 relative constant data rO disp16 zconst const __zdata _ far const far r0 relative constant data rO disp23 zconst23 You can use the__nearand__far qualifiers only on data objects that are implicitly or explicitly qualified with __ sdata or__zdata If you do not specify__ near or ___far the compiler selects a default based on the C compiler option default data or if the option is not used the default is__ far lf you use __ near or___far onan object that has an explicit data qualifier the compiler issues an error TASKING VX toolset for RH850 User Guide All these memory qualifiers are related to the object being defined they influence where the object will be located in memory They are not part of the type of the object defined Therefore you cannot use these qualifiers in typedefs type casts or for members of a struct or union If you do not specify a memory qualifier for data a default memory type is assigned based on the allocation options as explained in Section 1 2 2 Data Allocation Options and Pragmas Examples using memory qualifiers int i 1234 int reserved in sdata23 by default const int j 1234 int reserved in zconst23 by default __zdata __near int k 1234 int reserved in zdata const __sdata _ far int
411. nerate a map file 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and select Settings In the right pane the Settings appear On the Tool Settings tab select Linker Map File Enable the option Generate XML map file format mapxml for map file viewer a FF w Optional Enable the option Generate map file map 6 Optional Enable the options to include that information in the map file Example on the command line Windows Command Prompt The following command generates the map file test map 1k850 map file test o With this command the map file test map is created See Section 11 2 Linker Map File Format for an explanation of the format of the map file 5 10 Linker Error Messages The linker reports the following types of error messages in the Problems view of Eclipse F Fatal errors After a fatal error the linker immediately aborts the link locate process E Errors Errors are reported but the linker continues linking and locating No output files are produced unless you have set the linker option keep output files 158 Using the Linker W Warnings Warning messages do not result into an erroneous output file They are meant to draw your attention to assumptions of the linker for a situation which may not be correct You can control warnings in the C C Build Settings Tool Settings Linker Diagnostics page of the Proj
412. nes two symbols The symbol __1le_cb_section_name is defined as the load time start address of the section The symbol __1le_ce_section_name is defined as the load time end address of the section C or assembly code may be used to copy the overlaid sections If sections in the overlay group contain references between groups the linker reports an error The keyword allow_cross_references tells the linker to accept cross references Normally it does not make sense to have references between sections that are overlaid group ovl overlay group a select my_ovl_p1 Linker Script Language LSL select my_ovl_p2 group b select my_ovl_ql It may be possible that one of the sections in the overlay group already has been defined in another group where it received a load time address In this case the linker does not overrule this load time address and excludes the section from the overlay group 3 Restrict the possible addresses for the sections in a group The load time address specifies where the group s elements are loaded in memory at download time The run time address specifies where sections are located at run time that is when the program is executing If you do not explicitly restrict the address in the LSL file the linker assigns addresses to the sections based on the restrictions relative to other sections in the LSL file and section alignments The program is responsible for copying overlay sections at
413. ngle and double precision floating point Related information Assembler directive FPU_SINGLE Assembler directive FPU_DOUBLE 283 TASKING VX toolset for RH850 User Guide Assembler option has mmu Menu entry Command line syntax has mmu Description With this option you specify that the used processor supports MMU instructions Related information Assembler directive HAS_MMU 284 Tool Options Assembler option has simd Menu entry Command line syntax has simd Description With this option you specify that the used processor supports SIMD instructions Related information Assembler directive HAS_SIMD 285 TASKING VX toolset for RH850 User Guide Assembler option has thread Menu entry Command line syntax has thread Description With this option you specify that the used processor supports hardware thread instructions Related information Assembler directive HAS_ THREAD 286 Tool Options Assembler option has virtualization Menu entry Command line syntax has virtualization Description With this option you specify that the used processor supports virtualization instructions Related information Assembler directive HAS_ VIRTUAL 287 TASKING VX toolset for RH850 User Guide Assembler option help Menu entry Command line syntax help item You can specify the following arguments options Show extended option descriptions
414. ning for that tool must be treated as an error For example use pass c warnings as errors number to treat a specific C compiler warning as an error Related information Control program option no warnings Suppress some or all warnings Control program option pass Pass option to tool 408 Tool Options 8 6 Parallel Make Utility Options When you build a project in Eclipse Eclipse generates a makefile and uses the make utility amk to build all your files However you can also use the make utility directly from the command line to build your project The invocation syntax is amk option target macro def This section describes all options for the parallel make utility For detailed information about the parallel make utility and using makefiles see Section 6 2 Make Utility amk 409 TASKING VX toolset for RH850 User Guide Parallel make utility option always rebuild a Command line syntax always rebuild a Description Normally the make utility rebuilds only those files that are out of date With this option you tell the make utility to rebuild all files without checking whether they are out of date Example amk a Rebuilds all your files regardless of whether they are out of date or not Related information 410 Tool Options Parallel make utility option change dir G Command line syntax change dir path G path Description Normally you must call the make utilit
415. nker generates a file for each ROM memory defined in the LSL file where sections are located memory memname type rom The name of the file is the name of the memory device that was emitted with extension hex or sre Optionally you can specify a basename which prepends the generated file name The linker always outputs a debugging file in ELF DWARF format and optionally an absolute object file in Intel Hex format and or Motorola S record format Example To generate Intel Hex output files for each defined memory enter the following on the command line 1k850 chip output myfile IHEX test o 315 TASKING VX toolset for RH850 User Guide In this case this generates the file myf ile_memname hex Related information Linker option output Output file 316 Tool Options Linker option define D Menu entry 1 Select Linker Script File The Defined symbols box shows the symbols that are currently defined 2 To define a new symbol click on the Add button in the Defined symbols box 3 Type the symbol definition for example demo 1 Use the Edit and Delete button to change a macro definition or to remove a macro from the list Command line syntax define macro_name macro_definition Dmacro_name macro_definition Description With this option you can define a macro and specify it to the linker LSL file preprocessor If you only specify a macro name no macro definition the macro expands
416. nly MAX When data sections with the same name occur in different DATA object modules with the MAX attribute the linker generates a section of which the size is the maximum of the sizes in the individual object modules NOCLEAR Sections are not zeroed at startup This is a default attribute DATA for data sections This attribute is only useful with BSS sections which are cleared at startup by default NOINIT Defines that the section contains no initialization data CODE DATA PROTECT Tells the linker to exclude a section from unreferenced section CODE DATA removal and duplicate section removal ROMDATA Section contains data to be placed in ROM This ROM area DATA data is not executable Sections of a specified type are located by the linker in a memory space The space names are defined in a so called linker script file files with the extension 1s1 delivered with the product in the directory installation dir include 1sl Example SECTION data Declare a data section a ENDSEC SECTION sdata romdata Declare a sdata section in ROM 92 Assembly Language mr ENDSEC n ECTION data abs at 0x0 Declare a data abs section at an absolute address ad ENDSEC Related Information RESUME Resume a previously defined section 93 TASKING VX toolset for RH850 User Guide SET Syntax symbol SET expression
417. no prefix by default the assembler assumes the number is a decimal number Prefixes can be used in either lowercase or uppercase Base Description Example Binary A 0b prefix followed by binary digits 0 1 Or use a b suffix 0B1101 11001010b Hexadecimal A Ox prefix followed by hexadecimal digits 0 9 A F a f Or use 0x12FF ah suffix 0x45 Ofal0h Decimal integer Decimal digits 0 9 12 1245 2 6 2 Strings ASCII characters enclosed in single or double quotes constitute an ASCII string Strings between double quotes allow symbol substitution by a DEFINE directive whereas strings between single quotes are always literal strings Both types of strings can contain escape characters Strings constants in expressions are evaluated to a number each character is replaced by its ASCII value Strings in expressions can have a size of up to 8 characters or less depending on the operand of an instruction or directive any subsequent characters in the string are ignored In this case the assembler issues a warning An exception to this rule is when a string is used in a DB assembler directive in that case all characters result in a constant value of the specified size Null strings have a value of 0 Square brackets delimit a substring operation in the form string offset length offset is the start position within string ength is the length of the desired substring Both values may not
418. ns add a priority keyword with the desired value and an exec_priority Set to zero To set only a priority for executable code sections simply set an exec_priority keyword to the desired value The default for a mapping priority is zero while the default for exec_priority is the same as the specified priority If you specify a value for priority in LSL it must be greater than zero A value for exec_priority must be greater or equal to zero For more information about priority values see the description of the memory priority keyword memory myram mau 8 size 112k type ram map dest bus mycore system dest_offset 0xd0000000 size 112k priority 8 exec_priority 0 map dest bus mycore system dest_offset 0x70000000 size 112k From space to space If you map an address space to another address space nesting you can do this by mapping the subspace to the containing larger space In this example a small space of 64 kB is mapped on a large space of 16 MB 559 TASKING VX toolset for RH850 User Guide space small id 2 mau 4 map src_offset 0 dest_offset 0 dest space large size 64k From space to bus All spaces that are not mapped to another space must map to a bus in the architecture space large id 1 mau 4 map src_offset 0 dest_offset 0 dest bus bus_name size 16M From bus to bus The next example maps an external bus called e_bus to an inter
419. ns information about the generated code For details on how to generate a list file see Section 4 5 Generating a List File The list file consists of a page header and a source listing Page header The page header is repeated on every page TASKING VX toolset for RH850 assembler vx yrz Build nnn SN 00000000 Title Page 1 ADDR CODE CYCLES LINE SOURCE LINE The first line contains version information The second line can contain a title which you can specify with the assembler directive TITLE and always contains a page number The third line is empty and the fourth line contains the headings of the columns for the source listing An additional line with a subtitle is added before the third line if you use the assembler directive STITLE With the assembler directives LIST NOLIST PAGE and with the assembler option list format you can format the list file Source listing The following is a sample part of a listing An explanation of the different columns follows below ADDR CODE CYCLES LINE SOURCE LINE i TASKING VX toolset for RH850 Options 3 Module start 0000 9 main type func 0000 10 L3 0000 2606rrrr 1 1 11 mov 2 Str r6 rrre 0006 T2258 0006 405Errrr 1 2 T3 movhi ha _world r0 r11 000A 2B3Frrrr 1 14 ld w lo _world r11 r7 000E EOO2rrrr 1 4 15 JE _printf EEEE 517 TASKING VX toolset for RH850 User Guide 0000 ER
420. ns may result in more code being generated resulting in more work for other parts of the compiler like for example the register allocator 9 2 Automatic Inlining Automatic inlining is an optimization which can result in significant longer build time The overall functions will get bigger often making it possible to do more optimizations But also often resulting in more registers to be in use in a function giving the register allocation a tougher job 9 3 Code Compaction When you disable the code compaction optimization the build times may be shorter Certainly when MIL linking is used where the full application is passed as a single MIL stream to the code generation Code compaction is however an optimization which can make a huge difference when optimizing for code size When size matters it makes no sense to disable this option When you choose to optimize for speed tradeoff 0 the code compaction is automatically disabled 9 4 Compiler Cache The C compiler has support for caching intermediate results to avoid full compilations When the source code after preprocessing and relevant compiler options and the compiler version are the same as ina previous invocation the previous result is copied to the output file The cache only works when there is a single C input file and a single output file To enable caching from Eclipse 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane exp
421. nt defines the names of vector sections the section for a vector with id vector_id is vector_prefix vector_id Vectors defined in C or assembly source files that should be included in the vector table must have the correct symbol name The compiler uses the prefix that is defined in the default LSL file s if this attribute is changed the vectors declared in C source files are not included in the vector table When a vector supplied in an object file has exactly one relocation the linker will assume it is a branch to a handler function and can be removed when the handler is inlined in the vector table Otherwise no inlining is done This argument is required With the optional no_inline argument the vectors handlers are not inlined in the vector table With the optional copy argument a ROM copy of the vector table is made and the vector table is copied to RAM at startup With the optional id_symbol_prefix argument you can set an internal string representing a symbol name prefix that may be found on symbols in vector handler code When the linker detects such a 556 Linker Script Language LSL symbol in a handler the symbol is assigned the vector number If the symbol was already assigned a vector number a warning is issued The 111 argument sets the default contents of vectors If nothing is specified for a vector this setting is used See below When no default is provided empty vectors may be used to locate large vector handl
422. nt only The number must associated with refer to an output parameter Indicates that number and number are the same register If an input parameter is modified by the inline assembly then this input parameter must also be added to the list of output parameters see Example 6 If this is not the case the resulting code may behave differently than expected since the compiler assumes that an input parameter is not being changed by the inline assembly C Language Loops and conditional jumps The compiler does not detect loops with multiple __asm statements or conditional jumps across ___asm statements and will generate incorrect code for the registers involved If you want to create a loop with __asm the whole loop must be contained in a single __asm statement The same counts for conditional jumps As a rule of thumb all references to a label in an ___asm statement must be in that same statement You can use numeric labels for these purposes Example 1 no input or output A simple example without input or output parameters You can use any instruction or label When it is required that a sequence of __asm statements generates a contiguous sequence of instructions then they can be best combined to a single __asm statement Compiler optimizations can insert instruction s in between ___asm statements Use newline characters n to continue on a new line ina ___asm statement For multi line outpu
423. ntation does not support leap seconds The struct tm type is defines as follows struct tm int tm_sec int tm_min int tm_hour int tm_mday 500 seconds after the minut 0 59 aff minutes after the hour 0 59 hours since midnight 0 23 day of the month 1 31 Libraries int tm_mon months since January 0 11 int tm_year year since 1900 int tm_wday days since Sunday 0 6 x int tm_yday days since January 1 0 365 int tm_isdst Daylight Saving Time flag Time manipulation clock Returns the application s best approximation to the processor time used by the program since it was started This low level routine is not implemented because it strongly depends on the hardware To determine the time in seconds the result of clock should be divided by the value defined by CLOCKS_PER_SEC difftime ti t0 Returns the difference t1 t0 in seconds mktime tm tp Converts the broken down time in the structure pointed to by tp to a value of type time_t The return value has the same encoding as the return value of the time function time timer Returns the current calendar time This value is also assigned to t imer Time conversion asctime tm tp Converts the broken down time in the structure pointed to by tp into a string in the form Mon Feb 04 16 15 14 2013 n 0 Returns a pointer to this string ctime timer Converts t
424. ntify the simulator debug configuration 4 On the Target tab select the RH850 Simulator The dialog shows several tabs Target tab On the Target tab you can select on which target the application should be debugged An application can run on an external evaluation board or on a simulator using your own PC On this tab you can also select the connection settings USB TCP IP The information in this tab is based on the Debug Target Configuration DTC files as explained in Chapter 14 Debug Target Configuration Files Debug Configurations es Create manage and run configurations TASKING C C Debugger x oer Name myproject type filter text Target gt Initialization E Project 60 Arguments Source Miscellaneous 4 gt TASKING C C Debugger Target settings te myproject Show all targets Show targets for V850E3 Target RH850 Simulator Configuration Connection settings Connection Simulator M niian Field Value Filter matched 2 of 2 items ame Initialization tab On the Initialization tab enable one or more of the following options 184 Using the Debugger Debug Configurations Es Create manage and run configurations TASKING C C Debugger SBxl ex Name myproject type filter text Target Initialization F Project 0 Arguments Source E Miscellaneous a jie TASKING C C Debugger 7 Initial download of program ike myproject V Verify
425. ny files You can specify the following formats html rtf or text default To create a file with the descriptions you must redirect the output With the suboption all the descriptions of all error messages are given except for the CERT checks If you want the description of one or more selected error messages you can specify the error message numbers separated by commas or you can specify a range With diag cert you can see a list of the available CERT checks or you can use a three letter mnemonic to list only the checks in a particular category For example diag pre lists all supported preprocessor checks Example To display an explanation of message number 282 enter c850 diag 282 This results in the following message and explanation 218 Tool Options E282 unterminated comment ake sure that every comment starting with has a matching Nested comments are not possible To write an explanation of all errors and warnings in HTML format to file cerrors html use redirection and enter c850 diag html all gt cerrors html Related information Section 3 8 C Compiler Error Messages C compiler option cert Enable individual CERT checks 219 TASKING VX toolset for RH850 User Guide C compiler option eabi deviations Menu entry Command line syntax eabi deviations flags You can set the following flags address class a A allow alternative address class codes edata e E allo
426. o Allow GNU C extensions C compiler option language gcc Allow comments in ISO C90 mode C compiler option language comments Check assignment of string literal to non const string C compiler option language strings pointer Treat char variables as unsigned C compiler option uchar Allow optimization across volatile access C compiler option language volatile Allow Shift JIS Kanji in strings C compiler option language kanji Floating Point Floating point model Control program option fp model Code Generation Algorithm for switch statements Ic compiler option switch Allocation Rename sections C compiler option rename sections Clear uninitialized global and static variables C compiler option no clear Data model C compiler option default data For non constant data use C compiler option data memory For constant data use C compiler option const data memory For string literals use C compiler option string literal memory For code use C compiler option default code Optimization Optimization level C compiler option optimize Trade off between speed and size C compiler option tradeoff Always inline function calls C compiler option inline Maximum size increment when inlining in C compiler option inline max incr Maximum size for functions to always inline C compiler option inline max size Custom Optimization C compiler option
427. o an offset within a memory device e locate sections in physical memory maintain an overall view of the used and free physical memory within the whole system while locating The section layout definition optional The optional section layout definition enables you to exactly control where input sections are located Features are provided such as the ability to place sections at a given address to place sections ina given order and to overlay code and or data sections Example Skeleton of a Linker Script File A linker script file that defines a derivative X based on the V850 architecture its external memory and how sections are located in memory may have the following skeleton architecture V850 Specification of the V850 core architecture Written by Altium derivative default_derivative derivative name is arbitrary Specification of the derivative Written by Altium core v850 always specify the core architecture V850 bus system internal bus maps to bus system in v850 core internal memory processor spe processor name is arbitrary derivative default_derivative You can omit this part except if you use a multi core system memory ext_nam external memory definition 148 Using the Linker section_layout spe v850 linear section layout section placement statements sections are located in address space line
428. o insert ob 33 0 just before obj2 o ar850 r b obj2 0 mylib a obj3 0 The library my1ib a after these two invocations now looks like objl o obj3 0 ob j2 0 Creating a new library To create a new library file add an object file and specify a library that does not yet exist ar850 replace newlib a objl o The archiver creates the library newlib a and adds the object obj1 0 to it To create a new library file and overwrite an existing library add an object file and specify an existing library with the supoption new n ar850 r n mylib a objl o The archiver overwrites the library mylib a and adds the object obj1 0 to it The new library mylib a only contains obj1 0 Related information Archiver option print t Print library contents 435 TASKING VX toolset for RH850 User Guide Archiver option version V Command line syntax version V Description Display version information The archiver ignores all other options or input files Example ar850 V The archiver displays the version information but does not perform any tasks TASKING VX toolset for RH850 ELF archiver vx yrz Build nnn Copyright 2012 year Altium BV Serial 00000000 Related information 436 Tool Options Archiver option warning w Command line syntax warning level wievel Description With this suboption you tell the archiver to suppress all warnings above the specified level The level is a number betwe
429. o the current stack item variables memory source code etc To obtain the information from other stack items click on the item you want The Debug view displays stack frames as child elements It displays the reason for the suspension beside the thread such as end of stepping range breakpoint hit and signal received When a program exits the exit code is displayed The Debug view contains numerous functions for controlling the individual stepping of your programs and controlling the debug session You can perform actions such as terminating the session and stopping the program All functions are available from the right click menu though commonly used functions are also available from the toolbar Controlling debug sessions Icon Action Description Ry Remove all Removes all terminated launches Reset target Resets the target system and restarts the application 1a system B3 Restart Restarts the application The target system is not reset Resumes the application after it was suspended manually breakpoint o gt Resume signal ou Suspend Suspends the application pause Use the Resume button to continue Right click menu Restarts the selected debug session when it was Relaunch terminated If the debug session is still running a new debug session is launched Reload current Reloads the current application without restarting the debug session The application application does restart of course Ends the
430. odule e Showing a table of contents of the library file Extracting an object module from the library The archiver takes the following files for input and output assembler SETER CO file relocatable object library The linker optionally includes object modules from a library if that module resolves an external symbol definition in one of the modules that are read before 6 3 1 Calling the Archiver You can create a library in Eclipse which calls the archiver or you can call the archiver on the command line To create a library in Eclipse Instead of creating a RH850 absolute ELF file you can choose to create a library You do this when you create a new project with the New C Project wizard 1 From the File menu select New TASKING RH850 C Project The New C Project wizard appears Enter a project name In the Project type box select TASKING RH850 Library and clickNext gt Follow the rest of the wizard and click Finish OT PO D Add the files to your project 172 Using the Utilities 6 Build the project as usual For example select Project Build Project i Eclipse builds the library Instead of calling the linker Eclipse now calls the archiver Command line invocation You can call the archiver from the command line The invocation syntax is ar850 key_option sub_option library object_file key_option With a key option you specify the main task which the archiver should perform You must
431. offset size sre dbits Sre_ofrset priority exec_priority 13 4 1 Defining an Architecture With the keyword architecture you define an architecture and assign a unique name to it The name is used to refer to it at other places in the LSL file architecture name definitions If you are defining multiple core architectures that show great resemblance you can define the common features in a parent core architecture and extend this with a child core architecture that contains specific features The child inherits all features of the parent With the keyword extends you create a child core architecture architecture name_child_arch extends name_parent_arch definitions A core architecture can have any number of parameters These are identifiers which get values assigned on instantiation or extension of the architecture You can use them in any expression within the core architecture Parameters can have default values which are used when the core architecture is instantiated with less arguments than there are parameters defined for it When you extend a core architecture you can pass arguments to the parent architecture Arguments are expressions that set the value of the parameters of the sub architecture architecture name_child_arch parm1 parm2 1 extends name_parent_arch arguments definitions 553 TASKING VX toolset for RH850 User Guide 13 4 2 Defining Internal Buses With the bus keyword you define
432. offset is the starting load offset specifying an absolute address in memory where the data is to be located when loaded by a tool This field is two bytes long This field is only used for Data Records In other records this field is coded as four ASCII zero characters 0000 type is the record type This value occupies one byte two hexadecimal digits The record types are Byte Type Record Type 00 Data 01 End of file 02 Extended segment address not used 03 Start segment address not used 04 Extended linear address 32 bit 05 Start linear address 32 bit content is the information contained in the record This depends on the record type checksum is the record checksum The linker computes the checksum by first adding the binary representation of the previous bytes from length to content The linker then computes the result of sum modulo 256 and subtracts the remainder from 256 two s complement Therefore the sum of all bytes following the header is zero Extended Linear Address Record The Extended Linear Address Record specifies the two most significant bytes bits 16 31 of the absolute address of the first data byte in a subsequent Data Record 02 0000 04 upper_address checksum The 32 bit absolute address of a byte in a Data Record is calculated as address offset index modulo 4G where address is the base address where the two most significant bytes are the u
433. ol Description With this option you force the linker to consider the given symbol as an undefined reference The linker tries to resolve this symbol either the symbol is defined in an object file or the linker extracts the corresponding symbol definition from a library This option is for example useful if the startup code is part of a library Because your own application does not refer to the startup code you can force the startup code to be extracted by specifying the symbol _START as an unresolved external Example Consider the following invocation 1k850 mylib a Nothing is linked and no output file will be produced because there are no unresolved symbols when the linker searches through mylib a 1k850 extern _START mylib a In this case the linker searches for the symbol _START in the library and if found extracts the object that contains _START the startup code If this module contains new unresolved symbols the linker looks again in mylib a This process repeats until no new unresolved symbols are found Related information Section 5 3 Linking with Libraries 323 TASKING VX toolset for RH850 User Guide Linker option first library first Menu eniry Command line syntax first library first Description When the linker processes a library it searches for symbols that are referenced by the objects and libraries processed so far If the library contains a definition for an unresolved reference the
434. ols S Command line syntax symbols type S type You can specify one of the following types asm a Display assembly symbols in code dump hil h Display HLL symbols in code dump none n Display plain addresses in code dump Default symbols asm Description With this option you can control symbolic information in the disassembly and data dump For data sections this only applies to symbols used as labels at the data addresses Data within the data sections will never be replaced with symbols Only symbols that are available in the ELF or DWARF information are used If you build an application without HLL debug information the symbols hll option will result in the same output as with symbols none The same applies to the symbols asm option when all symbols are stripped from the ELF file Example hldump850 F2 hello elf Section dump section text hello main at 0x400 00000400 26 06 2a 00 00 00 _Main mov Ox2a r6 00000406 84 07 89 3c 01 00 ld w Oxc8 gp r7 0000040c bf 07 04 fe jr _printf endsec hldump850 symbols non F2 hello elf Section dump section text hello main at 0x400 00000400 26 06 2a 00 00 00 mov Ox2a r6 00000406 84 07 89 3c 01 00 ld w Oxc8 gp r7 0000040c bf 07 04 fe JE 0x210 endsec 454 Tool Options Related information Section 6 4 2 HLL Dump Output Format 455 TASKING VX toolset for RH850 User Guide HLL object dumper option
435. olute address The argument of the _at attribute must be a constant address expression e You can place only global variables at absolute addresses Parameters of functions or automatic variables within functions cannot be placed at absolute addresses A variable that is declared extern is not allocated by the compiler in the current module Hence it is not possible to use the keyword __at on an external variable Use __at at the definition of the variable e You cannot place structure members at an absolute address Absolute variables cannot overlap each other If you declare two absolute variables at the same address the assembler and or linker issues an error The compiler does not check this 1 3 Static Assertions The TASKING VX toolset for RH850 C compiler supports the ISO IEC 9899 2011 E feature _Static_assert as a language extension to the ISO C99 standard The syntax is _Static_assert constant expression string literal The constant expression must be an integer constant expression If the value of the constant expression compares unequal to 0 the declaration has no effect Otherwise the C compiler produces a diagnostic message that includes the text of the string literal For example void foo void _Static_assert 1 1 is non zero no effect _Static_assert 1 1 0 is zero _Static_assert failed 0 is zero 1 4 Shift JIS Kanji Support In order to allow for Japanese c
436. omment line is continued on the next line 3 Trailing white space is removed 4 When aline starts with white space and it is not followed by a directive or preprocessing directive then it is interpreted as a command for updating a target 5 Otherwise when a line contains the unquoted text or operator then it will be interpreted as a macro definition 6 Otherwise all macros on the line are evaluated before considering the next steps 7 When the resulting line contains an unquoted the line is interpreted as a dependency rule 8 When the first token on the line is include or include which by now must start on the first column of the line amk will execute the directive 9 Otherwise the line must be empty Macros in commands for updating a target are evaluated right before the actual execution takes place or would take place when you use the n option 169 TASKING VX toolset for RH850 User Guide 6 2 7 Makefile Command Processing A line with leading white space tabs or spaces without a preprocessing directive is considered as a command for updating a target When you use the option j or J amk will execute the commands for updating different targets in parallel In that case standard input will not be available and standard output and error output will be merged and displayed on standard output only after the commands have finished for a target You can precede a command by one or more o
437. ompt before every removal v verbose Verbose mode Explain what is being done m file Read options from file help Show usage 6 2 8 Calling the amk Make Utility The invocation syntax of amk is 170 amk option For example amk test elf target macro def option Exit status Using the Utilities target macro def You can specify any target that is defined in the makefile A target can also be one of the intermediate files specified in the makefile Macro definition This definition remains fixed for the amk invocation It overrides any regular definitions for the specified macro within the makefiles and from the environment It is not inherited by subordinate amk s For a complete list and description of all amk make utility options see Section 8 6 Parallel Make Utility Options The make utility returns an exit status of 1 when it halts as a result of an error Otherwise it returns an exit status of 0 171 TASKING VX toolset for RH850 User Guide 6 3 Archiver The archiver ar850 is a program to build and maintain your own library files A library file is a file with extension a and contains one or more object files o that may be used by the linker The archiver has five main functions e Deleting an object module from the library e Moving an object module to another position in the library file e Replacing an object module in the library or add a new object m
438. on If it does not find the requested libraries it looks in the directory that is set with the environment variable LI1B850 Then the linker looks in the default directory PRODDIR lib v850e3 for libraries Related information Linker option library Link system library Section 5 3 1 How the Linker Searches Libraries 335 TASKING VX toolset for RH850 User Guide Linker option link only Menu entry Command line syntax link only Description With this option you suppress the locating phase The linker stops after linking and informs you about unresolved references Related information Control program option create relocatable cl Stop after linking 336 Tool Options Linker option lsl check Menu entry Command line syntax lsl check Description With this option the linker just checks the syntax of the LSL file s and exits No linking or locating is performed Use the option IsI file to specify the name of the Linker Script File you want to test Related information Linker option IsI file Linker script file Linker option lsl dump Dump LSL info Section 5 7 Controlling the Linker with a Script 337 TASKING VX toolset for RH850 User Guide Linker option lsl dump Menu entry Command line syntax lsl dump file Description With this option you tell the linker to dump the LSL part of the map file in a separate file independent of the option map file generate map
439. on Store preprocessor output in lt file gt pre 3 Optional Enable the option Keep comments in preprocessor output 4 Optional Enable the option Keep line info in preprocessor output Command line syntax preprocess flags E flags no preprocessing only You can set the following flags comments c C keep comments includes i l generate a list of included source files list VL generate a list of macro definitions make m M generate dependencies for make noline p P strip line source position information Default ECILMP Description With this option you tell the compiler to preprocess the C source The C compiler sends the preprocessed output to the file name pre where name is the name of the C source file to compile Eclipse also compiles the C source On the command line the control program stops after preprocessing If you also want to compile the C source you can specify the option no preprocessing onlly In this case the control program calls the compiler twice once with option preprocess and once for a regular compilation With preprocess comments you tell the preprocessor to keep the comments from the C source file in the preprocessed output With preprocess includes the compiler will generate a list of all included source files The preprocessor output is discarded With preprocess list the compiler will generate a list of all macro definitions The preprocessor output is disc
440. on you put the C compiler in verbose mode The C compiler performs its tasks while it prints the steps it performs to stdout Related information 267 TASKING VX toolset for RH850 User Guide C compiler option version V Menu eniry Command line syntax version V Description Display version information The compiler ignores all other options or input files Related information 268 Tool Options C compiler option warnings as errors Menu entry 1 Select Global Options 2 Enable the option Treat warnings as errors Command line syntax warnings as errors number number Description If the compiler encounters an error it stops compiling When you use this option without arguments you tell the compiler to treat all warnings not suppressed by option no warnings or pragma warning as errors This means that the exit status of the compiler will be non zero after one or more compiler warnings As a consequence the compiler now also stops after encountering a warning You can limit this option to specific warnings by specifying a comma separated list of warning numbers or ranges In this case this option takes precedence over option no warnings and pragma warning Related information C compiler option no warnings Suppress some or all warnings Pragma warning 269 TASKING VX toolset for RH850 User Guide 8 3 Assembler Options This section lists all assembler options Opti
441. on_setup space_ref lt tag_attr gt lt section_setup_item gt section_setup_item vector_table_statement reserved_range stack_def heap_def copy_table_def start_address 13 2 12 Section Layout Definition section_definition section_layout lt space_ref gt lt space_layout_properties jonl lt section_statement gt 1 e A section definition inside a space definition does not have a space_ref All global section definitions have a space_ref 546 Linker Script Language LSL oa lt core_name gt 1 gt 0 space_ref lt proc_name gt space_name lt space_name gt If more than one processor is present the proc_name must be given for a global section layout Ifthe section layout refers to a processor that has more than one core the core_name must be given in the space _ ref A proc_name refers to a defined processor A core _name refers to a defined core A space_name refers to a defined address space space_layout_properties space_layout_property lt space_layout_property aay space_layout_property locate_direction tag locate_direction direction direction direction low_to_high high_to_low e A section layout contains at most one direction statement If you do not specify the direction statement the locate direction of the section layout is low to high section_statement simple_section_statement aggrega
442. ong double j indicates a pointer to intmax_t Of uintmax_t z indicates a pointer to size_t and t indicates a pointer to ptrdiff_t Flags length specifier period precision and length modifier are optional the conversion character is not The conversion character must be one of the following if a character following is not in the list the behavior is undefined Character Printed as d o X u i int signed decimal int unsigned octal X int unsigned hexadecimal in lowercase or uppercase respectively int unsigned decimal 490 Libraries Character Printed as c int single character converted to unsigned char s char the characters from the string are printed until a NULL character is found When the given precision is met before printing will also stop f F double e E double g G double a A double n int the number of characters written so far is written into the argument This should be a pointer to an integer in default memory No value is printed p pointer r Ir __fract __ lfract R IR __accum __laccum No argument is converted a is printed printf conversion characters All arguments to the scanf related functions should be pointers to variables in default memory of the type which is specified in the format string The format string can contain Blanks or tabs which are skipped Normal characters not which should be matched exactly in the input s
443. ons in Eclipse versus options on the command line Most command line options have an equivalent option in Eclipse but some options are only available on the command line Eclipse invokes the assembler via the control program Therefore it uses the syntax of the control program to pass options and files to the assembler If there is no equivalent option in Eclipse you can specify a command line option in Eclipse as follows 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane expand C C Build and select Settings In the right pane the Settings appear 3 On the Tool Settings tab select Assembler Miscellaneous 4 Inthe Additional options field enter one or more command line options Because Eclipse uses the control program Eclipse automatically precedes the option with Wa to pass the option via the control program directly to the assembler Note that the options you enter in the Assembler page are not only used for hand coded assembly files but also for the assembly files generated by the compiler Be aware that some command line options are not useful in Eclipse or just do not have any effect For example the option V displays version header information and has no effect in Eclipse Short and long option names Options can have both short and long names Short option names always begin with a single minus character long option names always begin with two minus characters You
444. ontains a description of the DTC elements and attributes For each element a list of allowed elements is listed and the available attributes are described communicationMethod name debugInstrument gdiMethod Defines a communication method A communication method is the channel that is used to communicate with the target A descriptive name of the communication method The debug instrument DLL Shared library file to be used for this communication method Do not supply a path or a filename suffix This is the method used for communication Allowed values rs232 tcpip can none Element Attribute Description Allowed Elements debugTarget The debug target flashChips Isl name The name of the configuration communicationMethod def processor manufacturer The manufacturer of the debug target resource initialize processor Defines a processor that can be presenton the debug target Multiple processor definitions are allowed The user should select the actual processor on the debug target name A descriptive name of the processor derivative cpu Defines the CPU name ref resource initialize configuration Isl processor def id Defines a set of elements as a macro The macro can be expanded using the ref element The macro name Isl resource initialize ref configuration flashMonitor resource id value Defines a resource definition that can be used by
445. ontrol program option no default libraries Do not link default libraries Control program option library directory Additional search path for system libraries Section 5 3 Linking with Libraries Chapter 10 Libraries 387 TASKING VX toolset for RH850 User Guide Control program option library directory L ignore default library path Menu eniry 1 Select Linker Libraries The Library search path box shows the directories that are added to the search path for library files 2 To define a new directory for the search path click on the Add button in the Library search path box 3 Type or select a path Use the Edit and Delete button to change a path or to remove a path from the list Command line syntax library directory path Lpath ignore default library path L Description With this option you can specify the path s where your system libraries specified with the option library I are located If you want to specify multiple paths use the option library directory for each separate path The default path is PRODDIR lib v850e3 If you specify only L without a pathname or the long option ignore default library path the linker will not search the default path and also not in the paths specified in the environment variable LIB850 So the linker ignores steps 2 and 3 as listed below The priority order in which the linker searches for system libraries specified with the
446. opagate p P Constant propagation subscript s S Subscript strength reduction peephole y Y Peephole optimizations Use the following options for predefined sets of flags optimize 0 00 No optimization Alias for OaBCEFGILOPSY No optimizations are performed except for the coalescer to allow better debug information The compiler tries to achieve an optimal resemblance between source code and produced code Expressions are evaluated in the same order as written in the source code associative and commutative properties are not used optimize 1 01 Optimize Alias for OabcefgILOPSy Enables optimizations that do not affect the debug ability of the source code Use this level when you encounter problems during debugging your source code with optimization level 2 247 TASKING VX toolset for RH850 User Guide optimize 2 O2 Optimize more default Alias for OabcefgllopSy Enables more optimizations to reduce code size and or execution time This is the default optimization level optimize 3 O3 Optimize most Alias for OabcefgilopSy This is the highest optimization level Use this level to decrease execution time to meet your real time requirements Default optimize 2 Description With this option you can control the level of optimization If you do not use this option the default optimization level is Optimize more option optimize 2 or optimize When you use this option to specify a set of optimizations
447. option library l is 1 The path that is specified with the option library directory 2 The path that is specified in the environment variable L1B850 3 The default directory PRODDIR lib v850e3 Example Suppose you call the control program as follows cc850 test c library directory c mylibs library c 388 Tool Options First the linker looks in the directory c mylibs for library 1ibc a this option If it does not find the requested libraries it looks in the directory that is set with the environment variable L1B850 Then the linker looks in the default directory PRODDIR lib v850e3 for libraries Related information Control program option library Link system library Section 5 3 1 How the Linker Searches Libraries 389 TASKING VX toolset for RH850 User Guide Control program option link only Menu entry Command line syntax link only Description With this option you suppress the locating phase The linker stops after linking and informs you about unresolved references Related information Control program option create relocatable cl Stop after linking Linker option link only Link only no locating 390 Tool Options Control program option list files Menu eniry Command line syntax list files file Default no list files are generated Description With this option you tell the assembler via the control program to generate a list file for each specif
448. option Generate map file Command line syntax no map file Description By default the control program tells the linker to generate a linker map file A linker map file is a text file that shows how the linker has mapped the sections and symbols from the various object files o to the linked object file A locate part shows the absolute position of each section External symbols are listed per space with their absolute address both sorted on symbol and sorted on address With this option you prevent the generation of a map file Related information 395 TASKING VX toolset for RH850 User Guide Control program option no warnings w Menu eniry 1 Select C Compiler Diagnostics The Suppress C compiler warnings box shows the warnings that are currently suppressed 2 To suppress a warning click on the Add button in the Suppress warnings box 3 Enter the numbers separated by commas or as a range of the warnings you want to suppress for example 537 538 Or you can use the Add button multiple times 4 To suppress all warnings enable the option Suppress all warnings Use the Edit and Delete button to change a warning number or to remove a number from the list Command line syntax no warnings number number w number number Description With this option you can suppresses all warning messages for the various tools or specific control program warning messages On the command line this option wo
449. or a memory The speed field has the same meaning but is considered deprecated By default a memory has its priority set to 1 The memories with the highest priority are considered first when trying to locate a rule Subsequently the next highest priority memories are added if the rule was not located successfully and so on until the lowest priority that is available is reached or the rule is located The lowest priority value is zero Sections with an ordered and or contiguous restriction are not affected by the locate priority If such sections also have a page restriction the locate priority is still used to select a page If an exec_priority is specified for a memory the regular priority either specified or its default value does not apply to locate rules with only executable sections Instead the supplied value applies for such rules Additionally the exec_priority value is used for any executable unrestricted sections even if they appear in an unrestricted rule together with non executable sections The map field specifies how this memory maps onto an internal bus The mapping can have a name Mappings are described in Section 13 4 4 Mappings The optional write_unit field specifies the minimum write unit MWU This is the minimum number of MAUs required in a write action This is useful to initialize memories that can only be written in units of two or more MAUs If write_unit is not defined the minimum write unit is 0 The optiona
450. or you can use a three letter mnemonic to list only the checks in a particular category For example diag pre lists all supported checks in the preprocessor category 15 1 Preprocessor PRE PREO1 C Use parentheses within macros around parameter names Parenthesize all parameter names in macro definitions to avoid precedence problems 585 TASKING VX toolset for RH850 User Guide PRE02 C PRE10 C PRE11 C Macro replacement lists should be parenthesized Macro replacement lists should be parenthesized to protect any lower precedence operators from the surrounding expression The example below is syntactically correct although the operator was omitted Enclosing the constant 1 in parenthesis will prevent the incorrect interpretation and force a compiler error define EOF 1 should be 1 int getchar void void f void if getchar EOF operator omitted IE gs TA Wrap multi statement macros in a do while loop When multiple statements are used in a macro enclose them in a do while statement so the macro can appear safely inside if clauses or other places that expect a single statement or a statement block Braces alone will not work in all situations as the macro expansion is typically followed by a semicolon Do not conclude a single statement macro definition with a semicolon Macro definitions consisting of a single statement should not conclude with a semicolon If required the se
451. orted on address Address The start address of the symbol Hexadecimal 8 digits 32 bit Size The size of the symbol from the DWARF info in bytes HLL Type The HLL symbol type Name The name of the HLL symbol HLL arrays are indicated by adding the size in square brackets to the symbol name For example fedec0e8 80 static char stdin_buf 80 _iob c With option expand symbols basic types HLL struct and union symbols are listed including all fields Array members are expanded in one array member per line regardless of the HLL type For example fedec0e8 80 static char stdin_buf 80 _iob c fedec0e8 1 char fedec0e9 aL char fedecOea 1 char fedec137 1 char HLL struct and union symbols are listed by default without fields For example fedec0d0 24 struct _dbg_request dbg c With option expand symbols all struct union and array fields are included as well For the fields the types and names are indented with two spaces For example fedec0d0 24 struct _dbg_request dbg c fedecO0d0 4 int errno fedec0d4 4 enum nr fedec0d8 16 union u fedec0d8 4 struct exit fedec0d8 4 int status fedec0d8 8 struct open fedec0d8 4 const char pathname fedecOdc 2 unsigned short int flags Functions are displayed with the full function prototype Size is the size of the function HLL Type is the return type of the function For example 00000210 68 int printf const char restrict format The local and static symbols get an ident
452. other issues that cannot be checked by static source code inspection or because they require an application wide overview During compilation of the code violations of the enabled MISRA C rules are indicated with error messages and the build process is halted MISRA C rules are divided in mandatory rules required rules and advisory rules If rules are violated errors are generated causing the compiler to stop With the following options warnings instead of errors are generated misrac mandatory warnings misrac required warnings misrac advisory warnings Note that not all MISRA C violations will be reported when other errors are detected in the input source For instance when there is a syntax error all semantic checks will be skipped including some of the MISRA C checks Also note that some checks cannot be performed when the optimizations are switched off Quality Assurance report To ensure compliance to the MISRA C rules throughout the entire project the TASKING linker can generate a MISRA C Quality Assurance report This report lists the various modules in the project with the respective MISRA C settings at the time of compilation You can use this in your company s quality assurance system to provide proof that company rules for best practice programming have been applied in the particular project To apply MISRA C code checking to your application 1 From the Project menu select Properties for The Properties
453. ound Fetestexcept Feupdateenv fflush fgetc fgetwc Fgetpos fgets fgetws Floor floorf floorl fma fmaf fmal fmax fmaxf fmaxl fmin fminf fminl fmod fmodf fmodl fopen foclassify fprintf fwprintf fputc fputwe 508 Not implemented Calls fclose indirectly which uses iobf calls functions in _atexit array See 1 To make exit reentrant kernel support is required Sets errno Not implemented Not implemented Uses values in iob See 1 Not implemented Not implemented Not implemented Not implemented Not implemented Not implemented Uses values in iob See 1 Not implemented Uses values in iob See 1 Not implemented Not implemented Not implemented Not implemented Not implemented Modifies iob See 1 Uses pointer to iob See 1 Sets the variable errno and uses pointer to iob See 1 2 Uses iob See 1 Not implemented Not implemented Not implemented Uses iob and calls malloc when file open for buffered IO See 1 Uses iob See 1 Uses iobf See 1 Function Libraries Not reentrant because fputs fputws fread cree freopen frexp frexpf frexpl fFscanf fwscanf fseek fFsetpos Fstat ftell fwrite getc getwc getchar getwchar getcwd getenv gets getws gmt ime hypot hypotf hypotl ilogb ilogbf ilogbl imaxabs imaxdiv isalnum iswalnum isalpha iswalpha isascii iswascii
454. ously 10 FILENAME _MAX Maximum length of a filename 100 488 Libraries stdio h Description _IOFBF Expand to an integer expression suitable for use as argument to the set vbuf function _IOLBF _IONBF L_tmpnam Size of the string used to hold temporary file names 8 tmpxxxxx TMP_MAX Maximum number of unique temporary filenames that can be generated 0x8000 SEEK_CUR Expand to an integer expression suitable for use as the third argument to the fseek SEEK_END function SEEK_SET stderr Expressions of type pointer to FILE that point to the FILE objects associated with stdin standard error input and output streams stdout File access stdio h Description fopen name mode Opens a file for a given mode Available modes are Wael read open text file for reading y write create text file for writing if the file already exists its contents is discarded tat append open existing text file or create new text file for writing at end of file r open text file for update reading and writing w create text file for update previous contents if any is discarded a append open or create text file for update fclose name fflush name freopen name mode stream setbuf stream buffer setvbuf stream buffer mode size writes at end of file FSS implementation Flushes the data stream and closes the specified file that was previously opened with fopen FSS implement
455. page in the history list Shows the next table from the drop down list Shows the previous table from the drop down list When you right click in the view a popup menu appears for example to reset the layout of a table The meaning of the different parts is Tool and Invocation This part of the map file contains information about the linker its version header information binary location and which options are used to call it Used Resources This part of the map file shows the memory usage at memory level and space level The largest free block of memory Largest gap is also shown This part also contains an estimation of the stack usage Explanation of the columns Memory The names of the memory as defined in the linker script file 1s1 Code The size of all executable sections 519 TASKING VX toolset for RH850 User Guide Data Reserved Free Total Space Native used Foreign used Stack Name Used The size of all non executable sections not including stacks heaps debug sections in non alloc space The total size of reserved memories reserved ranges reserved special sections stacks heaps alignment protections sections located in non alloc space debug sections In fact this size is the same as the size in the Total column minus the size of all other columns The free memory area addressable by this core This area is accessible for unrestricted items The total memory
456. pecify that the symbol resulting from the function declaration or variable must appear in the object file as a weak symbol rather than a global one This is primarily useful when you are writing library functions which can be overwritten in user code without causing duplicate name errors See also pragma weak 16 C Language 1 7 Pragmas to Control the Compiler Pragmas are keywords in the C source that control the behavior of the compiler Pragmas overrule compiler options Put pragmas in your C source where you want them to take effect Unless stated otherwise a pragma is in effect from the point where it is included to the end of the compilation unit or until another pragma changes its status The syntax is pragma label pragma spec pragma arguments on off default restore or _Pragma label pragma spec pragma arguments on off default restore Some pragmas can accept the following special arguments on switch the flag on same as without argument off switch the flag off default set the pragma to the initial value restore restore the previous value of the pragma Label pragmas Some pragmas support a label prefix of the form abel between pragma and the pragma name Such a label prefix limits the effect of the pragma to the statement following a label with the specified name The restore argument on a pragma with a label prefix has a special meaning it removes the most recent definition of the pragma
457. ple inline int foo int parl int par2 int retvalue ___asm mulhi 7 1 1 n t mulhi 5 2 2 n t mov 1 0 n t 2 0 add Gr retvalue r parl r par2 1 par1 2 par2 return retvalue int func void return foo 1000 1000 In this example the 1 constraint for the input parameter par1 refers to the output parameter par1 and similar for the 2 constraint and par2 In the inline assembly 1 par1 and 2 par2 are written This is allowed because the compiler is aware of this This results in the following generated assembly code ori 1000 r0 r11 mov ELD riz mulhi 7 rit 11 mulhi 5 r12 r12 mov rll r10 add 12 ELO However when the inline assembly would have been as given below the compiler would have assumed that 1 par1 and 2 par2 were read only Because of the inline keyword the compiler knows that parl and par2 both contain 1000 Therefore the compiler can optimize and assign the same register to 1 and 2 This would have given an unexpected result __asm mulhi 7 1 1 n t 11 TASKING VX toolset for RH850 User Guide mulhi 5 2 2 n t mov 1 0 n t add 32 0 r retvalue y par1 7 y par2 Generated assembly code ori 1000 r0 r11 mulhi 7 rll rll mulhi 5 rll rll same register but is expected read only mov ELL rio add r12 r10 contains unexpected result 1 6 Attributes
458. ple targets and construct the prerequisite names for each target based on the target name target target pattern prerequisite patterns The target specifies the targets the rules applies to The target pattern and prerequisite patterns specify how to compute the prerequisites of each target Each target is matched against the target pattern to extract a part of the target name called the stem This stem is substituted into each of the prerequisite patterns to make the prerequisite names one from each prerequisite pattern Each pattern normally contains the character just once When the target pattern matches a target the can match any part of the target name this part is called the stem The rest of the pattern must match exactly For example the target foo o matches the pattern o with foo as the stem The targets foo c and foo elf do not match that pattern The prerequisite names for each target are made by substituting the stem for the in each prerequisite pattern Example objects test o filter o all S objects objects 0 c cc850 c lt o echo the stem is Here lt is the automatic variable that holds the name of the prerequisite is the automatic variable that holds the name of the target and is the stem that matches the pattern Internally this translates to the following two rules Lest o teste cc850 c test c o test o cho the stem is test
459. plicates the DB and Dw directives four times in the assembly source FOR VARI IN 1 2 3 4 12 DB VAR1 DW VAR1 VAR1 ENDFOR In the following example the loop is repeated 16 times With the Dw directive you allocate and initialize four bytes of memory for each repetition of the loop Effectively the preprocessor duplicates the Dw directive 16 times in the assembled file and substitutes VAR2 with the subsequent numbers FOR VAR2 IN 1 to 0x10 DW VAR1 VAR1 ENDFOR 70 Related Information sR EP EAT ENDR EP Repeat sequence of source lines Assembly Language 71 TASKING VX toolset for RH850 User Guide FPU_DOUBLE Syntax FPU_DOUBLE Description With the FPU_DOUBLE directive you tell the assembler that the processor used supports double precision and single precision FPU With this directive you can use double precision FPU instructions and single precision FPU instructions in the assembly file This is the same as specifying fpu double on the command line The assembler does not allow a label with this directive Related Information FPU_SINGLE Core implements FPU single precision Assembler option fpu 72 Assembly Language FPU_SINGLE Syntax FPU_SINGLE Description With the FPU_SINGLE directive you tell the assembler that the processor used supports single precision FPU With this directive you can use single precision FPU inst
460. pper_address and the two least significant bytes are zero offset is the 16 bit offset from the Data Record index is the index of the data byte within the Data Record 0 for the first byte 528 Object File Formats Example _ checksum _ upper_address _ type _ offset O200000400FFFB _ length Data Record The Data Record specifies the actual program code and data length offset 00 data checksum The ength byte specifies the number of data bytes The linker has an option hex record size that controls the length of the output buffer for generating Data records The default buffer length is 32 bytes The offsetis the 16 bit starting load offset Together with the address specified in the Extended Address Record it specifies an absolute address in memory where the data is to be located when loaded by a tool Example _ checksum data _ type _ offset length 0F00200000232222754E00754F04AF4FAE4E22C3 Start Linear Address Record The Start Linear Address Record contains the 32 bit program execution start address 04 0000 05 address checksum With linker option hex format S you can prevent the linker from emitting this record Example _ checksum _ address _ type _ offset 04000005A000000057 _ length 529 TASKING VX toolset for RH850 User Guide End of File Re
461. pplied relocatable object files and libraries into a single relocatable object file In the second phase the linker assigns absolute addresses to the object file so it can actually be loaded into a target 133 TASKING VX toolset for RH850 User Guide Terms used in the linking process Term Absolute object file Address Address space Architecture Copy table Core Derivative Library Logical address LSL file MAU Object code Physical address Processor Relocatable object file Relocation 134 Definition Object code in which addresses have fixed absolute values ready to load into a target A specification of a location in an address space The set of possible addresses A core can support multiple spaces for example in a Harvard architecture the addresses that identify the location of an instruction refer to code space whereas addresses that identify the location of a data object refer to a data space A description of the characteristics of a core that are of interest for the linker This encompasses the address space s and the internal bus structure Given this information the linker can convert logical addresses into physical addresses A section created by the linker This section contains data that specifies how the startup code initializes the data and BSS sections For each section the copy table contains the following fields action defines whether a section is copied or zeroed destin
462. prepare r20 1p 0x for i 1 i lt 3 i for i 1 i lt 3 i s 0x00000838 a201 mov 0x1 r20 printf d n i a printf sd n i i 0x0000083a 0626 0024 0000 mov 0x24 r6 printf Hello world 5 ox00000840 3814 mov 120 27 priate see se 0x00000842 80 003a jarl printf 0 printf a small dst n i 3 printf debugging example n for i l i lt 3 i E 0x00000846 a241 add 0x1 r20 s m qE E Console 3 Tasks bE fo By Coy gt O GO Memory X CS a AaB yoo Debug myproject Monitors as Starting Debugger r TASKING VX toolset for RH850 debugger Build 010 Copyright 2014 Altium BV Launching configuration myproject 4 i L u q j 7 4 1 Debug View The Debug view shows the target information in a tree hierarchy shown below with a sample of the possible icons Icon Session item Description ts Launch instance Launch configuration name and launch type ee Debugger instance Debugger name and state a p a Thread instance Thread number and state Stack frame Stack frame number function file name and file line number instance The number beside the thread label is a reference counter not a thread identification number TID 190 Using the Debugger Stack display During debugging running the actual stack is displayed as it increases or decreases during program execution By default all views present information that is related t
463. program and external memory may be shared by multiple cores LSL serves two purposes First it enables you to specify the characteristics that are of interest to the linker of your specific target board and of the cores installed on the board Second it enables you to specify how sections should be located in memory 13 1 Structure of a Linker Script File A script file consists of several definitions The definitions can appear in any order The architecture definition required In essence an architecture definition describes how the linker should convert logical addresses into physical addresses for a given type of core If the core supports multiple address spaces then for each space the linker must know how to perform this conversion In this context a physical address is an offset on a given internal or external bus Additionally the architecture definition contains information about items such as the hardware stack and the interrupt vector table This specification is normally written by Altium Altium supplies LSL files in the include 1s1 directory The architecture definition of the LSL file should not be changed by you unless you also modify the core s hardware architecture If the LSL file describes a multi core system an architecture definition must be available for each different type of core See Section 13 4 Semantics of the Architecture Definition for detailed descriptions of LSL in the architecture definition The der
464. ption With the SOURCE directive you specify the name of the original C source module This directive is generated by the C compiler You do not need this directive in hand written assembly Example SOURCE main c 96 Assembly Language STITLE Syntax STITLE string Default No subtitle line is printed Description If you generate a list file with the assembler option list file you can use the STITLE directive to specify the program subtitle which is printed at the top of each page in the assembler list file You can use the STITLE directive only in combination with a TITLE directive to add an extra program title line Without a TITLE directive any STITLE directive is ignored If you use the STITLE directive without the argument the subtitle becomes empty The specified subtitle is valid until the assembler encounters a new STITLE directive The STITLE directive itself will not be printed in the source listing If the page width is too small for the title to fit in the header it will be truncated Example TITLE This is the title STITLE This is the subtitle Related Information TITLE Set program title in header of assembler list file Assembler option list file 97 TASKING VX toolset for RH850 User Guide TITLE Syntax TITLE string Default TITLE Description If you generate a list file with the assembler option list
465. ptions C compiler option uchar u Menu eniry 1 Select C Compiler Language 2 Enable the option Treat char variables as unsigned Command line syntax uchar Description By default char is the same as specifying signed char With this option char is the same as unsigned char Related information Section 1 1 Data Types 265 TASKING VX toolset for RH850 User Guide C compiler option undefine U Menu eniry 1 Select C Compiler Preprocessing The Defined symbols box shows the symbols that are currently defined 2 To remove a defined symbol select the symbol in the Defined symbols box and click on the Delete button Command line syntax undefine macro_name Umacro_name Description With this option you can undefine an earlier defined macro as with undef This option is for example useful to undefine predefined macros The following predefined ISO C standard macros cannot be undefined _ FILE _ current source filename __LINE__ current source line number int type __ TIME _ hh mm ss __DATE__ Mmm dd yyyy __STDC__ level of ANSI standard Example To undefine the predefined macro _ TASK ING__ c850 undefine __TASKING__ test c Related information C compiler option define Define preprocessor macro Section 1 8 Predefined Preprocessor Macros 266 Tool Options C compiler option verbose v Menu entry Command line syntax verbose v Description With this opti
466. ptions Linker option warnings as errors Menu entry 1 Select Global Options 2 Enable the option Treat warnings as errors Command line syntax warnings as errors number Description When the linker detects an error or warning it tries to continue the link process and reports other errors and warnings When you use this option without arguments you tell the linker to treat all warnings as errors This means that the exit status of the linker will be non zero after the detection of one or more linker warnings As a consequence the linker will not produce any output files You can also limit this option to specific warnings by specifying a comma separated list of warning numbers Related information Linker option no warnings Suppress some or all warnings 359 TASKING VX toolset for RH850 User Guide Linker option whole archive Menu eniry 1 Select Linker Miscellaneous 2 Add the option whole archive to the Additional options field Command line syntax whole archive file Description This option tells the linker to directly load all object modules in a library as if they were placed on the command line This is different from libraries specified as input files or with the I option which are only used to resolve references in object files that were loaded earlier Example Suppose the library myarchive a contains the objects my1 o my2 o and my3 o Specifying 1k850 whole archive my
467. put With preprocess comments you tell the preprocessor to keep the comments from the C source file in the preprocessed output With preprocess includes the compiler will generate a list of all included source files The preprocessor output is discarded With preprocess list the compiler will generate a list of all macro definitions The preprocessor output is discarded With preprocess make the compiler will generate dependency lines that can be used in a Makefile The preprocessor output is discarded The default target name is the basename of the input file with the extension o With the option make target you can specify a target name which overrules the default target name 252 Tool Options With preprocess noline you tell the preprocessor to strip the line source position information lines starting with 1ine These lines are normally processed by the assembler and not needed in the preprocessed output When you leave these lines out the output is easier to read Example c850 preprocess tcomments tincludes list make noline test c output test pr The compiler preprocesses the file test c and sends the output to the file test pre Comments and a list of all included source files are included but no list of macro definitions and no dependencies are generated and the line source position information is not stripped from the output file Related information C compiler option dep file Generat
468. put Generate an output file for each chip Linker option hex format Specify Hex file format settings 354 Tool Options Linker option strip debug S Menu entry 1 Select Linker Miscellaneous 2 Enable the option Strip symbolic debug information Command line syntax strip debug S Description With this option you specify not to include symbolic debug information in the resulting output file Related information 355 TASKING VX toolset for RH850 User Guide Linker option user provided initialization code i Menu eniry 1 Select Linker Miscellaneous 2 Enable the option Do not use standard copy table for initialization Command line syntax user provided initialization code i Description It is possible to use your own initialization code for example to save ROM space With this option you tell the linker not to generate a copy table for initialize clear sections Use linker labels in your source code to access the positions of the sections when located If the linker detects references to the TASKING initialization code an error is emitted it is either the TASKING initialization routine or your own not both Note that the options no rom copy and non romable may vary independently The copytable compression optimization optimize t is automatically disabled when you enable this option Related information Linker option no rom copy Do not generate ROM copy
469. r Labels ascites sicsste ier patentee n a E E baeleitin s Reece E A 156 5 9 Generating a Map Filg sissie oanrint n Wee a ENEE EEE ET eee 158 5 10 Linker Error Messages sics noaee i Anine E AEEA E EE ENEA 158 62 Using Metle Siia arane aaa E O E A OEE 161 6 1 Control Program saioe acena eE a a E E EE E EEA 161 6 2 Make Utility AMK micres toirrsi oia A E REE EEE hoe E E Ea ake 163 6 2 1 Makefile Rules eiorinn sea arao aoi a ae aa aeai a a a aE 163 6 2 2 Makefile Directives cecceeecee cee uiaiia nie anaa 165 6 2 3 Macro Definiti nS sssrinin aE EAE E 165 6 2 4 Makefile FUNCTIONS wise ioseteevcPecaend ani praen enn EEA E EEREN E 168 6 2 5 Conditional Processing esisi aeea dinani ana aor AaS aE nee EAEE ATAR 168 6 2 6 Makefile Parsi cccream noraa aa iiae ea 169 6 2 7 Makefile Command Processing ceeeeeeeeeeeeeeeeeeeeceeeeeeeeseeeeeeeeeeeneeees 170 6 2 8 Calling the amk Make Utility cece cece ee ee eee cette een eee eea eee eeaeeaeeaeeaeed 170 6 3 AICMIVOR soraia eaa aa a a enimanteenacesaniaensettartncd E AROA 172 TASKING VX toolset for RH850 User Guide 6 3 1 Calling the Archiver circe isre radieri tae casa veud cendbens apa ei EE KERER 172 6 3 2 Archiver Examples sisestada a a aa e E a aa 174 6 4 HLL Object Dumper ec c eee eee e eee eae e neta eect ane a neat e deat e deat e ae eaeeaeaeeaeeaeeaes 176 6 4 1 INVOCAUOMN 2 sek eetacie ai nee teas dee cau aa mn dence de hee yd ane cat
470. r aE E E E EAE 481 10AA7 math mand tgmath Ns si cessces sienscne vies A aa o aE RAE eee sees 482 10 118 semp Prsni Ee EE D EE 486 gota Ee EST o aTe 1 OE E E E a E 486 10 1 20 5tdarg Nnna E E E E A EEE E E A AE 487 aKO EA RE Lo 01010 A p RAEE E A ET 487 AO A222 SIOOGE M aaa a a E E ceeeee tee needs 487 10N 23SM eee eee ene eee eee EEO ee ee 488 1 0 1 24 Stdio N and Wwehar A ic 5 sooet reeled cas tdeds cis led aa dena venice aw AEEA E Ea EE aE 488 10 1 25 stdlib heand Wehari i isccccs pees secs dese neeveceti i rrenen oes uni ioana eed Al Eu noes 495 10 1 26 StringN and WENAMN sicicciccancusmeedeens ies aderipaadeisadgsanaacdiaenneageanetigaatedtenneas 498 10 1 27 time h and wohar h 0 ce cceee cece eee reece eee ee E a ETE 500 HQ V28 SUAS TOUT a sie ics hiss e ie fee a stand fret ce id syne EN EEE dine 503 10 A292 Wear Monrad tan inet tereratincad mnie etd laud Mele ieee ed eae 503 TO 1230 WOT PGE esne aranse e E a aE AE a a EAE ARa a Ea EESE 504 10 2 C Library Reentrancy 00 ccceeeee cece ence eect eee ee ee ee eeeeseeeeeseeeeeseeeeeseeeeeseeeeeneeeees 505 11 List File Formats ailesine n aa O EE aE aw tania nepelnnies E E E eens 517 1141Assembler List File Format oss c ctetsczsadnedectacset tan apteaces nee noteai m he rai piei 517 1152 Linker Map File Format sis eee eiccesonesea ne an anian nei na eE Eiana 518 12 Object File FOnMALtS esinsin naiai nie E anna RAAE EAEE EE EARSTE A EnB in 527 12 1 ELF
471. r equal to the size of the left operand According to the C standard the behavior of such a shift operation is undefined Make sure the shift count is in range by adding appropriate range checks Evaluate integer expressions in a larger size before comparing or assigning to that size If an integer expression is compared to or assigned to a larger integer size that integer expression should be evaluated in that larger size by explicitly casting one of the operands 15 5 Floating Point FLP FLP30 C FLP35 C FLP36 C 588 Do not use floating point variables as loop counters To avoid problems with limited precision and rounding floating point variables should not be used as loop counters Take granularity into account when comparing floating point values Floating point arithmetic in C is inexact so floating point values should not be tested for exact equality or inequality Beware of precision loss when converting integral types to floating point Conversion from integral types to floating point types without sufficient precision can lead to loss of precision CERT C Secure Coding Standard 15 6 Arrays ARR ARR01 C ARR34 C ARR35 C Do not apply the sizeof operator to a pointer when taking the size of an array A function parameter declared as an array is converted to a pointer by the compiler Therefore the sizeof operator applied to this parameter yields the size of a pointer and not the size of an array
472. r of characters including the terminating null character to be written Same as fprintf fwprintf but extra arguments are given as variable argument list arg See Section 10 1 20 stdarg h FSS implementation Same as print f wprint f but extra arguments are given as variable argument list arg See Section 10 1 20 stdarg h FSS implementation Same as sprint f swprintf but extra arguments are given as variable argument list arg See Section 10 1 20 stdarg h Description fgetc stream fgetwc stream getc stream getwc stream Reads one character from stream Returns the read character or EOF WEOF on error FSS implementation Same as fgetc fgetwce except that is implemented as a macro FSS implementation NOTE Currently defined as getchar getwchar because FILE I O is not supported Returns the read character or EOF WEOF on error 493 TASKING VX toolset for RH850 User Guide stdio h wcehar h Description getchar stdin fgets s n stream gets s n stdin ungetc c stream fputc c stream putc c stream putchar c stdout fputs s stream puts s Direct input output stdio h getwchar stdin fgetws s n stream ungetwc c stream fputwc c stream putwc c stream putwchar c stdout fputws s stream Description Reads one character from the stdin stream Returns the character read or EOF WEOF on error Implement
473. r option warnings as errors Treat warnings as errors 235 TASKING VX toolset for RH850 User Guide C compiler option language A Menu entry 1 Select C Compiler Language 2 Enable or disable one or more of the following options e Allow GNU C extensions Allow comments in ISO C90 mode e Check assignment of string literal to non const string pointer Allow optimization across volatile access e Allow Shift JIS Kanji in strings Command line syntax language flags A flags You can set the following flags gcc g G enable a number of gcc extensions kanji k K support for Shift JIS Kanji in strings comments p P comments in ISO C90 mode volatile v V don t optimize across volatile access strings x X relaxed const check for string literals Default AGKpVx Default without flags AGKPVx Description With this option you control the language extensions the compiler can accept The option language A without flags disables all language extensions GNU C extensions The language gcc Ag option enables the following gcc language extensions The identifier _ FUNCTION __ expands to the current function name e Alternative syntax for variadic macros 236 Tool Options Alternative syntax for designated initializers Allow zero sized arrays Allow empty struct union Allow unnamed struct union fields Allow empty initializer list Allow initialization o
474. rary directory c mylibs additional search path for system libraries Specify the option file to the linker 1k850 option file myoptions This is equivalent to the following command line 1k850 map file my map test o library directory c mylibs Related information 352 Tool Options Linker option output o Menu entry 1 Select Linker Output Format 2 Enable one or more output formats For some output formats you can specify a number of suboptions Eclipse always uses the project name as the basename for the output file Command line syntax output filename format addr_size space_name o filename format addr_size space_name You can specify the following formats ELF ELF DWARF IHEX Intel Hex SREC Motorola S records Description By default the linker generates an output file in ELF DWARF format with the name task1 elf With this option you can specify an alternative filename and an alternative output format The default output format is the format of the first input file You can use the output option multiple times This is useful to generate multiple output formats With the first occurrence of the output option you specify the basename the filename without extension which is used for subsequent output options with no filename specified If you do not specify a filename or you do not specify the output option at all the linker uses the default basename taskn IHEX
475. rce is searched for as described with option source lookup path The single line sub option forces the insert to be limited to the first preceding source line With the single line sub option all source lines that belong to the address are prefixed For example comments are thus also visible This is the default Example hldump850 disassembly intermix source lookup path c mylib sre hello elf Related information HLL object dumper option source lookup path 442 Tool Options HLL object dumper option dump format F Command line syntax dump format flag F flag You can specify the following format flags dump d D Dump the contents of the sections in the object file Code sections can be disassembled data sections are dumped hllsymbols h H List the high level language symbols with address size and type modules m M Printa list of modules found in object file note n N Dump all ELF note sections sections s S Print a list of sections with start address length and type symbols y Y List the low level symbols with address and length if known 0 Alias for DHMNSY nothing 1 Alias for DaMNSY only HLL symbols 2 Alias for dHMNSY only section contents 3 Alias for dhmnsy default everything Default dump format dhmnsy Description With this option you can control which parts of the dump output you want to see By default all parts are dumped 1 Module list
476. rchiver does not perform any actions You can specify the following formats html rtf or text default To create a file with the descriptions you must redirect the output With the suboption all the descriptions of all error messages are given If you want the description of one or more selected error messages you can specify the error message numbers separated by commas or you can specify a range Example To display an explanation of message number 102 enter ar850 diag 102 This results in the following message and explanation F102 cannot create lt file gt The output file or a temporary file could not be created Check if you have sufficient disk space and if you have write permissions for the specified file To write an explanation of all errors and warnings in HTML format to file arerrors html use redirection and enter ar850 diag html all gt arerrors html Related information 425 TASKING VX toolset for RH850 User Guide Archiver option delete d Command line syntax delete verbose d v Description Delete the specified object modules from a library With the suboption verbose v the archiver shows which files are removed verbose V Verbose the archiver shows which files are removed Example ar850 delete mylib a objl o obj2 o The archiver deletes obj1 o and obj2 o from the library mylib a ar850 d v mylib a objl o obj2 0 The archiver deletes obj1 o and obj2 o
477. re amk is installed quoted if necessary SUBDIR The argument of option G If you have nested makes with G options the paths are combined This macro is defined in the environment i e default macro value The and lt macros may be suffixed by D to specify the directory component or by F to specify the filename component D evaluates to the directory name holding the files F D F is equivalent to Note that on MS Windows most programs accept forward slashes even for UNC path names The result of the predefined macros and lt and D and F variants is not quoted so it may be necessary to put quotes around it Note that stem calculation can cause unexpected values For example home wine test home home test project home test file Macro string substitution When the macro name in an evaluation is followed by a colon and equal sign as in MACRO stringl string2 then amk will replace string1 at the end of every word in MACRO by string2 during evaluation When MACRO contains quoted path names the quote character must be mentioned in both the original string and the replacement string For example MACRO o d Internally amk tokenizes the evaluated text but performs substitution on the original input text to preserve compatibility here with existing make implementations and POSIX 167 TASKING VX toolset for RH850 User Guide 6 2 4 Ma
478. re command line options Because Eclipse uses the control program Eclipse automatically precedes the option with WI to pass the option via the control program directly to the linker Be aware that some command line options are not useful in Eclipse or just do not have any effect For example the option keep output files keeps files after an error occurred When you specify this option in Eclipse it will have no effect because Eclipse always removes the output file after an error had occurred Short and long option names Options can have both short and long names Short option names always begin with a single minus character long option names always begin with two minus characters You can abbreviate long option names as long as it forms a unique name You can mix short and long option names on the command line Options can have flags or suboptions To switch a flag on use a lowercase letter or a ongflag To switch a flag off use an uppercase letter or a ongflag Separate longflags with commas The following two invocations are equivalent 1k850 mfkl test o 1k850 map file format files link locate test o When you do not specify an option a default value may become active 313 TASKING VX toolset for RH850 User Guide Linker option case insensitive Menu eniry 1 Select Linker Miscellaneous 2 Enable the option Link case insensitive Command line syntax case insensitive Default case sensiti
479. re not free d resulting in a memory leak MEMO08 C Use realloc only to resize dynamically allocated arrays Only use realloc to resize an array Do not use it to transform an object to an object of a different type 589 TASKING VX toolset for RH850 User Guide MEM30 C MEM31 C MEM32 C MEM33 C MEM34 C MEM35 C Do not access freed memory When memory is freed its contents may remain intact and accessible because it is at the memory manager s discretion when to reallocate or recycle the freed chunk The data at the freed location may appear valid However this can change unexpectedly leading to unintended program behavior As a result it is necessary to guarantee that memory is not written to or read from once it is freed Free dynamically allocated memory exactly once Freeing memory multiple times has similar consequences to accessing memory after it is freed The underlying data structures that manage the heap can become corrupted To eliminate double free vulnerabilities it is necessary to guarantee that dynamic memory is freed exactly once Detect and handle memory allocation errors The result of realloc is assigned to the original pointer without checking for failure As a result the original block of memory is lost when realloc fails Use the correct syntax for flexible array members Use the ISO C99 syntax for flexible array members instead of an array member of size 1 Only free memory allocated dyn
480. re primarily intended for use by or at the request of Altium support personnel Cache target access Except when using a simulator the debugger s performance is generally strongly dependent on the throughput and latency of the connection to the target Depending on the situation enabling this option may result in a noticeable improvement as the debugger will then avoid re reading registers and memory while the target remains halted However be aware that this may cause the debugger to show the wrong data if tasks with a higher priority or external sources can influence the halted target s state e Launch in background When this option is disabled you will see a progress bar when the debugger starts If you do not want to see the progress bar and want that the debugger launches in the background you can enable this option 188 Using the Debugger Use linker locator memory map file mdf for memory map You can use this option to find errors in your application that cause access to non existent memory or cause an attempt to write to read only memory When building your project the linker locator creates a memory description file md file which describes the memory regions of the target you selected in your project properties The debugger uses this file to initialize the debugging target This option is only useful in combination with a simulator as debug target The debugger may fail to start if you use this option in combinatio
481. ree with its declaration 30 R All automatics shall be initialized before being used This rule is checked using worst case assumptions This means that violations are reported not only for variables that are guaranteed to be uninitialized but also for variables that are uninitialized on some execution paths 31 R Braces shall be used in the initialization of arrays and structures 32 R Only the first or all enumeration constants may be initialized 33 R The right hand operand of amp amp or shall not contain side effects 34 R The operands of a logical or shall be primary expressions 35 R Assignment operators shall not be used in Boolean expressions 36 A Logical operators should not be confused with bitwise operators 37 R Bitwise operations shall not be performed on signed integers 38 R A shift count shall be between 0 and the operand width minus 1 This violation will only be checked when the shift count evaluates to a constant value at compile time 39 R The unary minus shall not be applied to an unsigned expression 40 A sizeof should not be used on expressions with side effects x 41 A The implementation of integer division should be documented 42 R The comma operator shall only be used in a for condition 43 R Don t use implicit conversions which may result in information loss 44 A Redundant explicit casts should not be used 45 R Type casting from any type to or from pointers s
482. removes any const or volatile qualification from the type addressed by a pointer Limited dependence should be placed on C s operator precedence rules in expressions The value of an expression shall be the same under any order of evaluation that the standard permits This rule is checked using worst case assumptions This means that a violation will be reported when a possible alias may cause the result of an expression to be evaluation order dependent The sizeof operator shall not be used on expressions that contain side effects The right hand operand of a logical amp amp or operator shall not contain side effects The operands of a logical amp amp or shall be primary expressions The operands of logical operators amp amp and should be effectively Boolean Expressions that are effectively Boolean should not be used as operands to operators other than amp amp and Bitwise operators shall not be applied to operands whose underlying type is signed The right hand operand of a shift operator shall lie between zero and one less than the width in bits of the underlying type of the left hand operand This violation will only be checked when the shift count evaluates to a constant value at compile time The unary minus operator shall not be applied to an expression whose underlying type is unsigned The comma operator shall not be used Evaluation of constant unsigned integer expressions should not lead to
483. rks as follows e If you do not specify this option all warnings are reported e If you specify this option but without numbers all warnings of all tools are suppressed e If you specify this option with a number or a range only the specified control program warnings are suppressed You can specify the option no warnings number multiple times Example To suppress all warnings for all tools enter cc850 test c no warnings Related information Control program option warnings as errors Treat warnings as errors 396 Tool Options Control program option option file f Menu eniry Command line syntax option file file f file Description This option is primarily intended for command line use Instead of typing all options on the command line you can create an option file which contains all options and flags you want to specify With this option you specify the option file to the control program Use an option file when the command line would exceed the limits of the operating system or just to store options and save typing You can specify the option option file multiple times Format of an option file Multiple arguments on one line in the option file are allowed To include whitespace in an argument surround the argument with single or double quotes e If you want to use single quotes as part of the argument surround the argument by double quotes and vise versa This has a sin
484. rks similarly to the include statement in C The source from the include file is assembled as if it followed the point of the INCLUDE directive When the end of the included file is reached assembly of the original file continues The string specifies the filename of the file to be included The filename must be compatible with the operating system forward backward slashes and can contain a directory specification If you omit a filename extension the assembler assumes the extension asm If an absolute pathname is specified the assembler searches for that file If a relative path is specified or just a filename the order in which the assembler searches for include files is 1 The current directory if you use the filename construction The current directory is not searched if you use the lt filename gt syntax 2 The path that is specified with the assembler option include directory 3 The path that is specified in the environment variable AS850INC when the product was installed 4 The default include directory in the installation directory The assembler does not allow a label with this directive The state of the assembler is not changed when an include file is processed The lines of the include file are inserted just as if they belong to the file where it is included Example Suppose that your assembly source file test src contains the following line INCLUDE c myincludes myinc inc The assembler issue
485. rmination record for S2 records s9 is the termination record for 2 byte addresses S9 is the corresponding termination record for S1 records length represents the number of bytes in the record not including the record type and length byte This value occupies one byte two hexadecimal digits 531 TASKING VX toolset for RH850 User Guide address contains the program start address checksum is the record checksum The checksum calculation is identical to SO Example S70500000000FA _ checksum address _ length 532 Chapter 13 Linker Script Language LSL To make full use of the linker you can write a script with information about the architecture of the target processor and locating information The language for the script is called the Linker Script Language LSL This chapter first describes the structure of an LSL file The next section contains a summary of the LSL syntax In the remaining sections the semantics of the Linker Script Language is explained The TASKING linker is a target independent linker locator that can simultaneously link and locate all programs for all cores available on a target board The target board may be of arbitrary complexity A simple target board may contain one standard processor with some external memory that executes one task A complex target board may contain multiple standard processors and DSPs combined with configurable IP cores loaded in an FPGA Each core may execute a different
486. rocessor selection list make a selection Command line syntax cpu id name cpu Cid name cpu Description With this option you define the target processor for which you create your application You can specify a full processor name like R7F701501 or a base CPU name like r7f701501 or its unique id like r7f701501 The standard list of supported processors is defined in the file processors xml This file defines for each processor its full name its ID the base CPU nam and the core settings To show a list of all supported processors you can use option cpu list The control program reads the file processors xml The lookup sequence for names specified to this option is as follows 1 match with the id attribute in processors xml case insensitive for example r7 701501 2 if none matched match with the name attribute in processors xml case insensitive for example R7F701501 3 if still none matched the control program issues a fatal error The control program passes the options to the underlaying tools For example D__CPU__ r7f701501 D__CPU_R7F701501___ to the C compiler or dr7 701501 IsI D__CPU__ r7f701501 D__PROC_R7F701501__ to the linker Example To generate the file test e1f for the R7F701501 processor enter cc850 cpu r7 701501 test c Related information Control program option cpu list Show list of processors Control program option processors Read additional processor definitions
487. rogram there can be many typedefs that are not used for any variable Sometimes this can cause enormous expansion of the DWARF data and thus it is only included in g3 Related information 212 Tool Options C compiler option default code Menu eniry 1 Select C Compiler Allocation 2 From the For code use list select __near or __ far Command line syntax default code qualifier You can specify the following qualifier arguments __near Function calls branches to a function with this qualifier are done via jr jarl disp22 __ far Function calls branches to a function with this qualifier are done via jr jarl disp32 Default __ near Description With this option you can control whether a function gets the __ near or __ far qualifier For __near functions the linker supports long branch veneers in order to call functions that are placed too far apart for example a function in ROM calls a function in RAM Related information Section 1 2 1 Memory Qualifiers 213 TASKING VX toolset for RH850 User Guide C compiler option default data Menu eniry 1 Select C Compiler Allocation 2 From the Data model list select__ near or __far Command line syntax default data qualifier You can specify the following qualifier arguments __near Unqualified objects are implicitly qualified with ___ near __far Unqualified objects are implicitly qualified with ___ far Default __ far De
488. roup reserved myreserved size 2k 576 Linker Script Language LSL attributes rw fill Oxaa If you do not specify any attributes the linker will reserve the given number of maus no matter what type of memory lies beneath If you do not specify a fill pattern no section is generated The linker creates two labels to mark the begin and end of the section __1c _ub_name for the begin of the section and ___1 _ue_name for the end of the reserved section Output sections The keyword section tells the linker to accumulate sections obtained from object files input sections into an output section of a fixed size in the locate phase You can select the input sections with select statements You can use groups inside output sections but you can only set the align attributes copy and load_addr properties and the load_addr property cannot have an address specified The 111 field contains a bit pattern that the linker writes to all unused space in the output section When all input sections have an image code data you must specify a fill pattern If you do not specify a fill pattern all input sections must be scratch sections The fill pattern is aligned at the start of the output section As with a reserved section you can use the attributes field to set the access type of the output section group section myoutput size fill 4k attributes rw Oxaa select myinputl1
489. rrors Treat warnings as errors 332 Tool Options Linker option library l Menu entry 1 Select Linker Libraries The Libraries box shows the list of libraries that are linked with the project 2 To add a library click on the Add button in the Libraries box 3 Type or select a library including its path 4 Optionally disable the option Link default libraries Use the Edit and Delete button to change a library name or to remove a library from the list Command line syntax library name lname Description With this option you tell the linker to use system library 1ibname a where name is a string The linker first searches for system libraries in any directories specified with library directory then in the directories specified with the environment variable LIB8 50 unless you used the option ignore default library path Example To search in the system library libc a C library 1k850 test o mylib a library c The linker links the file test o and first looks in library mylib a in the current directory only then in the system library 1ibc a to resolve unresolved symbols Related information Linker option library directory Additional search path for system libraries Section 5 3 Linking with Libraries 333 TASKING VX toolset for RH850 User Guide Linker option library directory L ignore default library path Menu eniry 1 Select Linker Libraries The Library search path box
490. ructions in the assembly file This is the same as specifying fpu single on the command line The assembler does not allow a label with this directive Related Information FPU_DOUBLE Core implements FPU double and single precision Assembler option fpu 73 TASKING VX toolset for RH850 User Guide GLOBAL Syntax GLOBAL symbol symbol Description All symbols or labels defined in the current section or module are local to the module by default You can change this default behavior with assembler option symbol scope global With the GLOBAL directive you declare one of more symbols as global It means that the specified symbols are defined within the current section or module and that those definitions should be accessible by all modules To access a symbol defined with GLOBAL from another module use the EXTERN directive Only program labels and symbols defined with EQU can be made global If the symbols that appear in the operand field are not used in the module the assembler gives a warning The assembler does not allow a label with this directive Example LOOPA EQU 1 definition of symbol LOOPA GLOBAL LOOPA LOOPA will be globally accessible by other modules Related Information EXTERN Import global section symbol 74 Assembly Language HAS MMU Syntax HAS_MMU Description With the HAS_MMmu directive you tell the assembler that the proc
491. runc Returns the truncated integer value x Not implemented Remainder after division math h tgmath h Description fmod fmodf fmodl fmod Returns the remainder r of x ny n is chosen as trunc x y r has the same sign as x remainder remainderf remainderl remainder Returns the remainder r of x ny n is chosen as trunc X y r may not have the same sign as x Not implemented remquo remquof remquol remquo Same as remainder In addition the argument quo is given a specific value see ISO Not implemented Power and absolute value functions math h tgmath h Description cbrt cbrtf cbrtl cbrt Returns the real cube root of x x Not implemented fabs fabsf fabsl fabs Returns the absolute value of x x abs labs llabs div ldiv lldiv are defined in stdlib h fma fmaf fmal fma Floating point multiply add Returns x y z Not implemented hypot hypotf hypotl hypot Returns the square root of x y7 pow powf powl power Returns x raised to the power y x sqrt sqrtf sqrtl sqrt Returns the non negative square root of x x 0 Manipulation functions copysign nan nextafter nexttoward math h tgmath h Description copysign copysignf copysignll copysign Returns the value of x with the sign of y nan nant nanl Returns a quiet NaN if available with content indicated through tagp Not implemented nextafter nextafterf nextafterl nextafter Returns the next representable value in the specified format a
492. ry Do not change these files If you use a different memory layout than described in the LSL file supplied for the target core you must specify this in a separate LSL file and pass both the LSL file that describes the core architecture and your LSL file that contains the memory specification to the linker Next you may want to specify how sections should be located and overlaid You can do this in the same file or in another LSL file LSL has its own syntax In addition you can use the standard C preprocessor keywords such as include and define because the linker sends the script file first to the C preprocessor before it starts interpreting the script The complete LSL syntax is described in Chapter 13 Linker Script Language LSL 5 7 2 Eclipse and LSL In Eclipse you can specify the size of the stack and heap the physical memory attached to the processor identify that particular address ranges are reserved and specify which sections are located where in memory Eclipse translates your input into an LSL file that is stored in the project directory under the name project_name 1isi and passes this file to the linker If you want to learn more about LSL you can inspect the generated file project_name 1s1 To add a generated Linker Script File to your project 1 From the File menu select File New TASKING RH850 C Project The New C Project wizard appears 2 Fill in the project settings in each dialog and click Next gt until th
493. s 16 3 MISRA C 2012 This section lists all supported and unsupported MISRA C 2012 rules See also Section 3 7 2 C Code Checking MISRA C A number of MISRA C rules leave room for interpretation Other rules can only be checked in a limited way In such cases the implementation decisions and possible restrictions for these rules are listed x means that the rule is not supported by the TASKING C compiler M is a mandatory rule R is a required rule A is an advisory rule A standard C environment 1 1 R The program shall contain no violations of the standard C syntax and constraints and shall not exceed the implementation s translation limits 1 2 A Language extensions should not be used 1 3 R There shall be no occurrence of undefined or critical unspecified behavior Unused code 2 1 R A project shall not contain unreachable code 2 2 R There shall be no dead code 2 3 A A project should not contain unused type declarations 605 TASKING VX toolset for RH850 User Guide 24 A 25 A 26 A 27 A Comments 3 1 R 3 2 R A project should not contain unused tag declarations A project should not contain unused macro declarations A function should not contain unused label declarations There should be no unused parameters in functions The character sequences and shall not be used within a comment Line splicing shall not be used in comments Character sets and lexical conventions 41
494. s e Adding new objects to the library e Replacing objects in the library with the same object of a newer date e Creating a new library The option replace r normally adds a new module to the library However if the library already contains a module with the specified name the existing module is replaced If you specify a library that does not exist the archiver creates a new library with the specified name If you add a module to the library without specifying the suboption a or b the specified module is added at the end of the archive Use the suboptions a or b to insert them after before a specified place instead after posname a posname Insert the specified object module s after the existing module posname before posname b posname Insert the specified object module s before the existing module posname create C Suppress the message that is displayed when a new library is created new n Create a new library from scratch If the library already exists it is overwritten newer only u Insert the specified object module only if it is newer than the module in the library verbose V Verbose the archiver shows which files are replaced The suboptions a or b have no effect when an object is added to the library Example Suppose the library mylib a contains the following object see option print objl o To add ob 32 0 to the end of mylib a ar850 replace mylib a obj2 0 434 Tool Options T
495. s Consider the following macro definition INIT MACRO addr LOCAL movhi ha addr r0 r1l ld w lo addr r11 r11l ENDM The macro is called as follows LOCAL INIT LOCAL The macro expands as LOCAL__M_ L0O00001 movhi ha LOCAL r0 r11 ld w 1lo LOCAL rl11 r11 If you would not have used the operator the macro preprocessor would choose another name for LOCAL because the label already exists The macro would expand like LOCAL__M_L000001 movhi ha LOCAL__M_L000001 r0 r11 ld w lo LOCAL__M_L000001 r11 r11 2 11 Generic Instructions The assembler supports so called generic instructions Generic instructions are pseudo instructions no instructions from the instruction set Depending on the situation in which a generic instruction is used the assembler replaces the generic instruction with appropriate real assembly instruction s ADDI generic An immediate value is added to the first register and the result is placed in the second register If both registers are the same and the immediate value fits in 5 bits the assembler will rewrite the ADDI Instruction Replacement Remarks ADDI imm rA rB ADD imm rB If rA and rB are the same register and imm fits in 5 bits 106 Assembly Language Bcond inversion generic The PC relative conditional branch instruction has a range of 9 bits or 17 bits The PC of the branch destination is the sum of the current PC value and the 9 bit 17 bit displa
496. s White space a blank or tab is not allowed between the function name and the opening parenthesis and between the comma separated arguments The names of assembly functions are case insensitive Overview of assembly functions Function Description ARG symbol expr Test whether macro argument is present BASEREL16 expr Force 16 bit base register relative addressing BASEREL23 expr Force 23 bit base register relative addressing CNT Return number of macro arguments DEFINED symbol symbol Test whether symbol exists HA expr Returns upper 16 bits of expression value adjusted for signed addition HI expr Returns upper 16 bits of expression value 50 Assembly Language Function Description LO expr Returns lower 16 bits of expression value LSB expr Least significant byte of the expression LSH expr Least significant half word of the absolute expression LSW expr Least significant word of the expression MSB expr Most significant byte of the expression MSH expr Most significant half word of the absolute expression MSW expr Most significant word of the expression PCREL22 expr Force 22 bit PC relative addressing PCREL32 expr Force 32 bit PC relative addressing STRCAT str1 str2 Concatenate sir and str2 STRCMP str7 str2 Compare sir with str2 STRLEN string Return length of string STRPOS str1 str2 star
497. s there T Root Sa can be several roots This function is referenced by several caller functions Right click on the function and select Expand all References to see all functions that reference this function Select Back to Caller to return to the calling function indicates a recursive function Callee a amp e Node A normal node function in the call graph This function calls a function which is listed separately in the call graph Right click on the function and select Go to Callee to see the callee Hover S Caller apr the mouse over the function to see a popup with all callees indicates a recursive function 522 Overlay List File Formats This part is empty for the RH850 Locate Result Sections This part of the map file shows the absolute position of each section in the absolute object file It is organized per address space memory chip and group and sorted on space address In Eclipse right click in the table and select Configure Columns to specify which columns you want to see If you hover the mouse over a section you get a popup with information about the section If you select a range of sections in the Fast View bar at the bottom you will see information about the selected range such as the total size how many sections are selected and how many gaps are present Section Section name Section number Sect size hex Sect size dec Group Start address End address
498. s Dawes EOE 38 2 ASSOMDLY LANGUAGE osiromoni anaa punch a acnunede cummins E momma rouentenaetments 41 2 1 Assembly SYMAX nsii irnia aa Eaa R EAE EAER EA EEEE ETT 41 2 2 Assembler Significant Characters ccceeeeeeeeeeee eee ee eee eee renee area een eea een eea een eea een eees 42 2 3 Operands of an Assembly Instruction ccceee eee nee eee eee een eee een eeaeeneeaeeaeeaeeaeeaneneeas 43 2 4 Symbol NAMES 0 renee etre eta ee EREE EEEn E nEn 43 2 4 1 Predefined Preprocessor Symbols cecceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeneeees 44 225 REJSTES erronee o ae n E E E Sate de gan iad ean E O OOE EE 45 2 6 ASSEMDly EXPreSSIONS messinai es o E E a E cia EEE 46 2 6 1 Numeric Constants 0 ceeeee cece eee e eee e eee eee eee ee ee eee esse eseeseeeeeseeseeeeeeeeees 47 20 2 SUIS sists che Sete ice eects ap na OE EAEE TENE ETE ne EEEE A EE 47 2 6 3 Expression Operators enen cence ac eet cs eee ea dove ed eee eee eee es 48 2 1 WOrKING WIT SECHONS sisiran egarri ade daepatesanasuaie O ae Se Eaa a ERa 49 2 8 Built in Assembly Functions ccc ceeeee ee eee nee e tee rete eee ea tensa eeeteeeeeaeaeteeaeeeeneeeea ees 50 2 9 Assembler Directives sn dee cede decease teaa E fgedieuie Mentone OE EEDE EE E E 55 2 9 1 Overview of Assembler Directives cccceeeeeenee eee eee eea eee eeneeeeeneeaeeneeaeeaes 55 2 9 2 Detailed Description of Assembler Directives ce eeeeeeeeeee ne
499. s _ write Several functions in the C library are not reentrant due to the following reasons e The iob structure is static This influences all I O functions e The ungetc array is static This array holds the characters one for each stream when ungetc is called The variable errno is globally defined Numerous functions read or modify errno e _doprint and _doscan use Static variables for e g character counting in strings e Some string functions use locally defined static buffers This is prescribed by ANSI malloc uses a Static heap space The following description discusses these items in more detail The numbers at the beginning of each paragraph relate to the number references in the table above 1 iob structures The I O part of the C library is not reentrant by design This is mainly caused by the static declaration of the iob array The functions which use elements of this array access these elements via pointers FILE 514 Libraries Building a multi process system that is created in one link run is hard to do The C language scoping rules for external variables make it difficult to create a private copy of the iob array Currently the iob array has external scope Thus it is visible in every module involved in one link phase If these modules comprise several tasks processes in a system each of which should have its private copy of iob itis apparent that the icb declaration shou
500. s an error if it cannot find the file at the specified location INCLUDE myinc inc The assembler searches the file myinc inc according to the rules described above Related Information Assembler option include directory Add directory to include file search path 81 TASKING VX toolset for RH850 User Guide LIST NOLIST Syntax NOLIST assembly source lines LIST Description If you generate a list file with the assembler option list file you can use the directives LIST and NOLIST to specify which source lines the assembler must write to the list file Without the assembler option list file these directives have no effect The directives take effect starting at the next line The assembler prints all source lines to the list file until it encounters a NOLIST directive The assembler does not print the NOLIST directive and subsequent source lines When the assembler encounters the LIST directive it resumes printing to the list file It is possible to nest the LIST NOLIST directives Example Suppose you assemble the following assembly code with the assembler option list file SECTION text x source line 1 NOLIST source line 2 List source line 3 ENDSEC The assembler generates a list file with the following lines SECTION text source line 1 i source line 3 ENDSEC Related Information Assembler option list file Generate list file
501. s described in Section 2 4 Symbol Names Symbols can also occur in expressions register Any valid register as listed in Section 2 5 Registers expression Any valid expression as described in Section 2 6 Assembly Expressions address A combination of expression register and symbol Addressing modes The RH850 assembly language has several addressing modes These are described in detail in section Instruction Addressing in the RH850 Family User s Manual 2 4 Symbol Names User defined symbols A user defined symbol can consist of letters digits and underscore characters _ The first character cannot be a digit The size of an identifier is only limited by the amount of available memory The case of these characters is significant You can define a symbol by means of a label declaration or an equate or set directive Predefined preprocessor symbols These symbols start and end with two underscore characters _ symbo __ and you can use them in your assembly source to create conditional assembly See Section 2 4 1 Predefined Preprocessor Symbols Labels Symbols used for memory locations are referred to as labels It is allowed to use reserved symbols as labels as long as the label is followed by a colon Reserved symbols Symbol names and other identifiers beginning with a period are reserved for the system for example for directives or section names Instructions are also reserved The case of these
502. s filter End address The last address of the section in the address space for this filter Address space The name of the address space Chip name The name of the memory chip as defined in the linker script file 1s1 in the memory definitions Hide gaps smaller f gaps are shown in the map file here you can limit the number of gaps you want than to see The meaning of the check boxes is the same as the corresponding buttons available in this part of the map file Locate Result Symbols This part of the map file lists all external symbols per address space name Address The absolute address of the symbol in the address space Name The name of the symbol Space The names of the address spaces as defined in the linker script file 1s1 The names are constructed of the derivative name followed by a colon the core name another colon and the space name For example spe v850 linear 524 List File Formats Processor and Memory This part of the map file shows the processor and memory information of the linker script file By default this part is not shown in the map file You have to turn this part on manually with linker option map file format lsl processor and memory info You can print this information to a separate file with linker option Isl dump You can click the or sign to expand or collapse a part of the information Locate Rules This part of the map file shows the rules the linker uses to
503. s for unrestricted groups For non overlay groups that do not have an overlay parent the load time start address equals the run time start address For any group if the run time start address is not set the linker selects an appropriate address f an ordered group or sequential group has an absolute address and contains sections that have separate page restrictions not defined in LSL all those sections are located in a single page In other cases for example when an unrestricted group has an address range assigned to it the paged sections may be located in different pages For overlays the linker reserves memory at the run time start address as large as the largest element in the overlay group The page keyword tells the linker to place the group in one page Instead of specifying a run time address you can specify a page and optional a page number Page numbers start from zero If you omit the page number the linker chooses a page The page keyword refers to pages in the address space as defined in the architecture definition e With the page_size keyword you can override the page alignment and size set on the address space When you set the page size to zero the linker removes simple auto generated page restrictions from the selected sections See also the page_size keyword in Section 13 4 3 Defining Address Spaces 574 Linker Script Language LSL e With the priority keyword you can change the order in which
504. s not supported 477 TASKING VX toolset for RH850 User Guide Encoding errors set by functions like fgetwc getwc mbrtowc etc EILSEQ 29 Invalid or incomplete multibyte or wide character Errors returned by RTOS ECANCELED 30 Operation canceled ENODEV 31 No such device 10 1 7 except h The header file except h is for floating point exception handling See control program option fp model trap 10 1 8 fentl h The header file cnt1 h contains the function open which calls the low level function _open and definitions of flags used by the low level function _open This header file is not defined in ISO C99 open Opens a file a file for reading or writing Calls _open FSS implementation 10 1 9 fenv h Contains mechanisms to control the floating point environment The functions in this header file are not implemented fegetenv Stores the current floating point environment Not implemented feholdexept Saves the current floating point environment and installs an environment that ignores all floating point exceptions Not implemented fesetenv Restores a previously saved fegetenv or feholdexcept floating point environment Not implemented feupdateenv Saves the currently raised floating point exceptions restores a previously saved floating point environment and finally raises the saved exceptions Not implemented feclearexcept Clears the current exception
505. s text in for example a text editor ts Edit project Right click menu Opens the debug configuration dialog to let you edit the current debug configuration ti Edit Source Right click menu Opens the Edit Source Lookup Path window to let you 4 Lookup edit the search path for locating source files 7 4 2 Breakpoints View You can add disable and remove breakpoints by clicking in the marker bar left margin of the Editor view This is explained in the Getting Started manual Description The Breakpoints view shows a list of breakpoints that are currently set The button bar in the Breakpoints view gives access to several common functions The right most button opens the Breakpoints menu Types of breakpoints To access the breakpoints dialog add a breakpoint as follows 1 Click the Add TASKING Breakpoint button 8 The Breakpoints dialog appears Each tab lets you set a breakpoint of a special type You can set the following types of breakpoints e File breakpoint 192 Using the Debugger The target halts when it reaches the specified line of the specified source file Note that it is possible that a source line corresponds to multiple addresses for example when a header file has been included into two different source files or when inlining has occurred If so the breakpoint will be associated with all those addresses Function The target halts when it reaches the first line of the specified function If no
506. s to be completely EAB compliant This option is an alias for eabi deviations AEF Related information C compiler option eabi deviations control EABI deviations 221 TASKING VX toolset for RH850 User Guide C compiler option error file Menu entry Command line syntax error file file Description With this option the compiler redirects error messages to a file If you do not specify a filename the error file will be named after the output file with extension err Example To write errors to errors err instead of stderr enter c850 rror file errors err test c Related information 222 Tool Options C compiler option fp model Menu eniry 1 Select C Compiler Floating Point 2 Make a selection from the Floating point model list 3 If you selected Custom enable one or more individual options Command line syntax fp model flags You can set the following flags contract c C allow expression contraction float f F treat double as float fastlib VL allow less precise library functions nonan n N allow optimizations to ignore NaN Inf rewrite r R allow expression rewriting soft s S use software floating point library trap UT support trapping on exceptions negzero 2 Z ignore sign of 0 0 strict 0 alias for fp model CFLNRStZ precise 1 alias for fp model cFLNRSTZ fast double 2 alias for fp model cFlInrSTz fast single 3 alias for fp model cflnrSTz Default
507. scription With this option you can control whether unqualified data gets the __ near or __ far qualifier If a variable has an explicit ___sdata or ___zdata qualifier but no explicit__ near or __ far qualifier the compiler adds a__ near or ___far qualifier depending on the value of this option If a variable has an explicit__ data qualifier the compiler does not add a__near or___far qualifier Related information Section 1 2 1 Memory Qualifiers C compiler option const data memory Assign memory to constant data objects C compiler option data memory Assign memory to non constant data objects 214 Tool Options C compiler option define D Menu eniry 1 Select C Compiler Preprocessing The Defined symbols box shows the symbols that are currently defined 2 To define a new symbol click on the Add button in the Defined symbols box 3 Type the symbol definition for example demo 1 Use the Edit and Delete button to change a macro definition or to remove a macro from the list Command line syntax define macro_name macro_definition Dmacro_name macro_definition Description With this option you can define a macro and specify it to the preprocessor If you only specify a macro name no macro definition the macro expands as 1 You can specify as many macros as you like Simply use the Add button to add new macro definitions On the command line you can use the option define D multiple times If t
508. seconds to find out if the breakpoint is hit In this field you can change the polling frequency e Monitor file Flash settings Filename of the monitor usually an Intel Hex or S Record file Sector buffer size Flash settings Specifies the buffer size for buffering a flash sector e Workspace address Flash settings The address of the workspace of the flash programming monitor Project tab On the Project tab you can set the properties for the debug configuration such as a name for the project and the application binary file which are used when you choose this configuration Debug Configurations Create manage and run configurations TASKING C C Debugger Cex E RET mnyproject typ Target Initialization C Project 69 Arguments Source E Miscellaneous 4 ih TASKING C C Debugger project gt myproject myproject Browse C C application S build_config myproject elf Search Project Browse _ Filter matched 2 of 2 items In the Project field you can choose the project for which you want to make a debug configuration Because the project mypro ject is the active project this project is filled in automatically Click the Browse button to select a different project Only the opened projects in your workbench are listed e In the C C Application field you can choose the binary file to debug The file myproject elf is automatically selected from the active pro
509. seek s0 0 0 A after a function name indicates a caller which calls a function which is listed separately in the call graph 521 TASKING VX toolset for RH850 User Guide A infront of a function name indicates a callee This function is referenced by a caller An additional R not shown in this example indicates this function is part of a recursive call chain If both a leaf and the root of a tree are marked this way all nodes in between are in a recursive chain after a function contains information about the stack usage The first field is the name of the stack sO in this example followed by the amount of stack used by the function and the amount of stack used by the function including its callees In the graphical version of the map file you can click the or sign to expand or collapse a single node Use the H buttons to expand collapse all nodes in the call graph Hover the mouse over a function root callee or node to see information about the stack usage a J START 4 _main 4 intf stack s0 used by function 40 char used by function callees 280 Press F2 for focus tring 4 _doprint_int src _putnumber _strlen _doprint_int src _emitchar _doprint_int src _putstring _doprint_int src _Itoa _exit _Exit 4 _doclose 4 fclose _fflush _close _dofree _doexit Description This function is the top of the call graph If there are interrupt handler
510. select myinput2 The available room for input sections is determined by the size blocksize and overflow fields With the keyword size you specify the fixed size of the output section Input sections are placed from output section start towards higher addresses offsets When the end of the output section is reached and one or more input sections are not yet placed an error is emitted If however the overflow field is set to another output section remaining sections are located as if they were selected for the overflow output section group section tskl_data size 4k attributes rw fill 0 overflow overflow_data select data tsk1 section tsk2_data size 4k attributes rw fill 0 overflow overflow_data 577 TASKING VX toolset for RH850 User Guide select data tsk2 section overflow_data size 4k attributes rx fi11 0 With the keyword blocksize the size of the output section will adapt to the size of its content For example group flash_area run_addr 0x10000 section flash_code blocksize 4k attributes rx fill 0 select flash If the content of the section is 1 mau the size will be 4 kB if the content is 11 kB the section will be 12 kB etc If you use size in combination with blocksize the size value is used as default minimal size for this section If it is omitted the default size will be of blocksize It is not allowed to omit
511. sembling process and generates no object file or list file An arbitrary number of strings and expressions in any order but separated by commas with no intervening white space can be specified to describe the nature of the generated message If you use expressions the assembler outputs the result The assembler outputs a space between each argument The error and warning counts will not be affected The MESSAGE directive is for example useful in combination with conditional assembly to indicate which part is assembled The assembling process proceeds normally after the message has been printed This directive has no effect on the exit code of the assembler A label is not allowed with this directive Example ESSAGE I Generating tables ID EQU 4 ESSAGE E he value of ID is ID DEFINE LONG SHORT ESSAGE I This is a LONG string ESSAGE I This is a LONG string Within single quotes the defined symbol LONG is not expanded Within double quotes the symbol LONG is expanded so the actual message is printed as This is a LONG string This is a SHORT string 85 TASKING VX toolset for RH850 User Guide MISRAC Syntax MISRAC string Description The C compiler can generate the MISRAC directive to pass the compiler s MISRA C settings to the object file The linker performs checks on these settings and can generate a report It is not recomme
512. size and destination and click OK The new mapping is added to the list of mappings 7 Click OK The new memory is added to the list of memories user memory 8 Click OK to close the Properties dialog The updated settings are stored in the project LSL file If you make changes to the on chip memory as defined in the architecture LSL file the memory is copied to your project LSL file and the line define __REDEFINE_ON_CHIP_ITEMS is added If you remove all the on chip memory from your project LSL file also make sure you remove this define 5 7 8 The Section Layout Definition Locating Sections Once you have defined the internal core architecture and optional memory you can actually define where your application must be located in the physical memory During compilation the compiler divides the application into sections Sections have a name an indication section type in which address space it should be located and attributes like writable or read only In the section layout definition you can exactly define how input sections are placed in address spaces relative to each other and what their absolute run time and load time addresses will be 154 Using the Linker Example section propagation through the toolset To illustrate section placement the following example of a C program bat c is used The program saves the number of times it has been executed in battery back upped memory and prints the num
513. sn eaae rna E Howe ed Ea ook ed edd ed eet ot 138 5 3 1 How the Linker Searches Libraries ccceceeeeeeeeeeeeeeeeeeeeeneeeeeneeeeeneeeeed 140 5 3 2 How the Linker Extracts Objects from Libraries ccseeeeeeeeeeeeeeeeeneeee es 140 5 4 Incremental Linking cii24 2s tice bee ceckacaetedes nanira Geka can etaee occa N EEE EER EN 141 5 9 lmporting Binary FES sorsien prn nenien renea EEn Eana EEA EEEE ENE 142 5 6 Linker OptimiZationS srce ordin edini nie eaa a aa ane Ea ai T Eaa 142 5 7 Controlling the Linker with a Script ssssesssesersssersrsrrsrisrerirtrrsrertrttrsrertrrrrerererrnnt 143 5 7 1 Purpose of the Linker Script Language s sesssseseseserersrerisrererrrrerererereene 144 5 7 2 Eclipse and LSI coi cs cies eesidst ena aE EE E A elias EERE EEA ER 144 5 7 3 Structure of a Linker Script File cceceeeeeeenee eee eeee eee eee een eeaeeneeaeeneeaeenes 146 5 7 4 The Architecture Definition cece eeeeee eee ne eee ee eee eee ea tensa teeta eaten eaeeeea ees 149 5 7 5 The Derivative Definition 2 e ceceeeeecee cece eee eee eee ee eeeeeeeeeeneseeeeseneesees 151 5 7 6 The Processor Definition 0 cceeceec eee ceeeeceee eee sence sees rau EEEE EE 152 5 7 1 Ine Memory Definition ai cicdieecatsescsdecacateeces ec artieneettieataetoman ana iaar 153 5 7 8 The Section Layout Definition Locating Sections c ceeeeeeeeeeeeeee eee eee ees 154 5 8 Lie
514. ss than gt greater than or equal to lt less than or equal to amp bitwise AND bitwise OR amp amp logical AND II logical OR 13 2 5 Built in Functions function_call absolute expr addressof addr_id checksum checksum_algo expr expr exists section_name max expr expr 537 TASKING VX toolset for RH850 User Guide min expr expr sizeof size_id addr_id sect section_name group group_name checksum_algo erc32w size_id sect section_name group group_name l mem mem_name e Every space bus memory section or group you refer to must be defined in the LSL file e The addressof and sizeof functions with the group or sect argument can only be used in the right hand side of an assignment The sizeof function with the mem argument can be used anywhere in section layouts e The checksum function can only be used in a struct statement You can use the following built in functions in expressions All functions return a numerical value This value is a 64 bit signed integer absolute int absolute expr Converts the value of expr to a positive integer absolute labelA labelB addressof int addressof addr_id Returns the address of addr_id which is a named section or group To get the offset of the section with the name asect addressof sect asect This function only works in assignmen
515. ssed the linker checks if there are unresolved symbols left If so the default behavior of the linker is to rescan all libraries in the order given at the command line The linker stops rescanning the libraries when all symbols are resolved or when the linker could not resolve any symbol s during the rescan of all libraries Notice that resolving one symbol may introduce new unresolved symbols With this option you tell the linker to scan the object files and libraries only once When the linker has not resolved all symbols after the first scan it reports which symbols are still unresolved This option is useful if you are building your own libraries The libraries are most efficiently organized if the linker needs only one pass to resolve all symbols Related information Linker option first library first Scan libraries in given order 346 Linker option no rom copy N Menu entry Command line syntax no rom copy N Description Tool Options With this option the linker will not generate a ROM copy for data sections A copy table is generated and contains entries to clear BSS sections However no entries to copy data sections from ROM to RAM are placed in the copy table The data sections are initialized when the application is downloaded The data sections are not re initialized when the application is restarted Related information 347 TASKING VX toolset for RH850 User Guide Linker option no warn
516. ssembler option preprocessor type m Menu entry 1 Select Assembler Preprocessing 2 Enable or disable the option Use TASKING preprocessor Command line syntax preprocessor type t ype mtype You can set the following preprocessor types none n No preprocessor tasking t TASKING preprocessor Default preprocessor type tasking Description With this option you select the preprocessor that the assembler will use By default the assembler uses the TASKING preprocessor When the assembly source file does not contain any preprocessor symbols you can specify to the assembler not to use a preprocessor Related information 308 Tool Options Assembler option section info t Menu entry 1 Select Assembler List File 2 Enable the option Generate list file 3 Enable the option List section summary and or 1 Select Assembler Diagnostics 2 Enable the option Display section summary Command line syntax section info flag t flags You can set the following flags console c C Display section summary on console list VL List section summary in list file Default section info CL Default without flags section info cl Description With this option you tell the assembler to display section information For each section its memory space size total cycle counts and name is listed on stdout and or in the list file The cycle count consists of two parts the total accumula
517. st their definitions using DWARF 2 or DWARF 3 debug information This check should give the same result as the C compiler when you use MIL linking Related information C compiler option global type checking Global type checking 325 TASKING VX toolset for RH850 User Guide Linker option help Menu eniry Command line syntax help item You can specify the following arguments options Show extended option descriptions Description Displays an overview of all command line options When you specify the argument options you can list detailed option descriptions Example The following invocations all display a list of the available command line options 1k850 1k850 help 1k850 To see a detailed description of the available options enter 1k850 help options Related information 326 Tool Options Linker option hex format Menu entry 1 Select Linker Output Format 2 Enable the option Generate Intel Hex format file 3 Enable or disable the optionEmit start address record Command line syntax hex format flag You can set the following flag start address s S Emit start address record Default hex format s Description With this option you can specify to emit or omit the start address record from the hex file Related information Linker option output Output file Section 12 2 Intel Hex Record Format 327 TASKING VX toolset for RH850 User Guide Linker op
518. status flags corresponding to the flags specified in the argument Not implemented fegetexceptflag Stores the current setting of the floating point status flags Not implemented feraiseexcept Raises the exceptions represented in the argument As a result other exceptions may be raised as well Not implemented fesetexceptflag Sets the current floating point status flags Not implemented fetestexcept Returns the bitwise OR of the exception macros corresponding to the exception flags which are currently set and are specified in the argument Not implemented 478 Libraries For each supported exception a macro is defined The following exceptions are defined FE_DIVBYZERO FE_INEXACT FE_INVALID FE_OVERF LOW FE_UNDERFLOW FE_ALL_ EXCEPT fegetround Returns the current rounding direction represented as one of the values of the rounding direction macros Not implemented fesetround Sets the current rounding directions Not implemented Currently no rounding mode macros are implemented 10 1 10 float h The header file float h defines the characteristics of the real floating point types float double and long double float h used to contain prototypes for the functions copysign f isinf f isfinite f isnan f and scalb These functions have accordingly to the ISO C99 standard been moved to the header file math h See also Section 10 1 17 math h and tgmath h Th
519. stead of errors for mandatory rules Warnings instead of errors for required rules Warnings instead of errors for advisory rules Command line syntax misrac advisory warnings misrac required warnings misrac mandatory warnings Description Normally if an advisory rule required rule or mandatory rule is violated the compiler generates an error As aconsequence no output file is generated With this option the compiler generates a warning instead of an error Related information Section 3 7 2 C Code Checking MISRA C C compiler option misrac Linker option misrac report 242 Tool Options C compiler option misrac version Menu eniry 1 Select C Compiler MISRA C 2 Select the MISRA C version 1998 2004 or 2012 Command line syntax misrac version 1998 2004 2012 Default 2004 Description MISRA C rules exist in three versions MISRA C 1998 MISRA C 2004 and MISRA C 2012 By default the C source is checked against the MISRA C 2004 rules With this option you can select which version to use Related information Section 3 7 2 C Code Checking MISRA C C compiler option misrac 243 TASKING VX toolset for RH850 User Guide C compiler option no clear Menu eniry 1 Select C Compiler Allocation 2 Disable the option Clear uninitialized global and static variables Command line syntax no clear Description Normally uninitialized global static variables are
520. ster Al 3412 0000 mov a eax a defined at 0x1234 byte reversed A3 0000 0000 mov eax b b is imported so the instruction refers to 0x0000 since its location is unknown Now assume that the linker links this code so that the section in which a is located is relocated by 0x10000 bytes and b turns out to be at 0x9A12 The linker modifies the code to be Al 3412 0100 mov a eax Ox10000 added to the address A3 129A 0000 mov eax b 0x9A12 patched in for b These adjustments affect instructions but keep in mind that any pointers in the data part of a relocatable object file have to be modified as well Output formats The linker can produce its output in different file formats The default ELF DWARF format e1 contains an image of the executable code and data and can contain additional debug information The Intel Hex format hex and Motorola S record format sre only contain an image of the executable code and data You can specify a format with the options output o and chip output c Controlling the linker Via a so called linker script file you can gain complete control over the linker The script language is called the Linker Script Language LSL Using LSL you can define The memory installed in the embedded target system 136 Using the Linker To assign locations to code and data sections the linker must know what memory devices are actually installed in the embedded target system For each physical
521. symbol construction like printf in an object file or your own library you must position this object library before the C library With the option first library first you can tell the linker to scan the libraries from left to right and extract symbols from the first library where the linker finds it This can be useful when you want to use newer versions of a library routine 1k850 first library first a a test o b a If the file test o calls a function which is both present in a a and b a normally the function in b a would be extracted With this option the linker first tries to extract the symbol from the first library a a Note that routines in b a that call other routines that are present in both a a and b a are now also resolved from a a 5 3 1 How the Linker Searches Libraries System libraries You can specify the location of system libraries in several ways The linker searches the specified locations in the following order 1 The linker first looks in the Library search path that are specified in the Linker Libraries page in the C C Build Settings Tool Settings tab of the Project Properties dialog equivalent to the option library directory L If you specify the L option without a pathname the linker stops searching after this step 2 When the linker did not find the library because it is not in the specified library directory or because no directory is specified it looks in the path s specifie
522. t Return position of sir2 in str1 Detailed Description of Built in Assembly Functions ARG symbofT expression Returns integer 1 if the macro argument represented by symbol or expression is present 0 otherwise You can specify the argument with a symbol name the name of a macro argument enclosed in single quotes or with expression the ordinal number of the argument in the macro formal argument list If you use this function when macro expansion is not active the assembler issues a warning Example IF ARG TWIDDLE is argument twiddle present IF ARG 1 jis first argument present BASEREL16 expression Forces 16 bit base register relative addressing of an instruction The expression is treated as a 16 bit offset Example ld b BASEREL16 _labl ep r2 51 TASKING VX toolset for RH850 User Guide BASEREL23 expression Forces 23 bit base register relative addressing of an instruction The expression is treated as a 23 bit offset Example ld b BASEREL23 _labl ep r2 CNT Returns the number of macro arguments of the current macro expansion as an integer If you use this function when macro expansion is not active the assembler issues a warning Example ARGCOUNT SET CNT reserve argument count DEFINED symbof symbol Returns 1 if symbol has been defined 0 otherwise If symbol is quoted it is looked up as a DEFINE symbol
523. t to specify that a function has no side effects and will not access global data This can help the compiler to optimize code See also attribute pure The following kinds of functions should not be declared __ const__ A function with pointer arguments which examines the data pointed to A function that calls a non const function enable Specifies that the compiler also generates code to re enable interrupts of the same El exception level For more information see Section 1 10 4 nterrupt Functions export You can use ___attribute__ export to specify that a variable function has external linkage and should not be removed During MIL linking the compiler treats external definitions at file scope as if they were declared static As a result unused variables functions will be eliminated and the alias checking algorithm assumes that objects with static storage cannot be referenced from functions outside the current module During MIL linking not all uses of a variable function can be known to the compiler For example when a variable is referenced in an assembly file or a third party library With the export attribute the compiler will not perform optimizations that affect the unknown code int i __attribute__ export i has external linkage flatten You can use ___attribute__ flatten to force inlining of all function calls in a function including nested function calls Unless inlining is impossible or disabl
524. t src before it is assembled Related information Assembler option include directory Add directory to include file search path 291 TASKING VX toolset for RH850 User Guide Assembler option kanji Menu entry 1 Select Assembler Miscellaneous 2 Enable the option Allow Shift JIS Kanji in strings Command line syntax kanji Description With this option you tell the assembler to support Shift JIS encoded Kanji multi byte characters in strings Without this option encodings with Ox5c as the second byte conflict with the use of the backslash as an escape character Shift JIS in comments is supported regardless of this option Note that Shift JIS also includes Katakana and Hiragana Related information C compiler option language kanji Allow Shift JIS Kanji in strings 292 Tool Options Assembler option keep output files k Menu entry Eclipse always removes the object file when errors occur during assembling Command line syntax keep output files k Description If an error occurs during assembling the resulting object file o may be incomplete or incorrect With this option you keep the generated object file when an error occurs By default the assembler removes the generated object file when an error occurs This is useful when you use the make utility If the erroneous files are not removed the make utility may process corrupt files on a subsequent invocation Use this option when
525. t use tab characters t to indent instructions __asm nop n tnop Example 2 using output parameters Assign the result of inline assembly to a variable A register is chosen for the parameter because of the constraint r the compiler decides which register is best to use The 0 in the instruction template is replaced with the name of the variable The compiler generates code to assign the result to the output variable char initone void char out __asm mov oO r out return out Generated assembly code _initone type func mov 1 r10 jmp lp Example 3 using input parameters Assign a variable to a register A register is chosen for the parameter because of the constraint r the compiler decides which register is best to use The 0 in the instruction template is replaced with the name of this register The compiler generates code to move the input variable to the input register Because there are no output parameters the output parameter list is empty Only the colon has to be present int in void addone void TASKING VX toolset for RH850 User Guide asm addi 1 0 r1 r in Generated assembly code ld w baserel23 _in gp r11 addi 1 r11 r1 Example 4 using input and output parameters Shift right one C variable a number of times as specified by a second variable and assign the result to a third C variable Registers are necessary for the input and ou
526. t all section selections are restricted to the address space of the section layout in which this group definition occurs e With the ref_tree field you can select a group of related sections The relation between sections is often expressed by means of references By selecting just the root of tree the complete tree is selected This is for example useful to locate a group of related sections in special memory e g fast memory The referenced sections must meet the following conditions in order to be selected 1 The sections are within the section layout s address space 2 The sections match the specified attributes 570 Linker Script Language LSL 3 The sections have no absolute restriction as is the case for all wildcard selections For example to select the code sections referenced from fool group refgrp ordered contiguous run_addr mem ext_c select ref_tree fool attributes x If section fool references foo2 and foo2 references foo3 then all these sections are selected by the selection shown above Locating a group group group_name group_specifications section_statements With the group_specifications you actually define how the linker must locate the group You can roughly define three things 1 assign properties to the sections in a group like alignment and read write attributes 2 define the mutual order in the address space for sections in the group and 3 restrict the possible address
527. t file or keeps the results in memory for further processing during the locating phase The resulting file of the linking phase is a single relocatable object file out If this file contains unresolved references you can link this file with other relocatable object files o or libraries a to resolve the remaining unresolved references With the linker command line option link only you can tell the linker to only perform this linking phase and skip the locating phase The linker complains if any unresolved references are left 5 1 2 Phase 2 Locating In the locating phase the linker assigns absolute addresses to the object code placing each section in a specific part of the target memory The linker also replaces references to symbols by the actual address of those symbols The resulting file is an absolute object file which you can actually load into a target memory Optionally when the resulting file should be loaded into a ROM device the linker creates a so called copy table section which is used by the startup code to initialize the data and BSS sections Code modification When the linker assigns absolute addresses to the object code it needs to modify this code according to certain rules or relocation expressions to reflect the new addresses These relocation expressions are stored in the relocatable object file Consider the following snippet of x86 code that moves the contents of variable a to variable b via the eax regi
528. t from the file you supplied as input With this option you tell the control program to stop after a certain number of phases Example To generate the object file test o cc850 create test c The control program stops after the file is assembled It does not link nor locate the generated output Related information Control program option link only Link only no locating 367 TASKING VX toolset for RH850 User Guide Control program option debug info g Menu eniry 1 Select C Compiler Debugging 2 To generate symbolic debug information select Default Small set or Full To disable the generation of debug information select None Command line syntax debug info g Description With this option you tell the control program to include debug information in the generated object file The control program passes the option debug info g to the C compiler and calls the assembler with debug info smart local gsl Related information C compiler option debug info Generate symbolic debug information Assembler option debug info Generate symbolic debug information 368 Tool Options Control program option define D Menu eniry 1 Select C Compiler Preprocessing and or Assembler Preprocessing The Defined symbols box right below shows the symbols that are currently defined 2 To define a new symbol click on the Add button in the Defined symbols box 3 Type the symbol definition
529. tant data that is defined more than once from the resulting object file 5 7 Controlling the Linker with a Script With the options on the command line you can control the linker s behavior to a certain degree If you want more control over the locating process you can supply a script to the linker in which you can specify 143 TASKING VX toolset for RH850 User Guide where your sections will be located how much memory is available which sorts of memory are available and so on The language for the script is called the Linker Script Language or shortly LSL You can specify the script file to the linker which reads it and locates your application exactly as defined in the script If you do not specify your own script file the linker always reads a standard script file which is supplied with the toolset 5 7 1 Purpose of the Linker Script Language The Linker Script Language LSL serves three purposes 1 It provides the linker with a definition of the target s core architecture This definition is supplied with the toolset 2 It provides the linker with a specification of the memory attached to the target processor 3 It provides the linker with information on how your application should be located in memory This gives you for example the possibility to create overlaying sections The linker accepts multiple LSL files You can use the specifications of the core architectures that Altium has supplied in the include 1s1 directo
530. tation based on code and data size and execution speed With the C compiler option tradeoff you can tell the compiler to put more emphasis on speed than on ROM size The jump table has a predictable behavior in execution speed independent of the switch argument every case is reached in the same execution time However when the case labels are distributed far apart the jump table becomes sparse wasting code memory The compiler will not use the jump table method when the waste becomes excessive With a small number of cases the jump chain method can be faster in execution and shorter in size Example The following example is used to explain the different switch statement implementations int g void f int c switch c case 1 g 3 break case 2 g 5 break case 10 g 2 break default g 1 break 23 TASKING VX toolset for RH850 User Guide return Jump chain With C compiler option switch linear the example is generated as es type func cmp 1 r6 comparable if else construction be L2 cmp 2 xr6 be L3 cmp 10 r6 be L4 br L5 L2 mov 3 r11 br L6 L34 mov 5 ALL br sE L4 mov 2 xr11 br L8 EGO mov 1 r11 L8 GIS L6 st w r11 baserel23 _g gp jmp 1p Jump table When a switch is implemented using a jump table the switch argument is used as an index into a table which holds the target address With C compiler option switch jumptab the
531. te_section_statement simple_section_statement assignment select_section_statement special_section_statement assignment symbol_name assign_op expr assign_op select_section_statement select lt ref_tree gt lt section_selections gt I1 0 1 lt section_name gt oll Either a section_name or at least one section_selection must be defined 547 TASKING VX toolset for RH850 User Guide section_selections section_selection section_selection gt gt 0 lt section_selection gt attributes lt lt gt attribute gt tag attribute means select all sections that have this attribute attribute means select all sections that do not have this attribute special_section_statement heap heap_name lt stack_heap_mods gt stack stack_name lt stack_heap_mods gt copytable reserved section_name lt reserved_specs gt 1 O 1 e Special sections cannot be selected in load time groups stack_heap_mods i stack_heap_mod i stack_heap_mod lt stack_heap_mod gt size expr tag reserved_specs Aue reserved_spec reserved_spec lt reserved_spec gt attributes fill_spec size expr alloc_allowed absolute ranged Ifa reserved section has attributes r rw x rx or rwx and no fill pattern is defined the section is filled with zeros If no attributes are set the section is created as a scratch section attribut
532. ted count for the section and the total accumulated count for all repeated instructions In the case of nested loops it is possible that the total supersedes the section total Example To writes the section information to the list file and also display the section information on stdout enter as850 list fil section info asm src Related information Assembler option list file Generate list file 309 TASKING VX toolset for RH850 User Guide Assembler option symbol scope i Menu entry 1 Select Assembler Symbols 2 Enable or disable the option Set default symbol scope to global Command line syntax symbol scope scope iscope You can set the following scope global g Default symbol scope is global local l Default symbol scope is local Default symbol scope local Description With this option you tell the assembler how to treat symbols that you have not specified explicitly as global or local By default the assembler treats all symbols as local symbols unless you have defined them explicitly as global Related information Assembler directive GLOBAL 310 Tool Options Assembler option version V Menu entry Command line syntax version V Description Display version information The assembler ignores all other options or input files Related information 311 TASKING VX toolset for RH850 User Guide Assembler option warnings as errors Menu entry 1 Select Global
533. ted information Linker option make target Target to use in dependencies file 318 Tool Options Linker option diag Menu entry 1 From the Window menu select Show View Other TASKING Problems The Problems view is added to the current perspective 2 Inthe Problems view right click on a message A popup menu appears 3 Select Detailed Diagnostics Info A dialog box appears with additional information Command line syntax diag format all nr You can set the following output formats html HTML output rtf Rich Text Format text ASCII text Default format text Description With this option you can ask for an extended description of error messages in the format you choose The output is directed to stdout normally your screen and in the format you specify You can specify the following formats html rtf or text default To create a file with the descriptions you must redirect the output With the suboption all the descriptions of all error messages are given If you want the description of one or more selected error messages you can specify the error message numbers separated by commas With this option the linker does not link locate any files Example To display an explanation of message number 106 enter 1k850 diag 106 This results in the following message and explanation E106 unresolved external lt message gt The linker could not resolve all external symbols
534. ter to a certain start address sometimes called the reset vector In the architecture definition you must specify this start address in the correct address space in combination with the name of the label in the application code which must be located here The run_addr argument specifies the start address reset vector If the core starts executing using an entry from a vector table and directly jumps to the start label you should omit this argument The symbol argument specifies the name of the label in the application code that should be located at the specified start address The symbol argument is required The linker will resolve the start symbol and use its value after locating for the start address field in IEEE 695 files and Intel Hex files If you also specified the run_addr argument the start symbol label must point to a section The linker locates this section such that the start symbol ends up on the start address space space_name id 1 mau 8 align 8 557 TASKING VX toolset for RH850 User Guide page_size 1 stack name min_size 1k grows low_to_high reserved start_address end_address start_address run_addr 0x0000 symbol start_label map map_description 13 4 4 Mappings You can use a mapping when you define a space bus or memory With the map field you specify how addresses from the source space bus or memory are translated to addresses of a destination space bus
535. ter_name Assembly instructions that may contain parameters from the input list or output list in the form parm_nr Parameter number in the range 0 9 amp constraint_char C_expression constraint_char C_expression Says that an output operand is written to before the inputs are read so this output must not be the same register as any input Constraint character the type of register to be used for the C_expression See the table below Any C expression For output parameters it must be an lvalue that is something that is legal to have on the left side of an assignment register_name Name of the register you want to reserve For example because this register gets clobbered by the assembly code The compiler will not use this register for inputs or outputs Note that reserving too many registers can make register allocation impossible Specifying registers for C variables With a constraint character you specify the register type for a parameter You can reserve the registers that are used in the assembly instructions either in the parameter lists or in the reserved register list register_reserve_list The compiler takes account of these lists so no unnecessary register saves and restores are placed around the inline assembly instructions Constraint Type Operand Remark character r general purpose register r1 r31 number type of operand it is same as number Input constrai
536. tes separated by dots module module name name object name name of variable or function Within format specifier expansions dots will be replaced by dollars When the format string is omitted a section will have a name that consist of a dot and the section type only Note that pragma section data special will give all sections a name consisting of just the section type except for data sections which will be named data special The reason for this is that the double comma is interpreted as rename sections or pragma section without arguments Some examples file test c pragma section bss module data int x Section name bss test pragma section sdata myname name __sdata int status 1 Section name sdata myname status With pragma endsection the naming convention of the previous level is restored while with pragma section default the command line state of the rename sections option is restored or when the rename sections option was not used the default section naming convention is restored Nesting of pragma section endsection pairs will save the status of the previous level Examples file example c char a allocated in sbss example a pragma section sbss Mysectl char b allocated in sbss Mysectl1 39 TASKING VX toolset for RH850 User Guide pragma section sbss Mysect2 char c allocated in sbss Mysect2 pragma endsection char d al
537. the include file because it is not in the specified include directory or because no directory is specified it looks in the path s specified in the environment variable C850 INC 112 Using the C Compiler 4 When the compiler still did not find the include file it finally tries the default include directory relative to the installation directory unless you specified option no stdinc Example Suppose that the C source file test c contains the following lines include lt stdio h gt include myinc h You can call the compiler as follows c850 Imyinclude test c First the compiler looks for the file st dio h in the directory myinclude relative to the current directory If it was not found the compiler searches in the environment variable C850INC and then in the default include directory The compiler now looks for the file myinc h in the directory where test c is located If the file is not there the compiler searches in the directory myinclude If it was still not found the compiler searches in the environment variable C850INC and then in the default include directory 3 5 Compiling for Debugging Compiling your files is the first step to get your application ready to run on a target However during development of your application you first may want to debug your application To create an object file that can be used for debugging you must instruct the compiler to include symbolic debug information in the source file
538. the preprocessor repeats the source lines DB 10 three times then the assembler assembles the result REPEAT 3 DB 10 assembly source lines Related Information FOR ENDFOR Repeat sequence of source lines n times 89 TASKING VX toolset for RH850 User Guide RESUME Syntax RESUME name attribute Description With the SECTION you always start a new section With the RESUME directive you can reactivate a previously defined section See the SECTION directive for a list of available section attributes If you omit the attribute the previously defined section with the same name is reactivated ignoring the attribute s If you specify an attribute you reactivate the section with that same attribute If multiple previously defined sections match the matching section that was active last before the RESUME directive is reactivated Example SECTION text First text section SEC ION data First data section SEC ION text Second text section SEC ION data at 0x0 Second data section _RESUME text Resume in the second text section _RESUME data Resume in the first data section _RESUME data at 0x0 Resume in the second data section Related Information n ECTION Start a new section 90 Assembly Language SECTION ENDSEC Syntax SECTION name attribute at address
539. ther variant when the rules is potentially violated as indicated by a preceding warning message For example see the following code fragment extern int some_condition int void f void char buf 10 int i 119 TASKING VX toolset for RH850 User Guide for i 0 i lt 10 i if some_condition i buf i 0 subscript may be out of bounds As you can see in this example if i 10 the array buf might be accessed beyond its upper boundary depending on the result of some_condition i If the compiler cannot determine the result of this function at run time the compiler issues the warning subscript is possibly out of bounds preceding the CERT warning ARR35 do not allow loops to iterate beyond the end of an array If the compiler can determine the result or if the i statement is omitted the compiler can guarantee that the subscript is out of bounds The SCA implementation has real practical value in embedded system development There are no real objective criteria to measure this claim Therefore the TASKING compilers support well known standards for safety critical software development such as the MISRA guidelines for creating software for safety critical automotive systems and secure CERT C Secure Coding Standard released by CERT CERT is founded by the US government and studies internet and networked systems security vulnerabilities and develops information to improve security Ef
540. tings In the right pane the Settings appear 3 Open the Tool Settings tab You can set all tool options here Unless stated otherwise all Menu entry descriptions expect that you have this Tool Settings tab open The following tables give an overview of all tool options on the Tool Settings tab in Eclipse with the corresponding command line options if available Global Options Eclipse option Description or option Use global product directory preference Directory where the TASKING toolset is installed Treat warnings as errors Control program option warnings as errors Keep temporary files Control program option keep temporary files t Verbose mode of control program Control program option verbose v C Compiler Eclipse option Description or option Preprocessing Store preprocessor output in lt file gt pre Control program option preprocess E no preprocessing only 199 TASKING VX toolset for RH850 User Guide Eclipse option Description or option Keep comments in preprocessor output Control program option preprocess comments Keep line info in preprocessor output Control program option preprocess noline Defined symbols C compiler option define Pre include files C compiler option include file Include Paths Include paths C compiler option include directory Language Comply to C standard C compiler option is
541. tion Delete unreferenced sections Linker option optimize c Use a first fit decreasing algorithm Linker option optimize I Compress copy table Linker option optimize t Delete duplicate code Linker option optimize x Delete duplicate data Map File Linker option optimize y Generate map file map Control program option no map file Generate XML map file format mapxml for map file viewer Linker option map file file mapxml XML Include Linker option map file format Diagnostics Suppress warnings Linker option no warnings num Suppress all warnings Linker option no warnings Maximum number of emitted errors Linker option error limit Miscellaneous Strip symbolic debug information Linker option strip debug Link case insensitive Linker option case insensitive Do not use standard copy table for initialization Linker option user provided initialization code Show link phases during processing Linker option verbose Additional options Linker options 203 TASKING VX toolset for RH850 User Guide 8 1 Configuring the Command Line Environment If you want to use the tools on the command line using a Windows command prompt you can set environment variables You can set the following environment variables Environment Description variable AS850INC Wit
542. tion hex record size Menu entry 1 Select Linker Output Format 2 Enable the option Generate Intel Hex format file 3 Select Linker Miscellaneous 4 Add the option hex record size to the Additional options field Command line syntax hex record size size Default 32 Description With this option you can set the size width of the Intel Hex data records Related information Linker option output Output file Section 12 2 Intel Hex Record Format 328 Tool Options Linker option import object Menu entry 1 Select Linker Data Objects The Data objects box shows the list of object files that are imported 2 To add a data object click on the Add button in the Data objects box 3 Type or select a binary file including its path Use the Edit and Delete button to change a filename or to remove a data object from the list Command line syntax import object file Description With this option the linker imports a binary file containing raw data and places it in a section The section name is derived from the filename in which dots are replaced by an underscore So when importing a file called my jpg a section with the name my_jpg is created In your application you can refer to the created section by using linker labels Related information Section 5 5 Importing Binary Files 329 TASKING VX toolset for RH850 User Guide Linker option include directory l Menu eniry Comma
543. tion Control program option format Set linker output format Linker option output Output file Linker option chip output Generate an output file for each chip 399 TASKING VX toolset for RH850 User Guide Control program option pass W Menu eniry 1 Select C Compiler Miscellaneous or Assembler Miscellaneous or Linker Miscellaneous 2 Add an option to the Additional options field Be aware that the options in the option file are added to the options you have set in the other pages Only in extraordinary cases you may want to use them in combination The assembler options are preceded by Wa and the linker options are preceded by WI For the C options you have to do this manually Command line syntax pass assembler option Waoption Pass option directly to the assembler pass c option Wcoption Pass option directly to the C compiler pass linker option Wloption Pass option directly to the linker Description With this option you tell the control program to call a tool with the specified option The control program does not use or interpret the option itself but specifies it directly to the tool which it calls Example To pass the option verbose directly to the linker enter cc850 pass linker verbose test c Related information 400 Tool Options Control program option preprocess E no preprocessing only Menu eniry 1 Select C Compiler Preprocessing 2 Enable the opti
544. tion messages are always preceded by an error message Information messages give extra information about the error S System errors System errors occur when internal consistency checks fail and should never occur When you still receive the system error message S9 internal consistency check failed please report please report the error number and as many details as possible about the context in which the error occurred Display detailed information on diagnostics 1 From the Window menu select Show View Other TASKING Problems The Problems view is added to the current perspective 124 Using the C Compiler 2 Inthe Problems view right click on a message A popup menu appears 3 Select Detailed Diagnostics Info A dialog box appears with additional information On the command line you can use the C compiler option diag to see an explanation of a diagnostic message c850 diag format all number 125 TASKING VX toolset for RH850 User Guide 126 Chapter 4 Using the Assembler This chapter describes the assembly process and explains how to call the assembler The assembler converts hand written or compiler generated assembly language programs into machine language resulting in object files in the ELF DWARF object format The assembler takes the following files for input and output assembly file SIC assembler relocatable object file 0 assembly file asm chand code
545. tion of the available options enter amk help options Related information 414 Tool Options Parallel make utility option jobs j jobs limit J Menu 1 From the Project menu select Properties for The Properties dialog appears 2 Inthe left pane select C C Build In the right pane the C C Build page appears 3 On the Behaviour tab select Use parallel build 4 You can specify the number of parallel jobs or you can use an optimal number of jobs In the last case amk will fork as many jobs in parallel as cores are available Command line syntax jobs number j number jobs limit number J number Description When these options you can limit the number of parallel jobs The default is 1 Zero means no limit When you omit the number amk uses the number of cores detected Option J is the same as j except that the number of parallel jobs is limited by the number of cores detected Example amk j3 Limit the number of parallel jobs to 3 Related information 415 TASKING VX toolset for RH850 User Guide Parallel make utility option keep going k Command line syntax keep going k Description When during the make process the make utility encounters an error it stops rebuilding your files With the option k the make utility only stops building the target that produced the error All other targets defined in the makefile are built Example amk k If the ma
546. tions data d Dump contents of data sections Default class all Description With this option you can restrict the output to code or data only This option affects all parts of the output except the module list The effect is listed in the following table Output part Effect of class Module list Not restricted Section list Only lists sections of the specified class Section dump Only dumps the contents of the sections of the specified class HLL symbol table Only lists symbols of the specified class Assembly level symbol Only lists symbols defined in sections of the specified class table Note sections Not restricted By default all sections are included Related information Section 6 4 2 HLL Dump Output Format 439 TASKING VX toolset for RH850 User Guide HLL object dumper option copy table Command line syntax copy table Description With this option the HLL object dumper attempts to translate the specified code address to the destination address of a copy table copy command during disassembly Related information 440 Tool Options HLL object dumper option diag Command line syntax diag format all msg msg You can set the following output formats html HTML output rtf Rich Text Format text ASCII text Default format text Description With this option you can ask for an extended description of error messages in the format you choose The
547. tions key options Replace or add an object module r a b c n u v Extract an object module from the library X 0 V Delete object module from library d V Move object module to another position m a b v Print a table of contents of the library t s0 s1 Print object module to standard output p Sub options Append or move new modules after existing module name a name Append or move new modules before existing module name b name Suppress the message that is displayed when a new library is C created Create a new library from scratch n Preserve last modified date from the library 0 Print symbols in library modules s 0 1 Replace only newer modules u Verbose V 423 TASKING VX toolset for RH850 User Guide Description Option Sub option Miscellaneous Display options Display description of one or more diagnostic messages diag Display version header V Read options from file f file Suppress warnings above level n wn 424 Tool Options Archiver option diag Command line syntax diag format all msg msg You can set the following output formats html HTML output rtf Rich Text Format text ASCII text Default format text Description With this option you can ask for an extended description of error messages in the format you choose The output is directed to stdout normally your screen and in the format you specify The a
548. to malloc routines should return the address of the same object or any address pointing into that object nested Specifies a nested El level interrupt function For more information see Section 1 10 4 Interrupt Functions noinline You can use __attribute__ noinline to prevent a function from being considered for inlining Same as keyword __ noinline or pragma noinline always_inline With __ attribute__ always_inline you force the compiler to inline the specified function regardless of the optimization strategy of the compiler itself Same as keyword inline or pragma inline noreturn Some standard C function such as abort and exit cannot return The C compiler knows this automatically You can use ___attribute__ noreturn to tell the compiler that a function never returns For example void fatal __attribute__ noreturn void fatal Print error message exit 1 The function fatal cannot return The compiler can optimize without regard to what would happen if fatal ever did return This can produce slightly better code and it helps to avoid warnings of uninitialized variables protect You can use __attribute_ protect to exclude a variable function from the duplicate unreferenced section removal optimization in the linker When you use this attribute the compiler will add the protect section attribute to the symbol s section Example int i __attribute__ protect Not
549. tored as a file coded in UTF 8 with extension 1s1 Before processing an LSL file the linker preprocesses it using a standard C preprocessor Following this the linker interprets the LSL file using a scanner and parser Finally the linker uses the information found in the LSL file to guide the locating process 13 2 1 Preprocessing When the linker loads an LSL file the linker processes it with a C style prepocessor As such it strips C and C comments You can use the standard ISO C preprocessor directives such as include define if ifdef else endif error For example include arch 1lsl Preprocess and include the file arch 1s1 at this point in the LSL file 535 TASKING VX toolset for RH850 User Guide 13 2 2 Lexical Syntax The following lexicon is used to describe the syntax of the Linker Script Language IDENTIFIER STRING DQSTRING OCT_NUM DEC_NUM HEX_NUM Ais defined as B Ais defined as B and C Bis followed by C Ais defined as Bor C zero or one occurrence of B zero of more occurrences of B one of more occurrences of B acharacter sequence starting with a z A Z or _ Following characters may also be digits and dots sequence of characters not starting with n r or t STRING double quoted string octal number starting with a zero 06 045 decimal number not starting with a zero 14 1024 hexadecimal number starting with 0x 0x0023 OxFF
550. tors pane right click on a monitor 2 From the popup menu select Remove Memory Monitor 195 TASKING VX toolset for RH850 User Guide Renderings You can inspect the memory in so called renderings A rendering specifies how the output is displayed hexadecimal ASCII signed integer unsigned integer or traditional You can add or remove renderings per monitor Though you cannot change a rendering you can add or remove them 1 Click the New Renderings tab in the Memory Renderings pane The Add Memory Rendering dialog appears 2 Select the rendering you want Traditional Hex ASCII Signed Integer Unsigned Integer or Hex Integer and click Add Rendering s To remove a rendering 1 Right click on a memory address in the rendering 2 From the popup menu select Remove Rendering Changing memory contents In a rendering you can change the memory contents Simply type a new value Warning Changing process memory can cause a program to crash The right click popup menu gives some more options for changing the memory contents or to change the layout of the memory representation 7 4 7 Compare Application View You can use the Compare Application view to check if the downloaded application matches the application in memory Differences may occur for example if you changed memory addresses in the Memory view e To check for differences click the Compare button 7 4 8 Heap View With the Heap view you can inspect t
551. tput parameters constraint r 0 for out 1 for in 2 for cnt in the instruction template int shiftright int in int cnt int out __asm shr 2 1 0 r out Yen in wyn cnt 2 return out Generated assembly code shr r7 r6 r10 Example 5 reserving registers Sometimes an instruction knocks out certain specific registers The most common example of this is a function call where the called function is allowed to do whatever it likes with some registers If this is the case you can list specific registers that get clobbered by an operation after the inputs Same as Example 4 but now register r6 is a reserved register You can do this by adding a reserved register list xr6 As you can see in the generated assembly code register r6 is not used register r11 is used instead int shiftright int an int cnt int out __asm shr 2 1 0 r out Mew in yn cnt r6 y return out Generated assembly code 10 C Language shr r7 rill r10 Example 6 use the same register for input and output As input constraint you can use a number to refer to an output parameter This tells the compiler that the same register can be used for the input and output parameter When the input and output parameter are the same C expression these will effectively be treated as if the input parameter is also used as output In that case it is allowed to write to this register For exam
552. trapping on exceptions negzero z Z ignore sign of 0 0 strict 0 alias for fp model CFLNRStZ precise 1 alias for fp model cFLNRSTZ fast double 2 alias for fp model cFInrSTz fast single 3 alias for fp model cfinrSTz Default fp model cflnrSTz Description With this option you select the floating point execution model With fp model contract you allow the compiler to contract multiple float operations into a single operation with different rounding results A possible example is fused multiply add With fp model float you tell the compiler to treat variables and constants of type double as float Because the float type takes less space execution speed increases and code size decreases both at the cost of less precision The control program automatically selects the correct libraries With fp model fastlib you allow the compiler to select faster but less accurate library functions for certain floating point operations 378 Tool Options With fp model nonan you allow the compiler to ignore NaN or Inf input values An example is to replace multiply by zero with zero With fp model rewrite you allow the compiler to rewrite expressions by reassociating This might result in rounding differences and possibly different exceptions An example is to rewrite a c b c as a b c With fp model soft no hardware floating point instructions are generated only calls to the software floating point library By d
553. tream Conversion specifications starting with a character Conversion specifications should be built as follows in order A meaning that no assignment is done for this field A number specifying the maximum field width The conversion characters d i n o u and x may be preceded by h if the argument is a pointer to short rather than int or by hh if the argument is a pointer to char or by l letter ell if the argument is a pointer to long or by Il for a pointer to Long long j for a pointer to intmax_t or uintmax_t z for a pointer to size_t or t for a pointer to ptrdiff_t The conversion characters e and g may be preceded by I if the argument is a pointer to double rather than float and by L for a pointer toa long double A conversion specifier maximum field width and length modifier are optional the conversion character is not The conversion character must be one of the following if a character following is not in the list the behavior is undefined Length specifier and length modifier are optional the conversion character is not The conversion character must be one of the following if a character following is not in the list the behavior is undefined 491 TASKING VX toolset for RH850 User Guide Character Scanned as d non a XxX cCoO e E g G a A n p r Ir R IR int signed decimal int the integer may be given octal i
554. trol program option preprocess make Generate dependencies for make Control program option dep file Generate dependencies in a file 393 TASKING VX toolset for RH850 User Guide Control program option no default libraries Menu entry 1 Select Linker Libraries 2 Disable the option Link default libraries Command line syntax no default libraries Description By default the control program specifies the standard C libraries C99 and run time library to the linker With this option you tell the control program not to specify the standard C libraries and run time library to the linker In this case you must specify the libraries you want to link to the linker with the option library ibrary_name or pass the libraries as files on the command line The control program recognizes the option library I as an option for the linker and passes it as such Example cc850 no default libraries test c The control program does not specify any libraries to the linker In normal cases this would result in unresolved externals To specify your own libraries libc a and avoid unresolved externals cc850 no default libraries library c test c Related information Control program option library Link system library Section 5 3 1 How the Linker Searches Libraries Chapter 10 Libraries 394 Tool Options Control program option no map file Menu eniry 1 Select Linker Map File 2 Disable the
555. ts 13 1 R 13 2 R 608 Conversions shall not be performed between a pointer to a function and any other type Conversions shall not be performed between a pointer to an incomplete type and any other type A cast shall not be performed between a pointer to object type and a pointer to a different object type A conversion should not be performed between a pointer to object and an integer type A conversion should not be performed from pointer to void into pointer to object A cast shall not be performed between pointer to void and an arithmetic type A cast shall not be performed between pointer to object and a non integer arithmetic type A cast shall not remove any const or volatile qualification from the type pointed to by a pointer The macro NULL shall be the only permitted form of integer null pointer constant The precedence of operators within expressions should be made explicit The right hand operand of a shift operator shall lie in the range zero to one less than the width in bits of the essential type of the left hand operand The comma operator should not be used Evaluation of constant expressions should not lead to unsigned integer wrap around Initializer lists shall not contain persistent side effects The value of an expression and its persistent side effects shall be the same under all permitted evaluation orders 13 3 13 4 13 5 13 6 MISRA C Rules A full expression containing an increment
556. ts and struct statements checksum int checksum checksum_algo expr expr Returns the computed checksum over a contiguous address range The first argument specifies how the checksum must be computed see below the second argument is an expression that represents the start address of the range while the third argument represents the end address exclusive The value of the end address expression must be strictly larger than the value of the start address i e the size of the checksum address range must be at least one MAU Each address in the range must point to a valid 538 Linker Script Language LSL memory location Memory locations in the address range that are not occupied by a section are filled with zeros The only checksum algorithm checksum_algo currently supported is crc32w This algorithm computes the checksum using a Cyclic Redundancy Check with the CRC 32 polynomial 0xEDB88320 The input range is processed per 4 byte word Those 4 bytes are passed to the checksum algorithm in reverse order if the target architecture is little endian For big endian targets this checksum algorithm is equal to a regular byte wise CRC 32 implementation Both the start address and end address values must be aligned on 4 MAUs The behavior of this checksum algorithm is undefined when used in an address space that has a MAU size not equal to 8 checksum crc32w addressof mem foo addressof mem foo sizeof mem foo This
557. tt eee eeeeneeeeeees 57 2 10 Macro Operations 0 cece eee ence eee cette eaten teens eee esata esata ee deeaeeaeeaeeaeeaeeaeeaeeaes 102 2 101 Defining a Maio ccris E Goan ed aE Heel 102 210 2 Calling a MaGro iei r noinein tan Hs Delete ct ee ee 102 2 10 3 Using Operators for Macro Arguments 0c eceeeeeeeeeeeeeneeeeeneeneeneeeeenes 103 2 11 Generic Instructions 0 2 0 eee cece eect e ee eee eee etetett rttr ttt ee ease eseeseeaeeseeseeeeeaeeeeeaes 106 3 Using the C Compiler os s csicnc ccnhatdectbnesnsmttinnaetgecnbae te cnusnend E E Ea EE E E a aaie 109 3 1 Compilation Probes Siss eose naam nET eheee a a AE EEE NR 109 3 2 Calling the C Compiler ccc cececec eee e eee e eee teeta eee ated e ated e ane deea eed eaneaeeaeeneeas 110 3 3 The C Startup Code siais ceninin neat natonnsd neacuastacasantaacchdaane sage in ainak 112 3 4 How the Compiler Searches Include Files cceeeeeeeeeeeeeeeeeeceeceeeeeeeseeeeeseeeeeees 112 3 5 Compiling for Debugging sissien erkeni pened ue aaaehcaa a eoram E NENES adi 113 TASKING VX toolset for RH850 User Guide 3 6 Compiler OptimiZationS s priis estes acai oriei eie aioin EEEn EEE EEEE PERE ESETRE 114 3 6 1 Generic Optimizations frontend ccceeeeeeeee eee eee ee eee eeeeeeeeeeeeeeeeeeeee es 115 3 6 2 Core Specific Optimizations backend ceeeee eee ee eee eeeeeeeeneeeeeaeeeeeneees 116 3 6 3 Optimize for Code Size or Executio
558. u are building your own processor core it helps to understand the Linker Script Language and how the definitions are interrelated Within an architecture definition the characteristics of a target processor core that are important for the linking process are defined These include space definitions the logical address spaces and their properties bus definitions the I O buses of the core architecture mappings the address translations between logical address spaces the connections between logical address spaces and buses and the address translations between buses 149 TASKING VX toolset for RH850 User Guide Address spaces A logical address space is a memory range for which the core has a separate way to encode an address into instructions Most microcontrollers and DSPs support multiple address spaces For example separate spaces for code and data Normally the size of an address space is 2N with N the number of bits used to encode the addresses The relation of an address space with another address space can be one of the following one space is a subset of the other These are often used for small absolute or relative addressing e the addresses in the two address spaces represent different locations so they do not overlap This means the core must have separate sets of address lines for the address spaces For example in Harvard architectures we can identify at least a code and a data memory space Address spaces ev
559. u can place variables at absolute addresses with the keyword __at C Language 1 2 1 Memory Qualifiers In the C language you can specify that a variable or function must lie in a specific part of memory You can do this with a memory qualifier lf you do not specify a memory qualifier data objects and functions get a default memory type Memory qualifiers for functions You can specify the following memory qualifiers for functions Qualifier Description Location Section name near i Near functions Anywhere accessible through jr jarl disp22 text __far Far functions Anywhere accessible through jr jarl disp32 text If you do not use an explicit qualifier the default depends on the C compiler option default code or if the option is not used the default is__ near Memory qualifiers for data You can specify the following memory qualifiers for data Qualifier Description Addressing mode Section name __data 7 normal initialized cleared data 32 bit absolute data bss data const normal constant data 32 bit absolute Gonst __sdata _ near near gp relative initialized cleared gp disp16 sdata sbss data __sdata __far far gp relative initialized cleared gp disp23 sdata23 sbss23 data __sdata __near near tp relative constant data tp disp16 sconst const __sdata __far const far tp relative constant data tp disp23 sconst23 __zdata __near
560. u eniry 1 Select C Compiler Language 2 From the Comply to C standard list select ISO C99 or ISO C90 Command line syntax iso 90 99 c 90 99 Default iso 99 Description With this option you select the ISO C standard C90 is also referred to as the ANSI C standard C99 refers to the newer ISO IEC 9899 1999 E standard C99 is the default Example To select the ISO C90 standard on the command line c850 iso 90 test c Related information C compiler option language Language extensions 234 Tool Options C compiler option keep output files k Menu eniry Eclipse always removes the src file when errors occur during compilation Command line syntax keep output files k Description If an error occurs during compilation the resulting src file may be incomplete or incorrect With this option you keep the generated output file src when an error occurs By default the compiler removes the generated output file src when an error occurs This is useful when you use the make utility If the erroneous files are not removed the make utility may process corrupt files on a subsequent invocation Use this option when you still want to inspect the generated assembly source Even if it is incomplete or incorrect Example c850 keep output files test c When an error occurs during compilation the generated output file test src will not be removed Related information C compile
561. uages C amended and corrected by ISO IEC 9899 COR1 1995 ISO IEC 9899 AMD1 1995 and ISO IEC 9899 COR2 1996 No reliance shall be placed on undefined or unspecified behavior Multiple compilers and or languages shall only be used if there is a common defined interface standard for object code to which the languages compilers assemblers conform The compiler linker shall be checked to ensure that 31 character significance and case sensitivity are supported for external identifiers Floating point implementations should comply with a defined floating point standard Language extensions 2 1 R Assembly language shall be encapsulated and isolated 2 2 R Source code shall only use style comments 2 3 R The character sequence shall not be used within a comment 2 4 A Sections of code should not be commented out In general it is not possible to decide whether a piece of comment is C code that is commented out or just some pseudo code Instead the following heuristics are used to detect possible C code inside a comment a line ends with or a line starts with possibly preceded by white space Documentation x 3 1 R All usage of implementation defined behavior shall be documented x 3 2 R The character set and the corresponding encoding shall be documented x 3 3 A The implementation of integer division in the chosen compiler should be determined documented and taken into account 3 4 R Allus
562. ulation In this ISO C99 version parallel sets of functions are defined for double float and long double They are respectively named function functionf function1 All long type functions though declared in math h are implemented as the double type variant which nearly always meets the requirement in embedded applications The header file t gmath h contains parallel type generic math macros whose expansion depends on the used type tgmath h includes math h and the effect of expansion is that the correct math h functions are called The type generic macro if available is listed in the second column of the tables below Trigonometric and hyperbolic functions math h tgmath h Description sin sinf sinl sin Returns the sine of x cos cosf cosl cos Returns the cosine of x tan tanf tanl tan Returns the tangent of x asin asinf asinl asin Returns the arc sine sin x of x acos acosf acosl acos Returns the arc cosine cos x of x atan atanf atanl atan Returns the arc tangent tan x of x atan2 atan2f atan2l atan2 Returns the result of tan y x sinh sinhf sinhl sinh Returns the hyperbolic sine of x cosh coshf coshl cosh Returns the hyperbolic cosine of x tanh tanhf tanhl tanh Returns the hyperbolic tangent of x asinh asinhf asinhl asinh Returns the arc hyperbolic sine of x acosh acoshf acoshl acosh Returns the non negative arc hyperbolic cosine of x atanh atanhf atanhl atanh Returns the arc hyperbolic tangent of
563. umber is a number ranging from 1 to 255 This type of label is called a numeric label or local label To refer to a numeric label you must put an n next or p previous immediately after the label This is required because the same label number may be used repeatedly Examples LAB1 This label is followed by a colon and can be prefixed by whitespace LAB1 This label has to start at the beginning of a line 1 b ip This is an endless loop using numeric labels 41 TASKING VX toolset for RH850 User Guide instruction directive macro_call comment An instruction consists of a mnemonic and zero one or more operands It must not start in the first column Operands are described in Section 2 3 Operands of an Assembly Instruction The instructions are described in the RH850 Family User s Manual The instruction can also be a so called generic instruction Generic instructions are pseudo instructions no instructions from the instruction set Depending on the situation in which a generic instruction is used the assembler replaces the generic instruction with appropriate real assembly instruction s For a complete list see Section 2 11 Generic Instructions With directives you can control the assembler from within the assembly source Except for preprocessing directives these must not start in the first column Directives are described in Section 2 9 Assembler Directives A call to a previously defined m
564. ument specifies the location of the first vector id 0 This can be a simple address or an offset in memory see the description of the run time address in subsection Locating a group in Section 13 8 2 Creating and Locating Groups of Sections A vector table defines symbols __1c_ub_foo and__1c_ue_foo pointing to start and end of the table vector_table vector_table vector_size m size n run_addr x See the following example of a vector table definition vector_table vector_table vector_size 16 size 32 run_addr 0 template text vector template_symbol __lc_vector_target vector_prefix vector id_symbol_prefix foo no_inline default empty or Fill oo0 or fill 1 2 3 4 or fill loop vector id 23 fill _main optional vector ae 12 fill Oxab 0x21 0x32 0x43 vector id 1 11 f1i11 0 vector 18 23 fill loop The template argument defines the name of the section that holds the code to jump to a handler function from the vector table This template section does not get located and is removed when the locate phase is completed This argument is required The template_symbol argument is the symbol reference in the template section that must be replaced by the address of the handler function This symbol name should start with the linker prefix for the symbol to be ignored in the link phase This argument is required The vector_prefix argume
565. under Eclipse You have several ways of building your project Build Selected File s w This compiles and assembles the selected file s without calling the linker 1 In the C C Projects view select the files you want to compile 2 Right click in the C C Projects view and select Build Selected File s Build Individual Project i To build individual projects incrementally select Project Build project Rebuild Project This builds every file in the project whether or not a file has been modified since the last build A rebuild is a clean followed by a build 1 Select Project Clean 2 Enable the option Start a build immediately and click OK e Build Automatically This performs a build of all projects whenever any project file is saved such as your makefile This way of building is not recommended for C C development but to enable this feature select Project Build Automatically and ensure there is a check mark beside the Build Automatically menu item In order for this option to work you must also enable option Build on resource save Auto build on the Behaviour tab of the C C Build page of the Project Properties for dialog Select a target processor core Processor options affect the invocation of all tools in the toolset In Eclipse you only need to set them once Based on the target processor the compiler includes a special function register file This is a regular include file which ena
566. up psa reserved myreserved size 2k The optional i11 field contains a bit pattern that the linker writes to all memory addresses that remain unoccupied during the locate process The result of the expression or list of expressions is used as values to write to memory each in MAU The first MAU of the fill pattern is always the first MAU in the section By default no sections can overlap with a reserved section With alloc_allowed absolute sections that are located at an absolute address due to an absolute group restriction can overlap a reserved section The same applies for reserved sections with alloc_allowed ranged set Sections restricted to a fixed address range can also overlap a reserved section With the attributes field you can set the access type of the reserved section The linker locates the reserved section in its space with the restrictions that follow from the used attributes r w or x or a valid combination of them The allowed attributes are shown in the following table A value between lt and gt in the table means this value is set automatically by the linker Properties set in LSL Resulting section properties attributes filled access memory _ content x yes lt rom gt executable r yes r lt rom gt data r no r lt rom gt scratch rx yes r lt rom gt executable rw yes rw lt ram gt data rw no rw lt ram gt scratch rwx yes rw lt ram gt executable g
567. up_descr2 group lt group_name gt group_specs2 section_statement2 group_specs2 group_spec2 lt group_spec2 SAN 550 Linker Script Language LSL attributes load_addr group_spec2 group_alignment tag struct_statement struct lt struct_item gt struct_item expr number 13 3 Expression Evaluation Only constant expressions are allowed including sizes but not addresses of sections in object files All expressions are evaluated with 64 bit precision integer arithmetic The result of an expression can be absolute or relocatable A symbol you assign is created as an absolute symbol Symbol references are only allowed in symbol assignments and struct statements 551 TASKING VX toolset for RH850 User Guide 13 4 Semantics of the Architecture Definition Keywords in the architecture definition architecture extends endianness bag little bus mau width map space ig mau align page_size page direction low_to_high high_to_low stack min_size grows low_to_high high_to_low align fixed id heap min_size grows low_to_high high_to_low align fixed id copytable align copy_unit dest page vector_table vector_size size id_symbol_prefix run_addr template template_symbol vector_prefix fa at no_inline copy vector ig fi loop 552 Linker Script Language LSL optional reserved start_address run_addr symbol map map dest bus space dest_dbits dest_
568. urns the value of x lt y islessequal Returns the value of x lt y islessgreater Returns the value of x lt y x gt y isunordered Returns 1 if its arguments are unordered 0 otherwise 485 TASKING VX toolset for RH850 User Guide Classification macros The next are implemented as macros These macros are type generic and therefore do not have a parallel function in tgmath h All arguments must be expressions of real floating type math h tgmath h Description fpclassify Returns the class of its argument FP_INFINITE FP_NAN FP_NORMAL FP_SUBNORMAL or FP_ZERO isfinite Returns a nonzero value if and only if its argument has a finite value isinf Returns a nonzero value if and only if its argument has an infinite value isnan Returns a nonzero value if and only if its argument has NaN value isnormal Returns a nonzero value if an only if its argument has a normal value signbit Returns a nonzero value if and only if its argument value is negative 10 1 18 setjmp h The set jmp and long mp in this header file implement a primitive form of non local jumps which may be used to handle exceptional situations This facility is traditionally considered more portable than signal h int set jmp jmp_buf Records its caller s environment in env and returns 0 env void longjmp jmp_buf Restores the environment previously saved with a call to set jmp env int status 10 1 19 signal h Sig
569. ve Description With this option you tell the linker not to distinguish between uppercase and lowercase characters in symbols By default the linker considers uppercase and lowercase characters as different characters Assembly source files that are generated by the compiler must a ways be assembled and thus linked case sensitive When you have written your own assembly code and specified to assemble it case insensitive you must also link the o file case insensitive Related information Assembler option case insensitive 314 Tool Options Linker option chip output c Menu entry 1 Select Linker Output Format 2 Enable the option Generate Intel Hex format file and or Generate S records file 3 Enable the option Create file for each memory chip 4 Optionally specify the Size of addresses Eclipse always uses the project name as the basename for the output file Command line syntax chip output basename format addr_size c basename format addr_size You can specify the following formats IHEX Intel Hex SREC Motorola S records The addr_size specifies the size of the addresses in bytes record length For Intel Hex you can use the values 1 2 or 4 bytes default For Motorola S you can specify 2 S1 records 3 S2 records or 4 bytes S3 records default Description With this option you specify the Intel Hex or Motorola S record output format for loading into a PROM programmer The li
570. visor trap call FE level trap DB level Debug exception db dbret DBPC DBPSW DBIC You can attach an exception level attribute to an interrupt function with the ___ att ribute___ keyword The ei fe or db attribute overrides the exception level if the interrupt vector is specified explicitly You cannot mix exception level attributes For example void fe_isr void __attribute__ interrupt 16 fe return This overrides the El level interrupt and creates an FE level interrupt handler and binds the handler to vector 16 section text interrupt fe_isr interrupt function global _fe_isr align 2 _fe_isr type func feret return from FI level interrupt size fe_isr _fe_isr endsec global vector_16 interrupt vector label vector_16 equ _fe_isr Calls r fe tsr p pU end When you specify an exception level attribute without the interrupt attribute the C compiler assumes an interrupt function of the specified exception level that is not bound to a vector When you use the interrupt attribute without specifying an exception level the exception level is determined by the vector number or is El if you do not specify a vector Thus Declaration Equivalent void isr void void isr void __attribute__ ei __attribute__ interrupt e1 void isr void void isr void __attribute__ fe __attribute__ interrupt fe 31 TASKING VX toolset for
571. w alternative use of element pointer ep float f F allow use of non strict floating point execution model Default eabi deviations aef Description With this option you control the deviation of the EABI By default all exceptions are enabled that is not EABI compliant When the generated code needs to be completely EABI compliant use option eabi compliant With eabi deviations address class alternative DWARF address class codes are used They are required for global type checking With eabi deviations edata it is allowed to use the element pointer ep for alternative purposes than accessing ep relative global data With eabi deviations edata the compiler uses ep only to access ep relative global data You can mix modules compiled with different settings for this option as long as ep relative global data is not used With eabi deviations float you can select the floating point execution model with option fp model or one of the associated pragmas With eabi deviations float the floating point execution model is forced to fp model CFLNRtzZ This model selects IEEE 754 conforming results Related information C compiler option eabi compliant code needs to be completely EABI compliant C compiler option fp model floating point model 220 Tool Options C compiler option eabi compliant Menu eniry Command line syntax eabi compliant Description Use this option when the generated code need
572. w position origin is given by the following macros 494 ep NNN ftell stream rewind stream Libraries _SET 0 offset characters from the beginning of the file EK_CUR 1 offset characters from the current position in the file END 2 offset characters from the end of the file Returns the current file position for stream or 1L on error FSS implementation Sets the file position indicator for the stream to the beginning of the file This function is equivalent to void fseek stream 0L SEEK_SET clearerr stream FSS implementation fgetpos stream pos Stores the current value of the file position indicator for stream in the object pointed to by pos FSS implementation fsetpos stream pos Positions st ream at the position recorded by fgetpos in pos FSS implementation Operations on files stdio h Description remove file rename old new tmpfile tmpnam buffer Error handling stdio h Removes the named file so that a subsequent attempt to open it fails Returns a non zero value if not successful Changes the name of the file from old name to new name Returns a non zero value if not successful Creates a temporary file of the mode wb that will be automatically removed when closed or when the program terminates normally Returns a file pointer Creates new file names that do not conflict with other file names currently in us
573. x Exponential and logarithmic functions All of these functions are new in ISO C99 except for exp log and 1og10 math h tgmath h Description exp expf expl exp Returns the result of the exponential function e exp2 exp2f exp21 exp2 Returns the result of the exponential function 2 Not implemented expm1 expmlf expmll expml Returns the result of the exponential function e 1 Not implemented log logf logl log Returns the natural logarithm 1n x x gt 0 log10 log10f log1l10l log10 Returns the base 10 logarithm of x x gt 0 482 Libraries math h tgmath h Description loglp loglpf loglpl loglp Returns the base e logarithm of 1 x x lt gt 1 Not implemented log2 log2f log21 log2 Returns the base 2 logarithm of x x gt 0 Not implemented ilogb ilogbf ilogbl ilogb Returns the signed exponent of x as an integer x gt 0 Not implemented logb logbf logbl logb Returns the exponent of x as a signed integer in value in frexp Idexp modf scalbn scalbin floating point notation x gt 0 Not implemented math h tgmath h Description frexp frexpf frexpl frexp Splits a float x into fraction fand exponent n so that f 0 0 or 0 5 lt f lt 1 0 and 2 x Returns f stores n ldexp ldexpf ldexpl ldexp Inverse of frexp Returns the result of x 2 x and n are both arguments modf modff modf1 Splits a float x into fraction f and integer n so that f lt 1 0 and f n x Returns f stores
574. x label FOR var IN expression expression ENDFOR or label FOR var IN start TO end STEP step ENDFOR Description With the FOR ENDFOR directive you can repeat a block of assembly source lines with an iterator As shown by the syntax you can use the FOR ENDFOR in two ways 1 In the first method the block of source statements is repeated as many times as the number of arguments following IN If you use the symbol varin the assembly lines between FOR and ENDFOR for each repetition the symbol var is substituted by a subsequent expression from the argument list If the argument is a null then the block is repeated with each occurrence of the symbol var removed If an argument includes an embedded blank or other assembler significant character it must be enclosed with single quotes 2 In the second method the block of source statements is repeated using the symbol var as a counter The counter passes all integer values from start to end with a step If you do not specify step the counter is increased by one for every repetition If you specify label it gets the value of the location counter at the start of the directive processing Example In the following example the block of source statements is repeated 4 times there are four arguments With the DB directive you allocate and initialize a byte of memory for each repetition of the loop a word for the Dw directive Effectively the preprocessor du
575. y ptr must point to memory earlier allocated by acallto__alloc User intrinsics __get_return_address __codeptr volatile __get_return_address void Returns the return address of a function __get_reg unsigned int volatile __get_reg void Return the value of the specified register reg is one of the system registers psw eipsw fepsw dbpsw eipc fepc dbpc eiic fpsr foepc __set_reg void volatile __set_reg unsigned int value Set a register to the specified value reg is one of the system registers psw eipsw fepsw dbpsw eipc fepc dbpc eiic fpsr foepc or one of the regular registers sp ep gp tp For example unsigned int ui void main void __set_psw ui ui __get_psw results in ld w baserel23 _ui gp r11 ldsr r1ll1l psw stsr psw rll st w rll baserel123 _uit gp __Idsr_rh void volatile __ldsr_rh unsigned int regID unsigned int selID unsigned int value 36 C Language Load value to the system register specified by the system register number reg D and group number sellD __stsr_rh unsigned int volatile __stsr_rh unsigned int regID unsigned int selID Returns the system register contents specified by the system register number reg D and group number sellD __nop void volatile __nop void Generate a NOP instruction __halt void volatile __halt void Generate a halt instruction _ ei void volatile __ei void
576. y from the directory where your makefile and other files are stored With the option G you can call the make utility from within another directory The path is the path to the directory where your makefile and other files are stored and can be absolute or relative to your current directory The macro SUBDIR is defined with the value of path Example Suppose your makefile and other files are stored in the directory myfiles You can call the make utility for example as follows amk G myfiles Related information 411 TASKING VX toolset for RH850 User Guide Parallel make utility option diag Command line syntax diag format all nr You can set the following output formats html HTML output rtf Rich Text Format text ASCII text Default format text Description With this option you can ask for an extended description of error messages in the format you choose The output is directed to stdout normally your screen and in the format you specify You can specify the following formats html rtf or text default To create a file with the descriptions you must redirect the output With the suboption all the descriptions of all error messages are given If you want the description of one or more selected error messages you can specify the error message numbers separated by commas Example To display an explanation of message number 169 enter amk diag 169 This results in the following mess
577. you can overrule these settings in your C source file with pragma optimize flag pragma endoptimize In addition to the option optimize you can specify the option tradeoff t With this option you specify whether the used optimizations should optimize for more speed regardless of code size or for smaller code size regardless of speed Example The following invocations are equivalent and result all in the default optimization set c850 test c c850 optimize 2 test c c850 02 test c c850 optimize test c c850 O test c c850 OabcefgllopSy test c c850 optimize t coalesce tipro cse texpression flow t glo inline loop forward propagate subscript peephole test c Related information C compiler option tradeoff Trade off between speed and size Pragma optimize endoptimize Section 3 6 Compiler Optimizations 248 Tool Options C compiler option option file f Menu entry 1 Select C Compiler Miscellaneous 2 Add the option option file to the Additional options field Be aware that the options in the option file are added to the C compiler options you have set in the other pages Only in extraordinary cases you may want to use them in combination Command line syntax option file file E file Description This option is primarily intended for command line use Instead of typing all options on the command line you can create an option file which contains all options and flags
578. you do not specify a filename and you specified the option output the linker uses the same basename as the output file with the extension map If you did not specify the option output the linker uses the file task1 map Eclipse names the map file after the project In Eclipse the XML variant of the map file extension mapxm1 is used for graphical display in the map file viewer A linker map file is a text file that shows how the linker has mapped the sections and symbols from the various object files o to the linked object file A locate part shows the absolute position of each section External symbols are listed per space with their absolute address both sorted on symbol and sorted on address The control program by default invokes the linker with the option map file Related information Linker option map file format Format map file Section 11 2 Linker Map File Format 341 TASKING VX toolset for RH850 User Guide Linker option map file format m Menu eniry 1 Select Linker Map File 2 Enable the option Generate XML map file format mapxml for map file viewer 3 Optional Enable the option Generate map file 4 Enable or disable the types of information to be included Command line syntax map file format flag mflags You can set the following flags callgraph c C Include call graph information removed d D Include information on removed sections files f F Include processed
579. you still want to use the generated object For example when you know that a particular error does not result in a corrupt object file Related information Assembler option warnings as errors Treat warnings as errors 293 TASKING VX toolset for RH850 User Guide Assembler option list file l Menu entry 1 Select Assembler List File 2 Enable the option Generate list file 3 Enable or disable the types of information to be included Command line syntax list file file 1 file Default no list file is generated Description With this option you tell the assembler to generate a list file A list file shows the generated object code and the relative addresses Note that the assembler generates a relocatable object file with relative addresses With the optional file you can specify an alternative name for the list file By default the name of the list file is the basename of the output file with the extension 1st Related information Assembler option list format Format list file 294 Tool Options Assembler option list format L Menu entry 1 Select Assembler List File 2 Enable the option Generate list file 3 Enable or disable the types of information to be included Command line syntax list format flag Lflags You can set the following flags section d D List section directives SECTION symbol e E List symbol definition directives gener
580. you want to specify With this option you specify the option file to the compiler Use an option file when the command line would exceed the limits of the operating system or just to store options and save typing You can specify the option option file multiple times Format of an option file Multiple arguments on one line in the option file are allowed To include whitespace in an argument surround the argument with single or double quotes e If you want to use single quotes as part of the argument surround the argument by double quotes and vise versa This has a single quote embedded This has a double quote embedded This has a double quote and a single quote embedded When a text line reaches its length limit use a to continue the line Whitespace between quotes is preserved This is a continuation line gt This is a continuation line 249 TASKING VX toolset for RH850 User Guide e Itis possible to nest command line files up to 25 levels Example Suppose the file myoptions contains the following lines debug info define DEMO 1 teste Specify the option file to the compiler c850 option file myoptions This is equivalent to the following command line c850 debug info define DEMO 1 test c Related information 250 Tool Options C compiler option output o Menu eniry Eclipse names the output file always after the C source file
581. ze Allocates space for an object with size size The allocated space is not initialized Returns a pointer to the allocated space Allocates space for n objects with size size The allocated space is initialized with zeros Returns a pointer to the allocated space Deallocates the memory space pointed to by ptr which should be a pointer earlier returned by the malloc or calloc function Deallocates the old object pointed to by ptr and returns a pointer to a new object with size size while preserving its contents If the new size is smaller than the old size some contents at the end of the old region will be discarded If the new size is larger than the old size all of the old contents are preserved and any bytes in the new object beyond the size of the old object will have indeterminate values Environment communication abort atexit func exit status _Exit status getenv s Causes abnormal program termination If the signal SIGABRT is caught the signal handler may take over control See Section 10 1 19 signal h func points to a function that is called without arguments when the program normally terminates Causes normal program termination Acts as if main returns with status as the return value Status can also be specified with the predefined macros EXIT_SUCCES or EXIT_FAILURE Same as exit but not registered by the atexit function or signal handlers registered by the signal function are ca
Download Pdf Manuals
Related Search
Related Contents
Panasonic WV-CU650 Specification Sheet STRIKE300 Service Manual KOHLER K-12231-PB Installation Guide La polyvalence stratégique de l`intelligence économique en Manual - GHP Group Istruzioni d`installazione ed utilizzo Canon IXUS11015 Digital Camera User Manual Copyright © All rights reserved.
Failed to retrieve file