ArmbianHelper changed the topic of #armbian to: armbian - Linux for ARM development boards | www.armbian.com | Github: github.com/armbian | Commits: #armbian-commits | Developer talk: #armbian-devel | Forum/Twitter feed: #armbian-rss | Logs: -> irc.armbian.com
<Armbian-Discord> <c​lever> well, its using the strength of the PIO, you can take a stream of 32bit samples, and just clock them out some gpio at any defined rate you want, up to 1 sample per clock
<Armbian-Discord> <c​lever> hdmi/dvi is 4 differential lanes, but the rp2040 lacks differential pins, so its cheating by just bit-banging 8 pins at once and PIO can easily take 8bit chunks from each 32bit sample, and shift it out 8 pins on every clock
<Armbian-Discord> <c​lever> so the only hard part, is creating an array of 8bit samples, and keeping ahead of that playback
<Armbian-Discord> <T​onymac32> I've played with similar configurations before
<Armbian-Discord> <T​onymac32> https://www.parallax.com/propeller-1/
<ArmbianHelper> ^ Propeller 1 - Parallax
<ArmbianHelper> ^ 32-bit PSoC™ 5 LP Arm® Cortex®-M3 - Infineon Technologies
<Armbian-Discord> <c​lever> was the propeller just some arm-m cores? or something special?
<Armbian-Discord> <T​onymac32> It was a spaecial parallax-designed core
<Armbian-Discord> <c​lever> ah, same as the PIO then
<Armbian-Discord> <T​onymac32> I would guess it took some queues from the Scenix SX
<Armbian-Discord> <T​onymac32> the SX was a 50 MHz micro from forever ago that was designed to implement serial protocols in software
<Armbian-Discord> <T​onymac32> Parallax aquired it
<Armbian-Discord> <c​lever> there are ~3 things in PIO that allow continuous sample playback 1: there is the out 8 opcode, which just takes 8bits from the output shift register, and presents it on 8 gpio 2: the PIO can be configured to auto-pull from a FIFO when the OSR runs dry, so you can do 8bits on every clock, and never pause 3: there are loop start/end registers you can configure, so the processor will loop automatically without a jump
<Armbian-Discord> opcode, saving another cycle on each loop
<Armbian-Discord> <c​lever> it also has some other opcodes that let it implement more complex bi-directional protocols, but hdmi/dvi doesnt need those
<Armbian-Discord> <c​lever> the other major factor, is that while the rp2050 is rated for 125mhz usage, the dvi demo overclocked it beyond 400mhz, lol
<Armbian-Discord> <T​onymac32> luckily my monitors still have VGA ports, so I can use an ESP32 http://www.fabglib.org/
<ArmbianHelper> ^ FabGL: FabGL Library
<Armbian-Discord> <T​onymac32> in case you wanted to also emulate windows 3.0 on the same device 😄
<Armbian-Discord> <c​lever> https://www.youtube.com/watch?v=GHDh9RYg6WI
<Armbian-Discord> <c​lever> a baremetal 3d demo i wrote, running on the rpi 1
<Armbian-Discord> <T​onymac32> baremetal videocore? or arm?
<Armbian-Discord> <T​onymac32> I'm guessing the videocore. cool
<Armbian-Discord> <c​lever> yeah, running entirely on the vpu
<Armbian-Discord> <c​lever> the arm core isnt even turned on in that demo
<Armbian-Discord> <M​icroLinux (Salva)> Noiceee
<Armbian-Discord> <M​icroLinux (Salva)> Can you explain how that works, framebuffer, etc. Bc I don't know anything about that
<Armbian-Discord> <M​icroLinux (Salva)> I wasn't aware that videocores allowed such stuff neither
<Armbian-Discord> <M​icroLinux (Salva)> Also, why you mention vpu??, bc the gpu should be rendering such stuff..
califax has quit [Remote host closed the connection]
norwich has quit [Ping timeout: 260 seconds]
califax has joined #armbian
norwich has joined #armbian
<Armbian-Discord> <c​lever> the RPI has ~4 separate clusters of compute cores
<Armbian-Discord> <c​lever> the 1-4 arm cores you expect
<Armbian-Discord> <c​lever> 2 VPU cores
<Armbian-Discord> <c​lever> the V3D/QPU cores (where 3d shaders run)
<Armbian-Discord> <c​lever> and the ISP (still a blackbox to me)
<Armbian-Discord> <c​lever> the v3d is basically used to take a list of polygons, textures, and shaders, and turn it into a 2d bitmap in ram
<Armbian-Discord> <c​lever> the hvs+pv+ a random phy, is then used to a list of 2d bitmaps into a video signal, depending on which PHY is used
<Armbian-Discord> <M​icroLinux (Salva)> You are an experienced rpi ninja
<Armbian-Discord> <c​lever> https://www.youtube.com/watch?v=JFmCin3EJIs
<Armbian-Discord> <c​lever> https://www.youtube.com/watch?v=suswjbpR1HU
<Armbian-Discord> <M​icroLinux (Salva)> Well, I wasn't aware that V3D was labeled as VPU since those are use for media decoding/encoding abd gpus are for 3d/2d acceleration
<Armbian-Discord> <c​lever> the VPU and V3D are entirely seperate blocks
<Armbian-Discord> <M​icroLinux (Salva)> Ahhh, okay
<Armbian-Discord> <c​lever> the last 2 videos, are examples of what the 2d core (hvs) can do on its own
<Armbian-Discord> <M​icroLinux (Salva)> Also clever
<Armbian-Discord> <M​icroLinux (Salva)> Since you know about graphics
<Armbian-Discord> <M​icroLinux (Salva)> I was testing games that weren't meant for KMSDRM on.. KMSDRM, trying to get the best performance as possible, since glmark2 differences are stupidly high comparing x11 vs wayland, and I didn't note such jump going from x11 to wayland on real games, the same with KMSDRM... anyway, it's amazing we can do so (I tested some x86_64 games on KMSDRM)
<Armbian-Discord> <M​icroLinux (Salva)> Anyway, very few stuff run there haha but would be cool to tey to add those on batocera since we don't need xorg neither wayland, just pure KMSDRM
<Armbian-Discord> <M​icroLinux (Salva)> I use box64 emulator of course
<Armbian-Discord> <c​lever> the 2d core on the rpi very closely matches what KMSDRM does with planes and crtc stuff
<Armbian-Discord> <c​lever> basically, you generate a list of images in ram, for each image you list off its address, stride, pixel format, source w/h, dest w/h, and dest x/y
<Armbian-Discord> <M​icroLinux (Salva)> Well, my goal with KMSDRM was to improve mostly rpi4 user's experience since xorg does poop on rpi4
<Armbian-Discord> <c​lever> the hardware will then composite all of the images together on the fly, and generate a video signal from that
<Armbian-Discord> <M​icroLinux (Salva)> Do you own other pies?
<Armbian-Discord> <c​lever> yeah, i have one of every model
<Armbian-Discord> <M​icroLinux (Salva)> Noiceee
<Armbian-Discord> <M​icroLinux (Salva)> They aren't that much rpi ninjas here haha
<ArmbianHelper> ^ [image/png] (59.6KiB)
<Armbian-Discord> <c​lever> when you turn on any pi in the pi0-pi3 model range, it will begin by executing a maskrom on the VPU
<Armbian-Discord> <c​lever> that rom is responsible for loading bootcode.bin from one of 8 supported boot sources
<ArmbianHelper> ^ rpi-open-firmware/rom.txt at master · librerpi/rpi-open-firmware · GitHub
<Armbian-Discord> <M​icroLinux (Salva)> But rpi4 is different in which way?
<Armbian-Discord> <c​lever> on most models, only the SD card is enabled
<Armbian-Discord> <c​lever> the pi4 maskrom is massively scaled back, only supporting 3 sources, SD/SPI/USB-device
<Armbian-Discord> <c​lever> and instead of bootcode.bin on the SD card being the primary way of booting its a tagged blob in SPI flash
<Armbian-Discord> <M​icroLinux (Salva)> Ahh yeah
<Armbian-Discord> <c​lever> that change allows adding features like usb-boot after production
<Armbian-Discord> <c​lever> so i can take an original pi4 from the early days, and then add usb-boot to it
<Armbian-Discord> <M​icroLinux (Salva)> I wonder how usb boot was done on pi 3 without it
<Armbian-Discord> <c​lever> there is usb-host code, in the bloody mask rom 😛
<Armbian-Discord> <c​lever> and when bugs are found, its a ROM, you cant fix them!
<Armbian-Discord> <c​lever> make a new set of masks, and bake the fix into the next batch of chips your producing at the factory
<Armbian-Discord> <M​icroLinux (Salva)> There was a community effort trying to make an open source firmware afaik. I mean, it should be still alive
<Armbian-Discord> <c​lever> i resurrected that project 😛
<ArmbianHelper> ^ [image/png] (59.6KiB)
<Armbian-Discord> <c​lever> thats the rpi-open-firmware on the right side
<Armbian-Discord> <M​icroLinux (Salva)> Even alyssa was there at that time
<Armbian-Discord> <c​lever> rpi-open-firmware compiles down to a single bootcode.bin, when loaded by the maskrom, it brings the dram online, then loads zImage and boots linux
<Armbian-Discord> <c​lever> but it wasnt very flexible in its design, and was already tight on space
<Armbian-Discord> <M​icroLinux (Salva)> And what works and what doesnt right now?
<Armbian-Discord> <c​lever> so i ported little-kernel to the VPU, and then added features to that
<Armbian-Discord> <c​lever> which is the LK line down the middle, in the above image
<Armbian-Discord> <c​lever> with LK, i can access the 2d core fully, and i have a basic demo of the 3d core as well, so 2d/3d are fully working
<Armbian-Discord> <c​lever> and with LK, i can boot linux, and then get usb-host working under linux
<Armbian-Discord> <M​icroLinux (Salva)> Good.
<Armbian-Discord> <M​icroLinux (Salva)> What about the vpu? Will it ever work?
<Armbian-Discord> <c​lever> yes
<Armbian-Discord> <c​lever> the VPU is what is responsible for turning the arm core on
<Armbian-Discord> <c​lever> without the VPU, its just a brick!
<Armbian-Discord> <M​icroLinux (Salva)> Haha okay!
<Armbian-Discord> <M​icroLinux (Salva)> Yes, but from linux
<Armbian-Discord> <M​icroLinux (Salva)> It will work?
<Armbian-Discord> <c​lever> i dont have linux driving the 2d core yet, it fails to bring PLLH online
<Armbian-Discord> <M​icroLinux (Salva)> I mean, for decoding
<Armbian-Discord> <c​lever> h264 decoding is in the VCE, another hw block
<Armbian-Discord> <c​lever> and there is no source code for driving the VCE
<Armbian-Discord> <M​icroLinux (Salva)> Warn me if you get more stuff working, bc this should be reviewed and shown on youtube. I will not do it bc I don't make rpi content anymore, but for sure jeff or @lukefrenner will be interested
<Armbian-Discord> <c​lever> i do have a discord where ive been posting news, and there is also #armbian-broadcom on this server
<Armbian-Discord> <c​lever> where did i put that link...
<Armbian-Discord> <c​lever> https://hydra.angeldsis.com/build/113294 there it is
<ArmbianHelper> ^ Hydra - Build 113294 of job flake-test:rpi-nixos:x86_64-linux.dist_deb
<Armbian-Discord> <c​lever> the most recent thing ive done, is create a .deb package of the open firmware
<Armbian-Discord> <c​lever> if you just dpkg -i that, while having the right partition layout, it should boot
<Armbian-Discord> <c​lever> @MicroLinux (Salva) https://gist.github.com/cleverca22/e218d16c5438bb8e6e7f4b48f0546e23 and here is an example of building a complete debian image and installing that firmware
<ArmbianHelper> ^ gist:e218d16c5438bb8e6e7f4b48f0546e23 · GitHub
<Armbian-Discord> <c​lever> i assume that can easily be translated into armbian
<Armbian-Discord> <M​icroLinux (Salva)> Such a nice effort
califax has quit [Remote host closed the connection]
califax has joined #armbian
<Armbian-Discord> <M​anoftheSea> ISP? In series chip programmer?
<Armbian-Discord> <c​lever> image sensor pipeline
<Armbian-Discord> <M​anoftheSea> Okay
<Armbian-Discord> <c​lever> it deals with automatic whitebalance, lens shading, debayer, and more
<Armbian-Discord> <c​lever> @ManoftheSea https://datasheets.raspberrypi.com/camera/raspberry-pi-camera-guide.pdf page 40
<ArmbianHelper> ^ [application/pdf] (3.9MiB)
<ArmbianHelper> ^ [image/png] (53.3KiB)
<Armbian-Discord> <c​lever> the ISP does every step shown in that image, taking some tuning parameters as inputs, and generating stats as outputs
<Armbian-Discord> <c​lever> libcamera then uses those stats to generate some control loops
<Armbian-Discord> <c​lever> software-only loops will change the tuning params for the ISP, so the next frame is corrected
<Armbian-Discord> <c​lever> hw interfacing loops adjust the analog gain within the camera sensor itself, but those have a slower response time
<Armbian-Discord> <c​lever> heads off to bed
samythemany11 has quit [Ping timeout: 268 seconds]
samythemany11 has joined #armbian
samythemany11 has quit [Client Quit]
retrosenator has quit [Remote host closed the connection]
xoan7254512358 has joined #armbian
xoan725451235 has quit [Ping timeout: 252 seconds]
xoan7254512358 is now known as xoan725451235
xoan7254512354 has joined #armbian
xoan725451235 has quit [Ping timeout: 252 seconds]
xoan7254512354 is now known as xoan725451235
crabbedhaloablut has quit [Write error: Connection reset by peer]
califax has quit [Read error: Connection reset by peer]
califax has joined #armbian
crabbedhaloablut has joined #armbian
alekksander has joined #armbian
aasami_ has joined #armbian
aasami_ has quit [Client Quit]
aasami_ has joined #armbian
stipa has quit [Ping timeout: 268 seconds]
califax has quit [Remote host closed the connection]
califax has joined #armbian
indy has quit [Ping timeout: 268 seconds]
indy has joined #armbian
aasami_ has quit [Quit: Lost terminal]
califax has quit [Ping timeout: 268 seconds]
indy has quit [Quit: ZNC 1.8.2 - https://znc.in]
califax has joined #armbian
indy has joined #armbian
lemonzest has joined #armbian
xoan7254512359 has joined #armbian
xoan725451235 has quit [Ping timeout: 260 seconds]
xoan7254512359 is now known as xoan725451235
califax has quit [Remote host closed the connection]
califax has joined #armbian
xoan7254512353 has joined #armbian
xoan725451235 has quit [Ping timeout: 248 seconds]
xoan7254512353 is now known as xoan725451235
<Armbian-Discord> <M​anoftheSea> thanks
alekksander has quit [Ping timeout: 260 seconds]
xoan7254512354 has joined #armbian
alekksander has joined #armbian
xoan725451235 has quit [Ping timeout: 252 seconds]
xoan7254512354 is now known as xoan725451235
aasami_ has joined #armbian
aasami has joined #armbian
<aasami> For those with too much money: Try emmc. 16G is enough, enlarge swap, it's really fast
xoan7254512353 has joined #armbian
archetech has joined #armbian
xoan725451235 has quit [Ping timeout: 268 seconds]
xoan7254512353 is now known as xoan725451235
alekksander has quit [Quit: Konversation terminated!]
stipa has joined #armbian
archetech has quit [Quit: Konversation terminated!]
archetech has joined #armbian
s1b1 has quit [Excess Flood]
mintelodiaz has joined #armbian
s1b1 has joined #armbian
xoan7254512350 has joined #armbian
xoan725451235 has quit [Ping timeout: 260 seconds]
xoan7254512350 is now known as xoan725451235
xoan7254512359 has joined #armbian
xoan725451235 has quit [Ping timeout: 260 seconds]
xoan7254512359 is now known as xoan725451235
archetech has quit [Quit: Konversation terminated!]
archetech has joined #armbian
mintelodiaz has quit [Ping timeout: 260 seconds]
cornelius has quit [Ping timeout: 252 seconds]
cornelius has joined #armbian
xoan7254512353 has joined #armbian
xoan725451235 has quit [Ping timeout: 268 seconds]
xoan7254512353 is now known as xoan725451235
xoan7254512350 has joined #armbian
xoan725451235 has quit [Ping timeout: 268 seconds]
xoan7254512350 is now known as xoan725451235
mpmc has quit [Quit: ZNC - https://znc.in]
mpmc has joined #armbian
mpmc has quit [Remote host closed the connection]
mpmc has joined #armbian
lemonzest has quit [Quit: WeeChat 3.5]
archetech has quit [Quit: Konversation terminated!]
archetech has joined #armbian
crabbedhaloablut has quit [Remote host closed the connection]
crabbedhaloablut has joined #armbian
TRS-80 has joined #armbian
aasami_ has quit [Quit: Lost terminal]