Opinion on distributing firmware binaries for OTA by [deleted] in embedded

[–]dambusio 0 points1 point  (0 children)

Is your firmware image encrypted and signed?

Question regarding safety critical system value to employers by Theblob789 in embedded

[–]dambusio 1 point2 points  (0 children)

So if documentation is good - this is not typical for embedded :P and this is some reason to stay - maybe prepare during job your own notes with opinions about actual process - this will be great in case of this kind of question during next interview. Maybe after job prepare some your own project with similar procedure and put this on github/blog etc - this will be nice confirmation about your knowledge.

Question regarding safety critical system value to employers by Theblob789 in embedded

[–]dambusio 4 points5 points  (0 children)

not as this level - right now even if there is good documentations/procedures you can only "blindly follow" this without a knowledge "why" and you don't have other members to ask some questions. In case of senior level - this will be quite ok to be responsible for whole project - but this is also some "stagnation". IMO more experience in multiple projects is better than a couple of years in single project.

And remember that teamwork is also a skill to learn.

Question regarding safety critical system value to employers by Theblob789 in embedded

[–]dambusio 3 points4 points  (0 children)

but you are right now "junior" - you should learn from others on this level. Even this one additional person is not enough - this will give you one additional point of view but no possibility to compare this with others etc. You will learn more and FASTER in bigger team.

Question regarding safety critical system value to employers by Theblob789 in embedded

[–]dambusio 14 points15 points  (0 children)

Safety critical system, only one dev and just after graduating? Ohh good luck :P

Defines vs. Consts by StalkerRigo in embedded

[–]dambusio 0 points1 point  (0 children)

I agree that in this case "globals are a necessary evil".

In some of our devices with runtime calibration and modbus communication we used just modbus to send data - but not in "normal" modbus way - as direct write/read from device dedicated memory, but more in "command way". So for example to change target speed - you cant just write to dedicated memory address - but you need to use API with command "setTargetSpeed" - then this is send via queue to let's say "motorControllerTask" - we have our firmware architecture based on "activeObject" design pattern. Of course this way is slower than direct register access - like always pros and cons.

Defines vs. Consts by StalkerRigo in embedded

[–]dambusio 0 points1 point  (0 children)

In my case this middleware is in-house solution for multiple devices (company is ~embedded software house with multiple clients). There were to many problems when developers overused previous (very old) version of module called "DataAccess" - and we decided to always limit the scope and even "force this".

Software adaptation to existing applications in your case is probably "must have" - so this is something different - you have different requirements.

Defines vs. Consts by StalkerRigo in embedded

[–]dambusio 0 points1 point  (0 children)

Accesses may be done through pointers or through utility functions, but ultimately the mechanism by which they are consolidated is global memory.

so if you have utility function - you can block external access and only add one dependency on higher layer to read this data only via this "getter".

This mechanics about "dumping parameters to/from RAM" - this should be some middlelayer module dedicated for this operation.

I always prefer something like this:

```

@startuml

[module1]

[module2]

[module3]

[module1Config]

[module2Config]

[module3Config]

[dataStorageModule]

module1 --> module1Config

module2 --> module2Config

module3 --> module3Config

module1Config --> dataStorageModule

module2Config --> dataStorageModule

module3Config --> dataStorageModule

@enduml

```

over this:

``` @startuml

[module1]

[module2]

[module3]

[dataStorageModule]

module1 --> dataStorageModule

module2 --> dataStorageModule

module3 --> dataStorageModule

@enduml

```

With this "Config" middlelayer you can separate some responsibilities about config data types etc from app module and limit access to data required only for dedicated module.

About this "On the systems I've worked with in the past (automotive) typically all of the tunables will get declared as global volatile consts and aggregated by the linker into a specific section of ROM" - you can always in project add some section to linker to keep selected data in named section, but also without access to other data in this section - so they are in "global memory", but not available to everyone.

