**** BEGIN LOGGING AT Wed Jan 29 02:59:57 2020 Jan 29 03:08:45 TIDL uses the Jacinto stuff, right? Jan 29 03:09:23 The git channel is up again. Jan 29 03:14:34 what "Jacinto stuff" ? Jan 29 03:16:13 Jacinto is the marketing name for TI's automotive infotainment and ADAS products, which includes the dra7xx (the automotive version of the am57xx) Jan 29 03:17:05 Oh. Jan 29 03:17:16 I thought TIDL and Jacinto-Caffe were similar. Jan 29 03:22:24 you didn't say "Jacinto-Caffe", you said "Jacinto". "Caffe-Jacinto" (as its actual name is) seems to be a fork of Caffe (some open source deep learning framework), presumably (based on the name) to support TI's Jacinto processors, although it's not terribly clear to me Jan 29 03:24:23 Okay. CNN/RNN stuff! Jan 29 03:24:25 "The TIDL device conversion tool is compatible with trained models from BVLC/Caffe, TensorFlow, NVIDIA/Caffe and TIDSP/Caffe-Jacinto. Each of these tools has their own strengths; you can choose the one that suits your requirements." Jan 29 03:24:40 Okay. Jan 29 03:25:01 Hey, I am learning now how to use that EO, executors, and object files. Jan 29 03:25:35 @zmatt: Think about before and think what is to come! Me learning. Phew! Jan 29 03:26:01 I have no idea what you're talking about Jan 29 03:26:11 In TIDL! Jan 29 03:26:59 oh I see you've again dropped whatever you were doing to start on something new and unrelated, in an effort to ensure there's no chance of actually acquiring any level of proficiency in any subject Jan 29 03:27:07 ok Jan 29 03:27:17 The api needs to be used for the conversion of ideas to meet requirements. I mean, if the machine can "learn", this is cool. Jan 29 03:27:18 Ha. Jan 29 03:27:47 Think if I can make a TIDL bot! Now, that is cool. Jan 29 03:28:17 set_ first learn what you have. Then worry about the rest. Jan 29 03:28:39 I saw someone on Element14 make something w/ it already. It was an object placement mechanism for when driving and backing up. Jan 29 03:28:56 GenTooMan: Okay! Jan 29 03:29:50 try organizing things a bit so your learning curves are speed bumps Jan 29 03:30:42 Yea boy! Jan 29 03:57:46 If I wanted to import tidl, would I import it as ti-tidl? Jan 29 03:58:15 I found some python bindings and I was going to see what happens when I run some python bindings on the AI. Jan 29 04:00:05 I see in C/C++, you just add our .h files yourself and the namespace but I am receiving an error: ImportError: No module named 'tidl' Jan 29 04:00:34 The error is listed only for the python bindings. Jan 29 04:01:27 The C/C++ source works w/ that Beagle Makefile. I will look for this makefile later. Jan 29 04:11:36 Never forget. I just understood. The python binding is called b/c of cv2 or however it was implemented. Jan 29 05:18:00 I just tested the TIDL application from the AI w/ a Microsoft camera. It works! Jan 29 05:19:03 It brought me to the mjpg-streamer online page and then I typed in something to see the stream alone. Jan 29 05:19:05 Neat! Jan 29 05:19:24 The info. kept telling me cellular telephone. Jan 29 05:19:34 I was holding up a can of Dr. Pepper. Jan 29 05:19:45 But. I can change things. Jan 29 05:21:02 I think it was b/c of it being in front of the ole 'puter. How far should the object be away from the camera? Jan 29 05:22:09 I mean, is there a way to change the optimum distance w/ an already focused camera lense? Jan 29 05:30:43 Is there an infiniti mirror function, i.e. showing the camera view to the screen of mjpg-streamer? Jan 29 05:39:46 I see they added a bunch of new label info. Jan 29 05:41:17 Animals! Jan 29 05:45:18 Should I bring in the AI to the Maker Faire for making people realize they are just another screen visual w/ a label? Jan 29 05:53:29 Okay, okay. I think I can do something w/ the hunters in my life w/ this source and what is offered due to this source. Jan 29 05:54:30 I see adding specific animals to the TIDL api is helpful for these people that hunt. Jan 29 05:56:36 I mean. Getting home based streams of bears instead of deer would be helpful to hunters. Jan 29 05:56:58 I am going to ask around and then who knows? I could score my first gig. Jan 29 06:05:03 Do you know if they added deer/buck yet? Jan 29 06:10:58 Five point vs. two point might get me to eat steak once every blue moon...heh? Jan 29 06:13:32 TIDL uses EVE and the DSP Jan 29 06:15:25 IMO (sorry, Jason) BBAI is too immature Jan 29 06:16:34 Oh. It is still a nice board w/ many attributes that can be used. Jan 29 06:17:04 Hey ds2: Do you know if they added the deer and/or buck to the TIDL .json files yet? Jan 29 06:17:20 set_:if you mean for hunting purposes, AFAIK, no. Jan 29 06:17:25 Oh. Jan 29 06:17:30 most of the TIDL stuff I see are using stock datasets Jan 29 06:17:47 you can try training :D Jan 29 06:18:06 Is training the Caffe-Jacinto framework? Jan 29 06:18:19 no Jan 29 06:18:23 I was thinking that I could try one day but I am not ready now. Jan 29 06:18:29 Caffe is yet another CNN framework Jan 29 06:18:33 Aw. Jan 29 06:18:34 Okay. Jan 29 06:18:47 Darknet, Tensorflow, caffe, etc Jan 29 06:19:09 So, there must be something I am missing. ds2: Do you dislike hunting? Jan 29 06:19:27 no, nothing against hunting Jan 29 06:19:50 Oh. I misunderstood then. Jan 29 06:20:10 if you using it to id stuff for hunt, it needs to work very well Jan 29 06:20:25 So, tidl is not for training. It is stock images of items that have a similar feel when being video taped? Jan 29 06:20:29 can't have a t-shirt image of a buck be id'ed as such :D Jan 29 06:20:35 Right. Jan 29 06:20:44 I get it. I am thinking that this would be a notifier. Jan 29 06:21:03 TIDL is for inference only Jan 29 06:21:06 Not an actual weapon that shoots if the "deer" or buck is in range. Jan 29 06:21:07 Oh. Jan 29 06:21:08 okay. Jan 29 06:21:27 inference. I infer that you are what you say you are. Jan 29 06:21:28 Got it. Jan 29 06:21:45 it doesn't have to be a weapon Jan 29 06:21:59 Even video of animals might come across as incorrect? Jan 29 06:22:23 i suppose if you get permission from the mgr, you can goto a local Cabelas and take pictures and use that for training Jan 29 06:22:35 Like w/ a notification .txt file or something, I might see one thing but the camera w/ TIDL makes an inference on its attributes? Jan 29 06:23:06 sure you can do that but that's no different from an animal id app Jan 29 06:23:15 Those attributes may crowd my .txt file w/ the incorrect types of inferences. Jan 29 06:23:38 ds2: They have animal id apps? Jan 29 06:23:42 Odd. Jan 29 06:23:47 yes Jan 29 06:23:50 Hmm. Jan 29 06:23:55 there is a tensorflow app for identifying breeds of dogs Jan 29 06:24:19 I saw there was a .json file w/ the TIDL api and it had different breeds of dogs in it. Jan 29 06:24:43 it isn't the .json file that's important. it is just the labels Jan 29 06:24:51 you need the corresponding weights for the NN Jan 29 06:25:00 Oh. Jan 29 06:25:12 So, these weights are the learned aspect to the CNN? Jan 29 06:25:19 yep Jan 29 06:25:52 Okay. I mean, is there a way to grasp this concept or am I attempting privileged info. gathering? Jan 29 06:26:05 what do you mean? Jan 29 06:26:08 Um. Jan 29 06:26:17 do you know what a CNN is? Jan 29 06:26:23 Can I get this info. or should I wait until it is freely available? Jan 29 06:26:29 Convoluted Neural Network? Jan 29 06:26:38 Convolutional Neural Network Jan 29 06:26:42 Oh. Jan 29 06:26:44 Sorry. Jan 29 06:26:54 Next question - do you know what convolution is? Jan 29 06:26:58 No. Jan 29 06:27:08 okay. do you know what a Neural Network is? Jan 29 06:27:26 Neural Network: I set of networks that act as one? Jan 29 06:27:41 trying to establish a base line Jan 29 06:27:44 no Jan 29 06:28:15 I do not know the exact definition. I should read more on this subject but I am just going w/ what is offered now to me while searching for TIDL. Jan 29 06:28:34 I have not read a lot on Deep Learning w/ embedded systems and I do not put these libraries on my computer. Jan 29 06:28:34 a NN is something that takes input numbers multiples each one by a weight and the results are summed Jan 29 06:28:43 the output of that will be another set of values Jan 29 06:28:46 Oh. Like a matrix? Jan 29 06:28:54 simplified matrix Jan 29 06:29:31 I know these ideas have been around for many years but it keeps coming back as a separate term. Jan 29 06:29:39 Deep Learning is just multiple neural networks feeding into another one Jan 29 06:30:10 Okay. So, many libraries are being used to make one exact portion of need met? Jan 29 06:30:31 a CNN is a specific type of NN for use with images (and maybe sounds). You convolve the image with different kernels, to reduce the data and then feed it into a NN Jan 29 06:31:13 So, it is like adding 50 images to the matrix and it gathers how those 50 images are alike? Jan 29 06:31:13 no there are many implementations of it...TF is one, TIDL is another, Darknet is another, Caffe is another, etc...they all do the same thing...depends on how disgusted you are with the implementation details Jan 29 06:31:34 sort of.... a pure NN is closer to that Jan 29 06:31:52 a CNN tries to simplify things by convolving it with specific kernels (found during training) Jan 29 06:32:18 convolving is a process of finding features that look like your kernel Jan 29 06:32:32 When you type kernel, that is the gathered sum? Jan 29 06:32:41 no Jan 29 06:33:05 Well, the sum of training? Jan 29 06:33:14 not sure of a quick way to explain a kernel... it means something specific to signal processing folks Jan 29 06:33:26 Okay. No issue. I can look it up later. Jan 29 06:33:28 and is completely unrelated to say a Linux Kernel or even a corn kernel :( Jan 29 06:33:37 Not corn. Hell? Jan 29 06:33:40 Ha. Jan 29 06:33:44 I gave a talk on the basics stuff last year Jan 29 06:33:48 Neat. Jan 29 06:33:53 someone told me there is a youtube video of it Jan 29 06:33:53 How did that go? Jan 29 06:33:56 let em see if I cna find it Jan 29 06:34:00 Okay. Jan 29 06:34:20 So, people were stealing you and your data before you gave it out. That sucks. Jan 29 06:34:40 "Look at this person w/ all that info." Jan 29 06:34:47 no, it is part of the conference Jan 29 06:35:51 So, you agreed to be video taped in a conference? Jan 29 06:36:02 Or, is that part of free press? Jan 29 06:37:08 What is the beagle Makefile? Jan 29 06:37:19 I was looking for it. I could not find it. Jan 29 06:37:43 I give up... that site is hard to search Jan 29 06:37:57 someone told me they saw it Jan 29 06:39:41 I can wait. No issue. Just post and I will scroll back if I crash on my couch before I have read it. Jan 29 06:40:09 Or not. Jan 29 06:40:11 No issue. Jan 29 06:42:27 I see all these people now are supporting the evolution of DL, NN, and other related terminology. Jan 29 06:42:48 it is buried in here - https://www.youtube.com/user/socallinuxexpo/videos Jan 29 06:43:04 it is all an alphabet soup Jan 29 06:43:23 Think I have the slides up if not, I'll eventually get it posted :D Jan 29 06:43:36 It has been a process. I read somewhere, as I paraphrase, "DL is nothing new and as it turns out, it has been reinveted many times." Jan 29 06:44:02 yes, DL itself is nothing new. What is new is the availability of cheap computing power Jan 29 06:44:09 Aw. Jan 29 06:44:21 it is just a lot of multiple and adding Jan 29 06:44:40 It makes sense that now is a "memorable" time in computer land. Jan 29 06:44:47 GPUs are great for that but that is also done in a lot of video stuff hence EVE...DSPs do a lot of convolution hence the DSP part Jan 29 06:45:13 Aw. Jan 29 06:46:00 I know nothing about DSPs or EVEs. I jumped on board not knowing what anything was at first. I still may or may not know how calculators work. Jan 29 06:46:08 Ha. Jan 29 06:46:47 I was purchasing books and soaking things up to learn how not to mow grass. Jan 29 06:47:03 TIDL has made it worth it so far. Jan 29 06:48:16 ds2: That training stuff you are discussing seems very interesting. I would pick up a book on training DL techniques but how would I find one of reasonable price that is worth a gold mine? Jan 29 06:48:51 You know that is not going to be easy for DSPs or this EVE stuff. Jan 29 06:49:20 I see how they have done it... it is sorted by room - somewhere in this long video is the talk - https://www.youtube.com/watch?v=67YZ1ZhVSQI Jan 29 06:50:25 set_: there isn't a good book... a lot of them goes way deep in math... training is basically brute force - try different things and look for a min or a max (depending on how it is phrased)...hence the need for a lot of processing Jan 29 06:50:49 Six hours down the road, which one should I look for? Jan 29 06:50:51 Aw. Jan 29 06:51:02 Math! Jan 29 06:51:13 the one on machine learning :D heheheh Jan 29 06:51:47 Oh. Okay. Well, I guess I could skip around and find you and your speech. This should be neat. ds2: Is it interesting? Jan 29 06:52:16 I donno... Jan 29 06:52:35 Oh and ds2: are there more people that show up or is it just those three people? Jan 29 06:53:09 I mean. Are people allowed to interrupt or chime in? Jan 29 06:53:19 Do people just walk in during the speech? Jan 29 06:54:10 yes Jan 29 06:54:55 Boo! Jan 29 06:55:05 Is that okay w/ you? Jan 29 06:56:28 sure Jan 29 06:56:38 easier then just rambling on Jan 29 06:56:38 The TIDL chapter from the SDK is down on my end. Jan 29 06:56:41 Oh. Jan 29 06:56:45 That makes sense. Jan 29 06:56:48 interactive is always better Jan 29 06:57:00 Yea. I think you are right. "Now, where was i?" Jan 29 14:44:52 zmatt: hmmm.... got the overlay installed, rebooted, no symlink Jan 29 14:45:20 added the modprobe.d/uio.conf and went ahead and manually modprobe'd uio_blah_blah_irq Jan 29 14:45:26 no symlink Jan 29 14:45:54 file /etc/udev/rules.d/10-of-symlink.rules is there Jan 29 14:46:29 the name has a slash. would that matter? does this get logged anywhere? Jan 29 15:00:10 jkridner: check if it shows up in /sys/bus/platform/drivers/uio_pdrv_genirq/ Jan 29 15:00:50 that directory is there. Jan 29 15:01:33 oh, after adding the modprobe.d file you may need to run: sudo update-initramfs -u Jan 29 15:02:11 yeah the directory is there because you manually modprobed it, but it should contain symlinks for devices it found Jan 29 15:05:56 e.g. on our development system, where uio_pdrv_genirq is used for all pwmss instances, two pieces of shared memory, and some other stuff: https://pastebin.com/raw/Sp03Rm9y Jan 29 15:15:32 zmatt: k, it is there now! Jan 29 15:15:39 with symlink? Jan 29 15:15:50 in /dev/uio/ Jan 29 15:15:54 /dev/uio/pru-shmem Jan 29 15:16:01 there ya go :) Jan 29 15:16:03 how did that work with the leading slash? Jan 29 15:16:10 leading slash? Jan 29 15:16:17 /dev/uio Jan 29 15:16:29 huh... guess after the 2nd slash it knows it isn't a command. Jan 29 15:16:34 IRC client, that is. Jan 29 15:17:06 oh no idea, that's IRC client dependent... I would need to escape it by writing "/ /dev/uio-pru-shmem" Jan 29 15:18:16 hmmm.... opening offset 0 of /dev/uio0 didn't work. Jan 29 15:18:34 ? Jan 29 15:19:27 is the mapping from 0x4a300000 ? Jan 29 15:20:54 oh, you know what, it doesn't look contiguous, does it? Jan 29 15:21:09 mmap offset needs to be PAGE_SIZE * index Jan 29 15:21:13 so, If I tried to allocate 0x10016 bytes at offset 0, I guess it'd fail? Jan 29 15:21:35 how do I know PAGE_SIZE? Jan 29 15:21:42 PAGE_SIZE is 4096 Jan 29 15:22:02 sounds a bit more confusing than the tact I took. Jan 29 15:22:15 no, this is exactly the same for all uio devices Jan 29 15:22:20 regardless of the specific driver used Jan 29 15:22:33 so this is common across uio_pdrv_genirq, uio_pruss, uio_pru_shmem Jan 29 15:23:20 the requirement for everything to be page-aligned is inherent in how memory mapping works. the fact that offset = index * 4KB is an ugly quirk of uio Jan 29 15:23:21 so, if I want to mmap the shared data ram, what is my offset? Jan 29 15:24:57 dram2 per the reg-names Jan 29 15:25:22 index << 12 where index is the index in the list of memory regoins declared in the "reg" property in DT... a bit nicer would be to use a bit of code to check the sysfs information to determine the index based on name Jan 29 15:25:36 or, if you use my second example (one memory region per device), offset is always zero Jan 29 15:25:47 that's another advantage of that approach Jan 29 15:35:11 I can probably make a quick C++ example of how to do lookup by name Jan 29 15:36:10 (which would also give the size of each region) Jan 29 15:38:35 mmap(0, 16, PROT_READ | PROT_WRITE, MAP_SHARED, "/dev/uio0", 0x2000); returns -1 Jan 29 15:38:54 ehm, that's not how mmap works Jan 29 15:39:13 and I question your compiler flags if that compiled Jan 29 15:39:37 since you're passing a char* to an int argument Jan 29 15:39:37 mem_dev = open(driver, O_RDWR | O_SYNC); Jan 29 15:39:37 volatile int *shared_dataram = mmap(NULL, Jan 29 15:39:37 size, Jan 29 15:39:37 PROT_READ | PROT_WRITE, Jan 29 15:39:37 MAP_SHARED, Jan 29 15:39:37 mem_dev, Jan 29 15:39:37 alloc_offset Jan 29 15:39:38 ); Jan 29 15:39:47 I was trying to provide a shorthand. Jan 29 15:39:49 ah Jan 29 15:40:06 size_t size = 16 Jan 29 15:40:24 off_t alloc_offset = 0x2000 Jan 29 15:40:50 length should be rounded up to a multiple of PAGE_SIZE (for mmap in general) Jan 29 15:41:02 oh? Jan 29 15:41:25 didn't cause me problems before. Jan 29 15:41:31 strange Jan 29 15:41:50 it is impossible to map memory in units smaller than pages Jan 29 15:43:45 k, I'm no longer getting -1 actually.... just seg faults. Jan 29 15:44:50 can you just pastebin your entire test? Jan 29 15:45:38 sure. Jan 29 15:57:25 k, size = 16 worked. Jan 29 15:58:13 https://gist.github.com/jadonk/93565b42b994fcd48e4891b6f657cf94 Jan 29 15:59:25 https://pastebin.com/b3EMmSiX this seems to work for me Jan 29 15:59:45 (my uio_mmap wrapper implicitly rounds size up to a multiple of 4KB) Jan 29 16:00:58 but... all of this should be exactly the same as it is with the pru_shmem driver (assuming you declare a similar device in DT) Jan 29 16:01:45 exposing all three memory regions to userspace was just an example, if you only want dram2 to be shared to userspace, just declare that (see also my second example) Jan 29 16:02:19 and please don't use "/dev/uio0" Jan 29 16:02:25 use "/dev/uio/pru-shmem" Jan 29 16:02:42 uio numbering is arbitrary and will depend on which other uio devices have been configured Jan 29 16:02:51 so you should absolutely never hardcode uio numbers Jan 29 16:03:07 that's exactly why udev is used to create symlinks Jan 29 16:03:36 sure Jan 29 16:04:08 (without symlinks, one should use libudev to locate the desired device) Jan 29 16:04:34 k Jan 29 16:05:18 I'll get this pushed out for AM3. I'll have to come back and remove my junk from AM5. Jan 29 16:05:24 thanks! Jan 29 16:05:33 yeah this should work on any device Jan 29 16:05:37 the allocation offsets are still really odd to me, but I get it. Jan 29 16:05:57 they *are* really odd, I have no idea what the designers of the UIO framework were thinking Jan 29 16:06:14 I think we were going to try to grab some namespace for our kernels in /dev/bone.... not sure if this symlink should really go there. Jan 29 16:07:04 the reason it's index * PAGE_SIZE btw is because the underlying syscall actually expresses offset and length in pages rather than bytes, hence glibc will divide both arguments by PAGE_SIZE before calling the kernel Jan 29 16:07:10 that's really more of a cape namespace, if we ever get around to doing that. Jan 29 16:07:15 maybe a good GSoC project. Jan 29 16:08:05 ideally you'd want shared memory regions declared to match the actual pru application, so userspace only gets access to those parts that the pru firmware expects userspace to be meddling with Jan 29 16:19:06 thinking about using a bbb to interface with an RS-485 adapter that plugs into my variable frequency drive Jan 29 16:19:09 to run a large metal lathe Jan 29 16:19:17 can hook up some push buttons for stop, reverse, etc Jan 29 16:26:39 sure, just hook up an rs485 transceiver to an uart of choice Jan 29 16:32:44 thats the plan Jan 29 18:12:18 its nice ot have a choice of UARTS, but you may find that you have some issues with TXEN .. I always did :/ So we used USB-UART bridges instead :) Jan 29 18:12:44 i have a USB-RS-485 backup Jan 29 18:12:55 you may find your VSD is quite particular about data integrity ... the ones I used did! :D Jan 29 18:13:06 that said, parsing messages in perl .. ugh. Jan 29 18:13:20 hmm -- my VFD is a cheap chinese one Jan 29 18:13:34 I really wish I'd embedded a SoC as an IO 'broker' Jan 29 18:13:44 if you need bidirectional half-duplex communication and have fairly right turnaround time, I'd use PRU Jan 29 18:13:51 ^ that Jan 29 18:13:53 oh the PRU ? Jan 29 18:14:02 i have heard some things about the PRU-ICSS ;-) Jan 29 18:14:21 I mean... you were the one trying to get a driver for it into openbsd weren't you? Jan 29 18:14:23 the PRUs are awesome peripherals .. I still have a trial on my ToDo s Jan 29 18:15:54 gettin an ACK from a VFD is pretty important when you set movement servos into action ;D Jan 29 18:15:56 anyway, it depends on how tight your turnaround time is... Jan 29 18:16:08 i wrote the driver yeah Jan 29 18:16:14 i was being faceitous (sp) Jan 29 18:16:18 ok :) Jan 29 18:16:18 i know that thing front and back Jan 29 18:16:25 :) ok Jan 29 18:16:26 such a cool piece of ahrdware Jan 29 18:16:49 just a few words of caution from one who worked in industrial control ;p Jan 29 18:17:13 self-destruct really is a thing :) Jan 29 18:17:37 haha Jan 29 18:17:59 it probably also wouldn't be very hard to arrange for automatic driver-enable in hardware (i.e. enable driver when TxD goes low, disable when TxD has been high for a specific amount of time) Jan 29 18:19:49 http://www.ti.com/lit/ug/tidubw6/tidubw6.pdf Jan 29 18:22:30 I'd expect the linux kernel would still be able to manage the driver enable within at most a few tens of microseconds? (might need an RT kernel and set appropriate kernel thread priorities to ensure there are no outliers) Jan 29 18:47:15 yeah I've seen a few kernel driver attempts at implementation, including GPIO, but first issue is usually physical hardware support Jan 29 18:47:26 most driver chips need that TXEN signal :) Jan 29 18:47:30 [unsurprisingly] Jan 29 18:59:23 both omap_serial and 8250_omap support TXEN ... usually via RTS pin, I think one or both also support using a gpio, but I can't remember the details Jan 29 19:01:06 zmatt well that's far better than can't be bothered with the details Jan 29 19:05:50 8250 in general (including 8250_omap) supports using the RTS pin in kernel 4.14 at least, no gpio support Jan 29 19:06:11 omap-serial supports gpio only (but that's not really a restriction) Jan 29 19:09:22 :q Jan 29 19:09:29 whoops Jan 29 19:41:28 yeah the RTS signal is wrong though .. whether you can bastardise the UART to mis-represent the signal idk .. Jan 29 19:41:50 (since the TXEN is actually an output buffer enable control) Jan 29 19:42:23 this is actually where RS-422 is marginally superior in being full-duplex, at the cost of two extra IO lines Jan 29 19:42:57 similar to when we went USB3.0 Jan 29 19:43:16 RTS is simply used as a gpio for this application, and using the RTS signal for RS485 TXEN is common practice Jan 29 19:44:13 most likely because of all the model control signals an uart might produce, it is the one most likely to be pinned out Jan 29 19:44:25 *modem control Jan 29 19:44:54 indeed, on the BBB for all but one uart, it is the only modem control output signal pinned out Jan 29 20:15:59 mhmm Jan 29 20:16:15 ah, yes, because you've got pinmux control of the pad, gotcha. Jan 29 20:19:52 only "classic" modems need most of the IO pins available on the old PC. now they are rarely used, except RTS and CTS for handshaking or controlling an RS485 buffer interface. Jan 29 20:20:33 sorry stating the obvious again (need to remove the captain obvious cape). Jan 29 20:21:37 haha ;D nw Jan 29 20:35:50 veremitz: has nothing to do with pinmux control of the pad, in fact if you assume every pin can be used as gpio (as is the case on the AM335x) then there'd be no reason to use RTS. The reason RTS is traditionally used is because you *can't* always assume that there's even such a thing as "gpio" available Jan 29 20:36:08 using RTS requires nothing outside of the UART's registers Jan 29 20:37:26 that's presumably also why omap_serial (which is specific to TI SoCs) uses a gpio while the 8250 driver (which is used on many platforms and architectures) uses the RTS pin Jan 29 20:46:18 mkay Jan 29 21:58:29 man, rpmsg is a lot simpler than I expected. not sure of the performance. Jan 29 22:00:25 well you can forget about the "real-time" part of programmable real-time unit :P Jan 29 22:00:53 since messages are delivered via DDR memory, and pru reading from DDR is slow and non-deterministic Jan 29 23:28:31 zmatt does that mean that one has to read and write with DDR from the PRU in bursts? Jan 29 23:29:50 write to DDR is not a problem, since writes are fire-and-forget Jan 29 23:31:41 for reads you are indeed well-advised to try to read in large bursts whenever applicable Jan 29 23:39:26 ddr read latency from pru on a BBX15: https://www.graphpad.com/temp/quickcalcs/1580341093242_linearRegressionResults.png Jan 29 23:43:04 ditto on a beaglebone: https://www.graphpad.com/temp/quickcalcs/1580341337410_linearRegressionResults.png Jan 29 23:53:26 I just remembered that I once observed some strange additional latency on first access (maybe because of my use of SLP), so actual latencies might be *slightly* lower. this is what I get on the BBX15 if I take the time for 2 reads and subtract the time for 1 read: https://www.graphpad.com/temp/quickcalcs/1580341602182_linearRegressionResults.png .. the line is slightly lower Jan 29 23:53:38 (if the images don't load, try refreshing... the site seems a bit buggy) Jan 30 00:44:30 nicer plots: Jan 30 00:44:40 BBX15: https://docs.google.com/spreadsheets/d/e/2PACX-1vQDksUxSTx0ixNCrILcMCGtKLLYQIii3NmvhO7n5_P9I_FHNuFy0iRKNjMCOeAkKTzs__9sh5_g8HQR/pubchart?oid=2015072984&format=image Jan 30 00:44:45 BBB: https://docs.google.com/spreadsheets/d/e/2PACX-1vQDksUxSTx0ixNCrILcMCGtKLLYQIii3NmvhO7n5_P9I_FHNuFy0iRKNjMCOeAkKTzs__9sh5_g8HQR/pubchart?oid=56537411&format=image Jan 30 00:46:57 interesting that the minimum/typical read latency on the BBX15 is higher than on the BBB (more so than can be explained by the modest increase in PRU clock frequency) Jan 30 00:48:47 memory controller differences? Jan 30 00:49:13 yeah DMM undoubtedly adds some latency Jan 30 00:50:03 (which is why the cortex-a15 has direct connections to EMIF that bypass DMM) Jan 30 00:50:55 I also wouldn't exclude the possibility that travel time on the L3 might be longer since it's bigger and more complicated (otoh it might also be shorter due to higher clock frequency) Jan 30 02:18:33 typical propagation time in circuits is ~1/3c correct? Jan 30 02:19:20 you mean wire delay inside integrated circuits? how the fuck should I know :D Jan 30 02:19:44 I guess I'll ask in open fpga ... :D Jan 30 02:20:09 I do vaguely remember reading it behaves more like diffusion than like transmission lines Jan 30 02:20:41 suggesting capacitance is the major factor Jan 30 02:21:41 anyhow that adds to latency the wire delay between point A and B if it goes off chip it's bigger but even on the chip it creates some delay issues. Jan 30 02:22:45 sure, so presumably there's a limit to how much physical distance you can travel on an interconnect link before you need to insert a pipeline point Jan 30 02:24:25 or use thicker traces :P Jan 30 02:25:30 right use more real estate. I wonder what the impedance matching is like on those lines. Jan 30 02:30:35 hmm would it make more sense to use the PRU to transfer data between an FPGA and the BBB? Jan 30 02:30:59 more than... ? Jan 30 02:31:56 than using say the SPI bus if you have a few megabytes of data to transfer. Jan 30 02:32:04 per ? Jan 30 02:32:51 It's preferable less than a second. Having high speed A2D's generates a LOT of data fast. Jan 30 02:34:27 I'm trying to capture wave forms and provide analysis too. Jan 30 02:36:32 there are lots of options... GPMC is often used to interface with FPGAs but conflicts with eMMC, SPI has decent speed, McASP might actually also be an interesting option, PRU won't be able to get the same clock speed as e.g. SPI but it could receive e.g. 8 bits per clock cycle Jan 30 02:36:52 actually maybe it can get the same clock speed Jan 30 02:37:09 my brain was off by a factor of two for a moment Jan 30 02:37:33 zmatt much better than 10. Jan 30 02:37:45 SPI is max 48 MHz Jan 30 02:38:08 on the BBB Jan 30 02:40:53 I suppose looking at pins available the PRU has access to might be a wise start. Testing with a BBB will need to keep speed down because of the header etc. Jan 30 02:41:21 you may like the PRU tab of my pins spreadsheet -> https://goo.gl/Jkcg0w Jan 30 02:42:30 coloring of the BBB expension header pins (column B) indicate conflicts with on-board stuff: green = (hdmi) video, red = (hdmi) audio, eye-stabbing purple on grey background = eMMC Jan 30 02:45:00 pru1 has i/o 0-11 available as a nice contiguous block (all on P8, conflicting with video) Jan 30 02:45:35 pru0 has i/o 0-7 available as a nice contiguous block (all on P9, conflicting with hdmi-audio) Jan 30 02:53:47 It's always something... in the way :D Jan 30 02:53:55 sure, but do you care? Jan 30 02:54:00 especially about hdmi audio Jan 30 02:58:43 hdmi audio? Jan 30 02:58:56 The BBB can be used as an HDMI audio thing? Jan 30 02:59:03 it has an hdmi output Jan 30 02:59:18 Yea. I never thought about it until you just typed it. Jan 30 02:59:26 hdmi includes audio Jan 30 02:59:36 So, oh. I got it now. Jan 30 02:59:37 Neat. Jan 30 02:59:54 I was wondering about that when I tried to make alsa work years ago. **** ENDING LOGGING AT Thu Jan 30 02:59:57 2020