Access to AHB signals

Hi all,

is possible to access the AMBA AHB signals by software? Is there any register that reflects these signals? The OS can check these signals?

Thank you very much!

Alexandre Venito

  • Unless the component has been specifically designed to allow the AHB signals to be controlled by software (and I'm thinking of something like a File Reader master or slave), I would think the answer is no.

    The hardware driving the AHB interface will interpret/convert whatever the software requests into the require AHB transactions, so not direct software control of the hardware signals.

    How the various signals are then driven will depend on that component's design, with some signals more obviously controlled than others. Signals such as HADDR and HWRITE can easily be implied simply by issuing a read or write command to a specific address, HSIZE could be controlled by the width of data you try to transfer, and perhaps HPROT can be controlled if your master has something like an MPU in it that is configurable.

    But again depending on the complexity of the design, there might be logic between the software issuing what you think are simple reads and writes, and the bus, which modifies your simple software requests. For example a cache could return data without those requests reaching the external bus. Or the cache could result in a wider or longer series of access requests to update a cache line as a result of your simple transfer request.

    So a generic reply would be the simple "no" I suggested at the start. You might be able to influence some of the AHB signals if you know how your component's bus interface works, or if the bus interface requires some signals are controlled by software, but in general the software will just assume the hardware interface performs the requested operation in the most effiecient way possible.

    Just rereading your question I guess you could instead be looking for software to sample the AHB signals (for some unknown reason). This wouldn't be normal, so would need to be something designed into your component's bus interface.