Yes it works great! Do you think this should be part of standard behaviour?
I would suggest to limit the number of sent messages and ideally used bandwidth at startup to the same as used during normal operation. I also feel I have to spend a few hour to help with this if needed. In a perfect world and at a first glance it would be good to send the configuration data as fast as possible. But I guess it would be a good idea to limit sending of messages to the same used then running normally to avoid a surge in needed bandwidth at startup and it will also limit the receiving capacity to the same as during normal running? Regards Nicklas Karlsson On Sun, 20 Sep 2015 17:30:32 -0500 Jeff Epler <jep...@unpythonic.net> wrote: > I put together this patch which reduces the number of consecutive write > packets sent at startup. In my testing system it reduced it from 22 to > 2. However, I only spent about 2 minutes testing it, just a handful of > startups. > > -- >8 -- > >From 5bf2780aff4b4af183ec54f1fbcd3f0a3b0408c7 Mon Sep 17 00:00:00 2001 > From: Jeff Epler <jep...@unpythonic.net> > Date: Sun, 20 Sep 2015 15:28:30 -0500 > Subject: [PATCH] WIP hm2_eth: batch writes from hm2_force_write > > --- > src/hal/drivers/mesa-hostmot2/hm2_eth.c | 2 +- > src/hal/drivers/mesa-hostmot2/hostmot2-lowlevel.h | 2 ++ > src/hal/drivers/mesa-hostmot2/hostmot2.c | 4 ++++ > 3 files changed, 7 insertions(+), 1 deletion(-) > > diff --git a/src/hal/drivers/mesa-hostmot2/hm2_eth.c > b/src/hal/drivers/mesa-hostmot2/hm2_eth.c > index e57f14e..b1a3e80 100644 > --- a/src/hal/drivers/mesa-hostmot2/hm2_eth.c > +++ b/src/hal/drivers/mesa-hostmot2/hm2_eth.c > @@ -523,7 +523,7 @@ static int hm2_eth_enqueue_read(hm2_lowlevel_io_t *this, > rtapi_u32 addr, void *b > static int hm2_eth_enqueue_write(hm2_lowlevel_io_t *this, rtapi_u32 addr, > void *buffer, int size); > > static int hm2_eth_write(hm2_lowlevel_io_t *this, rtapi_u32 addr, void > *buffer, int size) { > - if(rtapi_task_self() >= 0) > + if(rtapi_task_self() >= 0 || this->queue_writes) > return hm2_eth_enqueue_write(this, addr, buffer, size); > > int send; > diff --git a/src/hal/drivers/mesa-hostmot2/hostmot2-lowlevel.h > b/src/hal/drivers/mesa-hostmot2/hostmot2-lowlevel.h > index 3df443c..81e40fd 100644 > --- a/src/hal/drivers/mesa-hostmot2/hostmot2-lowlevel.h > +++ b/src/hal/drivers/mesa-hostmot2/hostmot2-lowlevel.h > @@ -144,6 +144,8 @@ struct hm2_lowlevel_io_struct { > // if TRUE, the hostmot2 driver will export those three functions and > also read_gpio() and write_gpio() > int threadsafe; > > + // if TRUE, queue writes for a subsequent call to ->send_queued_writes() > + int queue_writes; > void *private; // for the low-level driver to hang their struct on > }; > > diff --git a/src/hal/drivers/mesa-hostmot2/hostmot2.c > b/src/hal/drivers/mesa-hostmot2/hostmot2.c > index 3acb34d..57365a8 100644 > --- a/src/hal/drivers/mesa-hostmot2/hostmot2.c > +++ b/src/hal/drivers/mesa-hostmot2/hostmot2.c > @@ -1655,6 +1655,7 @@ void rtapi_app_exit(void) { > > // this pushes our idea of what things are like into the FPGA's poor little > mind > void hm2_force_write(hostmot2_t *hm2) { > + hm2->llio->queue_writes = 1; > hm2_watchdog_force_write(hm2); > hm2_ioport_force_write(hm2); > hm2_encoder_force_write(hm2); > @@ -1664,5 +1665,8 @@ void hm2_force_write(hostmot2_t *hm2) { > hm2_sserial_force_write(hm2); > hm2_bspi_force_write(hm2); > hm2_dpll_force_write(hm2); > + > + hm2->llio->queue_writes = 0; > + if(hm2->llio->send_queued_writes) > hm2->llio->send_queued_writes(hm2->llio); > } > > -- > 1.7.10.4 > > > ------------------------------------------------------------------------------ > _______________________________________________ > Emc-users mailing list > Emc-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/emc-users ------------------------------------------------------------------------------ _______________________________________________ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users