This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PROCESSOR-SDK-AM335X: DISABLE -mfloat-abi=hard

Part Number: PROCESSOR-SDK-AM335X
Other Parts Discussed in Thread: SYSBIOS

Hello,

The configPkf/compiler.opt is injecting a plethora of compiler settings.  And this is a autogenerated file.

As typical, I can find nothing about how to control them.

How do I remove/disable the settings -mfpu=neon -mfloat-abi=hard ?

Nothing I can find in the CFG file controls this.

This environment  is CCS 10.1, GNU v7.3.1 Linaro compiler, SYSBIOS 6.76.3.01, XDC 3.55..2.22.

-Scott

  • Hello Scott,

    Please refer to this thread for some information. I'll loop in CCS expert for further comment.

    Please also note that TI has stopped supporting TI-RTOS and bare-metal SW development for AM335x, as announced here. So most likely there will be no continuing responses from the AM335x device team.

    Thanks for your understanding.

    Regards,

    Jianzhong

  • Hello,

    How do I remove/disable the settings -mfpu=neon -mfloat-abi=hard ?

    Assuming you are using a CCS project, check the "Runtime" options in the project properties:

    Thanks

    ki

  • Ki,

    Thanks for the try.  But that is NOT giving me the control I need.  I've been hacking on this for a while...

    If I change the setting in the properties, I get an error that it's "not compatible" with the other setting (which the opt file injected).

    Something, somewhere is creating the compiler.opt file, on the fly.  Probably in XDC, or something in the CFG file, which I can never find any doc on. 

    It's not related to anything in CCS, so I don't know why they even brought you into it.

    How is this compiler.opt file created, and how do I control it?

    (Now they are telling me they are dropping support for all this.  Well, I don't need anything fixed.  I need it explained how this is happening...  you like actual doc that I can locate... and explanation how I can control it )

  • Oh, and that other link...

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/209455/adding-definitions-to-compiler-opt

    Is useless too.  Because that is to insert NEW settings.  But that will conflict with the settings in the opt file, which I can't see how to control.

  • ahhhh, sorry I was thinking of ccsObjs.opt, not compiler.opt. Yes, that is coming from SYS/BIOS. SYS/BIOS is a bit out of my expertise so I may need to pull in some experts.

    I noticed one thing when I took a look at my cfg file:

    I tried playing around with this but I still get those options to appear in the compiler.opt file.

    I'm not sure how all of this is working under the hood unfortunately. I'll dig around a bit and hopefully I can find soem answers for you

    ki

  • Thanks.

    I was digging through the CFG file (in text mode) and didn't see anything in there to control it.

    Also, all those othjer Java objects which I know nothing about, all have member which I don't have any information on.

    • System.maxAtexitHandlers
    • Program.stack
    • loggerBufParams.numEntries

    etc...

    Okay, so I can decipher what they mean by what they are named...  which is fine if it's there.

    But is putting the "cart before the horse" to a user.

    If it's not in the CFG file, what do I do? Where do I find it?  Keep making up names until I get a hit??

    Task.maxStack?  Task.stackSize?  Task.maxStackSize?

    But I'm looking for floating poing settings.  So... ?

    And assuming there is a "fpu" object, what is it?  Mfpu? FPU?  

    And what is the attribute??  FPU.fpu?  FPU.hardware?  FPU.format?

    Or is it a "OPT" object, and I set it as OPT.fpu...  or OPT.mfpu...

    No doc that I can find...  It's really annoying being on the outside, trying to look in.

    Any help from you is appreciated. 

  • Yeah, the opt file has these:

    -mcpu=cortex-a8 
    -mfpu=neon 
    -mfloat-abi=hard 
    -mabi=aapcs 
    -g 
    -Dxdc_target_types__="gnu/targets/arm/std.h" 
    -Dxdc_target_name__=A8F 
    -Dxdc_cfg__xheader__="\"C:/.../Test/Release/configPkg/package/cfg/app_pa8fg.h\""

    Plus some -I include paths.

    And that line you showed in the GUI doesn't even appear in the actual CFG file.

    So I copied it out of the GUI screen:

    -Wunused 
    -Wunknown-pragmas 
    -ffunction-sections 
    -fdata-sections  
    -mcpu=cortex-a8 
    -mfpu=neon 
    -mfloat-abi=hard 
    -mabi=aapcs 
    -g  
    -O3 
    -Dfar= -D__DYNAMIC_REENT__ 

    Which do not match what is in the opt file.

    So, it doesn't appear in the CFG file... UNLESS I change something.

    Then the entire line is injected in the CFG file.  So now at least I know the root object:

    BIOS.customCCOpts = "-Wunused -Wunknown-pragmas -ffunction-sections  ...

    But it then is summarily ignored when the opt file is created.

    Nice huh...?  Not really.

    I hope you can find out what's going on.

  • I hope you can find out what's going on.

    Sorry, but I am still digging. Those options are likely coming from the rtsc plaform file somewhere. Hopefully I can find where...

  • Those options are likely coming from the rtsc plaform file somewhere. Hopefully I can find where...

    Ok I think I may have an idea.

    I have a SYS/BIOS project for beaglebone.

    Target: gnu.targets.arm.A8F

    Platform: ti.platforms.beaglebone

    When I browse in (for the Target)

    C:\ti\bios_6_76_03_01\packages\gnu\targets\arm\A8F.xdc

    I see additional build options such as:

    "-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=hard -mabi=aapcs -g"

    Likely it is getting picked up from there.

    perhaps you will need to create a new target/platform with your own custom settings

    This is covered a bit in section 7.2.2 of the SYS/BIOS user's guide:

    https://www.ti.com/lit/ug/spruex3v/spruex3v.pdf

    Unfortunately the document is out of date and refers to a tool/wizard that no longer exists.

    This is all beyond my area of expertise unfortunately. I will need the device experts to comment further. Sorry for all the pain

  • Thanks.  I've got that document... not that I read it in detail.  I've got close to two DOZEN different "spru..."  documents, totaling thousands and thousands of pages.

    I was trying to learn the platform stuff a while back.  But since I never had to put it to use, none of it stuck to my brain.  I'll give it a try.

    (30+ hours of my internet down trying to telecommute.  That was a painful couple of days)

  • Ki,

    At least YOU show some willingness to help me out.  Thanks for that.

    Now I see that not only can I not ask questions because support is dropped, now all the documentation has been removed too.

    How much pain does TI want to inflict on their users anyway?

    This page is giving me "refused to connect" errors.

    software-dl.ti.com/.../index.html

  • Sorry for all the pain. We've had some org changes/restructuring and lost expertise in some areas which negatively impacted support for some products. I don't mean to use it as an excuse, just an explanation of the state of things.

    This page is giving me "refused to connect" errors.

    software-dl.ti.com/.../index.html

    This link worked for me. Perhaps it was temporarily down and now working again?

  • Nope...  I had it bookmarked (from the links that E2E people gave me) as HTTP.

    It's working as HTTPS.  Not the first time I've had issues with TI's web guys inability to properly do web pages.

    This is my "goto" page...  I don't use it often, but when I do, I need it to be there...  Since I can't download it.

    Today:  I'm trying to understand why the entire environment has MULTIPLE ways or doing the same thing...

    Is there a difference between "BIOS.heapSize" and  "Memory.defaultHeapSize"??  If there is, I can't find anything.

  • Is there a difference between "BIOS.heapSize" and  "Memory.defaultHeapSize"??  If there is, I can't find anything.

    I believe BIOS.heapSize manages the size of the system heap for a SYS/BIOS application and the other one is for a non-BIOS application? I am confident of the former and unsure of the latter. Again, this is a bit out of my expertise...

  • The defaultHeapSize isn't even in the table of attributes on the "xdc.runtime.Memory" page... you have to search for it.

    I found this statement buried on the "sysbios.BIOS" page:

    SYS/BIOS configures the Memory.defaultHeapInstance using a HeapMem instance of size heapSize.

    So the BIOS thing is just a back door into the Memory one.  By creating a "HeapMem" object, setting it, then assigning it to the Memory one...

    Who invented this?  And thought "let's make several different ways to configure the exact same parameter" ?   When person B takes over a massive project from person A, how annoying is it that you have to search just to figure out which way they set those.

    And what happens when bother are set, and to different values?

  • Just in case you're not aware, the documentation is also available in the SYS/BIO installation folder: bios_6_76_03_01/docs/cdoc/index.html.

  • Thanks.  Now I know I've got a local copy.