aboutsummaryrefslogtreecommitdiffstats
path: root/src/pru
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2017-05-26 09:14:26 -0400
committerKevin O'Connor <kevin@koconnor.net>2017-05-26 12:39:34 -0400
commita82e949c00aceaedd9d9a76ddcc3c88c9cad3d80 (patch)
tree685af9ff540b0407cfb0f96664fc3dccbc160152 /src/pru
parentca9756413f2793279b5ba1c1ecf274ce734b2087 (diff)
downloadkutter-a82e949c00aceaedd9d9a76ddcc3c88c9cad3d80.tar.gz
kutter-a82e949c00aceaedd9d9a76ddcc3c88c9cad3d80.tar.xz
kutter-a82e949c00aceaedd9d9a76ddcc3c88c9cad3d80.zip
build: Use compile_time_request system for init, tasks, and shutdown
Avoid using linker magic to define the init, task, and shutdown functions. Instead, use the compile_time_request system. This simplifies the build and produces more efficient code. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'src/pru')
-rw-r--r--src/pru/Makefile11
-rw-r--r--src/pru/main.c7
2 files changed, 11 insertions, 7 deletions
diff --git a/src/pru/Makefile b/src/pru/Makefile
index 4e326955..5f5739b4 100644
--- a/src/pru/Makefile
+++ b/src/pru/Makefile
@@ -9,9 +9,10 @@ dirs-y += lib/pru_rpmsg
CFLAGS += -Os -mmcu=am335x.pru1
CFLAGS += -Ilib/pru_rpmsg/include -Ilib/pru_rpmsg/include/am335x
-CFLAGS_klipper.o := $(filter-out -mmcu=%, $(CFLAGS_klipper.o))
-CFLAGS_klipper.elf := $(CFLAGS) -minrt -T src/pru/pru.lds
+CFLAGS_klipper.elf := $(filter-out -mmcu=%, $(CFLAGS))
+CFLAGS_klipper.elf += -Wl,-r -nostdlib -Wl,-T,src/pru/pru.lds
CFLAGS_pru0.elf := $(filter-out -mmcu=%, $(CFLAGS)) -minrt -mmcu=am335x.pru0
+CFLAGS_pru1.elf := $(CFLAGS) -minrt
# Add source files
src-y := $(filter-out debugcmds.c, $(src-y))
@@ -22,8 +23,12 @@ pru0-y := pru/pru0.c
pru0-y += ../lib/pru_rpmsg/pru_rpmsg.c ../lib/pru_rpmsg/pru_virtqueue.c
# Build the additional PRU0 binary
-target-y += $(OUT)pru0.elf
+target-y += $(OUT)pru0.elf $(OUT)pru1.elf
$(OUT)pru0.elf: $(patsubst %.c, $(OUT)src/%.o,$(pru0-y))
@echo " Linking $@"
$(Q)$(CC) $(CFLAGS_pru0.elf) $^ -o $@
+
+$(OUT)pru1.elf: $(OUT)klipper.elf
+ @echo " Linking $@"
+ $(Q)$(CC) $(CFLAGS_pru1.elf) $^ -o $@
diff --git a/src/pru/main.c b/src/pru/main.c
index df69a01e..46722709 100644
--- a/src/pru/main.c
+++ b/src/pru/main.c
@@ -75,7 +75,7 @@ irq_poll(void)
_irq_poll();
}
-static void
+void
timer_shutdown(void)
{
// Reenable timer irq
@@ -86,12 +86,13 @@ timer_shutdown(void)
}
DECL_SHUTDOWN(timer_shutdown);
-static void
+void
timer_init(void)
{
CT_IEP.TMR_CNT = 0;
timer_shutdown();
}
+DECL_INIT(timer_init);
/****************************************************************
@@ -211,8 +212,6 @@ main(void)
;
writel(&SHARED_MEM->signal, SIGNAL_PRU1_READY);
- timer_init();
-
sched_main();
return 0;
}