<div dir="ltr">I found out that there is 16 KiB of RAM. So, Freedom E310 chip has only 16 KiB of RAM.<div>And Freedeom E310 chip is based on E31 Coreplex core that allows maximum of 64 KiB of RAM.</div><div>So, I was just a bit confused with these names at first.</div><div class="gmail_extra"><br><div class="gmail_quote">2017-06-09 11:49 GMT+03:00 Hesham Almatary <span dir="ltr"><<a href="mailto:heshamelmatary@gmail.com" target="_blank">heshamelmatary@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Fri, Jun 9, 2017 at 9:09 AM, Denis Obrezkov <<a href="mailto:denisobrezkov@gmail.com">denisobrezkov@gmail.com</a>> wrote:<br>
> 2017-06-09 1:52 GMT+03:00 Hesham Almatary <<a href="mailto:heshamelmatary@gmail.com">heshamelmatary@gmail.com</a>>:<br>
>><br>
>> Hi Denis,<br>
>><br>
>> Does your board support any accesses to > 0x80000000. Note you still<br>
>> use such region in your linker script, which shouldn't be used if your<br>
>> board doesn't support it. I'd suggest your read about memory mapping<br>
>> on your board and fix the linker script accordingly.<br>
>><br>
>> Regards,<br>
>> Hesham<br>
>><br>
>> On Fri, Jun 9, 2017 at 8:38 AM, Denis Obrezkov <<a href="mailto:denisobrezkov@gmail.com">denisobrezkov@gmail.com</a>><br>
>> wrote:<br>
>> > 2017-06-08 17:49 GMT+03:00 Denis Obrezkov <<a href="mailto:denisobrezkov@gmail.com">denisobrezkov@gmail.com</a>>:<br>
>> >><br>
>> >> 2017-06-08 12:24 GMT+03:00 Denis Obrezkov <<a href="mailto:denisobrezkov@gmail.com">denisobrezkov@gmail.com</a>>:<br>
>> >>><br>
>> >>> 2017-06-07 22:41 GMT+03:00 Hesham Almatary <<a href="mailto:heshamelmatary@gmail.com">heshamelmatary@gmail.com</a>>:<br>
>> >>>><br>
>> >>>> On Thu, Jun 8, 2017 at 2:26 AM, Denis Obrezkov<br>
>> >>>> <<a href="mailto:denisobrezkov@gmail.com">denisobrezkov@gmail.com</a>><br>
>> >>>> wrote:<br>
>> >>>> > 2017-06-07 14:44 GMT+03:00 Sebastian Huber<br>
>> >>>> > <<a href="mailto:sebastian.huber@embedded-brains.de">sebastian.huber@embedded-<wbr>brains.de</a>>:<br>
>> >>>> >><br>
>> >>>> >> On 06/06/17 18:58, Hesham Almatary wrote:<br>
>> >>>> >><br>
>> >>>> >>> Originally RTEMS had a one big linkcmd for each platform, which<br>
>> >>>> >>> defines linker symbols (used in C code) and required sections.<br>
>> >>>> >>> This<br>
>> >>>> >>> has been improved with current BSPs (like ARM-based ones), by<br>
>> >>>> >>> splitting up shared linkcmd parts (linkcmd base) and BSP specific<br>
>> >>>> >>> ones<br>
>> >>>> >>> that include the shared one. riscv_generic, given that it's old,<br>
>> >>>> >>> follows the old way of having a single big linkcmd. You can<br>
>> >>>> >>> change<br>
>> >>>> >>> this for your new BSP.<br>
>> >>>> >><br>
>> >>>> >><br>
>> >>>> >> New ports/BSPs should definitely use a shared linkcmds.base (see<br>
>> >>>> >> ARM). Use<br>
>> >>>> >> "riscv-rtems4.12-ld --verbose" to get the default linker script.<br>
>> >>>> ><br>
>> >>>> > Ok.<br>
>> >>>> ><br>
>> >>>> > Now I have a problem:<br>
>> >>>> ><br>
>> >>>> ><br>
>> >>>> > <a href="https://github.com/embeddedden/rtems-riscv/blob/hifive1/c/src/lib/libbsp/riscv32/hifive1/start/start.S#L117" rel="noreferrer" target="_blank">https://github.com/<wbr>embeddedden/rtems-riscv/blob/<wbr>hifive1/c/src/lib/libbsp/<wbr>riscv32/hifive1/start/start.S#<wbr>L117</a><br>
>> >>>> > When I step to that line, gdb hangs with a message:<br>
>> >>>> > (gdb) step<br>
>> >>>> > Note: automatically using hardware breakpoints for read-only<br>
>> >>>> > addresses.<br>
>> >>>> ><br>
>> >>>> How do you run/attach simulator (and which one do you use)? Do GDB<br>
>> >>>> and<br>
>> >>>> the simulator support 0x20400000 > addresses (where your text section<br>
>> >>>> is loaded to)? AFAIK, that's not the case. Spike's default machine<br>
>> >>>> only works with addresses >= 0x80000000. You've to look up if Spike,<br>
>> >>>> Qemu [1] or GDB target sim model your board.<br>
>> >><br>
>> >> I use openOCD from FreeStudio kit:<br>
>> >><br>
>> >><br>
>> >> <a href="https://github.com/sifive/freedom-e-sdk/blob/master/FreedomStudio/HiFive1/hello/openocd.cfg" rel="noreferrer" target="_blank">https://github.com/sifive/<wbr>freedom-e-sdk/blob/master/<wbr>FreedomStudio/HiFive1/hello/<wbr>openocd.cfg</a><br>
>> >><br>
>> >> I was able to run code in ROM region, after I made this:<br>
>> >><br>
>> >> MEMORY<br>
>> >> {<br>
>> >>     ROM      : ORIGIN = 0x20400000, LENGTH = 128M<br>
>> >>     RAM      : ORIGIN = 0x80000000, LENGTH = 64K<br>
>> >> }<br>
>> >><br>
>> >> REGION_ALIAS ("REGION_VECTOR", RAM);<br>
>> >> REGION_ALIAS ("REGION_START", ROM);<br>
>> >> REGION_ALIAS ("REGION_TEXT", ROM);<br>
>> >> REGION_ALIAS ("REGION_TEXT_LOAD", ROM);<br>
>> >> REGION_ALIAS ("REGION_RODATA", ROM);<br>
>> >> REGION_ALIAS ("REGION_RODATA_LOAD", ROM);<br>
>> >> REGION_ALIAS ("REGION_DATA", RAM);<br>
>> >> REGION_ALIAS ("REGION_DATA_LOAD", ROM);<br>
>> >> REGION_ALIAS ("REGION_FAST_DATA", RAM);<br>
>> >> REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);<br>
>> >> REGION_ALIAS ("REGION_BSS", RAM);<br>
>> >> REGION_ALIAS ("REGION_WORK", RAM);<br>
>> >> REGION_ALIAS ("REGION_STACK", RAM);<br>
>> >><br>
>> >> And gdb can step till the "call boot_card" instruction,<br>
>> >> but I can't proceed any further due to the error:<br>
>> >> gdb hands after stepping into "call boot_card"<br>
>> >> At the same time openocd shows:<br>
>> >><br>
>> >> halted at 0x20400202 due to step<br>
>> >> halted at 0x20400262 due to hardware trigger<br>
>> >> halted at 0x204010c2 due to step<br>
>> >><br>
>> >> The last line appears after attempt to make the step.<br>
>> >> Links to my linkcmd and start.S files:<br>
>> >><br>
>> >><br>
>> >> <a href="https://github.com/embeddedden/rtems-riscv/blob/hifive1/c/src/lib/libbsp/riscv32/hifive1/startup/linkcmds" rel="noreferrer" target="_blank">https://github.com/<wbr>embeddedden/rtems-riscv/blob/<wbr>hifive1/c/src/lib/libbsp/<wbr>riscv32/hifive1/startup/<wbr>linkcmds</a><br>
>> >><br>
>> >><br>
>> >> <a href="https://github.com/embeddedden/rtems-riscv/blob/hifive1/c/src/lib/libbsp/riscv32/hifive1/start/start.S" rel="noreferrer" target="_blank">https://github.com/<wbr>embeddedden/rtems-riscv/blob/<wbr>hifive1/c/src/lib/libbsp/<wbr>riscv32/hifive1/start/start.S</a><br>
>> >><br>
>> >><br>
>> >> Regards, Denis Obrezkov<br>
>> ><br>
>> ><br>
>> > I also found out that when I use stepi on "call boot_card" I got a<br>
>> > warning<br>
>> > from openocd:<br>
>> > Core got an exception (0xffffffff) while reading from 0x8000effc<br>
>> ><br>
>> > --<br>
>> > Regards, Denis Obrezkov<br>
>><br>
>><br>
>><br>
>> --<br>
>> Hesham<br>
><br>
> Yes, it definitely supports it, I've already done it.<br>
> 0x80000000 is the start of 64 KiB RAM, and 0x20000000 is the start of flash.<br>
><br>
> I think I found the problem. It seems that this gdb build supports 16 KiB of<br>
> RAM (as in Freedom E300 specification).<br>
> I changed the value of RAM length to 16 KiB, so now I can execute further.<br>
> Thanks!<br>
><br>
</div></div>Great! Glad to know it's working now. You might want to do some<br>
analysis of the size/footprint of your executable (e.g. hello world),<br>
and what should go into ROM vs RAM. 64 KiB might not be enough for<br>
some applications. Also there is a "compressed" version of the RISC-V<br>
ISA, might be worth looking at.<br>
<div class="HOEnZb"><div class="h5"><br>
><br>
><br>
> --<br>
> Regards, Denis Obrezkov<br>
<br>
<br>
<br>
--<br>
Hesham<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Regards, Denis Obrezkov</div>
</div></div>