Browse Source

DMA address write/read added.

v5.4
Arash Aletayeb 4 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"?>
<!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>
<data>
<variable>EnvironmentId</variable>
@ -283,6 +283,11 @@
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</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"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">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 ///////////////////////////////
void readData();
QList<quint64> getDmaAddr(void);
void setDmaAddr(QList<quint64> addr);
};
#endif //TRXBOARD_H

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

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

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

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

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

@ -36,4 +36,9 @@
#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

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)
{
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)
{
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