Author Topic: Who should write embedded software?  (Read 28353 times)

0 Members and 1 Guest are viewing this topic.

Offline LukasTopic starter

  • Frequent Contributor
  • **
  • Posts: 412
  • Country: de
    • carrotIndustries.net
Who should write embedded software?
« on: June 10, 2014, 12:22:29 pm »
Hi there,

who should write embedded software? Software or hardware people? It seems as if both are ill-suited in their own way.

The software folks tend to think in classes named AbstractObjectGeneratorXMLFactoryProxyDelegate and therefore produce bloated and overly generic code.
On the other hand, the hardware guys may be able to produce efficient code, but it often leads to unmaintainable spaghetti code because they never heard of object orientation or even functional programming or general software engineering basic dos and donts. (See toyota unintended acceleration issue http://www.safetyresearch.net/Library/BarrSlides_FINAL_SCRUBBED.pdf )

What are your thoughts?

Lukas
 

Offline dannyf

  • Super Contributor
  • ***
  • Posts: 8221
  • Country: 00
Re: Who should write embedded software?
« Reply #1 on: June 10, 2014, 12:24:52 pm »
Both: embedded engineering is expensive because it has to be developed by people with hardware AND software experience.
================================
https://dannyelectronics.wordpress.com/
 

Offline ecat

  • Frequent Contributor
  • **
  • Posts: 296
  • Country: gb
Re: Who should write embedded software?
« Reply #2 on: June 10, 2014, 12:32:20 pm »
I've seen hardware people write good code and I've seen software people write horrible code. The correct answer I think, is those with sufficient understanding of the problem and sufficient knowledge of the tools.

As for the AbstractObjectGeneratorXMLFactoryProxyDelegate folks. When software is pushed as an art in and of itself with scant regard for the actual, required solution, well, the occasional ego may be inflated but no one really wins.

 


Offline madires

  • Super Contributor
  • ***
  • Posts: 7695
  • Country: de
  • A qualified hobbyist ;)
Re: Who should write embedded software?
« Reply #4 on: June 10, 2014, 01:00:17 pm »
who should write embedded software? Software or hardware people? It seems as if both are ill-suited in their own way.

Someone with knowledge of both, of course. In Germany you can study EE with specialization in "Technische Informatik" (technical CS?) which covers both.
 

Offline AlfBaz

  • Super Contributor
  • ***
  • Posts: 2183
  • Country: au
Re: Who should write embedded software?
« Reply #5 on: June 10, 2014, 01:03:57 pm »
Hi there,

who should write embedded software?
Masochists  >:D
 

Offline LukasTopic starter

  • Frequent Contributor
  • **
  • Posts: 412
  • Country: de
    • carrotIndustries.net
Re: Who should write embedded software?
« Reply #6 on: June 10, 2014, 01:19:57 pm »
http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=507885&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D507885

I'm not advocating OOP as the solutions to all problems we aren't in the 90s anymore. The web development crowd is raving about functional programming, there are countless blog articles out there on 'how functional programming changed my life' etc. Even if these are too euphoric, it shows that these people care about progress and are open to new thougts. The past months/years have brought them a multitude of interesting frameworks such as react.js, angular, metor.

For me it seems as as if the embedded software people are falling back in terms of software technology. I haven't come across any embedded software developer who knew of functional programming.
 

Offline madires

  • Super Contributor
  • ***
  • Posts: 7695
  • Country: de
  • A qualified hobbyist ;)
Re: Who should write embedded software?
« Reply #7 on: June 10, 2014, 01:40:39 pm »
This week's fashion is red stripes and next week's is green dots. All those programming methods with their fancy names aren't anything new, it's just maketing slang. A good programmer analyzes the problem, takes any constraints into account and chooses the best way to get the job done. How would functional programming help me if I have to implement a state-maschine driven protocol stack? There's no method which is able to fix all problems and to make everything simple. It's going to be a mix.
 

Offline HackedFridgeMagnet

  • Super Contributor
  • ***
  • Posts: 2028
  • Country: au
Re: Who should write embedded software?
« Reply #8 on: June 10, 2014, 01:43:24 pm »
Quote
As for the AbstractObjectGeneratorXMLFactoryProxyDelegate folks.

Nice one. LOL
 

Offline Jeroen3

  • Super Contributor
  • ***
  • Posts: 4067
  • Country: nl
  • Embedded Engineer
    • jeroen3.nl
Re: Who should write embedded software?
« Reply #9 on: June 10, 2014, 02:00:23 pm »
Define embedded software.
 

