|
Puke is a pejorative for a low level soldier, kinda like a Grunt.
Iβve given up trying to be calm. However, I am open to feeling slightly less agitated.
Iβm begging you for the benefit of everyone, donβt be STUPID.
|
|
|
|
|
Horrible word though, thanks for the explanation
In a closed society where everybody's guilty, the only crime is getting caught. In a world of thieves, the only final sin is stupidity. - Hunter S Thompson - RIP
|
|
|
|
|
Wordle 973 3/6*
π¨β¬β¬π¨β¬
π¨β¬π©π©π¨
π©π©π©π©π©
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
β¬β¬π©β¬β¬
π©β¬β¬β¬π¨
π©π©π©π©π©
In a closed society where everybody's guilty, the only crime is getting caught. In a world of thieves, the only final sin is stupidity. - Hunter S Thompson - RIP
|
|
|
|
|
Wordle 973 4/6
β¬β¬β¬β¬π¨
β¬β¬β¬π¨β¬
π¨π¨π©β¬π©
π©π©π©π©π©
|
|
|
|
|
Wordle 973 5/6
π¨β¬β¬β¬β¬
π¨π¨π¨β¬β¬
π¨π¨π©β¬β¬
β¬β¬π©π¨π¨
π©π©π©π©π©
|
|
|
|
|
Wordle 973 4/6
π¨π¨β¬β¬β¬
β¬π¨β¬π©β¬
π¨β¬π©π©β¬
π©π©π©π©π©
Ok, I have had my coffee, so you can all come out now!
|
|
|
|
|
Wordle 973 4/6*
π¨β¬β¬β¬β¬
π¨β¬π©β¬β¬
β¬π¨π©π¨π¨
π©π©π©π©π©
|
|
|
|
|
I did it. I got the STM32MP157-DK evaluation board running on bare metal, no operating system. Boot time is pretty fast, but could be faster if I move away from using U-Boot, which thinks my code is a linux kernel.
I think I managed to get SPI code in place too but I have yet to wire up a logic analyzer to test with.
This is crazy. It also required me to install linux on my laptop. The VMs just hated me.
I even got both cores working, and I have a codebase that has my graphics library integrated, which by the way, I made a design decision a year ago with it that saved my bacon on this project. The library isn't fundamentally thread-safe BUT you can isolate different screens, and each handles its own rendering, so you can run them on different cores without synchronization between them.
Trouble is I still need synchronization anyway, and I may have to make some spinlocks and such with std::atomic if that works or LDREX and STREX asm instructions if it doesn't. Lovely.
Everything I'm doing I haven't done since maybe the 1980s. Messing with boot loader code, writing OS level system interaction, etc, and that was 8 and 16 bit processors which were far simpler than even this little embedded monsters.
It's an adventure
The screen below is proof of life. It came from the serial port of my device.
U-Boot 2020.01-stm32mp-r1 (Feb 16 2024 - 16:44:10 -0800)
CPU: STM32MP157DAC Rev.Z
Model: STMicroelectronics STM32MP157D-DK1 Discovery Board
Board: stm32mp1 in basic mode (st,stm32mp157d-dk1)
Board: MB1272 Var3.0 Rev.C-03
DRAM: 512 MiB
Clocks:
- MPU : 800 MHz
- MCU : 208.878 MHz
- AXI : 266.500 MHz
- PER : 24 MHz
- DDR : 533 MHz
NAND: 0 MiB
MMC: STM32 SD/MMC: 0
Loading Environment from MMC... *** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
****************************************************
* WARNING 500mA power supply detected *
* Current too low, use a 3A power supply! *
****************************************************
Net: eth0: ethernet@5800a000
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc0 is current device
15272 bytes read in 30 ms (497.1 KiB/s)
## Booting kernel from Legacy Image at c2000040 ...
Image Name: stm32mp1-baremetal image
Created: 2024-02-17 0:54:04 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 15208 Bytes = 14.9 KiB
Load Address: c2000040
Entry Point: c2000040
Verifying Checksum ... OK
Loading Kernel Image
Starting kernel ...
ABC
Core0: Flashing an LED is hard work! I'm going to wake up Core1 to help.
Core0: I'll handle flashing LED1, and tell Core1 to flash LED2...
Core0: Starting Core1
Core1: Good morning, Core0! I'm happy to help, I can flash LED2 twice as fast as LED1!
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
Excellent work and play mixed together
I'm envious
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
When something like that happens to me the cry of 'It's alive, alive I tell you, they said I was mad but it's alive, alive I tell you' comes from my desk.
|
|
|
|
|
Congrats! That is so cool.
It requires a 3A power supply?
|
|
|
|
|
Yeah - USB C, and it's actually connected to one but for some reason it's saying otherwise.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
Have you written your own bootloader ?
In a closed society where everybody's guilty, the only crime is getting caught. In a world of thieves, the only final sin is stupidity. - Hunter S Thompson - RIP
|
|
|
|
|
I started to, but then I realized I could get U-Boot working on it.
However, I may go back to my own because U-Boot takes a bit more time than I think it should.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
Any time I think you can't surprise me anymore... you come with your next crazy success.
Congratulations
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpful answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
I go to mount my USB SD reader under WSL, and it gives me an error. It's an unformatted disk and I intend to use the gdisk tools - specifically sgdisk to partition it. I need to put files in very particular locations on the SD card.
WSL freaks out on me during the wsl --mount \\.\PHYSICALDRIVE2 --bare
I start digging around, and come to find out there's a way to do it if you can figure out how to add iSCSI modules to the linux kernel.
It's not easy, because Microsoft uses a custom kernel for it.
So here's me, with a hypervisor system already, installing VMWare player and Debian 12 just so I can copy a few files.
But in order to get my workflow in order I'll need to set up this dev environment in the new VM.
All of this because WSL is half baked in areas. Not pleased, Microsoft.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
Same problem when trying to use USB devices with Hyper-V, we tried to use an "EV Token" USB dongle for signing purposes but that is not possible with Hyper-V. There seem to be some 3rd-party solutions however.
|
|
|
|
|
|
This explains the rash of Dell BIOS updates I've been receiving lately.
|
|
|
|
|
and we think https is secure.
Charlie Gilley
βThey who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.β BF, 1759
Has never been more appropriate.
|
|
|
|
|
The maddening bit to all of this is that poking these articles further, you find stuff like the metrics for performance reduction post-patch because they can't really "fix" the hardware so we get software fixes sitting atop it and gumming up the works.
|
|
|
|
|
I'm very interested in feedback on this. Yes, it's somewhat related to my latest article[^], but I'm going through what I explain below, right now..
What if you were going to design some new service or app and you were told:
Development Manger: "All high-level classes must depend only on Interfaces." What if I told you that and was entirely serious.
Would you balk? or think, "Yes, that is the way it is and should be."
After that your manager says,
Development Manager: "Something else will decide how to build the implementation which will fulfill the Interfaces." Would that sound normal to you, or completely crazy? Or somewhere in between?
The Implications
Do you honestly understand the implications?
No Implementation Code
One of the implications is that the code Service or App you are creating basically has no implementation code in it. (Or very little.)
Why?
Because your high-level app only depends on easily-replaceable Interfaces.
That means if you want to see the implementation, you'll need to go to the Library (probably a separate project) which contains the implementation that is used to fulfill the Interface.
How do you feel about that?
Do you know how crazy it is to look at project that has been designed this way?
Have you ever experience a project that is carried out like this?
Why I'm Thinking About This Even More?
I have just completed 50 pages (of a total of 241) of the very old book (2013) DependencyInjection With Unity (free PDF or EPUB at link)[^].
|
|
|
|
|
If I get you right you're talking about having a 3rd DLL to carry the interface definitions, your App relies on that, and yet another DLL implements them, am I right?
Because if so, this seems logical for an enterprise app, and entirely overkill for small or even "mid size"** applications
** I gauge application size not by source code count, but by the size of the team that developed it. That's where the complexity really comes in, in terms of making the project fly. That's when separation of concerns and such become valuable, when your team grows too large to sit next to each other in the office. (just as an example. my point is when it goes from "hey, how's this work" to "let's have a meeting about that when i get a chance" that's when you need to go to interfaces, at least IMO.
For those apps where your team members aren't at the ready, separating concerns is useful.
From a maintenance perspective, it's a lot of extra work, so if it doesn't add value I'd skip it.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
I appreciate the feedback. You're summary is a good one and related to one of the key points made by the MS Unity Application Block PDF that I read, right after my original post.
Quote: When You Shouldnβt Use Dependency Injection
Dependency injection is not a silver bullet. There are reasons for not using it in
your application, some of which are summarized in this section.
β’ Dependency injection can be overkill in a small application, introducing
additional complexity and requirements that are not appropriate or useful.
β’ In a large application, it can make it harder to understand the code and
what is going on because things happen in other places that you canβt
immediately see, and yet they can fundamentally affect the bit of code you
are trying to read. There are also the practical difficulties of browsing code
like trying to find out what a typical implementation of the ITenantStore
interface actually does. This is particularly relevant to junior developers and
developers who are new to the code base or new to dependency injection.
It's interesting because "theoretically" I absolutely love the idea of DI, IoC and writing everything to an Interface.
But, if you like to look at code, it is quite terrible.
There's a project where this has been carried out that is a small(ish) project which has about 8 dependencies (all are Interfaces & the implementations are in separate DLL projects).
To look at the code or debug-step the code you need to create a VStudio solution with the 8 projects as included Projects and then you can step into the code of one or the other.
It's a lot of overhead.
And, yes, I agree with what you said about team size too. If you have nine different people working on each item (1 on the main service and 8 on each dependency) then breaking up is good.
|
|
|
|