Embedded

I was thinking of getting into embedded development, specifically for Linux-based devices and more importantly to develop on a GNU/Linux-system. I don't want anything to do with "System development" on Window machines. But do you really have to deal with all these shitty IDE? I just want GNU/Linux + C + vim and a compiler. If you work in this field, I would like to hear more.

Other urls found in this thread:

uk.farnell.com/stmicroelectronics/nucleo-l073rz/dev-board-stm32l073rz-nucleo-32/dp/2517902
www2.keil.com/stmicroelectronics-stm32/mdk
st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.html
youtube.com/watch?v=eE_v9I9eXXo
spin.atomicobject.com/2015/08/19/learn-embedded-systems-programming/
twitter.com/SFWRedditImages

...

I work in the field building network devices. We use Debian, vim, autotools, gcc, python, and bash. No IDEs.

Sounds good. Now I only need a micro controller to start tinkering with that is FLOSS.

Google for the following things:

That's probably it.

Arduino's IDE is bottom-of-the-anus fecal matter; the text editor is garbage, and the IDE only supports compiling and uploading "arduino sketches" which are absolutely shit-tier garbage with the worst performance possible.

Use gcc's avr tools and avrdude. You're so, so much better off.

Fuck arduino's shit. The hardware might be alright, but jesus god almighty is that software utterly worthless.

Is avr-gcc similar to the official IDE coding?

I hate using this Java-tier "IDE", but I still need some libraries from it

Anything is possible with judicious use of tmux

Can you give any real downsides of using them?

I do this for a living. Here's how I'd recommend getting started, a setup very like I use daily.

Buy this board: uk.farnell.com/stmicroelectronics/nucleo-l073rz/dev-board-stm32l073rz-nucleo-32/dp/2517902 This is the only thing that will cost you money.

Download the Keil tools: www2.keil.com/stmicroelectronics-stm32/mdk

Download the init code generator: st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.html

Now there's something of a learning curve ahead of you. Generate the first draft of your project with STM32CubeMX. Write ANSI C (I wouldn't recommend C++) code to implement the domain-specific stuff. I find ST's HAL libraries quite good. It's a matter of taste whether you bother with an OS or not. You can not use the IDE and just use the command-line ARM tools underneath with a Makefile and Emacs/vi if you prefer (like I did).

Note that people who get paid for this tend to avoid "maker"/Arduino/Raspberry Pi stuff. The costs don't make sense for mass production, and anyway vanilla C with or without an RTOS is eminently suitable for this domain.

Now you can apply for jobs.

Would a Texas Instruments Tiva launchpad work instead? I ordered one a while back with some kit pieces but never got around to learning it.

CE IS FOR FAGS

EE IS BEST STEM

The hardware would be fine. But I find bad tools to be an incredible timesink. I just don't know what tools you would use. Upstream gcc, GNU ld, gdb & openocd is fine, but semiconductor vendors seem to insist on customising (breaking) them and forcing you to use their own buggy build system and/or Eclipse. I can recommend Keil (and it's free for M0+) and IAR personally.

That board is only £10.

Nigga people have enough problems converting from dumb Arduino 5V to the rest of the world's 3.3V. He's gonna fry that chip in 3 days, guaranteed.

At least point him to an F0.

Yes. I use text editor, not only to write code but to maintain my and other systems. I can ssh into another computer and use the text editor I know and love.

I can use whatever build system I want, I can use Makefiles, CMake, SCons etc. It does not matter because I have decoupled that from my text editor. I know you can generate some shitty project files with CMake for Visual Studio but it is really embarrassing process. More importantly, I don't force my project settings onto someone else like someone with Visual Studio does. They will have their shitty project files all over the place and their inane map structure. I would argue that such build system is also more portable, I can easily deploy them on any continue-integration system.

I can use all tools available on my operating system. If you are a Wangblow user you don't know about such thing. A simple tool like grep is light years ahead of any search feature available in an IDE. I can even execute it from within my text editor.

I can customize my text editor exactly the way I like, I know there are plugins in an IDE but when it comes to perfecting your text editing experience, there is just no comparison. The downside of learning something like Vim is that every text field you enter text in, feels inferior. Like going from a Mercedes to a bike.

Lastly, vim/neovim and Eclipse are not proprietary and cross-platform.

That is what I can think of just on top of my head.

I also like being in my terminal, editing files or project files with an IDE would just not be the same and very strange.

youtube.com/watch?v=eE_v9I9eXXo
Looked at a random video and it was as I suspected
Windows has truly crippled developers, what a mistake it was for Microsoft to even exist

Just because it's not designed for your needs doesn't make it useless

...

Yeah all this extra consumer support sure is hurting

this seems like a good introduction:
spin.atomicobject.com/2015/08/19/learn-embedded-systems-programming/


what would be some project ideas to get started with?

i'm EE and i am still interested embedded systems software development.

The canonical first project, equivalent to "hello world", is to flash an LED on and off once a second.

After that, it's totally up to you and what you're interested in. And what devices are on your hardware, or connected to it with a breadboard. If I was interviewing, I'd be moderately impressed with a simple weather station: read temperature, pressure, rainfall every half hour for a day, upload the data once a day to an Internet server.

CE and EE are l90% the same classes while you are an undergraduate (they diverge after that however).

So what about Atmel? I recently bought an eval board from them (www.atmel.com/tools/ATSAME70-XPLD.aspx). I've gotten to the point where I can get openocd to talk to it and I think I got GCC to work but I'm not sure what libraries I need to get up and running. I see the ASF library on atmel's website but I'm not sure I don't want to give them my information to download it and I don't know if I know how to use it. But then again, I don't even know if it's necessary. I would greatly appreciate some pointers.

is this right?
STM32 nucleo is to ARM microcontrollers as Arduino uno is to an ATmega?

i don't think many of us on here are gonna be doing mass production runs

Nucleo is the board. STM32 is the microcontroller. ARM is the architecture (people other than ST make them, e.g. Atmel were mentioned. Similar to how Intel and AMD make compatible PC chips).

Arduino is the eval board. ATmega is the microprocessor. And also the architecture, since there is no second-source (this might be considered a risk in business).

Re the mass production comment, if you're doing it as a hobby with

thanks for this

Yeah, Texas Instruments uses a fork of Eclipse called Code Composer Studio

Differentfag here. What's f0 refer to? Is it a different STM32 board or something totally different?

Check out Molloy's book and videos on cross-platform development with Beaglebone Black using Ubuntu OP.

That looks like a nerd dream state user. Context?

i purchased an STM32F429ZI. I am trying to flash it without using this gay STM32CubeMX by using a Makefile.

Where the fuck is all the firmware? st's site just gives link for their shitty Cube software that I don't want to use.

I am more into ai and machine learning. Don't expect to ever gitgud with embedded. But I'd like to gitgud with avr. Expendable $2 microcontroller to do some fun things with. I've messed with avrdude avr-gcc but it's been a while. May move back to it later this year.

I'm not sure I understand. You have to compile the firmware yourself. You can eschew theSTM32CubeMX init code generator if you want to write the clock tree boilerplate yourself for educational purposes. I wouldn't recommend avoiding the STM32Cube HAL libraries though, I think they make the code more readable, and the low-level variant (not sure if this is supported on your chip) seems to have no overhead.

You can probably compile all this with a free eval license of Keil, you'll almost certainly be below the code size limit. Then you can flash it using ST-Link.