mirror of
https://git.rwth-aachen.de/acs/public/villas/node/
synced 2025-03-09 00:00:00 +01:00
clean up debuggin output and fix scanf usage in villasfpga_dma.c
Signed-off-by: Niklas Eiling <niklas.eiling@eonerc.rwth-aachen.de>
This commit is contained in:
parent
d273162f71
commit
9d4cd5384d
4 changed files with 27 additions and 9 deletions
2
fpga/.vscode/launch.json
vendored
2
fpga/.vscode/launch.json
vendored
|
@ -10,7 +10,7 @@
|
|||
"request": "launch",
|
||||
"program": "${workspaceFolder}/build/src/villas-fpga-ctrl",
|
||||
"args": [
|
||||
"-c", "${workspaceFolder}/etc/fpgas.json", "--connect", "\"4<->stdout\""
|
||||
"-c", "${workspaceFolder}/etc/fpgas.json", "--connect", "\"2<->stdout\""
|
||||
],
|
||||
"stopAtEntry": false,
|
||||
"cwd": "${workspaceFolder}",
|
||||
|
|
|
@ -24,6 +24,7 @@ void villasfpga_destroy(villasfpga_handle handle);
|
|||
int villasfpga_alloc(villasfpga_handle handle, villasfpga_memory *mem, size_t size);
|
||||
int villasfpga_register(villasfpga_handle handle, villasfpga_memory *mem);
|
||||
int villasfpga_free(villasfpga_memory mem);
|
||||
void* villasfpga_get_ptr(villasfpga_memory mem);
|
||||
|
||||
int villasfpga_read(villasfpga_handle handle, villasfpga_memory mem, size_t size);
|
||||
int villasfpga_read_complete(villasfpga_handle handle, size_t *size);
|
||||
|
|
|
@ -158,7 +158,7 @@ int villasfpga_read_complete(villasfpga_handle handle, size_t *size)
|
|||
{
|
||||
try {
|
||||
auto readComp = handle->dma->readComplete();
|
||||
logger->debug("Wrote {} bytes", readComp.bytes);
|
||||
logger->debug("Read {} bytes", readComp.bytes);
|
||||
*size = readComp.bytes;
|
||||
return 0;
|
||||
} catch (const RuntimeError &e) {
|
||||
|
@ -193,3 +193,9 @@ int villasfpga_write_complete(villasfpga_handle handle, size_t *size)
|
|||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
void* villasfpga_get_ptr(villasfpga_memory mem)
|
||||
{
|
||||
return (void*)MemoryManager::get().getTranslationFromProcess(mem->block->getAddrSpaceId()).getLocalAddr(0);
|
||||
}
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ int main(int argc, char *argv[])
|
|||
int ret;
|
||||
villasfpga_handle vh;
|
||||
villasfpga_memory mem1, mem2;
|
||||
void *mem1ptr, *mem2ptr;
|
||||
char line[1024];
|
||||
float f;
|
||||
size_t size;
|
||||
|
@ -35,6 +36,20 @@ int main(int argc, char *argv[])
|
|||
goto out;
|
||||
}
|
||||
|
||||
if ((mem1ptr = villasfpga_get_ptr(mem1)) == NULL) {
|
||||
fprintf(stderr, "Failed to get pointer to DMA memory 1\n");
|
||||
ret = 1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if ((mem2ptr = villasfpga_get_ptr(mem2)) == NULL) {
|
||||
fprintf(stderr, "Failed to get pointer to DMA memory 2\n");
|
||||
ret = 1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
printf("DMA memory 1: %p, DMA memory 2: %p\n", mem1ptr, mem2ptr);
|
||||
|
||||
while (1) {
|
||||
// Setup read transfer
|
||||
if ((ret = villasfpga_read(vh, mem1, 0x200 * sizeof(uint32_t))) != 0) {
|
||||
|
@ -44,14 +59,12 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
|
||||
printf("Enter a float:\n");
|
||||
if ((ret = sscanf(line, "%f")) != 1) {
|
||||
if ((ret = scanf("%f", mem2ptr)) != 1) {
|
||||
fprintf(stderr, "Failed to parse input: sscanf returned %d\n", ret);
|
||||
ret = 1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
((float*)mem2)[0] = atof(line);
|
||||
printf("Read %f\n", ((float*)mem2)[0]);
|
||||
printf("sending %f (%zu bytes)\n", ((float*)mem2ptr)[0], sizeof(float));
|
||||
// Initiate write transfer
|
||||
if ((ret = villasfpga_write(vh, mem2, sizeof(float))) != 0) {
|
||||
fprintf(stderr, "Failed to initiate write transfer\n");
|
||||
|
@ -64,16 +77,14 @@ int main(int argc, char *argv[])
|
|||
ret = 1;
|
||||
goto out;
|
||||
}
|
||||
printf("Wrote %zu bytes", size);
|
||||
|
||||
if ((ret = villasfpga_read_complete(vh, &size)) != 0) {
|
||||
fprintf(stderr, "Failed to write complete\n");
|
||||
ret = 1;
|
||||
goto out;
|
||||
}
|
||||
printf("Read %zu bytes", size);
|
||||
|
||||
printf("Read %f\n", ((float*)mem1)[0]);
|
||||
printf("Read %f (%zu bytes)\n", ((float*)mem1ptr)[0], size);
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
|
|
Loading…
Add table
Reference in a new issue