mirror of
https://github.com/bmartini/zynq-axis.git
synced 2024-09-05 19:19:27 +08:00
Stub of an axis interface library
Attempts to mmap the axis AXI4Lite memory region.
This commit is contained in:
parent
fc6b0b2dc6
commit
11ec4ddca7
34
lib/Makefile
Normal file
34
lib/Makefile
Normal file
@ -0,0 +1,34 @@
|
||||
CC = gcc
|
||||
CFLAGS := -c -fpic -Wall -Werror
|
||||
INCLUDES := -I.
|
||||
LIBOPTS := -shared
|
||||
|
||||
|
||||
.PHONY : all
|
||||
all : interface
|
||||
|
||||
|
||||
interface.o :
|
||||
$(CC) $(CFLAGS) $(INCLUDES) interface.c
|
||||
|
||||
|
||||
interface : interface.o
|
||||
$(CC) *.o $(LIBOPTS) -o libinterface.so
|
||||
|
||||
|
||||
install :
|
||||
sudo cp ${PWD}/libinterface.so /usr/lib
|
||||
sudo cp ${PWD}/interface.h /usr/include
|
||||
sudo chmod 0755 /usr/lib/libinterface.so
|
||||
sudo ldconfig
|
||||
|
||||
|
||||
uninstall :
|
||||
sudo rm /usr/lib/libinterface.so
|
||||
sudo rm /usr/include/interface.h
|
||||
sudo ldconfig
|
||||
|
||||
|
||||
.PHONY : clean
|
||||
clean :
|
||||
rm -f *.o libinterface.so
|
24
lib/interface.c
Normal file
24
lib/interface.c
Normal file
@ -0,0 +1,24 @@
|
||||
#include "interface.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/mman.h>
|
||||
#include <unistd.h>
|
||||
|
||||
static void *cfg;
|
||||
|
||||
int axis_init(const char *path)
|
||||
{
|
||||
int fd;
|
||||
assert((fd = open(path, O_RDWR)) >= 0);
|
||||
|
||||
cfg =
|
||||
mmap(NULL, REGISTER_NB, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
|
||||
|
||||
close(fd);
|
||||
if (cfg == MAP_FAILED) {
|
||||
return -1; // failure
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
15
lib/interface.h
Normal file
15
lib/interface.h
Normal file
@ -0,0 +1,15 @@
|
||||
#ifndef INTERFACE_H
|
||||
#define INTERFACE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define REGISTER_NB 32
|
||||
|
||||
int axis_init(const char *path);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* INTERFACE_H */
|
Loading…
x
Reference in New Issue
Block a user