Offline diyaudio

  • Frequent Contributor
  • **
  • !
  • Posts: 683
  • Country: za
Re: Who should write embedded software?
« Reply #10 on: June 10, 2014, 02:15:15 pm »
Define embedded software.

You asked for it. You got it.

quote wiki
Embedded software is computer software, written to control machines or devices that are not typically thought of as computers. It is typically specialized for the particular hardware that it runs on and has time and memory constraints.[1] This term is sometimes used interchangeably with firmware, although firmware can also be applied to ROM-based code on a computer, on top of which the OS runs, whereas embedded software is typically the only software on the device in question.
 

Offline ecat

  • Frequent Contributor
  • **
  • Posts: 296
  • Country: gb
Re: Who should write embedded software?
« Reply #11 on: June 10, 2014, 02:20:57 pm »
This week's fashion is red stripes and next week's is green dots. All those programming methods with their fancy names aren't anything new, it's just maketing slang. A good programmer analyzes the problem, takes any constraints into account and chooses the best way to get the job done. How would functional programming help me if I have to implement a state-maschine driven protocol stack? There's no method which is able to fix all problems and to make everything simple. It's going to be a mix.

 :-+

To be fair the purity of several functional programming languages has been corrupted to allow for the storage of state information, Haskill for example has monads (a name entirely too similar to gonads for my liking), a change made so one could use the language for 'something useful (tm)' I assume ;)

I'm not advocating OOP as the solutions to all problems we aren't in the 90s anymore. The web development crowd is raving about functional programming, there are countless blog articles out there on 'how functional programming changed my life' etc. Even if these are too euphoric, it shows that these people care about progress and are open to new thougts. The past months/years have brought them a multitude of interesting frameworks such as react.js, angular, metor.

For me it seems as as if the embedded software people are falling back in terms of software technology. I haven't come across any embedded software developer who knew of functional programming.

Forgive my ignorance on the subject but how does an embedded programmer make the best of a functional programming language when using only 128 bytes of ram? Sorry, that was a little facetious. More seriously, how does a pure, immutable functional programming language deal with interrupts?


Define embedded software.
Supply your understanding, if there is any disagreement we can take the discussion to a new thread. No need to pull this thread too far off topic.

 

Offline dannyf

  • Super Contributor
  • ***
  • Posts: 8221
  • Country: 00
Re: Who should write embedded software?
« Reply #12 on: June 10, 2014, 02:25:04 pm »
Quote
For me it seems as as if the embedded software people are falling back in terms of software technology.

The progress in embedded programming is constrained by a different (however slgihtly) set of parameters: the hardware is limited, the speed requirement is significant, ...

However, it has made significant progress over the  years. When I started, everyone coded in assembly, and there was no debugger and IDE and ...

Now, most people code in C, the use of libraries and modules are everywhere - I would have never imagined the use of uCOS or emWin for example 10 years ago, ...

With mcus being more and more powerful, it is simply a matter of time that we start to code more and more like those on a PC - some ARM chips today are being coded in .net framework for example.

Quote
I haven't come across any embedded software developer who knew of functional programming.

Maybe you should meet more people outside of your usual circles of friends, :)
================================
https://dannyelectronics.wordpress.com/
 

Offline Kjelt

  • Super Contributor
  • ***
  • Posts: 6459
  • Country: nl
Re: Who should write embedded software?
« Reply #13 on: June 10, 2014, 02:26:38 pm »
+1 embedded software is such a huge container definition I have seen businesses building wafersteppers who's software was running on multiple SUN servers in a rack and they call their software engineers, embedded software engineers.
And what would you call software running on a raspberry pi with multiple GBs of Flash and a tiny Linux OS?

If you define embedded software solely to a tiny microcontroller directly driving a piece of hardware then you need IMHO an engineer that exactly knows the impact the code has on that hardware, knowing the microcontroller with all its peripherals ins and outs but also the hardware that this microcontroller controls.
You need an engineer that can read and understand datasheets of microcontrollers and has profound knowledge of digital electronics and a little bit of analogue electronics for the interfacing with the analogue world. And also in our country this is a specialization from the EE education not from the computer science education.

Still if that hardware interfaces with for instance the internet through sockets, udp etc. i would choose a specialized computer science engineer to handle that part, or that same engineer must be a universal educated person with lots of different broad knowledge and interests  ;)

 

Offline dannyf

  • Super Contributor
  • ***
  • Posts: 8221
  • Country: 00
