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.

SYS/BIOS and MMU on OMAP3503

Other Parts Discussed in Thread: SYSBIOS, OMAP3530

Good afternoon,

 

I am having issues reading/writing from the flash in our application because the SYS/BIOS seems to setup the MMU in a way that makes these registers inaccessible.

 

I have read a few other posts on this relating to different processors such as this but that solution does not work in this case, when I insert that code into my .cfg file it says MMU is unsupported for the selected processor.

 

If anybody would be able to answer the following questions that would be very helpful.

 

It seems that you cannot change the way the SYS/BIOS sets up the MMU at all is this correct?

 

Can anybody offer any advice on how to modify the MMU in a way that wont upset the SYS/BIOS but will allow me to access the flash?

 

The alternative is to disable the MMU (only when I write to/read from the flash which is rarely).  This required writing to the CP15 register.  Is there anyway to do this without writing an assembly function specifically to do it?

 

Many thanks

 

Sean

  • Hi Sean,

    Which version of SYS/BIOS are you using?

    You can disable the MMU in your BIOS configuration file (*.cfg).  For example,

    var Mmu = xdc.useModule('ti.sysbios.family.arm.arm9.Mmu');

    Mmu.enableMMU = false;

    Steve

  • Hi Steve,

    When I enter that I get this error

    Mmu is not supported for the specified device (OMAP3530)

    js: "C:/ti/bios_6_34_02_18/packages/ti/sysbios/family/arm/arm9/Mmu.xs", line 125: Error: Mmu unsupported on device!

    when building the same as when I tried the solution in the linked post.  I read some where that even though the .cfg file is not explicitly turning the MMU on the hwi module does it in the background so I am guessing it requires it so just turning it off would be a bad idea we also wouldn't want a performance hit.

    During normal operation we wouldn't write to flash so turning off interrupts and then turning off the MMU just to do the writing to flash wouldn't be a big issues (although still not as ideal as just being able to change the MMU setup to allow the use of the flash)

    I do wonder what the logic was behind making the registers required to write to the flash inaccessible and if there was any good reason for it?

    We are running bios v6.34.2.18, XDCtools v3.24.5.48, Ti compiler v5.0.1 and CCS v5.3.0.00090.

     

    Please could any body off any other solution or advice?

    Many thanks

    Sean

  • Good afternoon,

    For anybody else that comes across this the following code seems to work.

    var Mmu = xdc.useModule('ti.sysbios.family.arm.a8.Mmu');  
    var peripheralAttrs = { type : Mmu.FirstLevelDesc_SECTION, bufferable : false, cacheable : false, };
    var peripheralBaseAddr = 0x6E000000; 
    Mmu.setFirstLevelDescMeta(peripheralBaseAddr, peripheralBaseAddr, peripheralAttrs);

    Steve, what you posted would not work because the OMAP3 is not an ARM9.  The error given was really very unhelpful as the SYS/BIOS knows that the device is an OMAP3 I am sure it would have been able to identify that we were trying to use the wrong family and display a more useful error.

    Kind regards

    Sean

  • Sean,

    My apologies, I obviously got the processor wrong in my previous post.  But glad it didn't throw you too far off and you were able to resolve it!

    Steve