@azonenberg@ioc.exchange
@azonenberg@ioc.exchange avatar

azonenberg

@azonenberg@ioc.exchange

Security and open source at the hardware/software interface. Embedded sec @ IOActive. Lead dev of ngscopeclient/libscopehal. GHz probe designer. Open source networking hardware. "So others may live"

Toots searchable on tootfinder.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

gigabecquerel, to random
@gigabecquerel@chaos.social avatar

Because I'm a bit sick at home and don't have enough projects already I started another, albeit small, project. Making a mould to make a mould, to cast some epoxy and to make use of my ZnS:Ag I have here ;-)

image/jpeg
image/jpeg

azonenberg,
@azonenberg@ioc.exchange avatar

@gigabecquerel Nice! Did you vacuum degas the resin? What resin were you using?

I've had the best luck lately with Atom Adhesives AA-Bond F113 which is ultra low viscosity (175 cPs mixed).

azonenberg,
@azonenberg@ioc.exchange avatar

@gigabecquerel I've had good luck with Mann Inhibit-X on resin prints.

eniko, to random
@eniko@peoplemaking.games avatar

Do not understand why people always use bloated third party json libraries and then complain about it when I've seen people using pico 8 create json (de)serializers in like 15 lines of code

azonenberg,
@azonenberg@ioc.exchange avatar

@eniko Yeah this is something I was very careful about in ngscopeclient (which uses YAML metadata + binary waveform blobs, but the concept stands).

I've gone through several major iterations of the file format plus constant iterations adding features and settings, and I need to make sure that old files load in at least some semblance of correct state. No real way to do that other than manually.

ashten, to random

oh no... the clocks have coil whine

azonenberg,
@azonenberg@ioc.exchange avatar

@ashten Time to open them up and add some potting to the offending inductors?

azonenberg,
@azonenberg@ioc.exchange avatar

@ashten Because they were probably designed by middle-aged engineers who can't hear 15 kHz no matter how loud it is?

azonenberg,
@azonenberg@ioc.exchange avatar

@ashten (my hearing is still in decent shape apparently... just checked and I can hear 15.5 kHz pretty clearly but 16 starts to roll off and I'm not hearing 17 at all. Although I don't have any idea how flat the response of my sound card or headphones are that high up.)

pervognsen, to random
@pervognsen@mastodon.social avatar

There's a bunch of C-like successor languages that say they want to eliminate undefined behavior. I've never been able to figure out how they intend to deal with reads and writes to memory since a lot of these languages take what I would call the "naive" machine-centric view of memory which is hard to reconcile with source-level semantics for variables, etc. You can't really rename all of this stuff as "implementation-defined" and get out of jail for free.

azonenberg,
@azonenberg@ioc.exchange avatar

@pervognsen Are you talking about things like cross thread store reordering or what?

azonenberg,
@azonenberg@ioc.exchange avatar

@pervognsen Or the mismatches involving things like struct field packing and endianness?

azonenberg,
@azonenberg@ioc.exchange avatar

@pervognsen So pointer aliasing issues then?

