Ranter
Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Comments
-
superb rant, maybe my dude here @Fast-Nop cam provide some insight, also @Rememberme could say something about it. I have no knowledge of embedded systems, always wanted to start with it but found it a difficult and obscure part of engineering as a whole
-
Yeah and especially for STM32, this CubeMX crap which provides an HAL (HW abstraction layer) that doesn't actually abstract shit and instead just wraps register definitions in structs with useless function calls overhead. To even know what this crap is doing, you still have to read the refman! But boy it does create a vendor lock-in.
But there is a pretty good tutorial for Cortex-M. It's about assembly, but it also explains how to use the CPU bare metal, and most of that translates easily into C if need be:
https://mikrocontroller.net/article... -
@AleCx04 thanks but I'm more computer architecture than embedded. Ol' @Fast-Nop is the expert here.
@OP, the good thing about all those headers and libraries is that they allow you to focus on what's actually important. Eg. if you want your embedded board to calculate pi and print it out, you would have to write a serial driver first, which has nothing to do with computing pi (and is usually considerably more complex). That or use the debugger.
ARM is a complex system, so learning it unsystematically won't get you very far. You could look up "ARM assembly language programming" on Google (there's also a book of the same name that's pretty good, and a Udemy course which is also decent).
One way I learn a new board is reverse engineering libraries. You speak disparagingly of Arduino IDE. Why not try to incrementally replace the Arduino libraries with your own code by looking at what the actual library does? It's open source after all, so you can see a reference implementation. Or whichever library you're using. Do it function by function, at each step keeping the functionality the same, so at all times you have something that actually works.
You could also look at Hennessy and Patterson's "Computer Organization and Design", specifically the ARM edition for even lower level computer architecture details. Really nice for actually understanding what the processor's actually doing (although a high performance design looks very different from what's in that book). -
That's why i love opengl
Straight mathematics and no supercool library that does everything for you but is 1000× slower.
Just provides the basic tools, take it or leave it. (runs the shader you coded yourself etc.) -
dder22814yYeah, talking assembly; at least for intel x86 architectures there is a decent manual from them. I’d wonder if there is no such thing for arm 🧐
But wonderful rant! Welcome! -
@ScaryException OpenGL is a pretty heavy abstraction over the graphics stack actually, check out Vulkan.
-
@RememberMe heard about that, but right now I want to focus on OpenGl as it's an android project I am working on. But i'll definetely check out vulkan
-
@RememberMe wait a minute... how did i not notice that vulkan is also available for android?? Bruh
I fucking HATE all those extremely high level abstractions, IT IS ALMOST IMPOSSIBLE to find anything low level, especially for ARM... IT CANT BE THAT HARD TO JUST FUCKING FIND SOMETHING THAT DOES NUT USE 100000 HEADER FILES, and stupid large frameworks. I feel like everyone is fucking retarded, I want to learn the real stuff, but everything is bloated with high level stuff, and some kind of cult that gets a horny from using extremely easy bullcrap, that completely takes away the interesting parts of processors and embedded systems, IVE Been searching for days to FIND SOMETHING FUCKING USEFULL, even an MOTHERFUCKING 'LOW LEVEL' book GOES AND USE A BILLION HEADER FILES, and STUPID IDE's from which you learn absolutely nothing, IF i wanted to do nothing and learn nothing I WOULD USE ARDUINO IDE, but no i wont, I want to learn something, and I dont have access to university or anything, and it literally is impossible to find anything usefull, every idiot uses library's for everything, and builds their crap on frameworks as large as the mount everest.. Fuck me, why cant this be different ?
rant