Re: Who should write embedded software?
« Reply #14 on: June 10, 2014, 02:29:50 pm »
Quote
This week's fashion is red stripes and next week's is green dots. All those programming methods with their fancy names aren't anything new, it's just maketing slang.

Some validity in what you are saying.

However, I do think it is generally true that the trend in coding, including embedded programming, is to move the programmer further away from the hardware. It happened and will continue to happen with PCs.

The same will also happen with embedded programming as well.
================================
https://dannyelectronics.wordpress.com/
 

Offline Jeroen3

  • Super Contributor
  • ***
  • Posts: 4067
  • Country: nl
  • Embedded Engineer
    • jeroen3.nl
Re: Who should write embedded software?
« Reply #15 on: June 10, 2014, 02:38:18 pm »
If an embedded system has windows ce, it suddenly falls of the scale of "embedded" for a lot of people.
Then AbstractObjectGeneratorXMLFactoryProxyDelegate is a real thing again.

I've heard of small payment devices with an 2 line lcd, which can be seen as embedded.
Running linux for an C# application...

On the other side are small energy efficient single function devices, which can be build up by abstracted object to reduce time to market using stuff from previous projects. Instead of cooking another pile of spaghetti.

But, operating system drivers might also be somewhere in the embedded area.

 

Offline dannyf

  • Super Contributor
  • ***
  • Posts: 8221
  • Country: 00
Re: Who should write embedded software?
« Reply #16 on: June 10, 2014, 02:40:53 pm »
Quote
Running linux for an C# application...

Because for some applications, the cost of software can be extraordinary, vs.the hardware cost.

In those cases, it pays (handsomely) to encapsulate your code in a hardware - independent way, as much as possible.
================================
https://dannyelectronics.wordpress.com/
 

jucole

  • Guest
Re: Who should write embedded software?
« Reply #17 on: June 10, 2014, 04:12:32 pm »
who should write embedded software? Software or hardware people? It seems as if both are ill-suited in their own way.

Someone who has successfully completed a similar project in the manner / style that you deem satisfactory;  but I guess like anything - you get what you pay for - unless of course you just get ripped off! ;-)
 

Offline retrolefty

  • Super Contributor
  • ***
  • Posts: 1648
  • Country: us
  • measurement changes behavior
Re: Who should write embedded software?
« Reply #18 on: June 10, 2014, 04:26:12 pm »
Quote
This week's fashion is red stripes and next week's is green dots. All those programming methods with their fancy names aren't anything new, it's just maketing slang.

Some validity in what you are saying.

However, I do think it is generally true that the trend in coding, including embedded programming, is to move the programmer further away from the hardware. It happened and will continue to happen with PCs.

The same will also happen with embedded programming as well.

 I think a lot of these new programming methods and styles are to try and bring order to chaos when 'teams' are producing the coding. It's a world of difference if a single person is writing all the code and performing all the testing, but when it's a 'team project' there are always problems no matter if it's a mainframe, PC, or embedded project.
 

Offline AG6QR

  • Frequent Contributor
  • **
  • Posts: 857
  • Country: us
    • AG6QR Blog
Re: Who should write embedded software?
« Reply #19 on: June 10, 2014, 06:26:39 pm »
Writing ANY nontrivial software well demands not only a knowledge of software techniques, but at least some familiarity with the application area.

Also, writing almost ANY nontrivial software well demands a knowledge of the environment in which the software runs.  In embedded software, especially the stuff that runs on small chips without an operating system, one may need to know details of the hardware environment and work very close to the hardware, keeping track of pin assignments, interrupts, etc.  That's a challenge, but it's a different challenge than application developers of non-embedded software who have the challenge of writing extremely portable software that runs on a huge variety of platforms with varying resources and operating systems.

One of the problems discussing embedded software is that it's such a broad topic.  My first exposure to it was seeing a presentation given by some guys who were writing software for the engine controllers that controlled large jet engines.  Those guys had to know software development, their hardware environment, and they also had to have some understanding of how the engine itself worked.  A mistake in the software could cause a plane to crash and/or damage a multimillion dollar engine, so they were encouraged to review and test their software before deploying it on an actual engine.  Because their computing hardware had to operate in an extreme environment of temperature and vibration, they used rugged old slow chips that were very constrained in memory, and had just enough computing power to get the job done.

The challenges there are a bit different than the task of writing embedded software for an infrared TV remote control.  And I'm not minimizing the challenges of a TV remote, trying to optimize hardware cost, make the best and most intuitive user experience, etc.