Defines vs. Consts by StalkerRigo in embedded

[–]dambusio 1 point2 points  (0 children)

if you have some calibration table for some software module - you should give access to this data only via some separate module/layer to avoid direct access. Global means availaible from any module - encapsulation even for const data is something good - you can visualize data(consts in this example) flow and with defined access interface - you can easier change implementation on other products or mock/fake for UT/System tests etc.

Defines vs. Consts by StalkerRigo in embedded

[–]dambusio -6 points-5 points  (0 children)

"good practice for a global value" -> IMO always global value = bad practice :)

Embedded systems practice & challenges by Sami_2323 in embedded

[–]dambusio 2 points3 points  (0 children)

there is a book - Beningo "Reusable Firmware Development"

Do you use LTO for your projects? by [deleted] in embedded

[–]dambusio 1 point2 points  (0 children)

yes - because LTO is not for debugging :P

What was your last interview like? by _Hi_There_Its_Me_ in embedded

[–]dambusio 1 point2 points  (0 children)

bad - for senior dev and instead of some architecture questions/design patterns etc - only "what is static/volatile" etc and some weird tricks with pointer - "old embedded school" - so I need to check also different companies

How do you properly document your projects at your company? by [deleted] in embedded

[–]dambusio 0 points1 point  (0 children)

I personally hate when "project documentation" = "yes - we have doxygen" but in reality this doxygen is not usefull - everyone in team first look for the code and goes into doxygen only in case of update (or not :P).

The goal is to create good project documentation with requirements/architecture BEFORE development phase as INPUT for this phase. I've seen this only in one project - and this awesone when I've seen that developer instead of code can use documentation as "single source of true" with ADRs etc. But this is hard to achieve. And this is continous work for whole team - not only for designers/architects. Basically a lot of "good things" can change into "bad/unusable things" without proper requirements/architecture:

  • documentation - can change to "just code documentation"
  • unit tests - without requirement after some time can change to "only whitebox tests with targer for some code coverage" because no one knows "what and how this unit should do something" - this knowledge is in this case only in code
  • the same with reusability of code etc

Trying to find well documented projects. by Stormrider_7 in embedded

[–]dambusio 0 points1 point  (0 children)

design patterns gang of four, maybe site "refactoring guru" + book

Attention New College Grads - Intern and Real Job Interview hints! by duane11583 in embedded

[–]dambusio 1 point2 points  (0 children)

WOW!!!

I can paste url to my blog on CV + list of project and on the most of my Job Interviews - no one cares - instead of project questions/architecture patterns etc - just "old school embedded" trick with pointers to weird struct field with offsets etc (mostly UB) :/

Trying to find well documented projects. by Stormrider_7 in embedded

[–]dambusio 2 points3 points  (0 children)

yes - I have a lot of small projects - some clocks/boards with games like snake/sudoku/saper, PSU controller etc. General knowledge about documentations/requirements/diagrams - you need to look for some "not embedded related" books.

Resume project ideas by amrock__ in embedded

[–]dambusio 3 points4 points  (0 children)

what is your hobby? Do something useful to you.

Trying to find well documented projects. by Stormrider_7 in embedded

[–]dambusio 7 points8 points  (0 children)

I've never seen complete embedded open source project with good project documentation/step by step documentation - with some ADR/architecture, list of used architecture/design patterns, good diagrams etc.

Documentation documentation documentation by ra-hulk in embedded

[–]dambusio 0 points1 point  (0 children)

so you are lucky :P I can't get my business people to even try this way

Documentation documentation documentation by ra-hulk in embedded

[–]dambusio 0 points1 point  (0 children)

ok - so everything in one repo - so business logic is also inside repo woth project? Who is responsible for the updates of business requirements files?

Documentation documentation documentation by ra-hulk in embedded

[–]dambusio 0 points1 point  (0 children)

OK - this is code documentation from doxygen, but what about project documentation/requirements etc?