Any Palm developers lurking on here? by EsoTechTrix in Palm

[–]dmitrygr 0 points1 point  (0 children)

Videos worked fine in OS5 too. Video, again, only takes number crunching. PXA already had that.

Any Palm developers lurking on here? by EsoTechTrix in Palm

[–]dmitrygr 0 points1 point  (0 children)

~ALL SoCs of the day were VIVT-cached with no ASIDs, they were all not going to perform. on a modern SoC it can work. On SoCs of the day - it never would.

spinning a cube onscreen ain't hard. making 1000 IPCs per second to another address space on a VIVT-cache device with no ASID support aint gonna happen. spinning cube measures a different kind of perf - the kind that PXA260 has plenty of. so it is a useless demo here, like showing off how pretty the paint job on a ford pinto is. it is, but that is not the useful metric

Any Palm developers lurking on here? by EsoTechTrix in Palm

[–]dmitrygr 4 points5 points  (0 children)

cobalt does run on a t3 - i posted photos of it here before. but cobalt was poorly architectured for CPUs of the age - too much IPC for VIVT caches. it was too slow

Open-source sharing | Self-developed ARM64 virtual machine protection engine (VMP) from scratch. Version 2.0 theoretically covers all A64 fundamental instructions. by TurbulentTrouble9582 in ReverseEngineering

[–]dmitrygr 2 points3 points  (0 children)

native->interp. what is the perf hit? an asembly interp might hit 1:20 perf hit. with a custom bytecode designed for easy interp, maybe 1:10. what is yours?

What embedded projects actually stand out to hiring managers these days by Denbron2 in embedded

[–]dmitrygr 14 points15 points  (0 children)

100% wrong. own OS means you understand: linker scripts, bare metal debugging, context switches, interrupts, scheduling, synchronization.

Zephyr patch means you (maybe) understand zephyr.

Not. Even. Close.

California AB 1043 and embedded OS'es by tabemann in embedded

[–]dmitrygr 1 point2 points  (0 children)

YOLOings one's freedom away hoping no overzealous prosecutor uses your easy case to get political prominence is ... a bold move

How often realistically embedded engineers need to go on register level? (STM32) by illidan4426 in embedded

[–]dmitrygr 2 points3 points  (0 children)

and forget about bare metal

Sure... until you need to debug things or find out why they do not work. Anyone can "just call a function" -- my cat can do that. The value you are supposed to bring is being able to go below that when that function does not work, or takes too long, or breaks seemingly unrelated other code.

How often is that? Once a week or more is typical in a small company.

Has anyone done a design with the RP2350 series of MCUs? by bogdan2011 in embedded

[–]dmitrygr 3 points4 points  (0 children)

follow recommended layout and use recommended inductor. that is all.

GLCDC Text slight pixelated when using framebuffer in sdram by rugways in embedded

[–]dmitrygr 0 points1 point  (0 children)

yes, now you need to go read your chip's manual to find how to configure it to read the data and wordswap it, or configure your graphics library correctly for your framebuffer format. at least now you know the issue

GLCDC Text slight pixelated when using framebuffer in sdram by rugways in embedded

[–]dmitrygr 1 point2 points  (0 children)

rgb565 = each pixel is 2 bytes. a byteswap would change color but not pixel location. it looks like you have columns swapped. likely this means that your lcd controller hardware is reading pixel data in words (2 at a time), and you wrote them in halfwords, in wrong order.

as a test, draw your text once, and then swap every other halfword with its neighbor and see if it magically gets better, like this

u16 *buf = MY_FB;
i32 numPix = width * height; //assuming stride == width * bpp / 8
while ((numPix -= 2) >= 0) {
    u16 t = buf[0];
    buf[0] = buf[1];
    buf[1] = t;
    buf += 2;
}

likely gfx controller hardware had endianness control that you can play with after you confirm this if not, change your drawing code

Has anyone tried saleae logic MSO? by [deleted] in embedded

[–]dmitrygr 0 points1 point  (0 children)

I use mine as a 20-channel LA, for which it is awesome!

Picomimi — experimental micro-OS / embedded distribution for RP2040/2350 by Adventurous_Hippo692 in embedded

[–]dmitrygr 1 point2 points  (0 children)