Even if you consider non-embedded software running on modern networked computers, most programmers need to know not only programming, but also something about their application area.  Writing a good finite element modeling program to help mechanical engineers compute stress and strain using 3-d models of mechanical parts requires a different set of knowledge and skills than writing an efficient and fast large-scale e-commerce site, which is different from writing a good compiler, which is different from writing an engaging and popular action game for PlayStation, Xbox, and the like.  And all of these are different from embedded software to run a microwave oven, or a pacemaker implanted in a person's chest, or a newspaper printing press, etc.  Software isn't all the same.


Who should write embedded software?  The people who know the area well.
 

Offline gocemk

  • Regular Contributor
  • *
  • Posts: 84
  • Country: mk
Re: Who should write embedded software?
« Reply #20 on: June 10, 2014, 07:00:25 pm »
Quote
Both: embedded engineering is expensive because it has to be developed by people with hardware AND software experience.

+1  :-+
This is absolutely true, but i have to agree that the trend lately is to further away the programmer from the hardware as much as possible. But as MCU's are becoming more and more powerful maybe this is a good thing, at least for speeding up the development time.

Also, where i come from, "Embedded Programming" is almost exclusively taught in Electronics or Automation/Robotic departments where most of the classes are for hardware. The situation is completely different in Computer Science departments where they completely avoid embedded, or even C for that matter.

Define embedded software.

You asked for it. You got it.

quote wiki
Embedded software is computer software, written to control machines or devices that are not typically thought of as computers. It is typically specialized for the particular hardware that it runs on and has time and memory constraints.[1] This term is sometimes used interchangeably with firmware, although firmware can also be applied to ROM-based code on a computer, on top of which the OS runs, whereas embedded software is typically the only software on the device in question.

I recently saw an add for an "Embedded C Developer" and the requirements were: "Excellent knowledge of C and Linux Kernel Development".
Can this be thought of as embedded software?

Quote
Masochists  >:D
:-DD :-DD :-DD :-DD :-DD
 

Offline dannyf

  • Super Contributor
  • ***
  • Posts: 8221
  • Country: 00
Re: Who should write embedded software?
« Reply #21 on: June 10, 2014, 07:05:16 pm »
Quote
But as MCU's are becoming more and more powerful maybe this is a good thing, at least for speeding up the development time.

Because software (thus people) are becoming exceedingly and exponentially expensive.
================================
https://dannyelectronics.wordpress.com/
 

Offline AG6QR

  • Frequent Contributor
  • **
  • Posts: 857
  • Country: us
    • AG6QR Blog
Re: Who should write embedded software?
« Reply #22 on: June 10, 2014, 07:22:12 pm »
I recently saw an add for an "Embedded C Developer" and the requirements were: "Excellent knowledge of C and Linux Kernel Development".
Can this be thought of as embedded software?

By many people's definition, yes.  If the final product has no way to load application programs on it, it's probably embedded software.  My TV runs Linux, though the Linux is pretty well hidden from view.  I would say the firmware running on my TV is embedded software.

But I'll concede that the definition of "embedded" can be a bit arbitrary.  Even when you think everyone in the room agrees on the words for the definition, you might find that there are grey areas where people disagree on whether a particular example fits the definition.
 

Offline zapta

  • Super Contributor
  • ***
  • Posts: 6189
  • Country: us
Re: Who should write embedded software?
« Reply #23 on: June 10, 2014, 07:23:54 pm »
The software folks tend to think in classes named AbstractObjectGeneratorXMLFactoryProxyDelegate and therefore produce bloated and overly generic code.

I observed this tendency with large frameworks (typically Java based) but not in embedded code.  Java and the refactoring tools of its IDE's make it very easy to add those layers of abstractions. It make sense when you write the code but more difficult for new comers to lean the code and understand the flow.  This is typically the tension, between easy writing or easy reading of the code.

One example is Juice, it's manages the dependency injection and simplifies the unit testing but almost impossible to follow.

 

Offline dannyf

  • Super Contributor
  • ***
  • Posts: 8221
  • Country: 00
Re: Who should write embedded software?
« Reply #24 on: June 10, 2014, 07:48:53 pm »
Quote
If the final product has no way to load application programs on it, it's probably embedded software.

Even if you could load software, it can still be considered embedded.

Bootloader + self-programming for example is widely used on mcu's: Arduino is one;

Many of today's mcus support IAP.

Many flash-based players / navigation systems are embedded. Smartphones too.

It used to be the case that embedded means naked / non-OS based but I don't think that's the case anymore. So the concept (of embedded) is evolving as well.
================================
https://dannyelectronics.wordpress.com/
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf