forked from M-Labs/artiq
runtime: add dds_program
This commit is contained in:
parent
d922c3db7e
commit
ba088614d8
|
@ -8,6 +8,7 @@ _syscalls = [
|
||||||
("gpio_set", "ii:v"),
|
("gpio_set", "ii:v"),
|
||||||
("rtio_set", "iii:v"),
|
("rtio_set", "iii:v"),
|
||||||
("rtio_sync", "i:v"),
|
("rtio_sync", "i:v"),
|
||||||
|
("dds_program", "ii:v"),
|
||||||
]
|
]
|
||||||
|
|
||||||
def _str_to_functype(s):
|
def _str_to_functype(s):
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include <uart.h>
|
#include <uart.h>
|
||||||
#include <console.h>
|
#include <console.h>
|
||||||
#include <system.h>
|
#include <system.h>
|
||||||
|
#include <hw/common.h>
|
||||||
#include <generated/csr.h>
|
#include <generated/csr.h>
|
||||||
|
|
||||||
#include "elf_loader.h"
|
#include "elf_loader.h"
|
||||||
|
@ -145,11 +146,35 @@ static void rtio_sync(int channel)
|
||||||
while(rtio_o_level_read() != 0);
|
while(rtio_o_level_read() != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define DDS_FTW 0x0a
|
||||||
|
#define DDS_PTW 0x0e
|
||||||
|
#define DDS_FUD 0x40
|
||||||
|
#define DDS_GPIO 0x41
|
||||||
|
|
||||||
|
#define DDS_WRITE1(addr, data) \
|
||||||
|
MMPTR(0xb0000000 + (addr)*4) = data
|
||||||
|
|
||||||
|
#define DDS_WRITE2(addr, data) \
|
||||||
|
DDS_WRITE1(addr, (data) >> 8); \
|
||||||
|
DDS_WRITE1((addr) + 1, data)
|
||||||
|
|
||||||
|
#define DDS_WRITE4(addr, data) \
|
||||||
|
DDS_WRITE2(addr, (data) >> 16); \
|
||||||
|
DDS_WRITE2((addr) + 2, data)
|
||||||
|
|
||||||
|
static void dds_program(int channel, int ftw)
|
||||||
|
{
|
||||||
|
DDS_WRITE1(DDS_GPIO, channel);
|
||||||
|
DDS_WRITE4(DDS_FTW, ftw);
|
||||||
|
DDS_WRITE1(DDS_FUD, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static const struct symbol syscalls[] = {
|
static const struct symbol syscalls[] = {
|
||||||
{"__syscall_rpc", rpc},
|
{"__syscall_rpc", rpc},
|
||||||
{"__syscall_gpio_set", gpio_set},
|
{"__syscall_gpio_set", gpio_set},
|
||||||
{"__syscall_rtio_set", rtio_set},
|
{"__syscall_rtio_set", rtio_set},
|
||||||
{"__syscall_rtio_sync", rtio_sync},
|
{"__syscall_rtio_sync", rtio_sync},
|
||||||
|
{"__syscall_dds_program", dds_program},
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue