[Open SoC Debug] CDM: Next Steps

SHIVAM AGGARWAL shivam16195 at iiitd.ac.in
Mon May 28 14:24:27 CEST 2018


Thanks a lot for the constructive outline.
On Mon, May 28, 2018 at 5:24 PM, Philipp Wagner <philipp.wagner at tum.de>

> Hi,
> Shivam provided an updated PR on the CDM spec and I've merged it with
> minor changes. You can find the resulting document here:
> http://opensocdebug.readthedocs.io/en/latest/02_
> spec/07_modules/cdm/index.html
> The spec has still some rough edges, but it should be sufficient for now
> in that it distills our common understanding of how this module should
> work. If you find anything left out please open an issue so we can track
> it.
> The next step is of course moving towards an implementation.
> - On the hardware side most building blocks are there to build up the
>   CDM module. The only missing part is the access to OSD registers which
>   are not 16 bit wide. I've opened
>   https://github.com/opensocdebug/osd-hw/issues/40 for this, and Max is
>   currently looking into it. (Fixing this on our side is most likely
>   more time-efficient since we can use the cocotb-based tests, which
>   only run on VCS currently.)


> - The discussion we previously had showed that most unknowns so far are
>   within the software side and the gdbserver implementation. (Opposed to
>   what I've been suggesting before) I'm proposing you Shivam start with
>   that. You can find the code together with documentation and tests at
>   https://github.com/opensocdebug/osd-sw. You need to create the
>   following pieces:
>   1. A "CDM client" class. This class essentially wraps the special
>      functionality of the CDM into more descriptive function names. You
>      can find an example here:
>      https://github.com/opensocdebug/osd-sw/blob/
> master/src/libosd/cl_scm.c
>   2. Create a osd_gdbserver class which makes use of the MAM and CDM
>      modules (i.e. cl_mam and cl_cdm classes) to provide the interface
>      to GDB. You can find an example of such a class here:
> https://github.com/opensocdebug/osd-sw/blob/master/src/libosd/
> systracelogger.c
>      This part will also require you to read on and implement the
>      gdbserver protocol and to add functionality listen on a TCP port
>      for incoming connections from GDB.
>   3. Add a new standalone tool for the OSD gdbserver, which makes use of
>      the osd_gdbserver class you created in step 2. You can find an
>      example of such a tool here:
> https://github.com/opensocdebug/osd-sw/tree/master/src/tools/osd-target-
> run

I invested last couple of days understanding the various code-blocks of the
osd-hw. Thanks to Philipp and Stafford, I am learning something new
Now, I have a firm understanding of the hardware side. As Philipp pointed
out, once we have the access to OSD registers which are 32 bit wide and
more, it will be much easier to implement the CDM.

So, I will start working on the osd-sw from today.

One major doubt: Should I update the GSoC proposal with the new work-flow
details and milestone?

> To make sure you can start small and add incrementally to the
> implementation please also create unit tests. You can find the existing
> unit tests here:
> https://github.com/opensocdebug/osd-sw/tree/master/tests/unit
> Before you start coding please open issues in the osd-sw repository
> where you describe the problem. Open one issue per actionable goal, i.e.
> the three points I've mentioned above would be three issues.


> Philipp
> _______________________________________________
> OpenSoCDebug mailing list
> OpenSoCDebug at lists.librecores.org
> https://lists.librecores.org/listinfo/opensocdebug

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.librecores.org/pipermail/opensocdebug/attachments/20180528/56a3035d/attachment.html>

More information about the OpenSoCDebug mailing list