Or just having a language that provides first class semantics for describing how variables are formatted in memory (i.e. replace C's abstract "integer of unknown size/format" data type with "32 bit little endian twos complement integer")? Because I'd definitely like that. And have not seen any language solve it well.

azonenberg,
@azonenberg@ioc.exchange avatar

@pervognsen So, I'd argue a reasonable happy medium is to have the in memory representation of a single variable well defined, and the result of exceeding the language-defined bounds of the object described by a pointer is UB.

So using (&a)[1] to reference variable b (given both as stack variables with no parent object) is illegal since it relies on the assumption that A and B are allocated at consecutive addresses. But casting &a to a byte* is well formed and gives a predictable result if dumped as bytes.

azonenberg,
@azonenberg@ioc.exchange avatar

@pervognsen However (&foo.a)[1] might be a well-defined way to alias foo.b since foo is a struct with (in such a language) a formally defined memory layout.

kwf, to random
@kwf@social.afront.org avatar

I'm thinking about just ripping autotools out of this project and if your environment can't handle an 8 bit char I'm going to just tell you that your environment isn't supported

azonenberg,
@azonenberg@ioc.exchange avatar

@kwf I'm all for that. Autotools includes lots of checks for really, really obscure platforms that use EBCDIC and odd-sized chars and generally things that no computer made this century probably has.

For libscopehal and ngscopeclient, I made an executive decision - driven in no small part by limited engineering resources - to only support little endian 64-bit platforms with Vulkan 1.0 available.

So basically Linux, MacOS, Windows on x86-64 or ARM64.

ezio, to random
@ezio@akko.wtf avatar

this is what i need for intel bluetooth to work, i think

now i have to look at the wifi drivers

azonenberg,
@azonenberg@ioc.exchange avatar

@ezio Because flash IPs are expensive so if you want the cheapest possible silicon design, you don't want to have internal config memory.

Which means either external flash (like the ESP32) or a tiny ROM that downloads application code on startup (like the FX2). The latter option avoids the cost of even putting a $0.25 flash chip on the board.

256, to random
@256@mastodon.social avatar

The Way Things Work (1994)
Personal Computer

azonenberg,
@azonenberg@ioc.exchange avatar

@256 Is that supposed to be PBRUSH.EXE? Looks similar but not quite exactly.

azonenberg,
@azonenberg@ioc.exchange avatar

@dheadshot @256 Maybe?

I loved pbrush. When we got our ME box that shipped with mspaint we copied a pbrush binary off the 3.1 system onto it so we could keep using it lol.

lethalbit, to random
@lethalbit@chaos.social avatar

I don't see many KiCad projects with detailed notes in the board files or schematic, which is kinda sad because it's a great way to keep notes for reference and important design descriptions.

My KiCad schematics and board files are absolutely littered with notes, with things from calculations for things to why things are done they way they are.

I wish more people would do it, makes things easier on everyone.

azonenberg,
@azonenberg@ioc.exchange avatar

@lethalbit @gregdavill I normally have the first/top level page just be connections between other sheets and some high level notes, but not to that extent. Fab notes live separately.

dalias, to random
@dalias@hachyderm.io avatar

Are there any papers on quantitative predictions for democracy by sortition? Stuff like estimating rates of different sorts of extremism, antisocial behavioral patterns, susceptibility to different kinds of manipulation, etc. to predict chances of various kinds of problems, estimate size of governing bodies needed to bound them low, etc.? This seems like it would be a fascinating topic that could also advance democratization.

azonenberg,
@azonenberg@ioc.exchange avatar

@dalias So... basically psychohistory?

azonenberg,
@azonenberg@ioc.exchange avatar

@dalias Well, I think we're probably well into the second or third Seldon Crisis at this point. So a bit late to start developing psychohistory but better late than never I guess.

azonenberg,
@azonenberg@ioc.exchange avatar

@dalias I wonder if IRL psychohistory would have the same weaknesses as the fictional version: namely, a sort of Heisenberg principle where predictions must be kept secret from the general public to avoid them changing their behavior and thus rendering the prediction incorrect.

Gut feeling is Asimov overestimated the general population's awareness/intelligence, and it wouldn't actually make much of a difference.

gsuberland, to random
@gsuberland@chaos.social avatar

made it to EMF, so here's a derpy lookin selfie near proto-nullsector

azonenberg,
@azonenberg@ioc.exchange avatar

@gsuberland You look weird without a gas mask on.

azonenberg,
@azonenberg@ioc.exchange avatar

@gsuberland @f4grx That's fine, any vaguely conical hat would be better than nothing.

As long as it's pointy end up not open end up. That would be more of a cone-of-shame. (did you see my post about that a few months ago? lol)

azonenberg, to random
@azonenberg@ioc.exchange avatar

First design in KiCAD 8. Super simple design done in one evening, just a pair of STM32L431s with some connectors and bypass caps, a SPI bus between them, and a QSPI flash hanging off one.

4 layer board with components on top side only. Another rare "no FPGA" design - I seem to be doing more of these small/quick test or accessory boards lately.

This one is essentially a power failure fuzzer for MicroKVS (https://github.com/azonenberg/microkvs) to make sure that interrupting it at any point will lead to writes atomically succeeding or failing, and never corrupt data. The test controller MCU (left) controls reset and power gating to the DUT MCU (right) and will be resetting and/or power cycling it at random intervals during testing. The DUT, meanwhile, will be constantly reading and writing simulated configuration data to flash and reading it back, and complain if anything fails.

It's also going to serve as a testbed for external quad SPI flash on STM32L4 (and STM32 in general) for MicroKVS.

azonenberg, to random
@azonenberg@ioc.exchange avatar

So apparently you can get the STM32L431 in 32 and 48 QFN. That's a decent bit of compute in a small, relatively cheap package.

Will have to add that to my inventory.

azonenberg,
@azonenberg@ioc.exchange avatar

@jpm The L431 is one I already have existing peripheral library support and software stack etc for.

My use case for this specific test is mainly "I need more flash than a L0 and the ability to test page-writable ECC flash without spending H7 level budget on a board I plan to test to destruction repeatedly, then swap the micro and go again".

azonenberg, (edited ) to random
@azonenberg@ioc.exchange avatar

You write safe Rust.

I disabled SIGSEGV in my C++.

We are not the same.

In all seriousness, I'd love if anyone had a better solution to this problem. But there doesn't seem to be any SFR bit I can set to make the STM32H7 flash IP not throw a bus fault on an ECC failure.

So if you ever have a bug in your firmware that writes to the same flash ECC block twice without erasing it, that flash block will become toxic and any future attempt to deref any address within it will segfault. Not good if you're trying to make a robust, log-structured data store (in which any bug or unexpected power cycle poisons the entire key-value store, segfaulting future reads).

Turning off faults when writing, or when doing CRC checks on read data, allows graceful degradation when things go wrong.

Still trying to figure out why the bootloader seems to be stepping on non-blank flash cells (it should be appending at the end), but at least it's not soft-bricking the board by throwing the bootloader into a fault handler before it reaches the DFU flow.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • GTA5RPClips
  • thenastyranch
  • ethstaker
  • everett
  • Durango
  • rosin
  • InstantRegret
  • DreamBathrooms
  • magazineikmin
  • Youngstown
  • mdbf
  • slotface
  • tacticalgear
  • anitta
  • kavyap
  • tester
  • cubers
  • cisconetworking
  • ngwrru68w68
  • khanakhh
  • normalnudes
  • provamag3
  • Leos
  • modclub
  • osvaldo12
  • megavids
  • lostlight
  • All magazines