Il giorno venerdì 28 settembre 2018 15:10:04 UTC+2, Schooner ha scritto: > > > On 28/09/18 13:21, mngr wrote: > > edited from 0x20000000 to 0x3F000000 and now the raspberry loads the > hal_spi module. hal_spi.c should check the Pi version in a similar way to > hal_gpio.c . > > > Well done. > > There were no other Pi versions when it was written. > > Would you like to submit a PR? > sure thing! I have just seen that after modifying naively BCM2835_PERI_BASE the chip select stops working. there is some part of hal_spi that I don't understand: a very lot of costants in hal_spi.h are not used; and https://github.com/machinekit/machinekit/blob/master/src/hal/drivers/hal_spi.c#L401 it does something on GPIO23 and 24. for which raspberry version was it written? I see it is related to pin_out hal pin, but... how was it designed?
Cut and paste the hal_gpio.c code that version checks into hal-spi.c and > test that. > I only have rasppberry 3B on my desk, so I only can test on it. > > > Il giorno mercoledì 26 settembre 2018 12:33:31 UTC+2, mngr ha scritto: >> >> The cpuinfo information says BCM2835 for any raspberry version you can >> have, this helps with something in the kernel, the revision is the filed >> actually accurate. >> The first version of RPi have the base address at 0x20000000 from RPi 2 >> on it is at 0x3F000000 >> >> hal gpio recognize this difference, hal_spi does not, I still have to run >> hal gpio, though, will do it in next days >> >> https://web.stanford.edu/class/cs140e/docs/BCM2837-ARM-Peripherals.pdf >> here is a BCM 2837 datasheet that shows all the addresses, I will try to >> correct them in next days >> >> Other <https://ultibo.org/wiki/Unit_BCM2710> says to have a SPI driver >> for the 2710 (aka 2837) but it is hard to find the code, in case I will try >> to ask directly to them >> >> >> Il giorno lunedì 24 settembre 2018 11:41:53 UTC+2, Schooner ha scritto: >>> >>> Well, despite what /proc/cpuinfo says, I don't see how it can be a >>> BCM2835 Soc. >>> >>> The elinux hardware history (https://elinux.org/RPi_HardwareHistory) >>> clearly shows the v3 B has a BCM2037 and even if you >>> were sold an almost identical v2 B purporting to be a v3 B, it would >>> have a BCM2036. >>> >>> Looks like it is testing CS (chip select) to see if it is in an active >>> state and waiting until it is? >>> Hence my question about whether SPI was activated. >>> The most likely sources of the problem are either that SPI is inactive >>> or >>> that whatever address *spi points to it does not contain what is >>> expected so the & test will never result as expected. >>> >>> This in turn makes one suspicious about what will happen when the driver >>> is attached to a thread and started. >>> Will it work? >>> >>> It might be useful to try to get the hal_gpio demo running on the board >>> with DEBUG set and look at the output. >>> >>> Regards the args, that is peculiar. Just ignore the print out. >>> Look at hal_gpio.c for an example of how RTAPI_MP_STRING should appear, >>> and then you can see them being used in the later code. >>> If there is any initialisation to be done it would normally be in >>> rtapi_app_main() >>> >>> You need to find someone who is up on bit twiddling on the v3 B and >>> check all the addresses and offsets with them. >>> (Particularly the SPI_BASE offset, which may or may not vary between >>> models of Soc) >>> >>> >>> On 23/09/18 20:35, mngr wrote: >>> >>> I am really sorry Schooner, I was excited about the findings... >>> I actually don't know which args suits my setup, I looked in the source, >>> but I don't know how to find where they are used, >>> I tried to scroll it all, but found no place that seems to use them. >>> My board is a Raspberry Pi 3 model B V 1.2 and attached you can find >>> the cpuinfo output >>> Spi is enabled from raspi-config, and in /dev there is spidev0.0 and >>> spidev0.1 >>> >>> Il giorno domenica 23 settembre 2018 19:35:25 UTC+2, Schooner ha >>> scritto: >>>> >>>> OK, good there is some progress. >>>> >>>> You will probably find that whilst loaded, it may not work. >>>> >>>> That while statement is actually >>>> while(!( *(spi + 0) & 0x00010000) >>>> which is extremely specific and if something has changed or if SPI is >>>> not enabled, it will hang forever. >>>> >>>> (gripe here, I have asked you 3 specific questions and you have not >>>> answered any of them) >>>> >>>> >>>> On 23/09/18 18:01, mngr wrote: >>>> >>>> Thanks for the explanation about machinkit workings, >>>> >>>> I played with the stamps and found that it was blocking on >>>> while (!(BCM2835_SPICS & SPI_CS_DONE)); (Line 438) >>>> >>>> removing it halrun loads, now I will see if and what it writes. maybe I >>>> will have to control the low level implementation... but now I know more >>>> things. >>>> >>>> One more question, how does a hal module read the args? >>>> >>>> >>>> Il giorno domenica 23 settembre 2018 17:47:44 UTC+2, Schooner ha >>>> scritto: >>>>> >>>>> Sep 23 15:03:17 realtimepi rtapi:0: 4:rtapi_app:701:user hal_spi.so >>>>> default iparms: '' >>>>> Sep 23 15:03:17 realtimepi rtapi:0: 1:rtapi_app:701:user : hal_spi >>>>> init!!!!err >>>>> Sep 23 15:03:17 realtimepi rtapi:0: 4:rtapi_app:701:user : hal_spi >>>>> init!!!!dbg >>>>> Sep 23 15:03:17 realtimepi rtapi:0: 4:rtapi_app:701:user >>>>> halg_xinitfv:90 HAL: initializing component 'hal_spi' type=1 arg1=0 >>>>> arg2=0/0x0 >>>>> >>>>> Since you haven't said where these extra prints are located, their >>>>> presence means nothing to me >>>>> >>>> The module is obviously loading to a point but it does not look as >>>>> though the driver is getting any further than hal_init, which calls >>>>> halg_xinitfv() >>>>> then is failing catastrophically >>>>> >>>>> You are loading with no args, are the defaults suitable for your board >>>>> / setup? >>>>> Not that it looks that it gets that far, due the complete absence of >>>>> other error or info messages >>>>> >>>>> The insmod error is completely non specific, so doesn't help, may just >>>>> be picking up the last return value. >>>>> >>>>> What is the output from /proc/cpuinfo and what version etc is your Pi? >>>>> >>>>> >>>>> >>>>> On 23/09/18 16:12, mngr wrote: >>>>> >>>>> Attached. >>>>> >>>>> In the log you can see the message I added in the hal_spi >>>>> rtapi_app_main. >>>>> >>>>> pi@realtimepi:~ $ halcmd loadrt hal_spi >>>>> <commandline>:0: insmod failed, returned -1: >>>>> rtapi_rpc(): reply timeout >>>>> See /var/log/linuxcnc.log for more information. >>>>> pi@realtimepi:~ $ halcmd show all >>>>> halcmd: cant connect to rtapi_app: -1 (uri= uuid=a42c8c6b-4025-4f83- >>>>> ba28-dad21114744a): rtapi_rpc(): reply timeout >>>>> >>>>> E: 18-09-23 15:04:20 dangling 'DEALER' socket created at hal/utils/ >>>>> halcmd_rtapiapp.cc:281 >>>>> >>>>> >>>>> Il giorno domenica 23 settembre 2018 16:43:25 UTC+2, Schooner ha >>>>> scritto: >>>>> >>>>>> >>>>>> On 23/09/18 15:16, mngr wrote: >>>>>> >>>>>> >>>>>> >>>>>> Il giorno domenica 23 settembre 2018 15:34:58 UTC+2, Schooner ha >>>>>> scritto: >>>>>>> >>>>>>> It's not about doubt >>>>>>> cat /proc/cpuinfo >>>>>>> will tell you whether you have BCM2835 >>>>>>> >>>>>> >>>>>> Thanks didn't know about that! on the rpi is written 2837, bit >>>>>> cpuinfo says 2835! >>>>>> So at least the part that writes in the SPI registers should work. >>>>>> >>>>>> I tried to add some debug message in hal_spi rtapi_app_main >>>>>> function, but I don't see them anywhere, I have exported DEBUG=5, and >>>>>> maximized the DEBUG value in the ini file. I am looking in >>>>>> /var/log/linuxcnc.log and in the terminal output. >>>>>> I have tried with different msg types >>>>>> >>>>>> rtapi_print_msg(RTAPI_MSG_ERR, ": hal_spi init!!!!err\n"); >>>>>> rtapi_print_msg(RTAPI_MSG_DBG, ": hal_spi init!!!!dbg\n"); >>>>>> rtapi_print_msg(RTAPI_MSG_ALL, ": hal_spi init!!!!all\n"); >>>>>> >>>>>> >>>>>> There are plenty of error messages in the driver already. I did not >>>>>> see any in the log however which makes me >>>>>> suspect it was never loaded. >>>>>> If insmod errors it should say why however and that was not in there >>>>>> either. >>>>>> >>>>>> Instead of complicating things with loading a non working config, >>>>>> just to load the driver, try this in a terminal on your Pi >>>>>> >>>>>> sudo > /var/log/linuxcnc.log (you may have to run this a root, it >>>>>> should zero the log) >>>>>> DEBUG=5 realtime restart >>>>>> halcmd loadrt hal_spi >>>>>> halcmd show all >>>>>> halrun -U >>>>>> >>>>>> That should give you a short log and if it errors loading hal_spi >>>>>> will be easier to trace through >>>>>> >>>>>> In addition to the log do >>>>>> >>>>>> dmesg | tail > dmesg.log >>>>>> >>>>>> and attach that log too >>>>>> >>>>>> >>>>>> If you do and the driver should work, we can try to find out why it >>>>>>> isn't. >>>>>>> >>>>>>> If you don't, what the differences are from the BCM2837 for example, >>>>>>> I have no idea >>>>>>> >>>>>>> I am guessing you are trying to generate steps using the SPI, that >>>>>>> is an area outside my experience >>>>>>> but there seems to be quite a bit about it on the RPi forums >>>>>>> >>>>>> >>>>>> Actually, I tought that hal_spi is used to write something to a MCU >>>>>> that will control the motor generating steps. >>>>>> I think it sends the commanded velocity and the MCU updates the PWM. >>>>>> I am not sure of those things, though >>>>>> >>>>>> On 23/09/18 13:50, mngr wrote: >>>>>> >>>>>> >>>>>> >>>>>> Il giorno domenica 23 settembre 2018 13:41:42 UTC+2, Schooner ha >>>>>> scritto: >>>>>>> >>>>>>> The log does not show what your earlier email showed, there is not >>>>>>> mention of an error from insmod >>>>>>> >>>>>>> I think you need to get right back to basics. >>>>>>> >>>>>>> This driver was written 5 years ago and is specific to the BCM2835 >>>>>>> chip >>>>>>> It can only have been meant to support Pi v1 & v2 and maybe not all >>>>>>> of them, as they kept changing versions and hardware, >>>>>>> because nothing of a higher version had been released then >>>>>>> >>>>>>> Does this driver support your Pi? >>>>>>> >>>>>> >>>>>> In case of doubt I gave a look to wiringPi, it calls ioctl and >>>>>> write/reads from /dev/spidev. >>>>>> Is calling that syscall from a hal driver a sane thing to do? (It is >>>>>> for example used here >>>>>> <https://github.com/machinekit/machinekit/blob/master/src/hal/drivers/hal_p260c.c> >>>>>> ) >>>>>> >>>>>> >>>>>> >>>>>>> Regards DEBUG, the ini file bit was explained by the text you >>>>>>> deleted from yours. >>>>>>> It takes a hexidecimal number up to 0x7FFFFFFF, the output is to >>>>>>> terminal and the output is from NML messaging >>>>>>> >>>>>>> The exported DEBUG=5 is the debug setting for logging and relates to >>>>>>> the rtapi system, not NML >>>>>>> >>>>>> >>>>>> Thanks for the explanation, Schooner >>>>>> >>>>>> >>>>>>> On 23/09/18 11:07, mngr wrote: >>>>>>> >>>>>>> >>>>>>> >>>>>>> Il giorno venerdì 21 settembre 2018 16:44:50 UTC+2, Schooner ha >>>>>>> scritto: >>>>>>>> >>>>>>>> You are not running with DEBUG=5 >>>>>>>> >>>>>>> >>>>>>> I edited DEBUG = 5 in ini file(in EMC section), nothing changed, >>>>>>> then I exported DEBUG=5 in bash. what is the difference? what is the >>>>>>> deBUG >>>>>>> setting in the ini file for? >>>>>>> >>>>>>> Attached you can find the ini and the hal file, I edited the CRAMPS >>>>>>> configuration, basically removing everything relative to the PRU, and >>>>>>> adding loadrt hal_spi in CRAMPS.hal (and leaving one only axis) >>>>>>> linuxcnc_old.log is everything before adding loadrt hal_spi. >>>>>>> linuxcnc.log is the execution with loadrt hal_spi and termila_output >>>>>>> shows what has been written, I attached it because it talks about >>>>>>> rtapi_rpc(): reply timeout, that is not mentioned in the log >>>>>>> >>>>>>> pi@realtimepi:~ $ uname -a >>>>>>> Linux realtimepi 4.14.66-rt40-v7 #2 SMP PREEMPT RT Mon Sep 17 >>>>>>> 21:15:46 UTC 2018 armv7l GNU/Linux >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>>> Do so and your linuxcnc.log will have info as to what failed. >>>>>>>> >>>>>>>> Also as I said in my last reply, it does not look as though you >>>>>>>> have a realtime kernel, irrespective of what you have named your pi. >>>>>>>> >>>>>>>> On 21/09/18 15:31, mngr wrote: >>>>>>>> >>>>>>>> Hi everyone, >>>>>>>> >>>>>>>> I am sorry to post another noob question here, but, >>>>>>>> >>>>>>>> I am trying to use the hal module hal_spi, shortly I tried with >>>>>>>> loadrt hal_spi >>>>>>>> in the hal file, but >>>>>>>> CRAMPS.hal:15: insmod failed, returned -1: >>>>>>>> rtapi_rpc(): reply timeout >>>>>>>> See /var/log/linuxcnc.log for more information. >>>>>>>> >>>>>>>> in the log >>>>>>>> Sep 21 14:22:09 realtimepi msgd:0: startup pid=5979 flavor=posix >>>>>>>> rtlevel=1 usrlevel=1 halsize=524288 shm=Posix cc=gcc 6.3.0 20170516 >>>>>>>> version=unknown >>>>>>>> Sep 21 14:22:09 realtimepi msgd:0: ØMQ=4.2.1 czmq=4.0.2 protobuf= >>>>>>>> 3.0.0 atomics=gcc intrinsics libwebsockets=2.0.3 >>>>>>>> Sep 21 14:22:09 realtimepi msgd:0: configured: sha=b87920504 >>>>>>>> Sep 21 14:22:09 realtimepi msgd:0: built: Sep 18 2018 16:43:17 >>>>>>>> sha=b87920504 >>>>>>>> Sep 21 14:22:09 realtimepi msgd:0: register_stuff: actual hostname >>>>>>>> as announced by avahi='realtimepi.local' >>>>>>>> Sep 21 14:22:09 realtimepi msgd:0: zeroconf: registering: 'Log >>>>>>>> service on realtimepi.local pid 5979' >>>>>>>> Sep 21 14:22:10 realtimepi rtapi:0: rtapi_msgd went away, exiting >>>>>>>> Sep 21 14:22:10 realtimepi msgd:0: zeroconf: registered 'Log >>>>>>>> service on realtimepi.local pid 5979' _machinekit._tcp 0 TXT >>>>>>>> "uuid=a42c8c6b-4025-4f83-ba28-dad21114744a" >>>>>>>> "instance=b9c730a2-bda9-11e8-bcc3-b827eb4bcf42" "service=log" >>>>>>>> "dsn=ipc:///tmp/0.log.a42c8c6b-4025-4f83-ba28-dad21114744a" >>>>>>>> >>>>>>>> I tried launching machinekit without it and adding it later using >>>>>>>> halcmd loadrt hal_spi, but with similar results >>>>>>>> >>>>>>>> >>>>>>>> should I give it some arguments? I don't know how to understand how >>>>>>>> to write them from the code... >>>>>>>> Maybe the module is old and has lost some compatibility? >>>>>>>> >>>>>>>> right now i am executing from >>>>>>>> Linux realtimepi 4.14.69-v7+ #1141 SMP Mon Sep 10 15:26:29 BST >>>>>>>> 2018 armv7l GNU/Linux >>>>>>>> Debian Stretch, Machinekit compiled from source >>>>>>>> maybe should I explicit the path to hal_spi? >>>>>>>> >>>>>>>> mngr >>>>>>>> -- >>>>>>>> website: http://www.machinekit.io blog: http://blog.machinekit.io >>>>>>>> github: https://github.com/machinekit >>>>>>>> --- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "Machinekit" group. >>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>> send an email to machinekit+...@googlegroups.com. >>>>>>>> Visit this group at https://groups.google.com/group/machinekit. >>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>> website: http://www.machinekit.io blog: http://blog.machinekit.io >>>>>>> github: https://github.com/machinekit >>>>>>> --- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "Machinekit" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to machinekit+...@googlegroups.com. >>>>>>> Visit this group at https://groups.google.com/group/machinekit. >>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>> >>>>>>> >>>>>>> -- >>>>>> website: http://www.machinekit.io blog: http://blog.machinekit.io >>>>>> github: https://github.com/machinekit >>>>>> --- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "Machinekit" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to machinekit+...@googlegroups.com. >>>>>> Visit this group at https://groups.google.com/group/machinekit. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>>> >>>>>> -- >>>>>> website: http://www.machinekit.io blog: http://blog.machinekit.io >>>>>> github: https://github.com/machinekit >>>>>> --- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "Machinekit" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to machinekit+...@googlegroups.com. >>>>>> Visit this group at https://groups.google.com/group/machinekit. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>>> >>>>>> -- >>>>> website: http://www.machinekit.io blog: http://blog.machinekit.io >>>>> github: https://github.com/machinekit >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Machinekit" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to machinekit+...@googlegroups.com. >>>>> Visit this group at https://groups.google.com/group/machinekit. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>>> >>>>> -- >>>> website: http://www.machinekit.io blog: http://blog.machinekit.io >>>> github: https://github.com/machinekit >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "Machinekit" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to machinekit+...@googlegroups.com. >>>> Visit this group at https://groups.google.com/group/machinekit. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>>> >>>> -- >>> website: http://www.machinekit.io blog: http://blog.machinekit.io >>> github: https://github.com/machinekit >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Machinekit" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to machinekit+...@googlegroups.com. >>> Visit this group at https://groups.google.com/group/machinekit. >>> For more options, visit https://groups.google.com/d/optout. >>> >>> >>> -- > website: http://www.machinekit.io blog: http://blog.machinekit.io github: > https://github.com/machinekit > --- > You received this message because you are subscribed to the Google Groups > "Machinekit" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to machinekit+...@googlegroups.com <javascript:>. > Visit this group at https://groups.google.com/group/machinekit. > For more options, visit https://groups.google.com/d/optout. > > > -- website: http://www.machinekit.io blog: http://blog.machinekit.io github: https://github.com/machinekit --- You received this message because you are subscribed to the Google Groups "Machinekit" group. To unsubscribe from this group and stop receiving emails from it, send an email to machinekit+unsubscr...@googlegroups.com. Visit this group at https://groups.google.com/group/machinekit. For more options, visit https://groups.google.com/d/optout.