heh, it's not about TI's support. It's about TI playing ball with the community. Instead of rocking the boat. Personally, I could say when I add the next feature to whatever - To go talk to my mom, because I don't want to hear it. But that wouldn't be very social would it ?
Yes, we can go back to and older config, but you people could also stop stepping all over the communities kernels, and then calling it your own. Right now, I have a stock image with 115M used memory right after a fresh reboot. I have sound, and driver for both sides of PRU modules ( remoteproc AND uio ), and I didn't even touch this image. Here, let me just show you this crap: debian@beaglebone:~$ lsmod Module Size Used by binfmt_misc 8862 1 usb_f_ecm 9336 1 g_ether 4976 0 usb_f_rndis 22191 2 g_ether u_ether 11898 3 usb_f_ecm,usb_f_rndis,g_ether libcomposite 43717 3 usb_f_ecm,usb_f_rndis,g_ether nfsd 261377 2 spidev 7523 0 omap_sham 21340 0 omap_aes_driver 19045 0 pwm_tiehrpwm 4706 0 tieqep 8758 0 pwm_tiecap 3652 0 omap_rng 4423 0 rng_core 7703 1 omap_rng c_can_platform 6602 0 c_can 9577 1 c_can_platform can_dev 11820 1 c_can snd_soc_davinci_mcasp 17079 0 snd_soc_edma 1290 1 snd_soc_davinci_mcasp snd_soc_omap 3058 1 snd_soc_davinci_mcasp snd_soc_core 155549 3 snd_soc_davinci_mcasp,snd_soc_edma,snd_soc_omap snd_pcm_dmaengine 5209 2 snd_soc_core,snd_soc_omap snd_pcm 83341 4 snd_soc_davinci_mcasp,snd_soc_core,snd_soc_omap,snd_pcm_dmaengine snd_timer 19788 1 snd_pcm snd 59495 3 snd_soc_core,snd_timer,snd_pcm soundcore 7637 1 snd spi_omap2_mcspi 11148 0 evdev 10695 1 uio_pdrv_genirq 3539 0 uio 8822 1 uio_pdrv_genirq pru_rproc 12632 0 pruss_intc 7223 1 pru_rproc pruss 9408 0 Why do I need all this garbage ? I didn't enable it, and I really do not want, or need it. debian@beaglebone:~$ free total used free shared buffers cached Mem: 504000 115864 388136 4344 16948 34548 -/+ buffers/cache: 64368 439632 Swap: 0 0 0 This is just sickening. Anyway, it gets old having to go over these images that used to be nice, clean, and tidy. I guess I'm just going ot have ot start building my own images again, improve them myself. And not share the changes ? Isn't that how this community is supposed to work ? On Fri, Jun 24, 2016 at 6:02 PM, Suman Anna <s-a...@ti.com> wrote: > Hi TJF, > > On 06/18/2016 10:23 AM, TJF wrote: > > Hi Suman, thanks for your statements. > > > > [Suman: Where do you use this from, I assume userspace? Using what - > Shared > >> DRAM or regular PRU DRAM.] > >> > > > > Yes, libpruio is a userspace library. I'm not familiar with your > > terminologie: Shared DRAM = SRam (12k@0x10000) and PRU DRAM = DRam > > (2x8k@[0x0|0x2000]), right? I use the later (similar to your solution). > > Yeah, same ones. I don't use SRAM for PRU Shared Data RAM, as I use it > to mean the regular on-chip memory. > > > > > [Suman: You don’t need to unload and reload the driver, the individual > PRUs > >> can be rebooted using sysfs bind and unbind without affecting the other > >> PRU.] > >> > > > > Reloading the kernel module for firmware updates is I what read several > > times at this forum. I didn't test yet. Sorry, if I confuse things here. > > Yeah, it has come to my notice that this was being suggested previously > on TI forum threads not only for PRUs but for DSPs or IPUs on other SoCs > as well. The bind/unbind does give specific control for a core. > > > > > John asked alreay: Where can we find a tutorial / example on updating > > firmware the correct way? A further question: often I reload just a part > of > > the IRam. I guess your concept doesn't support that? > > Why, it is supported. There are no distinctions made between IRAM, > DRAM0/1 or Shared DRAM. The ELF loader just goes by the program headers, > so if the new image only has a program header that loads into IRAM, then > it just loads that. > > > > > [Suman: As for remoteproc driver, it really doesn’t matter what > >> assembler/compiler is used for building a firmware image. Remoteproc > core > >> is standardized on ELF, and there is no reason to invent another > format. As > >> it is, the plain binary format is a problem for PRUSS since its address > >> space is not unified (Address 0 for both IRAM and local DRAM). I don’t > >> recall how prussdrv is managing this, or if they only deal with IRAM > from > >> the binary and leave the data sections for the application to copy over > the > >> interfaces to use Data RAMs. At the moment, all you would need is a > small > >> script to convert your binary into an ELF using objcopy to use with PRU > >> remoteproc driver.] > >> > > > > Seconding John: Where can we find a tutorial / example on how to load a > > fimware image cerated by the pasm assembler? > > I don't know if pasm assembler is still a supported tool by TI. If so, I > will work with Jason Reeder to try to get something documented on the TI > wikis or in PRU Software Support documentation. > > Anyway, here's some basic steps (thanks to a colleague) in converting a > bin file to an ELF image, > > 1. /* Convert your binary to prelim ELF */ > objcopy -I binary -O elf32-little --rename-section .data=.text > <input.bin> <output.tmp> > 2. /* Mark .text as executable, PRU remoteproc makes the distinction > between IRAM and DRAM0 based on the executable flags */ > objcopy -I elf32-little --set-section-flags .text=code,alloc,load > <output.tmp> > 3. Add a program header for loading the text > ld -n --accept-unknown-input-arch <output.tmp> -T linker_pru0.txt -o > prueth-pru0-firmware.elf --oformat=elf32-little -o <final-output.elf> > > An example linker_pru0.txt is as follows, > SECTIONS > { > .text 0x0 : { *(.text); } > .resource_table 0x0 : { *(.resource_table); } > } > > If you have a resource table binary data, that can be added in step 1 as > well, eg. > > objcopy -I binary -O elf32-little --rename-section .data=.text > --add-section .resource_table=<rtable.bin> <input.bin> <output.tmp> > > Obviously, a lot depends on what other data/sections you have within > your firmware in terms of your linker file and resource table section > placement. > > Once I add the evt->channel->host interrupt mapping to DT for MPU, the > need for a resource table for MPU-related interrupt handling will mostly > go away. Until then, the interrupt mapping needs to come through > resource table, or if thats too painful, let the firmware code deal with > the mapping. > > As for reloading a new non-ethernet firmware, > echo <pru-device> > /sys/bus/platform/drivers/pru-rproc/unbind > change correspoding firmware in /lib/firmware/ > echo <pru-device> > /sys/bus/platform/drivers/pru-rproc/bind > > > > > [Suman: Right, the basic infrastructure is already there and you would > need > >> only to build upon it. For eg., at the moment, all you would need is a > >> small kernel module, use pruss_request_mem_region to gain ownership of > PRU > >> memories, export it to userspace and use it however you want. The > >> interrupts would have to go through kernel though. Maybe it is the same > >> module that exports the above desired sysfs interfaces too.] > >> > > > > Am I reading right here? My message is: > > > > - Reduce resource consumption on a small SoC. > > > > And your advice is: > > > > - Add a further module to a bloated framework. > > It is about coming up with a framework that would satisfy both the > kernel and userspace needs as well. With libprussdrv, one simply cannot > use PRU from kernel-mode. Yes, there are gaps at the moment with the > current infrastructure, and I never said it is complete. > > Going by your philosophy, you don't need Linux drivers at all. Mmap > everything and do everything in userspace, why bother with the kernel at > all? /dev/mem is your friend. > > > > > Are you joking? > > > > Full sure, it's not only me who'd ask: Why should I spend time to extend > a > > resource consuming framework that changes every now and then -- why > should > > I start to follow a moving target, just to end up with a feature that I > > already have, working reliable since years? And why should hundred other > > developers do the same? > > > > It has been said already. From the BBB point of view your project has > > nothing to offer. There are no MPU, DSP, ... processors. It's just about > > ARM and PRU. > > The TI kernel is not just about BBB, there are 4 other SoC families and > multiple boards where PRU is now supported. And we do have userspace > needs as well for Industrial usecases, they will get addressed in the > upcoming months. You might very well find a thing or two w.r.t UIO in an > upcoming Processor SDK release. > > Your IPC is too slow. The complete topic is just about > > replacing a "hack" by a "real Linux driver". And this isn't worth to > spend > > four times more memory and additional boot time and additional > development > > man power, just to get what we have already. > > > > When you aim to develop software for the main stream, replacing a proven > > solution, than YOU have to care about existing standards and start from > > that point.'This means redo your concept. > > And may I know how would you have done it if you were to redo it from > scratch supporting both kernel and userspace? You are only looking at it > from userspace angle, and as long as you stick to that, any kernel > framework will indeed look like bloat. > > > > > Otherwise, when you want to retain with your extisting infrastructure, > it's > > OK as well. But: > > > > - Make it optional. Place it in a separate package. Leave the main > > stream! > > Define mainstream. What's mainstream for you is downstream for me. And I > am not aware until recently that the TI kernel is getting merged into > BBB kernel. I don't even know the merge cycle that BBB kernel is > following. The kernel changes I add are geared towards internal TI > releases, and there's always a potential downside for merging the kernel > at random points. > > > > > Let the users choise if they want to add and use your additional magic > and > > if they want to spend their resources on that. > > It is optional, it is not even enabled by default in > omap2plus_defconfig. If one doesn't want to spend time, one can always > go back to how they were using it with whatever patches they had before. > > > And do not block TIs kernel > > development nor the BBB PRUSS development with your experimental project. > > > > Please note: the PRUSS are an important topic. They're a major advantage > > the BBB has over its direct competitors, like RPi. When your project > > complicates and slows down the PRUSS development, this endangers the > > complete Beaglebone project. > > I understand that it's frustrating that the new framework does not > address all your needs at the moment, and this is an active development > so I will be continuing to close the gaps during the year. > > Please work with Jason Kridner for any further issues or concerns, and > he can work internally within TI to raise requirements or prioritize > features for bridging the gaps. You can always post queries on the TI > E2E forum for continued support. > > regards > Suman > > -- > For more options, visit http://beagleboard.org/discuss > --- > You received this message because you are subscribed to the Google Groups > "BeagleBoard" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to beagleboard+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/beagleboard/576DD831.3000705%40ti.com. > For more options, visit https://groups.google.com/d/optout. > -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/CALHSORo3Owydt2X%3D59OOa84PotpO8rUDAPKAnB1nMOrWyiMWOQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.