<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2017-06-09 1:52 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">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>
<div class="HOEnZb"><div class="h5"><br>
On Fri, Jun 9, 2017 at 8:38 AM, Denis Obrezkov <<a href="mailto:denisobrezkov@gmail.com">denisobrezkov@gmail.com</a>> 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 <<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. 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 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>
>>>> > <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 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>
>> <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>
>> <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>
>> <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 warning<br>
> from openocd:<br>
> Core got an exception (0xffffffff) while reading from 0x8000effc<br>
><br>
> --<br>
> Regards, Denis Obrezkov<br>
<br>
<br>
<br>
</div></div><span class="HOEnZb"><font color="#888888">--<br>
Hesham<br>
</font></span></blockquote></div>Yes, it definitely supports it, I've already done it.</div><div class="gmail_extra">0x80000000 is the start of 64 KiB RAM, and 0x20000000 is the start of flash.</div><div class="gmail_extra"><br></div><div class="gmail_extra">I think I found the problem. It seems that this gdb build supports 16 KiB of RAM (as in Freedom E300 specification).</div><div class="gmail_extra">I changed the value of RAM length to 16 KiB, so now I can execute further. Thanks!</div><div class="gmail_extra"><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Regards, Denis Obrezkov</div>
</div></div>