Browse Source

DMA address write/read added.

v5.4
Arash Aletayeb 5 days ago
parent
commit
6ef790b697
  1. 7
      developHw.pro.user
  2. 3
      include/model/hardware/core/lowLevelApi/TrxBoard.h
  3. 2
      include/model/hardware/core/lowLevelApi/TrxBoardUtils/PreProcessorDef.h
  4. 2
      include/model/hardware/device/SonoDevice.h
  5. 5
      include/model/hardware/device/SonoDeviceConstant.h
  6. 15
      src/model/hardware/core/lowLevelApi/TrxBoard.cpp
  7. 33
      src/model/hardware/device/SonoDevice.cpp

7
developHw.pro.user

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.10.0, 2025-05-07T16:59:26. --> <!-- Written by QtCreator 4.10.0, 2025-05-11T14:00:37. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>
@ -283,6 +283,11 @@
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value> <value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value> <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value> <value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">0</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/> <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value> <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value> <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>

3
include/model/hardware/core/lowLevelApi/TrxBoard.h

@ -357,6 +357,9 @@ public:
/////////////////////////////// DMA Data Packet /////////////////////////////// /////////////////////////////// DMA Data Packet ///////////////////////////////
void readData(); void readData();
QList<quint64> getDmaAddr(void);
void setDmaAddr(QList<quint64> addr);
}; };
#endif //TRXBOARD_H #endif //TRXBOARD_H

2
include/model/hardware/core/lowLevelApi/TrxBoardUtils/PreProcessorDef.h

@ -2,6 +2,6 @@
#define PREPROCESSORDEF_H #define PREPROCESSORDEF_H
#define MPS_BOARD #define MPS_BOARD
#define DEVELOP_UI //#define DEVELOP_UI
#endif //PREPROCESSORDEF_H #endif //PREPROCESSORDEF_H

2
include/model/hardware/device/SonoDevice.h

@ -25,6 +25,8 @@ public:
bool isDmaBusy (); bool isDmaBusy ();
void copy(int srcIndex, int dstIndex); void copy(int srcIndex, int dstIndex);
const char* getBufferPtr(int index); const char* getBufferPtr(int index);
QList<quint64> readDmaAddr();
void writeDmaAddr(QList<quint64> addr);
}; };
#endif //SONODEVICE_H #endif //SONODEVICE_H

5
include/model/hardware/device/SonoDeviceConstant.h

@ -36,4 +36,9 @@
#define BUSY_MASK 0x80000000 #define BUSY_MASK 0x80000000
#define DMA_UPPER_ADDR_ORIGIN 0x00002060
#define DMA_LOWER_ADDR_ORIGIN 0x00002064
#define DMA_UPPER_ADDR_LAST 0x000020D8
#define DMA_LOWER_ADDR_LAST 0x000020DC
#endif //SONODEVICECONSTANT_H #endif //SONODEVICECONSTANT_H

15
src/model/hardware/core/lowLevelApi/TrxBoard.cpp

@ -125,6 +125,21 @@ void TrxBoard::readData()
} }
} }
QList<quint64> TrxBoard::getDmaAddr()
{
return (this->_device.readDmaAddr());
}
void TrxBoard::setDmaAddr(QList<quint64> addr)
{
if(addr.size() != HW_BUFFER_NUM)
{
throw HardwareException(DMA_XFER_ERROR, "DMA address number is not match with hardware buffer number.");
}
this->_device.writeDmaAddr(addr);
}
void TrxBoard::sramClear(eSramClear clearMode) void TrxBoard::sramClear(eSramClear clearMode)
{ {
quint32 num(0); quint32 num(0);

33
src/model/hardware/device/SonoDevice.cpp

@ -65,5 +65,36 @@ void SonoDevice::copy(int srcIndex, int dstIndex)
const char* SonoDevice::getBufferPtr(int index) const char* SonoDevice::getBufferPtr(int index)
{ {
return _buffers[index]; return _buffers[index];
}
QList<quint64> SonoDevice::readDmaAddr()
{
quint64 bigEndianDmaAddr(0);
QList<quint64> addrStack;
for(quint8 idx = 0; idx < HW_BUFFER_NUM; idx++)
{
quint64 upperAddr = device.readWord(BAR_BRAM, (DMA_UPPER_ADDR_ORIGIN + 8 * idx));
quint64 lowerAddr = device.readWord(BAR_BRAM, (DMA_LOWER_ADDR_ORIGIN + 8 * idx));
bigEndianDmaAddr = (upperAddr << 32) + lowerAddr & 0xFFFFFFFF;
addrStack.append(bigEndianDmaAddr);
}
return addrStack;
}
void SonoDevice::writeDmaAddr(QList<quint64> addr)
{
quint32 upperAddr;
quint32 lowerAddr;
for(quint8 idx = 0; idx < HW_BUFFER_NUM; idx++)
{
upperAddr = addr.at(idx) >> 32;
lowerAddr = addr.at(idx) & 0xFFFFFFFF;
device.writeWord(BAR_BRAM, (DMA_UPPER_ADDR_ORIGIN + 8 * idx), upperAddr);
device.writeWord(BAR_BRAM, (DMA_LOWER_ADDR_ORIGIN + 8 * idx), lowerAddr);
}
} }

Loading…
Cancel
Save