I'm using Quartus II standard 20.1. I have a simple system designed using Platform designer that incorporates standard stuff (Nios II, PLL, RAM, on-chip flash etc). I intend to execute code from the on-chip flash (UFM single uncompressed).
When I try to configure hal.linker via the BSP editor I can enable all the required settings (enable_alt_load, enable_alt_load_copy_ro_data, enable_alt_load_copy_rwdata, etc) if I set the operating system to Altera HAL.
If instead, I set the operating system to Micrium uc/OS-II then these options are disabled for some reason.
Is this intended? Or am I doing something wrong?
Thanks for reaching us.
Is the operative System you're using Windows or Ubuntu to implement your design on Quartus and eclipse?
I did the test with Quartus 20.1 installed on Windows machine and the options aren't disabled after selecting Micrium MicroC/OS-II.
could you tell me which OS you are working with?
Thanks for the reply. I'm running Ubuntu 18.04 in a VM on MacOS. Everything else is working perfectly (including the USB blaster - I have completed a few projects using this set-up). I've tried configuring the BSP a few times with fresh projects and always get the same result.
It is interesting that the moment I remove OS2 from the BSP, those alt_load functions become available again.
It is also interesting Is there anything else I can try? A different configuration for example?
Just FYI, I do appear to be able to edit the settings.bsp file in a text editor and change the 'enabled' tags to true by hand. (see below) However, I can't tell as of yet whether this change has resulted in the correct bsp being generated.
<Setting> <SettingName>hal.linker.enable_alt_load_copy_rodata</SettingName> <Identifier>none</Identifier> <Type>Boolean</Type> <Value>0</Value> <DefaultValue>0</DefaultValue> <DestinationFile>none</DestinationFile> <Description>Causes the alt_load() facility to copy the .rodata section. If true, this setting defines the macro ALT_LOAD_COPY_RODATA in linker.h.</Description> <Restrictions>none</Restrictions> <Enabled>true</Enabled> <Group xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> </Setting>
I've been trying to reproduce your issue but I haven't had any success.
in the tests I made, the alt_load functions never got disable.
Would you mind to share your *.sopcinfo file with me to see exactly the way you have configured it and then reproduce the issue?
Thanks in advance,
Unfortunately, I never solved it - I ended up ditching uC/OS-II instead. The future of OS-II/OS-III looks very messy at the moment and it seems like Intel aren't keen to keep the relationship going (I wouldn't blame Intel for this).
I'm using Segger's embOS instead which has a fully functioning port available for NIOS II and works with the latest version of Quartus. It's a 'drop-in' replacement for OS-II (i.e. they've a nice compatibility layer that allows Altera HAL software that can make use of OS features will automatically use embOS). embOS also supports the vectored interrupt controller out of the box which was a huge benefit to me.
The Zephyr Project also appears to support the NIOS2 (specifically a MAX10) but I never got around to evaluating it.