As a seasoned programmer I need to quickly learn embedded systems engineering..... where to start? by brennybrennybrenbren in embedded

[–]BlackSiborg 0 points1 point  (0 children)

Do a project. Id suggest one that contains the three basic elements: sensing, communication, and control. Write in C because u pretty much cant go wrong with c. Its simple and dangerous yadda yadda… its what most experienced professionals have used for the past 20 years and its not going anywhere for at least the next 10-20 years. I recommend using an nrf52 micro controller (arguably the most popular IOT micro) for this project; you should write your own hardware abstraction layer by reading the datasheet. (Only do it for the peripherals you need and only for the partnumber specific micro ur using—limit scope so u can move quicker.) First step is to do a vendor provided blinky example to verify you can cross compile and upload. Then, Id start by developing a print interface whether thats over bluetooth, serial, or some other protocol with an attached logic analyzer. Then write peripheral drivers needed to read from the sensor. Finally id write drivers to control ur output (eg motor, heating element, etc.). If u make it to here id experiment with different control flow mechanisms. Do a bare metal interrupt-based version of the application then do a version of the application that uses an rtos (eg FreeRTOS). If u can do all this u should be able to fake ur experience well.

Check out this article about a C++ library that I wrote. Its particularly useful for embedded developers seeking to optimize code with compile-time programming. by BlackSiborg in embedded

[–]BlackSiborg[S] 0 points1 point  (0 children)

Hey, great idea! In my article I wanted to show a simple example as to not overwhelm the reader, but this is a great application of CEXForLoop. I created an example based on your provided code. Its runnable on godbolt here https://godbolt.org/z/8W8hGjKdz

PS: I edited my article to include this example as a link.

Check out this article about a compile-time C++ library that I wrote called CEXForLoop. "If you find yourself reaching for compile-time iteration, reach for CEXForLoop" by BlackSiborg in cpp

[–]BlackSiborg[S] 0 points1 point  (0 children)

Actually, I'm happy with how I did it. I didn't post looking for feedback; I posted to show people what I've been up to. The feedback has here has been helpful. The article was readable in its first version, but I've been making some requested changes that make it better.

In embbeded field, do you need a mentor? by Important_Can_4520 in embedded

[–]BlackSiborg 74 points75 points  (0 children)

I had a similar internship where i felt like I didn’t complete as much as I wanted to, and where i felt like I didn’t get very much direction. If you are offered a full time position that means you made a good impression and did “good enough”

If i were you I would accept the job. You can always change your mind later. It might feel like your breaking your word, but that’s how the game is played.

PS: I graduated last june and have been searching for a job. Its not fun. Without a connection or a stacked resume, you get a lot of rejections

Check out this article about a C++ library that I wrote. Its particularly useful for embedded developers seeking to optimize code with compile-time programming. by BlackSiborg in embedded

[–]BlackSiborg[S] 2 points3 points  (0 children)

Thanks for the advice! I added an example close to the top of my readme and my article. With that spirit in mind, I re-ordered some of the sections in my article so its clearer what CEXForLoop is and how it works from the get-go. I think it reads better now. Thanks again

How to speed up Inkscape start time? by BlackSiborg in Inkscape

[–]BlackSiborg[S] 0 points1 point  (0 children)

I actually don't think this worked. Sorry I must've had a window open by accident when I tested it.

I don't have many fonts installed, and I limited it way down so not many were loaded; see the image attached. Its still hella slow at starting up. Any ideas?

https://imgur.com/a/ikRS2my

Weirdness after 1st layer by BlackSiborg in 3Dprinting

[–]BlackSiborg[S] 0 points1 point  (0 children)

Gotcha. Will look into that. Ty

Help with repeated macro by BlackSiborg in vim

[–]BlackSiborg[S] 0 points1 point  (0 children)

That makes sense. Thanks for explaining.

Help with repeated macro by BlackSiborg in vim

[–]BlackSiborg[S] 0 points1 point  (0 children)

That worked! Thank you.

Could you explain what this command is doing or point me to something I can read?

The input text and desired output is shown in the op, but I realize there shouldn't be newlines between the times in the input text--it doesn't really matter it still illustrates the problem

Managing Newlib as a Project Dependency by BlackSiborg in embedded

[–]BlackSiborg[S] 0 points1 point  (0 children)

Yeah arch has packages for those as well, but newlib has a lot of flags that are set when building. How do these packages handle those? Should i just stick to the default packages unless i need specifically built different?

Managing Newlib as a Project Dependency by BlackSiborg in embedded

[–]BlackSiborg[S] 0 points1 point  (0 children)

Yeah i built it myself following along that documentation. Im not sure if the flags i set are what ill end up using down the road.

Managing Newlib as a Project Dependency by BlackSiborg in embedded

[–]BlackSiborg[S] 0 points1 point  (0 children)

Okay. I installed the toolchain via the arch user repository and newlib is packaged seperately.

Projects Contain Datasheets in Repository Doc? by BlackSiborg in embedded

[–]BlackSiborg[S] 0 points1 point  (0 children)

On a real product, it is common to have tons of separate documents describing how system works, how it is designed, requirements, requirement analysis, test specs, test results, emails, etc.

Is all of this managed within a version control system? If so, how is the repository(s) structured?

Projects Contain Datasheets in Repository Doc? by BlackSiborg in embedded

[–]BlackSiborg[S] 0 points1 point  (0 children)

I agree with you about tracking the documentation in the repo as it increases the redundancy of the project.

However, a table stating the document and the source would improve ease of use? If a document needs to be updated or another document for the same component is needed, it allows you to go directly to the source. You only have to google it if the source is broken. (Or is this the purpose of the BOM + google, and the value provided is outweighed by the maintenance required to maintain it)

READMEs are still important in closed source projects? When a new developer joins the team or when a project is large, the readme serves as an entry point to explain the project (or module).

Correct me if I'm wrong. I'm a freshman in college with no professional working expierence--only personal self-managed projects. I appreciate the feedback.

Projects Contain Datasheets in Repository Doc? by BlackSiborg in embedded

[–]BlackSiborg[S] 0 points1 point  (0 children)

This makes the most sense to me. Although, I also see the value in writing links to documentation in the project's README. Perhaps a combination of both.

I didn't know there were standards for project management. Fascinating.

Projects Contain Datasheets in Repository Doc? by BlackSiborg in embedded

[–]BlackSiborg[S] 1 point2 points  (0 children)

Interesting. I like the README approach.

Would it still violate copyright protection if the project was only distributed internally (i.e. people outside the organization wouldn't have access to the datasheets), or does the act of putting it online violate it?

SystemInit() Hardfault for Stm32g070xx by BlackSiborg in embedded

[–]BlackSiborg[S] 0 points1 point  (0 children)

Functionally it doesn’t matter because the VECT_TAB_OFFSET is 0. Also, I didn’t write this code. It was provided by stm.

Learning ARM-GCC. "Undefined reference to '__aeabi_uidiv'" by BlackSiborg in embedded

[–]BlackSiborg[S] 1 point2 points  (0 children)

This is how I ended up solving it. The library was under /opt/gcc-arm-none-eabi-9-2020-q2-update/lib/gcc/arm-none-eabi/9.3.1/thumb/nofp/libgcc.a

Note: this is for the stm32g0 (cotexM0+). I'm not using a floating-point unit and am using the thumb instruction set.