<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2017-06-08 17:49 GMT+03:00 Denis Obrezkov <span dir="ltr"><<a href="mailto:denisobrezkov@gmail.com" target="_blank">denisobrezkov@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="gmail-h5">2017-06-08 12:24 GMT+03:00 Denis Obrezkov <span dir="ltr"><<a href="mailto:denisobrezkov@gmail.com" target="_blank">denisobrezkov@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="gmail-m_962216111446452651gmail-h5">2017-06-07 22:41 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:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span>On Thu, Jun 8, 2017 at 2:26 AM, Denis Obrezkov <<a href="mailto:denisobrezkov@gmail.com" target="_blank">denisobrezkov@gmail.com</a>> wrote:<br>
> 2017-06-07 14:44 GMT+03:00 Sebastian Huber<br>
> <<a href="mailto:sebastian.huber@embedded-brains.de" target="_blank">sebastian.huber@embedded-brai<wbr>ns.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 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 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>
> <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/embeddedden<wbr>/rtems-riscv/blob/hifive1/c/sr<wbr>c/lib/libbsp/riscv32/hifive1/<wbr>start/start.S#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 addresses.<br>
><br>
</span>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.</blockquote></div></div></div></div></div></blockquote></div></div><div>I use openOCD from FreeStudio kit:</div><div><a href="https://github.com/sifive/freedom-e-sdk/blob/master/FreedomStudio/HiFive1/hello/openocd.cfg" target="_blank">https://github.com/sifive/<wbr>freedom-e-sdk/blob/master/<wbr>FreedomStudio/HiFive1/hello/<wbr>openocd.cfg</a><br></div><div><br></div><div>I was able to run code in ROM region, after I made this:</div><div><br></div><div><div>MEMORY</div><div>{</div><div>    ROM      : ORIGIN = 0x20400000, LENGTH = 128M</div><div>    RAM      : ORIGIN = 0x80000000, LENGTH = 64K</div><div>}</div><div><br></div><div>REGION_ALIAS ("REGION_VECTOR", RAM);</div><div>REGION_ALIAS ("REGION_START", ROM);</div><div>REGION_ALIAS ("REGION_TEXT", ROM);</div><div>REGION_ALIAS ("REGION_TEXT_LOAD", ROM);</div><div>REGION_ALIAS ("REGION_RODATA", ROM);</div><div>REGION_ALIAS ("REGION_RODATA_LOAD", ROM);</div><div>REGION_ALIAS ("REGION_DATA", RAM);</div><div>REGION_ALIAS ("REGION_DATA_LOAD", ROM);</div><div>REGION_ALIAS ("REGION_FAST_DATA", RAM);</div><div>REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);</div><div>REGION_ALIAS ("REGION_BSS", RAM);</div><div>REGION_ALIAS ("REGION_WORK", RAM);</div><div>REGION_ALIAS ("REGION_STACK", RAM);</div></div><div><br></div><div>And gdb can step till the "call boot_card" instruction,</div><div>but I can't proceed any further due to the error:</div><div>gdb hands after stepping into "call boot_card"</div><div>At the same time openocd shows:</div><div><br></div><div><div>halted at 0x20400202 due to step</div><div>halted at 0x20400262 due to hardware trigger</div><div>halted at 0x204010c2 due to step</div></div><div><br></div><div>The last line appears after attempt to make the step.</div><div>Links to my linkcmd and start.S files:</div><div><a href="https://github.com/embeddedden/rtems-riscv/blob/hifive1/c/src/lib/libbsp/riscv32/hifive1/startup/linkcmds" target="_blank">https://github.com/<wbr>embeddedden/rtems-riscv/blob/<wbr>hifive1/c/src/lib/libbsp/<wbr>riscv32/hifive1/startup/<wbr>linkcmds</a></div><div><a href="https://github.com/embeddedden/rtems-riscv/blob/hifive1/c/src/lib/libbsp/riscv32/hifive1/start/start.S" target="_blank">https://github.com/<wbr>embeddedden/rtems-riscv/blob/<wbr>hifive1/c/src/lib/libbsp/<wbr>riscv32/hifive1/start/start.S</a><br></div><div><br></div><div> </div></div><div class="gmail-m_962216111446452651gmail_signature">Regards, Denis Obrezkov</div>
</div></div>
</blockquote></div><br>I also found out that when I use stepi on "call boot_card" I got a warning</div><div class="gmail_extra">from openocd:</div><div class="gmail_extra">Core got an exception (0xffffffff) while reading from 0x8000effc</div><div class="gmail_extra"><div><br></div>-- <br><div class="gmail_signature">Regards, Denis Obrezkov</div>
</div></div>