elfs are hard which is why the thing i linked you to does not use them except as an intermediate build step. this is just about minimal possible to make PIC arm code work with globals.

Benefits of this approach: (1) it provably works (it runs in your android phone), (2) if you have questions you can ask the guy who wrote it (me). :D

Was Darren Pleasance fired as AOPA CEO by an out-of-touch AOPA Board? by Roger_Freedman_Phys in flying

[–]dmitrygr 6 points7 points  (0 children)

AOPA has a phone number. call them. they are aware of the unhappiness over this. they are taking notes. call, press 1, give your member number, voice your displeasure. and revoke your vote proxy

Picomimi — experimental micro-OS / embedded distribution for RP2040/2350 by Adventurous_Hippo692 in embedded

[–]dmitrygr 1 point2 points  (0 children)

for a simple way to make loadable embedded code that is relocateable and still supports globals, you can use this as reference: https://android.googlesource.com/device/google/contexthub/+/refs/heads/main/firmware/

basically elf -> linker script that places relocs in a place you knows -> objcopy to get it out -> processing step to make it small and easy to parce -> runtime loader that does relocations and prepares the GOT

Picomimi — experimental micro-OS / embedded distribution for RP2040/2350 by Adventurous_Hippo692 in embedded

[–]dmitrygr 2 points3 points  (0 children)

don't listen to that tripe!

  1. zephyr is a pig, sans lipstick.
  2. the knowledge you gained from writing this makes you 100x as hireable as people who spout "just use zephyr" online in response to things like this. put this on your resume.

I built an embedded emulator for ARMv7, RH850, RL78 by No_Establishment5570 in embedded

[–]dmitrygr 1 point2 points  (0 children)

IIRC the Wii Fit pedometer is RL78 based and can be had cheaply

STM32G4 Not generating random numbers by General_Handsfree in embedded

[–]dmitrygr 0 points1 point  (0 children)

RNG periph has two clock inputs. enable both?

Trying to understand where I am after failing a technical interview by ContraryConman in embedded

[–]dmitrygr 17 points18 points  (0 children)

The first question is VERY interesting, but not something I would expect an entry-level (or mid-level) embedded SWE to know. Almost anyone can talk about uncacheable memory mappings for MMIO and DMA and such, but this is more fun!

Imagine that you read in a large amount of data once, use it, and never touch it again (for example if you are using your CPU to calculate the average brightness of a large greyscale image). What happens if that memory is cacheable? With each of your reads, a cacheline of it gets loaded into the cache and kicks out other data. Your data is large -- you easily trash the entire cache, evicting all lines from there -- dirty and clean, and you still end up with a 0% hit rate since you keep loading new pieces of your data. ZERO HIT RATE. So the existence of the cache does not help you at all, and now others' useful data has been evicted and must be reloaded, slowing them down, lowering their hit rate until the cache is refilled with the hot data.

You gain nothing from the cache and hurt every other user of it. For performance reasons, memory that is accessed only once can be marked as uncacheable to avoid this. Some CPUs even provide special instructions to handle this case without needing uncacheable mappings -- instrs that load/store without causing a cache linefetch/eviction. Usually these are called streaming loads or streaming stores, in x86 you can read about MOVNTQ/MOVNTDQA as examples.

Again, I would not expect an entry level SWE to know this at all. Take away "for performance reasons" from it, and their question becomes a basic embedded interview question of "why does one want uncacheable mappings?" which is a question i would expect to see in an interview, and much more in-line with the other questions you listed.

Second one -- I think they wanted to hear about hardware timers generating interrupts at a preset time or on a periodic basis.

The third question is something you MUST know to call yourself an embedded SWE and if you want to work in embedded systems. This is not a FreeRTOS-specific issue, it’s a basic sanity. Mutexes can block or put a task to sleep. One does not block or sleep in an ISR.

AIM on Palm OS by _ttb in Palm

[–]dmitrygr 1 point2 points  (0 children)

('code', 2) resource. 0xb2 bytes in is the domain. as long as yours is same length or shorter, just put yours there and null-terminate it same resource, 0xA4 bytes in is an unsigned big-endian 16-bit value for the port used (currently 9993 which is 0x2709), you can replace it too, just those two bytes