<whitequark>
i don't have a faintest idea why they need it
<whitequark>
but it's not a lot of code so like whatever
m_t has quit [Quit: Leaving]
<awygle>
that rapidio thing.... is pretty cool actually
<awygle>
whitequark: okay, fair enough. in that case i'll just do what i need in rust and wrap a C API around just that.
<gruetzkopf>
of course it's in the unwanted european language :P
<rqou>
awygle: or you can do everything in rust :P
<awygle>
i recall thinking spacewire was kind of goofy but not why
<gruetzkopf>
D/S encoding
<awygle>
rqou: no i can't :p i work for a living
<gruetzkopf>
LVDS
<rqou>
if you can deal with/ignore japaric constantly fucking things up
<gruetzkopf>
subset of 1355
<whitequark>
rqou: meh, that's not fair.
<awygle>
i feel like SW would be much more useful if it didn't spec physical
<rqou>
what's not fair?
<whitequark>
awygle: ok, correction
<awygle>
i wrote a half-assed UART version that was totally useful and way less power-hungry (for cubesats you see)
<whitequark>
it's not several times faster with window scaling
<whitequark>
it's several times slower
<rqou>
um...
<whitequark>
so probably don't use buffers over 64k yet
<awygle>
lol arright
<awygle>
window stuff shouldn't matter for this actually, it's udp
<whitequark>
oh
<whitequark>
oh yeah udp is *way* faster than the provided benchmarks
<whitequark>
see smoltcp doesn't implement SACK or congestion control
<whitequark>
every time it loses a packet for some reason it has to go through fast retransmit
<awygle>
ah
<whitequark>
this is the main reason it's like 2 Gbps instead of like 20 Gbps
<awygle>
i suppose i should just ask straight up, do you expect smoltcp to handle UDP packets faster than the linux kernel, and if so, by what binary order of magnitude?
<gruetzkopf>
yeah the original phy inmos t9000 links used (so uart like) works just fine
<rqou>
is netfilter enabled? :P
<whitequark>
^ that
<awygle>
yes
<gruetzkopf>
*zero* of my implementations are spec compliant
<awygle>
gruetzkopf: what are you using spacewire for?
<gruetzkopf>
fun, mostly
<awygle>
or are you using 1355
<whitequark>
what sort of interface are you going to run smoltcp on
<awygle>
whitequark: GbE?
<gruetzkopf>
spw, including RMAP
<whitequark>
awygle: no i mean software wise
<whitequark>
like is it a tap interface or are you doing userspace networking or
<awygle>
userspace networking
<whitequark>
so in theory, smoltcp is one-copy
<whitequark>
it copies data from an udp socket buffer directly to whatever memory the phy gives it
<whitequark>
and vice versa
<awygle>
mk
<whitequark>
there are no immediate plans to make it truly zero-copy because that would be an incredible pain in the ass and make the public interface nigh unusable
<awygle>
right
<whitequark>
from all the genericism
<whitequark>
copying is one bottleneck i expect
<whitequark>
the other bottleneck i expect is the fact that smoltcp does *extensive* validation
<whitequark>
it's written with correctness over performance at every step
<awygle>
some things i should clarify that probably matter - this is receive-only
<awygle>
.. i guess that's only one thing. i'll let you know if i think of another thing.
<whitequark>
hmm
<awygle>
oh here's another thing - the application is currently eating ~an entire core in softirqs
<whitequark>
so you have udp and receive only
<awygle>
that appears to be the throughput limiter
<awygle>
.
<whitequark>
and you want the business logic in c
<whitequark>
what are you going to use smoltcp for, exactly
<whitequark>
like what actually remains
<whitequark>
udp checksum/
<whitequark>
comparing ip address?
<awygle>
there's not really any "business logic" besides reassembling larger logical frames out of UDP packets
<sorear>
IP fragment reassembly?
<whitequark>
hmm
<whitequark>
IPv4 fragmentation isn't currently supported but there's an open PR that implements it
<awygle>
what i currently do is peek a sequence number, drop if (conditions), calculate position in larger buffer, build recvmsg io_vecs or whatever they're called, then recvmsg into the buffer (with the seqno going into a trash buffer)
<whitequark>
but if you're using UDP like how awygle does you don't want IP fragmentation anyway
<awygle>
that is _okay_ but like i said it's pinning a core in softirqs and limiting me to ~half the interface bw
<whitequark>
hmm.
<awygle>
i would like to just add another socket, but i can't, because the NIC has one queue
<awygle>
and i can't change it
<whitequark>
ok i see, so you do want sockets
<awygle>
also i'm out of cores
<whitequark>
yeah, give smoltcp a try
<rqou>
half-serious suggestion: just grab the entire card into userspace using vfio
<rqou>
this is how SDN people get MOAR PACKETS!!!!111
<awygle>
rqou: i might, honestly. i'm burning down my list of Plans
<rqou>
bonus points if your card supports sr-iov
<awygle>
step 1 is probably "do the duplicate drops in eBPF", which would have been a huge win like two weeks ago before i figured out how to stop seeing so many dupes
<awygle>
step 2 is smoltcp
<awygle>
vfio is *a* step, but idk which one yet :p
<whitequark>
what the hell is vfio anyway
<whitequark>
the only google hits are from people who want to run overwatch on linux
<azonenberg_work>
whitequark: A burst disk seems like it would be a lot more fragile and awkwardly shaped than a small cylinder of fairly thick metal
<sorear>
lurk in #kvm or #qemu for a while, 80% of the messages are people asking for help troubleshooting their Windows installation and providing way too little information
<rqou>
seriously someone should just fork qemu into two projects: KVMWinDammit and KVMMacDammit :P
<whitequark>
oh god i just learned about the vga arbiter
<whitequark>
what the fuck
<rqou>
oh lololol
<rqou>
yeah
<rqou>
how did you expect it to work? :P
<sorear>
i'm impressed at the number of people who think that qemu is *called* kvm
<sorear>
this would seem to be a difficult mistake to make
<rqou>
x86 "systems/platforms" is a recursive dumpsterfire
<whitequark>
i haven't realized that any "modern" graphics still uses the legacy io and mem ranges
<whitequark>
i'd expect linux to just turn off those decodes
<rqou>
yeah they even put "backdoor" BAR registers there
<gruetzkopf>
it'd happily do that if cards let them
<whitequark>
what
<whitequark>
what#2
<rqou>
that's now the vbios boots the card :P
<rqou>
*how
<whitequark>
"IO and MEM can't be treated separately since there is only one VGA forward bit on PCI-to-PCI bridges.
<whitequark>
"
<whitequark>
what in the ever loving fuck is a "VGA forward bit"
<whitequark>
who designed this piece of shit
<rqou>
the bit that turns on decoding the vga ranges lol
<gruetzkopf>
intel
<whitequark>
what does it have to do with PCI-to-PCI bridges
<gruetzkopf>
vga ranges are specialcased *everywhere*
<gruetzkopf>
they're default-on (or strappable) on most pci bridges
<rqou>
if your graphics card is behind such a bridge, the bridge needs to "own" those regions
<rqou>
it kinda makes sense if you're a lazy hardware engineer making a quick hack
<whitequark>
gaaaaah
<rqou>
it's just like A20# :P
<gruetzkopf>
also the reason why firmware asks you "igp, pci, pcie" for "primary video" because that gets the vga path before executing vbios
<whitequark>
aaaaaaa
<rqou>
ooooh that's why
<gruetzkopf>
so you're at least mapping vbios, vga io and vga mem
<rqou>
fortunately, i believe EFI-only systems with EFI vbios no longer require any of this
<gruetzkopf>
that SHOULD be true
<rqou>
which is why EFI vs legacy boot affects how working vfio/qemu is :P
<rqou>
(of the host, of course)
<whitequark>
why does linux need to read the video bios
<whitequark>
or rather nvidia drivers i guess
<gruetzkopf>
contains card descriptors
<rqou>
i know amd has/had a bytecode vm in the vbios for booting the card up
<fseidel>
right, but I figured some laptop manufacturer would have been trying to sell this for years
<whitequark>
it's like that xkcd "universal adapter"
<rqou>
apparently not when sb0 assembles it :P
<whitequark>
fseidel: there are thunderbolt egpu boxes.
<fseidel>
right
<zkms>
i tried doing something along those lines with a M.2 -> Sata board and to a hard drive but it locked up the computer after a while, idk what was up with that >_<
<fseidel>
I've seen those
<whitequark>
thunderbolt is a horrifying piece of shit that doesn't work
<fseidel>
but expresscard has been around a lot longer
<gruetzkopf>
thunderbolt could have worked
<fseidel>
what's wrong with TB? I've never had an issue with it, honestly curious
<gruetzkopf>
if intel exposed it like normal pcie hotplug
<whitequark>
fseidel: let me guess, you use macos
<gruetzkopf>
(curiously, the implementation macos uses on macs is the least insane)
<whitequark>
yeah
<rqou>
fseidel: it needs an unholy amalgam of pcie/acpi/smm
<gruetzkopf>
else they let ACPI do the bus enumeration
<fseidel>
yeah, the only machine I have with TB is a MBP
<gruetzkopf>
if being braindead wasn't required to join the intel interconnect team it'd be transparent to any pcie-supporting device
<fseidel>
oh jesus
<zkms>
you know you're headed for a deep level of hell when the triumvirate of SMM/ACPI/EFI is at work
<rqou>
and usb PD too
<fseidel>
seriously, that really is the unholy trio
<whitequark>
don't forget thunderbolt itself
<zkms>
honestly i'd rather do anything with usb-pd than have to interact with SMM
<whitequark>
which is a tree of switches internally
<gruetzkopf>
TB itself could be salvaged
<whitequark>
that you have to configure one by one
<rqou>
afaik apple drivers just poke a "go away" function in acpi and then handles everything manually
<gruetzkopf>
sure you do, but that's logic that existed for decades
<gruetzkopf>
i mean, i have gen1-opteron boxes that support parallel pci hotplug
<gruetzkopf>
open lid, press button, wait for light, open flap, pull card, insert card, close flap
<whitequark>
doesn't any board support parallel pci hotplug, technically
<whitequark>
you can always tell linux to rescan
<rqou>
yeah if you're careful
<gruetzkopf>
if you do all the nice things manually yeah
<rqou>
I've seen people do it
<whitequark>
you might need to do like, pci=realloc
<whitequark>
i've done it
<whitequark>
it works
<whitequark>
both ways
<gruetzkopf>
this turns of slot power and stuff like that
<whitequark>
though linux only recently learned that devices can just fall off the bus
<rqou>
lol
<qu1j0t3>
:)
<rqou>
seriously someone should just do some proper reverse engineering of thunderbolt
<fseidel>
well, that's enough intel fuckery for me for one day ;-;
<gruetzkopf>
-ENOTIME
<gruetzkopf>
-ENOHARDWARE
<sorear>
DP1.4 would also be good
<sorear>
DP1.2 is already surprisingly complicated though
<gruetzkopf>
i really need to take pictures of the unholy abomination
<gruetzkopf>
(a HP plastic laptop of the K10 era where i replaced the CDROM drive with a x16 (x16) pcie slot
<whitequark>
wow
<whitequark>
how did you route it
<gruetzkopf>
(this involved soldering on 32 capacitors, 32 0-ohm bridges, and then it's all twisted pair enamel wire :P
<gruetzkopf>
(off the footprint of the unpopulated dGPU)
<rqou>
(only partially joking) i think we should get the "51nb" people to design some "h4x0r" laptops with all the useful high-bandwidth interfaces exposed
<gruetzkopf>
even worse: i'm usually not running it in x16 mode, but in DP+DP+x8 mode :P
<rqou>
we can call it "Legacyvena" :P :P :P
<whitequark>
DP+DP+x8?
<whitequark>
like uh
<whitequark>
do you restrap the CPU?
<gruetzkopf>
those are softstraps for that platform
<whitequark>
right, i mean, do you reflash the BIOS or w/e
<gruetzkopf>
i've hacked up the (pre-uefi efi) firmware to do that based on a spare bit i found in cmos
<feuerrot>
gruetzkopf: 4 lane DP each?
<gruetzkopf>
sure.
<feuerrot>
I should redesign the ipad display adapter board…
<rqou>
so gruetzkopf, thoughts on my "legacyvena" idea?
<whitequark>
gruetzkopf: amazing.
<gruetzkopf>
give me 2 x8 oculink ports
<rqou>
feuerrot: heh, I'm using one designed by some Japanese guy
<gruetzkopf>
i should build a proper usb-c one
<gruetzkopf>
things i also need to do: add a HT->PCIe tunnel in between the CPU and the IGP :P
<whitequark>
HT?
<rqou>
wait HT?
<whitequark>
hypertransport
<rqou>
isn't this an intel system?
<sorear>
less than 2 years until 20 years after the x86_64 spec was first published
<fseidel>
I didn't realize AMD64 was that old
<fseidel>
I thought it was like 2004-ish
<awygle>
Fluticasone inhalers are expensive as hell :-(
<gruetzkopf>
HP 625 laptop
<gruetzkopf>
athlon64
<rqou>
awygle: just don't be sick :P
<awygle>
rqou: is for kitteh
<rqou>
oh :(
<awygle>
There's no generic for the inhaler so it's stupid expensive
<rqou>
i thought usually animal medications are way cheaper than human though?
<whitequark>
not if it's something with a single source
<sorear>
fseidel: the fun part is that intel *still* hasn't enabled the AVX fuse on their lowest-tier SKUs, → Windows 10's CPU baseline hasn't actually meaningfully increased since then
<feuerrot>
rqou: that would have been the easier way. I'm not quite sure what's the exact problem (well, it's some sort of signal integrity issue) but there is some green noise when I use my board. And using the 3.3V from the hosts DP might also be slightly out of spec and requires an additional wire in the DP cable
<gruetzkopf>
(imagine a DP cable with an extra wire taped to the outside)
<whitequark>
rqou: you went to a fancy school, so a question for you
<whitequark>
if you spin a magnet does it generate radio waves
<whitequark>
and if yes does anyone ever use this as a method of transmission
<rqou>
uh... I'm pretty sure it does
<feuerrot>
gruetzkopf: I might still have some pictures somewhere
<awygle>
it should, and I don't think so
<rqou>
doesn't seem particularly practical though
<awygle>
And yes, single source plus mixed use = expensive
<rqou>
there were various mechanical electrical oscillators that were historically used for radio transmission though
<whitequark>
hmm.
<awygle>
I was sort of hoping whitequark would say "oh just use X" or "get it from Y" lol
<sorear>
if you spin a sufficiently large magnet it generates radio waves which can be picked up from the other side of the galaxy
<whitequark>
awygle: oh you should've said that you're looking for a replacement
<sorear>
provided, of course, that the spin axis and magnetic axis are misaligned
<awygle>
I'm not really (I have pet insurance) but if you know one I'm definitely interested
<whitequark>
i can just order a box of those for you then
<sorear>
NY to Chicago on an un-amplified telephone line powered only by your voice, but no farther because of resistance
<zkms>
i think they do some weird spinning things with NMR machines but i don't exactly know how it works
<whitequark>
*huh*
<rqou>
wait pet insurance is a thing?
<qu1j0t3>
sorear: yeah... Chuck Harris made an epic post on the TekScopes list listing all the technological steps and that at every one of them (including the transistor) we had tech that sort of worked but we didn't really know how
<whitequark>
why wouldn't it be
<rqou>
i guess i shouldn't be surprised
<gruetzkopf>
it is, even over here
<sorear>
[[magic angle spinning]] is about getting certain noise terms to cancel out, not using the magnet as a radiator
<rqou>
zkms: i thought NMR relied on spinning dipoles, not spinning bulk magnets?
<sorear>
sometimes they spin the entire sample for unrelated reasons
<sorear>
(most of computer tech is one long critical path but the magnetic amplifier can be shifted back almost 100 years without requiring any physical principle or manufacturing technology which was unknown at the time)
<gruetzkopf>
i've seen it irl
<whitequark>
oh yeah magamps are wild
<whitequark>
ATX PSUs use them a lot
<gruetzkopf>
i've got a power supply running not 5m from me
<gruetzkopf>
60V/150A/1963
<gruetzkopf>
regulated, below 100mV ripple
<gruetzkopf>
all mag-amp in the power path
<rqou>
meanwhile a while back my friends were discussing "how could we speedrun our way to building a turing-complete computing device as fast as possible if we can cheat and use current knowledge"
<whitequark>
ATX PSUs also use coupled inductors
<rqou>
and we eventually realized that this technically doesn't even require electricity
<rqou>
or metal :P
<whitequark>
rqou: strictly speaking we haven't made any turing-complete computers
<rqou>
in theory given enough time and resources you can build a computer out of wood and water power :P :P :P
<qu1j0t3>
rqou: i guess you know fluid computing research was a thing
<rqou>
ok fine, "with the usual tweak of allowing for finite memory"
<rqou>
unfortunately if we actually wanted to speedrun an alternate timeline a giant "computer" like that would probably be much worse and slower than an abacus and slide rule :P
<qu1j0t3>
experiments were done, and yeah, not a huge success
<sorear>
right. mag amps can be built ca. 1850 and achieve kHz speeds though
<whitequark>
but you could still build "PLCs" that are useful
<sorear>
and they have much looser mechanical tolerances than the gear-based systems we were actually trying to build then
<rqou>
yeah gears seem to require a surprising amount of technology to actually build
<gruetzkopf>
yeah i'd try to go the magnetic route
Bike has joined ##openfpga
<rqou>
i think step 0 in an alternate/post-apocalyptic timeline would probably still be an abacus/slide rule :P
<gruetzkopf>
(did i mention that i / german state rail both have large amounts of core-core logic up and running?
<rqou>
also, if you watch a lot of HTME on youtube, you learn just how much progress we've made in metallurgy/material science
<sorear>
has anyone done "WW2, but modern cryptography and Kerchoff's maxim are common knowledge"
<gruetzkopf>
i believe WW2 but no reverser disc in enigma would change the scenario enough
<awygle>
I actually lucked into pet insurance, they gave me a free month and he got asthma on like day 29
<awygle>
whitequark: this is a 110mcg inhaler, any reason I couldn't give him two puffs of the 50?
<rqou>
hope kitteh doesn't end up dropped for pre-existing conditions :P
<rqou>
did kitteh have a gap in coverage? :P :P
<awygle>
well that's why it was lucky. I'm stuck with this company forever tho
<whitequark>
whitequark: no reason you can't
<awygle>
You're joking but those things totally apply
<awygle>
whitequark: thanks. Also, lol
<rqou>
wait does pet insurance actually still have all of these problems?
<awygle>
Yes.
<rqou>
...
<rqou>
not sure what i expected either tbh
<awygle>
Idk about a gap in coverage but they can definitely not insure you if you know the cat has asthma
<awygle>
Wouldn't make sense otherwise
unixb0y has quit [Ping timeout: 268 seconds]
unixb0y has joined ##openfpga
<rqou>
what about lifetime maximums? kittehcare "death spirals"? :P
<sorear>
i assumed the pet insurance market would be _slightly_ more functional because there's less money you can extort
<rqou>
(i bet all the Europeans are shaking their heads right now)
<awygle>
^this
<awygle>
It's like medical insurance but not screwed up by middlepeople
<awygle>
If health insurance worked as well as pet insurance in America I'd be ecstatic
<Bike>
i thought they had some idea of kerckhoff's principle during wwii. it's not like enigma machines were easily broken once they got some
<sorear>
i've successfully tracked down a 2005 and a 2003 amd64 manual, cmpxchg16b is only in the newer
* awygle
flips which of "go to the gym" and "eat a pizza" has "don't" in front of it on his todo list
<gruetzkopf>
hm, laptop with ipad pro lcd assembly and ryzen embedded would be fun
<gruetzkopf>
i'm very interested in the pcie lane setup of the v1000 family
<gruetzkopf>
because i i can have all 16 lanes + usb3.1 + 10ge..
<gruetzkopf>
(i had a CS teacher in highschool who did not enjoy checking my references on a project (quoted like every second page of the intel pentium programmers manual)
GenTooMan has quit [Quit: Leaving]
<rqou>
wait wat
<rqou>
gruetzkopf: you had CS in high school?! and it wasn't a Microsoft office course?!?!
<gruetzkopf>
It was a Delphi 7 course
<awygle>
I had a VB course, and a Java course was offered
<gruetzkopf>
Which of course allows inline assembly
<gruetzkopf>
Office course was middle school, and we used staroffice resp. OpenOffice
<rqou>
how does Germany manage to hire teachers that don't all have their heads stuck far up their rectums?
<gruetzkopf>
Well, most do
<gruetzkopf>
They're also employees of the state
<qu1j0t3>
rqou: 1) pay them properly?
<gruetzkopf>
Public ser
<gruetzkopf>
Vants
<gruetzkopf>
In my school like 3 teachers had a 'normal' employment contract
<rqou>
um... here teachers are also employees of the state
<gruetzkopf>
Which in practice you only noticed once per year
<gruetzkopf>
As those 3 were the only ones permitted to strike
<rqou>
and (in the school district i attended) they get paid a "decent" salary (that still can't afford the housing here, but that's not unique)
<rqou>
and yet IME ~all teachers were incompetent power-tripping assholes
<rqou>
you'll be lucky if they can send an email or use a video projector
<gruetzkopf>
There's a special construct in Germany called "Beamtentum" which gives teachers, police officers, certain government officials quite a bit of protection
<gruetzkopf>
But also comes with no right to strike
<gruetzkopf>
And having to uphold an oath on the constitution
<rqou>
in some states in the US teachers aren't allowed to strike but apparently they decided to anyways
<gruetzkopf>
The constitutional court of the federal republic of Germany confirmed it's legal to forbid teachers from strike like 2 months ago
<awygle>
how can you be not allowed to strike. isn't that how strikes work?
<rqou>
awygle: idk, but it was in the news a while back
<rqou>
either way given my experiences i'm not at all sympathetic
<Bike>
strikes are in fact sometimes legal
<gruetzkopf>
Strikes are generally legal here
<qu1j0t3>
you really gotta ponder jurisdictions where they aren't, and why
<Bike>
let's see, in the US, strikes by airline and railroad workers are illegal, and wildcat strikes are illegal, and sometimes there are state level restrictions for cops or teachers like rquo mentiond
<Bike>
oh, and prisoners, so that's happening
<qu1j0t3>
we have this system here of "essential services", but it all round seems like a bad idea, if it means labour action is not possible
<awygle>
teachers in the US are.. Interesting
<qu1j0t3>
IANAL, but i believe the designation is meant to prevent strikes
<awygle>
There's a kind of scorched earth thing going on between unions and states et al
<gruetzkopf>
But this special type of civil servant (teacher, police, soldiers,..) is excluded from that (as they've sworn an oath to uphold the function of the state at all times)
<awygle>
Where teachers get paid like shit but can never be fired ever
<qu1j0t3>
gruetzkopf: hmmmmm
<qu1j0t3>
gruetzkopf: a formulation that has been ... troublesome
<awygle>
In California there are a not small number of teachers who get paid to sit in a room all day
<qu1j0t3>
there are times you _need_ mutineers
<awygle>
Some of whom have been doing so for like a decade
<rqou>
i thought that was basically called "teachers"
<awygle>
Because they're less harm that way than in the classroom
<rqou>
actually no, that would be better
<rqou>
i'd rather have had teachers that just sat around doing nothing
<gruetzkopf>
The current constitution of Germany is faiy immutable (by design)
<Bike>
i guess there was a bad experience that one time.
<gruetzkopf>
And they've sworn to uphold that, not any specific government
<awygle>
rqou: my mother was a teacher for 25 years, and whatever else you might say about her she did a lot more than sit there
<rqou>
i actually did have one teacher who sat around doing nothing and it was great
<rqou>
second-favorite teacher in HS
<awygle>
I had about a 50% rate of good teachers
<awygle>
So your experiences seem to be worse than average
<rqou>
i had maybe 3-4 good teachers total in K-12
<Bike>
can't alter the german constitution to make it not a republic, huh
<awygle>
My feelings on teachers unions are mixed because some teachers need to be fired but also teachers should be paid way more. So I think I just don't like the current unions
<sorear>
at least it's only 60 years old
<rqou>
in general i'm not a fan of unions at all
<rqou>
i would never want to cede control of something i care about (e.g. my job/salary) to a group that i don't control regardless of how much they claim to represent me
<Bike>
what about your employer
<awygle>
lol
<rqou>
it's a two-way negotiation there
<Bike>
and the negotiation goes better if it's not just you. that's the basic idea of a union.
<rqou>
right... in theory
<Bike>
individual negotiations make sense if you're a company officer or someone, you know, with clout
<rqou>
in practice that's not what i've seen happening
<Bike>
if you're working at mcdonalds they're just going to tell you to go fuck yourself if you ask for a raise
<sorear>
it's the same basic principle as the minimum wage
<awygle>
grocery stores have incredibly effective unions, at least in my hometown
<Bike>
the labor market is kind of monosponic, so the union forms a countering monopoly
<Bike>
psonic
<sorear>
or the usual saying, in a game of chicken the winning move is to break your steering wheel
<Bike>
stupid greek thingies
<gruetzkopf>
My fav teachers in my last year of high school were the chem teacher (Beamter, pyromaniac), the maths teacher (employee, PhD in mathematics from the same uni I'm supposedly studying at) and the physics teacher (employee, PhD mathematics, computer music fan)
<rqou>
right, i get how unions are supposed to work in theory
<Bike>
i hope every student has access to a chemistry teacher who teaches them how to light themselves on fire
<rqou>
in reality i see: teacher unions protecting the giant pile of incompetence
<sorear>
there are game-theoretic advantages to crippling yourself
<rqou>
professional unions that charge dues and do basically fuckall
<rqou>
and TA unions that spend all their time fighting for silly political causes
<awygle>
damn it's been really ##openpolitics in here lately
* awygle
is as guilty as anybody
<gruetzkopf>
Ours prefered trinitrotoluene over trinitrobenzene
<sorear>
personally I wish we had better institutions that focused on the scope "wage workers" rather than the scope "people currently employed in $industry"
<Bike>
it's not like unions are always perfect or even good, of course
<awygle>
yeah for sure. also, UBI
<gruetzkopf>
(apparently less cancerogenic, and also more effective against tree stumps)
<rqou>
also wtf yet another institution ($FANCY_SCHOOL going with mandatory sms-based 2fa)
<rqou>
why does everybody hate TOTP?
<rqou>
i don't get it
<Bike>
do you need a phone application beyond sms messaging
<rqou>
yes
<rqou>
it's Duo
<Bike>
there you go then
<rqou>
i don't want mandatory closed 2fa apps
<rqou>
just use TOTP goddammit
<Bike>
i feel like "sms messaging" was a dumb thing to say.
<gruetzkopf>
(I still prefer EU DSD classifications over ISO)
<rqou>
(more drama) what's up with the current 3d printer ecosystem and why are Naomi Wu and the Marlin project having a GPL fight?
Bike has quit [Quit: Lost terminal]
mumptai_ has joined ##openfpga
rohitksingh_work has joined ##openfpga
mumptai has quit [Ping timeout: 244 seconds]
* whitequark
reads backlog
<whitequark>
rqou: use TATP not TOTP?
<rqou>
lolwut
<rqou>
i want to be secure, not blow things up :P
<rqou>
also whitequark: terrorists in the US use ANFO, not TATP; get with the program :P :P
<awygle>
friggin icecube making me synth a design before i can look at the package view
<awygle>
why, i ask you
Miyu has joined ##openfpga
<awygle>
brief ##openanime aside - is there like, more to DanMachi?
<rqou>
you know, i don't think this channel has said a single thing about FPGAs the entire day :P
rohitksingh_wor1 has joined ##openfpga
<rqou>
oh nvm i guess you just did
<awygle>
:p
rohitksingh_wor1 has quit [Client Quit]
Miyu has quit [Ping timeout: 268 seconds]
<awygle>
and it's even ##openfpga-related, i'm adding support for the other packages of the lm4k
<awygle>
##openfpga-related undirected whining, but still
rohitksingh_work has quit [Ping timeout: 252 seconds]
<awygle>
somebody should really do the ultra and ultralight
<sorear>
does ANFO even do anything in sub-tonne lots
mmicko has quit [Quit: leaving]
wolfspraul has quit [Ping timeout: 252 seconds]
mmicko has joined ##openfpga
<whitequark>
rqou: uh
<whitequark>
you use TATP to initiate ANFO
<whitequark>
ANFO isn't going to do anything without a proper detonator
<whitequark>
for which you use primary explosives, like mercury fulminate or TATP or heavy metal azides
<whitequark>
i mean whatever works
<whitequark>
#basics
<rqou>
lol
<rqou>
apparently i don't know my terrorism basics :P
<whitequark>
honestly this is just common knowledge
<azonenberg_work>
rqou: ANFO is favored for blasting precisely because it's so hard to initiate by accident
<awygle>
can't you initiate it with e.g. thermite also?
<awygle>
i feel like somebody i know did that, or tried to
<whitequark>
you need a shockwave
<awygle>
ah
<whitequark>
thermite would just set it on fire
<awygle>
i must be thinking of something else
<awygle>
APCP/Al or something, idk
<awygle>
yes, looks like that's what i was thinking of, they include iron oxide in the mixture to ignite it. rather different.
<whitequark>
oh but that's not an explosive
<awygle>
right, I mixed up acronyms starting with A
<azonenberg_work>
APCP = rocket fuel
<awygle>
yes
<sorear>
what I'm thinking of I think is that if you have a *sufficiently large* quantity of ANFO or neat TNT or whatever you can get a deflagation-to-detonation transition
<sorear>
or ammonium nitrate
<azonenberg_work>
Yes, AN will do that
<azonenberg_work>
But i think it requires large (train car sized) quantities?
<azonenberg_work>
Apparently dirty AN with organic contaminants or something is more likely to do that
<azonenberg_work>
vs ANFO is presumably pretty pure AN
<lain>
<rant> bleh. I was hoping openEMS could do 3D EM sim of kicad pcbs, but I cannot find a route that works. pcbmodelgen is undocumented and just gives nonsense errors on my pcb file. people said pcb-rnd can do kicad -> hyperlynx, then hyp2mat gets hyperlynx to openems, but I can't get pcb-rnd to import my kicad pcb. the only viable path seems to be as described in the openems wiki: kicad -> gerber -> pdf ->
<lain>
inkscape to manually fixup curves -> html5 canvas -> write your own script to massage that into matlab/octave -> openems... which just.. fucking. what? I.. no. just no. what even. </rant>
<lain>
if anyone has a proven method for getting from kicad pcb to openEMS, I'm eager to hear it
<azonenberg_work>
lain: ... lol
<azonenberg_work>
lain: What about a STEP export? I dont know if those include copper layers or just component geometry though
<lain>
azonenberg_work: afaik that won't work, but I have no idea
<lain>
openEMS only works from matlab CSX things, which I don't fully grok
<lain>
but it looks like it builds up geometry programmatically
<lain>
azonenberg_work: the true irony here is openEMS has a hyperlynx importer, but I switched to a FOSS toolchain for this pcb and I have no means of getting from kicad -> hyperlynx lolol
<awygle>
time to write your own I guess lol
<awygle>
what about like, Gerber->pdf->tesselator (something like lyon) and feed openems triangles?
<azonenberg_work>
lol
<azonenberg_work>
So basically somebody needs to write a direct kicad-openems bridge
<azonenberg_work>
Check if there's an issue on launchpad for it, if not make one and at least get it on the dev's radar?
<whitequark>
awygle: wtf
<whitequark>
gerber->pdf->tesselator
<whitequark>
no
<whitequark>
just no #no
<azonenberg_work>
(also as of a day or so ago, the kicad push-and-shove router finally collision-detects PCB text)
<azonenberg_work>
on copper layers
<azonenberg_work>
until recently it would route fine then DRC fail down the road when you ran the full non-interactive drc
<whitequark>
why not write a gerber importer for openems if you're so inclined
<azonenberg_work>
Or that
<awygle>
the Kicad devs seem like they would jump on an openems exporter to avoid fixing their fundamental usability problems
<awygle>
... That came out meaner than I meant it
<rqou>
i mean, openems also has nice fundamental usability problems
<azonenberg_work>
Because it looks so much more professional than a little thing from a label maker stuck to the door of the panel
<rqou>
huh i didn't even realize something like that warranted a warning label
<azonenberg_work>
I have an entire breaker panel that will (once i'm done) be UPS fed
<azonenberg_work>
It seems reasonable to put a label saying that flipping the main breaker doesn't turn it off
<azonenberg_work>
That seems like a very easy way for a visiting repairman to get fried
<azonenberg_work>
Flip the main breaker, think you're good, zap
<azonenberg_work>
i mean its mostly lab/office stuff, no major appliances on that panel
<azonenberg_work>
But UPS-fed panels are not common in residences so i feel like it rates a warnin
<azonenberg_work>
g
<azonenberg_work>
Of course to a less clueless electrician the fact that you have to walk between 28U of UPS and the wall to get to that panel might be a hint something is going on...
Sinclair2 has joined ##openfpga
indy has joined ##openfpga
<awygle>
No one here has gas for some reason
wpwrak has quit [Read error: Connection reset by peer]
wpwrak has joined ##openfpga
ironsteel has joined ##openfpga
<rqou>
whitequark: any idea if PEDOT:PSS can survive typical SMD reflow temperatures? i can't seem to find a single number for its decomposition temperature
mumptai_ has quit [Quit: Verlassend]
mumptai has joined ##openfpga
pie_ has quit [Remote host closed the connection]
pie_ has joined ##openfpga
Sinclair2 has quit [Quit: Bye Bye]
zino has quit [Read error: Connection reset by peer]
zino has joined ##openfpga
<gruetzkopf>
oh i have a (small) tankless heater at home, it's only 21kW :P
rohitksingh_work has quit [Read error: Connection reset by peer]
soylentyellow has quit [Remote host closed the connection]
soylentyellow has joined ##openfpga
Miyu has joined ##openfpga
moho1 has quit [Ping timeout: 268 seconds]
moho1 has joined ##openfpga
mumptai has quit [Quit: Verlassend]
<whitequark>
rqou: i've never heard of PEDOT:PSS before
X-Scale has quit [Ping timeout: 272 seconds]
<whitequark>
oh my god
<whitequark>
I copied a line from this latex pdf and all I got was C& *) !"#$ %$ &,,( &
<whitequark>
no
<whitequark>
that's not it
<whitequark>
it even fucks up my terminal
<whitequark>
how do you fail at latex that badly
<whitequark>
rqou: survives 210°C for 10 min
<whitequark>
and 120°C for 1000 h
<whitequark>
at 210°C for 10 min it loses an order of magnitude in conductivity
massi_ has joined ##openfpga
massi_ has quit [Client Quit]
massi_ has joined ##openfpga
massi_ has quit [Remote host closed the connection]
massi_ has joined ##openfpga
flaviusb has quit [Ping timeout: 260 seconds]
flaviusb has joined ##openfpga
massi_ has quit [Quit: Leaving]
massi_ has joined ##openfpga
massi_ has quit [Remote host closed the connection]
massi_ has joined ##openfpga
massi_ has quit [Remote host closed the connection]
X-Scale has joined ##openfpga
massi_ has joined ##openfpga
massi_ has quit [Remote host closed the connection]
massi_ has joined ##openfpga
massi_ is now known as m4ssi
massi_ has joined ##openfpga
m4ssi has quit [Quit: Leaving]
massi_ has quit [Remote host closed the connection]
m4ssi has joined ##openfpga
massi_ has joined ##openfpga
massi_ has quit [Client Quit]
m4ssi has quit [Client Quit]
m4ssi has joined ##openfpga
m4ssi has quit [Client Quit]
m4ssi has joined ##openfpga
rohitksingh has joined ##openfpga
m4ssi has quit [Remote host closed the connection]
mumptai has joined ##openfpga
rohitksingh has quit [Quit: Leaving.]
zino has quit [Remote host closed the connection]
zino has joined ##openfpga
digshadow has quit [Ping timeout: 268 seconds]
azonenberg_work has quit [Ping timeout: 252 seconds]
azonenberg_work has joined ##openfpga
<rqou>
whitequark: ugh, i was afraid of that
<rqou>
this means that on a board i have to assemble the components before the electroluminescent material
pie_ has quit [Remote host closed the connection]
<rqou>
azonenberg_work: how small (physically) can i get triacs?
<azonenberg_work>
If you can keep the voltage to max 100V
<azonenberg_work>
it might be doable
<rqou>
yeah I'll research it some more later
<rqou>
gotta do work that pays me :P
<qu1j0t3>
same :/
* azonenberg_work
is staring at jtaghal source trying to figure out how to shoehorn SWD into the object model
<rqou>
azonenberg_work: i keep telling you that your object models tend towards too constraining :P
<azonenberg_work>
rqou: no that isnt the issue
<azonenberg_work>
Most of the high level interfaces dont assume jtag
<azonenberg_work>
The issue is trying to figure out how to reuse the most code possible
<azonenberg_work>
with two different transport layers
<azonenberg_work>
As well as how to refactor the UI-side code which, right now
<azonenberg_work>
starts by probing a JtagInterface and then discovering stuff off that
<azonenberg_work>
Doesn't help that i am doing htis blind because my first SWD-capable devkit is a day or two out in the mail still
<rqou>
that still sounds like an "object model too constraining" problem
<rqou>
also, have you considered the easy "if (swd) { ... } else { ... }"
<azonenberg_work>
OK, now what about when i try to add support for PIC32 2-wire ICSP?
<rqou>
use a switch statement? :P
<azonenberg_work>
i probably will, to create the transport layer driver
<azonenberg_work>
but i want virtual dispatch after that
<azonenberg_work>
The problem is that the common ground among all of these protocols is so limited
<azonenberg_work>
It's basically getting adapter name etc, requesting to probe the adapter to see what's attached
<azonenberg_work>
And then getting a pointer to an abstract "device"
<azonenberg_work>
Which can have almost no functionality because there is no JTAG DR in SWD, etc
<shapr>
azonenberg_work: have you considered letting people contribute money towards buying certain hardware for the RE effort?
<shapr>
much like early Linux where people sent hardware to Linus to get support added?
<azonenberg_work>
shapr: right now the bottleneck is my time
<azonenberg_work>
$DAYJOB is funding me to work on it a bunch so i'm making progress on the stuff that matters to them
<rqou>
seriously just hire some illegal immigrants to finish your house for you :P
<azonenberg_work>
rqou: lol
<azonenberg_work>
Ally is sanding yesterday's sheetrock now
<azonenberg_work>
We need to hang a few more panels before we're ready to paint and hang cable tray still
<azonenberg_work>
It's made more challenging than it should be by the fact that nothing is even and the stud spacing isn't regular
<azonenberg_work>
so i cant hang a full 4x8 sheet almost anywhere
<azonenberg_work>
i have to cut it because one joist or stud is half an inch to the side of where it should be
<azonenberg_work>
then i try to hang it and find something isnt square so there's a gap on one side, or the ceiling is'tn level, etc
<azonenberg_work>
isn't*
<azonenberg_work>
At one point i had a situation where i was trying to do a wall where the ceiling was not square to the studs
<azonenberg_work>
The bottom of the wall was not square to the studs
<azonenberg_work>
The ceiling and floor were not parallel
<azonenberg_work>
And the studs were not vertical
<azonenberg_work>
So i had to put angled cuts on everything to make it work
<azonenberg_work>
These are the sorts of problems you just don't have in new construction (if it's done sanely at least)
<etrig>
what are my best options for working with max3000a in 2018? interested in dumping its configuration and, if possible, performing some analysis
<etrig>
there's also an apex20k on this target which has the actual interesting stuff and I dumped its configuration from flash
<rqou>
etrig: troll answer: "ask my dad"
<rqou>
what are you trying to do? make a new design or just RE an existing design?
<etrig>
rqou: I want to understand it enough that I can make some changes
<rqou>
MAX PLUS II is still available and runs perfectly under Wine
<rqou>
do you have machine-readable design files? or just a piece of hardware?
<etrig>
do programmers work with wine too?
<rqou>
lolno
<rqou>
"bring your own programming algorithm"
<qu1j0t3>
i do
<rqou>
or bug azonenberg_work
<etrig>
I didn't think it was a silly question since there are some dll replacements for using libusb
<rqou>
iirc this is a (the first) jtag-capable part?
<etrig>
I just have hardware and some bsdl files for those two components
<etrig>
dumped firmware through boundary scan
<azonenberg_work>
etrig: Hmm, is that a product term CPLD?
<rqou>
yes
<azonenberg_work>
Can you get hold of a version of Quartus that runs on it?
<rqou>
no
<azonenberg_work>
works with*
<rqou>
use max plus ii, seriously
<azonenberg_work>
rqou: well it sounds like he wants to patch an existing bitstream on existing hardware
<azonenberg_work>
If you can get a compiler it will be a lot easier to RE the bitstream
<rqou>
max plus ii is a compiler?
<rqou>
it's the predecessor to quartus
<etrig>
I think the link to the last supported version was broken in intel's archive, but an earlier version was available
<rqou>
afaik that's what people actually used back in the day
<etrig>
the flash seems to have a couple bitstreams for the apex20k along with a couple nios programs
<etrig>
I wanted to figure out in what circumstances the different configurations are loaded
<rqou>
anyways, since i have "rather extensive" experience reverse engineering product term cplds, the hardest part by far is figuring out the interconnect
<rqou>
although depending on what you're actually trying to do you can possibly get away with a complete black-box RE approach
<rqou>
without having to take apart the bitstream
<rqou>
etrig: suggestion: ping us again after normal business hours in us pacific time and we can have a much more extensive discussion :P
<etrig>
sounds good, thanks
<pie_>
business starts after business hours
<rqou>
today in being very productive: "why do i not have access to JIRA"
<pie_>
rqou, so that you can be productive
<openfpga-bot>
jtaghal/master 2df3d1d Andrew Zonenberg: Added TestInterface / TestableDevice classes
<openfpga-bot>
jtaghal/master 414a06c Andrew Zonenberg: Refactoring: Moved some ARMJtagDebugPort logic into ARMDebugPort
<openfpga-bot>
[jtaghal] azonenberg pushed 2 new commits to master: https://git.io/fAsoy
<rqou>
pie_: except i actually need access to jira to file bugs :P
<openfpga-bot>
[jtaghal] azonenberg pushed 2 new commits to master: https://git.io/fAsXq
<openfpga-bot>
jtaghal/master 9376ee4 Andrew Zonenberg: Refactored JtagInterface/TestInterface to now contain a list of TestableDevice's
<openfpga-bot>
jtaghal/master 534d5bb Andrew Zonenberg: Removed JtagInterface::m_devicecount as it's redundant. Moved GetDeviceCount to TestInterface
<openfpga-bot>
[jtaghal-apps] azonenberg pushed 1 new commit to master: https://git.io/fAsXs
<openfpga-bot>
jtaghal-apps/master b4cffd8 Andrew Zonenberg: Refactoring for TestInterface support
<openfpga-bot>
[jtaghal-cmake] azonenberg pushed 1 new commit to master: https://git.io/fAsXG
<openfpga-bot>
jtaghal-cmake/master 245b68b Andrew Zonenberg: Updated to latest submodules
<azonenberg_work>
rqou: so the other thing that i have to change is all of my ui code
<azonenberg_work>
During the high level chain enumeration etc i cant assume i have things like an IR length
<azonenberg_work>
to print out
<azonenberg_work>
i have to check if my transport is jtag first :P
<awygle>
lol @ CONFIG_RANDOM_TRUST_CPU
<azonenberg_work>
When i first started jtaghal, given the name
<azonenberg_work>
i had no plans to ever support any other transport layers
<azonenberg_work>
Hmm, this means i also need to refactor my FTDIJtagInterface class a bit
<azonenberg_work>
To split the FTDI interface wrapper logic from the JTAG protocol logic
<azonenberg_work>
So i can reuse the FTDI stuff for SWD
GenTooMan has joined ##openfpga
sgstair has quit [Read error: Connection reset by peer]
sgstair has joined ##openfpga
* awygle
is bored
<awygle>
what's everybody else working on today?
* jn__
has been reviewing code
* rqou
has been trying to balance pwning things and breaking things
<rqou>
while also waiting for somebody to fix my jira
<pie_>
I made some progress on cleaning my room...
<awygle>
i've been trying to learn how windows event tracing works
<azonenberg_work>
awygle: adding SWD support to jtaghal
<azonenberg_work>
more precisely, doing the necessary refactoring so it will work
<rqou>
why does it seem like certain people really really want knowledge to be inaccessible?
<rqou>
can i get another whitequark rant?
<awygle>
jesus fuck
* awygle
adds "write a textbook" to his todo list
<whitequark>
rqou: see also: elsevier
<whitequark>
something something capitalism
<awygle>
where's scihub for books? oh wait that's libgen
<whitequark>
yep
<rqou>
that was a pretty weak rant :P
<awygle>
not really textbooks though?
<whitequark>
depends
<awygle>
or maybe i haven't been looking
<whitequark>
it has all the classic texts
<awygle>
i should upload all my useless textbooks instead of lugging them around
<whitequark>
you dont actually need the latest textbook edition for *knowledge*
<awygle>
right, only for graft
<whitequark>
you want it so you can solve exercises because your instructor wants the ones from the latest edition
<whitequark>
because he's a corrupt fuck
<awygle>
i am sometimes hesitant to jump on board the "everything is terrible because capitalism" train, but for this subject, sign me the fuck up
<rqou>
heh Berkeley eecs just hires armies of TAs to write new exercises instead
<awygle>
berkeley eecs does both things
<awygle>
depends on the prof
<rqou>
ah true
<rqou>
but they've done quite a good job with the popular courses
<awygle>
i paid 15$ for an embedded systems textbook (print on demand self-published by the prof) and like 250$ for a digital design one
<awygle>
in the same quarter
<awygle>
err semester
<jn__>
250$ for a book?!
<rqou>
yeah that's pretty typical
<jn__>
how is that even possible
<awygle>
someone should set up a crowdsourcing type website where students upload the problem sets from their books using like, iphone photos
<awygle>
so only one student per class has to buy it
<awygle>
that probably exists...
<rqou>
i thought that was called "Facebook"
<awygle>
jn__: see above re: graft
<awygle>
captive market
<awygle>
re-release it every year by swapping the order of chapters 6 and 7
<awygle>
let students sell it back to the library for 20$
<awygle>
.... i just noticed firefox is eating 56% of my GPU
<awygle>
i wonder if i'm running a cryptominer
<awygle>
oh yeah they smartened up with this online homework system crap
<awygle>
fuck the world
<rqou>
anyways, can someone please improve the situation significantly by hacking the shit out of disney to the point where they go out of business? :P
<awygle>
not sure that would actually help in this case
<zkms>
btw libgen has PDFs of books and it's great
<awygle>
i was just musing on how hard it would be to DDOS those online homework sites
<rqou>
not in this specific case, but it should be useful in general
<rqou>
although disney is probably too big to fail at this point
<openfpga-bot>
[jtaghal-apps] azonenberg pushed 1 new commit to master: https://git.io/fAsNf
<openfpga-bot>
jtaghal-apps/master 8ff3e49 Andrew Zonenberg: Removed vestigial support for "recoverable errors" performance counter
<rqou>
i mean, $EMPLOYER had the biggest data breach in history and somewhat survived
<awygle>
yeah that contributes to my general bafflement at security people
<awygle>
idk how you can maintain a belief that security matters at all to anyone
<pie_>
hm. so i know some homeschool kid who just got enrolled in this ashworth college thing. wonder if it's any good.
<azonenberg_work>
doxygen, but judging by appearance it probably calls out to graphviz internally
<azonenberg_work>
awygle: anyway, thats what the jtaghal hierarchy (well, some of it) is looking like now that i have partial SWD support
<rqou>
eww
<rqou>
way too much O_o
<azonenberg_work>
I can only imagine how it will look when i add FTDISWDInterface
<azonenberg_work>
Which derives from both FTDIDriver and SWDInterface
<rqou>
solution: stop deriving
<awygle>
are any of these actually _interfaces_?
<azonenberg_work>
awygle: They're interfaces in the sense of an adapter that lets you speak X protocol
<rqou>
why does every vendor need their own class?
<awygle>
abstract classes with only pure virtual methods and no data?
<azonenberg_work>
awygle: Yeah some of them are
<azonenberg_work>
But most have at least some minimal code
<azonenberg_work>
rqou: because most vendors have a lot of common code
<rqou>
awygle: of course not, azonenberg_work loves to use inheritance as bags of random code and hook points
<awygle>
yeah i would do this quite a bit differently. but because i said that, you're going to ask me how, and i don't have a fancy chart.
<azonenberg_work>
For example, the same flash IP used in different MCU families
<azonenberg_work>
with the same register set
* awygle
is feeling very Done today
<rqou>
don't like "api design bikeshed ad nauseum?"
<awygle>
i'm just cranky. and i've had at least three "am i taking crazy pills?" conversations today.
<azonenberg_work>
rqou: and they're not "hook points"
<azonenberg_work>
They're common APIs that different devices implement
<pie_>
well awygle DOES work for dataio thing
<awygle>
hm, good point. i wonder if i could contribute to jtaghal if i wanted to lol
<azonenberg_work>
How else would you implement something like "push foo.hex to this MCU, i dont care how"?
<rqou>
i write a "detect mcu" function and then i use a giant switch statement?
<azonenberg_work>
eeeew
<awygle>
i write a detect mcu function and then i use a jump table
<azonenberg_work>
virtual dispatch is so much more maintainable when you have a lot of different devices
<azonenberg_work>
awygle: So basically virtual dispatch
<rqou>
if necessary the switch arms call functions
<azonenberg_work>
Just in a more syntactically awkward form
<awygle>
literally the midpoint between switch and virtual dispatch
<azonenberg_work>
Well the advantage of virtual dispatch in a case like this is scalability/maintainable
<awygle>
the point is that you don't need a ProgramMCU object and you don't need MCU.Program either, you need a function that takes a Programmer and a File and does the needful
<azonenberg_work>
awygle: But now you have to touch a zillion different pieces of code to add support for a new part
<rqou>
if necessary i create an interface that has a programDammit function :P
<awygle>
where Programmer is actually IProgrammer
<azonenberg_work>
vs creating a new class and then editing one function to instantiate it based on the JEP106 idcode
<rqou>
and with 🦀 -lang you can choose whether you want virtual dispatch or not
<azonenberg_work>
and now all the new code for that chip is in one place
<awygle>
azonenberg_work: in the nominal case you add one line to a data structure to add a new part.
<awygle>
it's way more maintainable
<pie_>
omnomnominal
<awygle>
actually in the omnomnominal case you touch no code and it goes "oh this is a cortex M, i'ma use my cortex M programmer"
<awygle>
but idk how realistic that is as i don't actually use ARM very much
<azonenberg_work>
awygle: that works fine for *debug*
<azonenberg_work>
As the arm debug interface is standardized
<awygle>
and so i don't know if the IDCODE can tell you it's a cortex M
<azonenberg_work>
address maps for cortex-m are semi-standard but not enough to actually use
<azonenberg_work>
The IDCODE cannot, the IDCODE is that of an ARM JTAG-DP
<awygle>
anyway. i don't like your design. sorry. but if it works for you, live your best life.
<azonenberg_work>
You then have to connect to that and walk a potentially recursive set of data structures in rom
* awygle
goes to find something to raise his blood sugar, or maybe a nap
<azonenberg_work>
And then figure out what's there
<azonenberg_work>
re programming, flash IP is not standardized at all
<azonenberg_work>
neither is the location of the SFRs, or of flash itself
<azonenberg_work>
So thats where all the vendor device classes come in
<azonenberg_work>
You could definitely structure the object/function model differently
<azonenberg_work>
But vendor specific code is pretty unavoidable
<rqou>
aaargh fucking crowdstrike
<cyrozap>
And of course with most targets to get decent flashing speeds you need to load and execute some code in the MCU's SRAM that handles the lower-level programming stuff, using JTAG/SWD as just a way to get the data into the target's to-be-flashed buffer.
Bike has joined ##openfpga
<azonenberg_work>
cyrozap: exactly, or in the case of psoc calling rom code
<azonenberg_work>
A generic arm debugger is not THAT hard to build
<azonenberg_work>
a generic arm *programmer*? not so easy