This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CODECOMPOSER: Debug perspective: add a custom peripheral/registers view panel

Part Number: CODECOMPOSER


Tool/software:

In CCS (ccs9.3), is it possibile to add a custom panel in debug perspective, to organize and view memory mapped custom peripherals as in "Registers" panel?

I have bunch of applications with Sitara Am437x with fpgas connected to gpmc; in debug sessions my colleagues and I need to inspect the fpga memory mapped registers values.

Our standard practice is to enable the memory browser panel, point to the fpga base address and manually pick the right spot in the panel where the register address is. 

Quick and easy when I remember the address map, slow and cumbersome trying to explain to colleagues where the documentation is, helping and tutoring around.

I'd really prefer to spend some extra time describing an .xml file (or whatever text format needed) and load into CCS: is this possible? 

  • Hello,

    In CCS (ccs9.3), is it possibile to add a custom panel in debug perspective, to organize and view memory mapped custom peripherals as in "Registers" panel?

    I'm a bit confused what exactly you are referring to. I believe you are referring to how you can have custom memory map registers defined in the Registers view? If so, then you are correct in that this is defined in xml files. Please confirm.

    Thanks

    ki

  • Yes, exactly.   

  • I will bring this thread to the attention of the device experts who supply the current xml files.

  • Eugenio,

    This is possible. In CCS we use xml files to define memory mapped registers.  Basically there is a device xml which defines the device and then peripheral xml files that define the peripheral registers.  The device xml will instantiate a peripheral at a particular starting address and then inside the peripheral xml files it is based on offsets.

    If you take a look at some of the existing files you will be able to figure out how it works.  We don;t have any public documentation.

    In the files are in /ccs_base/common/targetdb

    /devices has the device xmls

    /Modules has the peripheral xmls

    I would suggest creating a copy of the device xml for am473x (I am on a mac so I don;t have this file so I can't see what the exact name is.

    Edit the <device field and update the name, id, desc to something different.  i.e. we don;t want to conflict with the existing file so you would change to something like am473x_fpga

    Take a look at one of the instance statements to see how to pull in a peripheral xml.  Note that these instances are under each core.  So you would likely make these registers visible within the context of the cortexA

    Create a peripheral xml file using one of the existing ones as reference.

    Once done that you will need to clear the cache in CCS to get it to pick up the new files.  I always forget how to do that but Ki-Soo remembers.

    Then you can go into CCS and create a target configuration that uses YOUR new device instead of the standard AM473x.  I suggest doing it this way so that your files don;t get blown away when CCS is updated.

    Regards,

    John

  • Great, super clear explanation, thank you!

  • No problem.

    To trigger CCS to update its cache of the files you can try touching the timestamp file in the \targetdb folder