• 0 Posts
  • 276 Comments
Joined 1 year ago
cake
Cake day: June 20th, 2023

help-circle







  • Basically the variables like “greeting” in the program occupy memory locations, like “location 3”. Symbol resolution is when the compiler sees a name and figures out the associated location. Normally that is done with something like a Python dictionary (in the old days you’d have to implement the dictionary yourself, which was an exercise in its own right).

    Slightly complicating the python example, there can be local and global variables in separate locations but with the same name. So the compiler has to figure out from context which one you meant. That too is an exercise.





  • Fair enough. If your product isn’t safety or security critical then it’s mostly a matter of getting it working and passing reasonable testing. If it’s critical you might look for outside help or review, and maybe revisit the decision to use C.

    The book “Analysable Real-Time Systems: Programmed in Ada” was recommended to me and looks good. I have a copy that has been on my reading pile for ages. I was just thinking about it recently. It could be a source of wisdom about embedded dev in general, plus Ada generally fosters a more serious approach than C does, so it could be worth a look. I also plan to get Koopman’s book that I mentioned earlier.



  • In C in particular, you have to be very cognizant of the tricky ways the language can screw you with UB. You might want to try some verification tools like Frama-C, use UB sanitizers, enable all the compiler warnings and traps that you can, etc. Other than that, I think using too many obscure features of a language is an antipattern. Just stick with the idioms that you see in other code. Take reviewer comments on board, and write lots of code so you come to feel fluent.

    Added: the MISRA C guidelines for embedded C tell you to stay with a relatively safe subset of the language. They are mostly wise, so you might want to use them.

    Added: is your issue with C or with machine code? If you’re programming small MCUs, then yes, you should develop some familiarity with machine code and hardware level programming. That may also help you get more comfortable with C.




  • If you have some questions why not post here? I’m unfamiliar with “services” (places that charge their own fees on top of what the mentor gets) and think it’s probably better to engage someone directly. The thing is, doing it as a business proposition sounds expensive if you’re paying with personal funds. Consulting rates for someone good will be pretty steep.

    What are you good at now? What do you want to get better at? What kind of work do you want to do?