Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
As far as I understand it, embedded software is just software (that runs on a general purpose CPU) that has little if any user input or configuration. Embedded software powers IP routers, cars, computer mice, etc.
My question is:
When (roughly) was the historical moment when embedded software was first considered cost-effective for some applications (rather than an equal technical solution not involving embedded software)? Which applications and why?
Detail: Obviously there is a tradeoff between the cost of a CPU fast enough to perform X in software versus the cost of designing hardware that performs X.
Embedded systems date from the Apollo moon landings. Specifically the Apollo Guidance Computer (AGC) - widely held to be one of the first examples of embedded systems.
Commercially in the early 1970's early microprocessors were being employed in products, famously the 4-bit Intel 4004 used in the Busicom 141-PF. Bill Gates and Paul Allen saw the potential for embedded microprocessors early with their pre-Microsoft endeavour the Traf-O-Data traffic survey counter.
So I would suggest around 1971/72 at the introduction of the Intel 4004 and the more powerful 8-bit 8008. Note that unlike the more powerful still Intel 8080 which inspired the first home-brew microcomputers and the MITS Altair, the 4004 and 8008 were barely suitable for use a general purpose "computer" as such, and therefore embedded computing systems pre-date general purpose microcomputers.
I would dispute your characterisation of what an embedded system is; if you were asking that question here's my answer to a similar question.
Related
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
Till now I used to think that embedded and real time systems are same. But when I was asked in an interview that what the difference is between the two, I was scared. I can't even get proper answer by searching in web.
It was a poor question perhaps since they are not mutually exclusive; an embedded system may be real-time or it may not. One term describes the physical embodiment of a system, the other describes its performance and response characteristics.
Embedded system describes a system that contains one or more software programmable devices but which is not itself a general purpose computer. Such a system typically has a fixed, single application rather than end-user selected and loaded software (which would make it general purpose).
However "embedded" covers a wide spectrum of systems and is not always easy to define; for example if you were writing the UMTS code for a smartphone, you might reasonably be regarded as an embedded developer, if you were writing Flappy Angry Birds 2.0 for that same phone however, you would not - so a smartphone may be both an embedded system and general purpose computer - depending on your view point. Similarly a hand-held games console's system software is embedded; the games themselves are not I would say.
A real-time system describes a system with deterministic low latency response to input events. An embedded system may be "real-time, or it might not. I would normally use the term "real-time embedded system" to be clear.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 4 years ago.
Improve this question
I'm trying to measure the effects of cpu overcommitting on a KVM setup (both host and guest). I can detect performance is degraded when the number of vCPUs is increased but ideally I want to look at some more objective metric (like CPU Ready in esxtop). Is there an equivalent to esxtop for KVM that provides a similar metric.
There is a fundamental difference between how you monitor VMs in KVM and how you monitor them with ESXi.
Since a lot of people run KVM in Linux, I'm going to assume your underlying OS is a Linux based one.
How to get CPU Ready like functionality with KVM?
With htop enable additional metrics and watch the gu section. This tells you how much CPU usage a guest is using.
Use virt-top which tells you overall CPU usage (among other things) of a guest.
The oversubscription principles that apply to ESXi also apply to KVM. Although KVM does not use CPU bonding (by default) like ESXi does, you still do not want to go more than 1:5 ratio pCPU to vCPU ratio in KVM. Of course, this depends on how much you're utilizing the CPUs. You also do not want to give more CPU cores than necessary either. Start with 1 core and move up.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I am working on a project involving the following with my team:
GUI and a keyboard for user interaction.
Real-time processing and display.
SPI communication.
USB-based printing.
1, 2 and 3 are to be done in parallel.
Currently we are using Raspberry Pi. But R-pi is lagging in doing the job. So any other embedded processor meeting the above specs and should be less than $100.
Any suggestion would be highly appreciated.
PS: Do ask questions if I'm vague in my statements.
Your lack of real-time response probably has more to do with the fact that Linux is not a real-time OS than the performance of the RPi. You can throw processing power at the problem if you like, but it still may not reliable solve your problem.
It is not possible to advise based on the little information you have provided; you'd need to define the real-time response requirements in terms of time and quantity of data to be processed.
While an RTOS might solve your real-time processing problems, that would need you needing drivers for the USB printer, display, and a GUI implementation, these are readily available for Linux, but not so much for a typical low-cost RTOS, especially a USB printer driver, since the raster-image processing required is complex and resource hungry - resources a typical Linux system will have.
If you have the necessary time and skill, you could port RTLinux to RPi (or some other board capable of supporting Linux). It has a different scheduler to the standard time-sharing kernel, and can be used to improve real-time response, but it is no substitute for a real RTOS for deterministic performance.
You may be better off using the RPi and connecting it to a stand-alone microcontroller to perform the hard real-time processing. There are a number of project examples connecting an Arduino to RPi for example. The lower clock rate does not mean slower response since the processor can be dedicated to the task and will not non-deterministically switch to some other task for long periods.
Try the beaglebone black. Its 1GHz processor should be more then sufficient to do your processing. Also it is ARM7, Ubuntu dropped support for ARM6 (Pi) a couple of months ago.
http://beagleboard.org/products/beaglebone%20black
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
The IEEE defines software engineering in the following way:
(1) The application of a systematic, disciplined, quantifiable
approach to the development, operation, and maintenance of
software; that is, the application of engineering to
software.
Source: http://www.idi.ntnu.no/grupper/su/publ/ese/ieee-se-glossary-610.12-1990.pdf
But what does systematic, disciplined and quantifiable mean in this context? Is there any further explanation from the IEEE?
You can rely on a dictionary:
http://dictionary.reference.com/browse/systematic:
having, showing, or involving a system, method, or plan
http://dictionary.reference.com/browse/disciplined:
having or exhibiting discipline; rigorous
http://dictionary.reference.com/browse/quantifiable:
to determine, indicate, or express the quantity of.
So, applying software engineering requires the exact execution of method that is precise with quantified steps and exact procedures regarding development, operation and maintenance of software.
or as it is state at the end:
http://dictionary.reference.com/browse/engineering:
the art or science of making practical application of the knowledge of sciences, as computer science, as in the construction of software. (I changed a little bit this definition) =)
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
A lot of you have starting to write programs since college or even earlier.
When you were on university the level of professionalism increased.
If you have to write an article about your software application how do you do it? I'm not talking about a documentation or help manual. I'm talking about an article/paper for academia world. Do you have any idea where can I find those type of articles for free?
This is also a programmer job, even we like to do it or not.
Here's one I made (much) earlier.
Abstract:
This paper presents details of the
Safety Argument Manager (SAM) a PC
based tool to support safety case
construction. SAM is novel in that it
stresses total system safety and is
designed to support an integrated
process for design and assessment. SAM
provides facilities for the
construction of high level safety
arguments and for building up complete
and consistent supporting evidence. In
this paper we focus on the achievement
of high quality supporting evidence,
by describing SAM's facilities for
integrated modeling and safety
assessment. We also illustrate the use
of SAM with a car braking system
example.
What it does, why it's novel, how it does it at a high level, small concrete example shown end-to-end.
Usually papers are rarely about software itself but rather about concepts, ideas and algorithms. Those are explored through software and the authors may give specific examples how they implemented those in their software but most papers are not specifically about a software application itself as those usually have very little valuable content.
There are only few of such papers I've come across so far:
SPRNG: a scalable library for pseudorandom number generation.
Presto: An Experimental Architecture for Fluid Interactive Document Spaces.
Other papers may follow which then concentrate on how specific optimizations or changes were implemented and also new ideas. But I think in those areas real innovation is rare and there is much more text than actual content.
Google Scholar is exceptionally useful for finding freely available academic publications, particularly in the CS/software world.
While many peer-reviewed journals hide things behind paywalls, academics have a tendency to publish working versions or drafts on their personal websites and such. You can find these using Google Scholar (by clicking the "See all X versions" link).