This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Compilation Problem with SDA555x TVText Pro

Dear Sir/Madam

I am using uvision to plan a software project which SDA555X TVText Pro from Infineon has been used in it.
Now the volume of the program has been reached larger than 64KBytes and uvision messages me the error.
So, would you please advise me how i can manage the settings of the uvision to handle this situation.

Thanks and best regards

Faranak Mahjoobi

Parents
  • I see; when the 'Linker Code Packing' is enabled on the 'C51' (sic) tab, levels 10 & 11 are added to the 'Level' drop-down list.

    This doesn't seem terribly intuitive: surely it'd be more in tune with uVision's "Total Integration" strap-line to always have them in the list, and then uVision would select both OBJECTADVANCED and OPTIMIZE(n) as appropriate.
    It could also warn that LX51 is required if it wasn't already selected.

    Now that's what I'd call Integration!

    After all, it already does this with the 'Global Register Coloring' option - checking the one option on the C51 tab enables the appropriate compiler and Linker options.

    Regarding the manual: At the compiler command-line, the levels must still be specified in the OPTIMIZE option - so that's where they should be documented:
    The description of OPTIMIZE doesn't even mention that levels 10 & 11 exist; in fact, it specifically says that number must be "between 0 and 9"
    There is no cross-reference from OPTIMIZE to OBJECTADVANCED

Reply
  • I see; when the 'Linker Code Packing' is enabled on the 'C51' (sic) tab, levels 10 & 11 are added to the 'Level' drop-down list.

    This doesn't seem terribly intuitive: surely it'd be more in tune with uVision's "Total Integration" strap-line to always have them in the list, and then uVision would select both OBJECTADVANCED and OPTIMIZE(n) as appropriate.
    It could also warn that LX51 is required if it wasn't already selected.

    Now that's what I'd call Integration!

    After all, it already does this with the 'Global Register Coloring' option - checking the one option on the C51 tab enables the appropriate compiler and Linker options.

    Regarding the manual: At the compiler command-line, the levels must still be specified in the OPTIMIZE option - so that's where they should be documented:
    The description of OPTIMIZE doesn't even mention that levels 10 & 11 exist; in fact, it specifically says that number must be "between 0 and 9"
    There is no cross-reference from OPTIMIZE to OBJECTADVANCED

Children
  • The problem is this...

    The new optimization levels are NOT performed by the compiler...they are performed by the linker. Err, the LX51 Linker. In order for the linker to perform the optimizations, the compiler must generate an intermediate object file format that the linker uses to optimize. So, the only way to do linker-level optimizations is by starting in the compiler.

    The benefit of linker-level optimizations is that they are performed over the whole program. And, that generates better results (smaller programs).

    The new optimizer levels are only listed when using the LX51 linker. The optimizer level is listed in a drop-down list box and I'm pretty sure there is no way to grey out an item in the list. Also, note that the linker options change when the LX51 linker is selected. This is because the LX51 linker does a lot more stuff and offers several new features that are not found in the BL51 linker.

    As for the manuals, the PDF manual that comes with the tools includes descriptions of the new optimizer levels.

    Jon

  • My main program has some include files to access some functions calling them.
    But this has made my main program size very large.
    So i had to seperate the include files from main and insert them as a source file in another bank.
    I expected can call every function properly.
    But unfotunately when i began to build the rpoject, the compiler gave me error message some undefined identifier.
    Really the compiler did not know my functions in main program that had been defined in anothe files in anothe bank.
    Ofcourse i have defined the bank area correctly first.
    Would you please give me some advise to solve this problem

    Faranak

  • This sounds like a standard 'C' issue rather than anything to do with code banking.

    I think you need to read up a standard 'C' text on how to define functions in one file and call them in another.

    "Really the compiler did not know my functions in main program that had been defined in anothe files"

    Sounds like you haven't (properly) declared (as distinct from defined) your functions in your 'main' file.
    This is usually done by means of function prototypes in a header file (or files)

  • The SDA555x has on-chip banking hardware that is currently supported only by BL51.

    You need also a special library for this device. Please email your request along with your serial number to:

    support.intl@keil.com

    We will then send you details instructions on how to use code banking with this device.