What is the difference between bare metal, RTOS and SoC? [closed] - microcontroller

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 1 year ago.
Improve this question
Having just recently gotten into embedded programming using PIC microcontrollers, I am trying to understand the difference between Bare metal, RTOS and SoC.
Online searches reveal contradictory definitions and meanings.
For example, Semiengineering state that "An RTOS is code written on bare metal" and arduino.cc state that "If you programming controller without using any [RT]OS it's a bare metal approach".
The implication is that some code written on bare metal can be considered to be RTOS, whilst others may not be.
Therefore, my question is when can embedded programming of microntroollers be considered programming of bare metal and/or RTOS? And where does SoC fit into all of this, if at all?
Any insight that anyone can provide will be very much appreciated!

(1) An RTOS is a Real Time Operating System. Implementing an operating system is not the same thing as using an operating system. It seems like you'd know whether you're programming using a Real Time Operating System or nothing. And that's the difference between using a RTOS and bare metal.
Note that the RTOS code is bare-metal programming, because it's not using any lower-level software. And then when you write your code using the RTOS, it's not bare-metal programming, because you're using the services of the RTOS.
(2) It seems like you'd know whether you're implementing an operating system or an embedded application And that's the other difference.
(3) As regards an SoC - that's a hardware category. Is there one integrated circuit containing the CPU and a bunch of associated functions (interrupt controller, maybe an MMU, peripheral interfaces, network, etc.)? Then it may be a SoC. Or are there a few other ICs providing these functions? Then it's not a SoC.

Related

How can I make a graphing assistant with Arduino? [closed]

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 3 years ago.
Improve this question
So I had this idea of making a graphing assistant. Basically, It would be a camera connected to an Arduino. The camera would see a function, or a graph, take a picture, and from the picture, show on a display the Domain, function, where it does not exist, and it's derivative.
My question is how hard would it be to accomplish this? What hardware and software would I need and what concepts should I learn? I am pretty familiar with Arduino and been coding and creating projects with it for some time.
Arduino is not meant for developing high-end camera-based Video Processing applications. Although you can attach a camera module over SPI, capture an image and process it in your Arduino, I would highly recommend you to look for other alternatives. This is because Arduino is slow (for Computer Vision Applications) and you will end up writing a lot of code from scratch. You can instead make use of open source computer vision libraries and resources (like OpenCV) and develop your application on an SBC (Single Board Computer).
I will recommend using a RaspberryPi along with RaspiCam and Python and OpenCV.
If you still insist on using an Arduino, you can have a look at Pixy2, which comes along with a faster co-processor to handle your Image Processing needs.

What other programming languages run on PNaCl? [closed]

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 8 years ago.
Improve this question
As I understand it, PNaCl is designed to support C and C++. Has anyone managed to get any other languages (that compile to native code) to run in PNaCl?
Ruby, Lua, and a number of other languages have been ported to NaCl already. See the list of NaCl ports for full documentation. https://code.google.com/p/naclports/wiki/PortList
There are a couple of different approaches for targeting other languages to PNaCl. One is compiling the language interpreter with the PNaCl toolchain. Since most interpreters/VMs are written in C and C++, this turns out to be easy in practice. naclports already has Lua, Python and Ruby running in this manner.
A more direct approach is taken by llgo - actually emitting PNaCl bitcode. There were also discussions about Mono (which does run on NaCl) on PNaCl - https://groups.google.com/forum/#!topic/native-client-discuss/Km1FOVH6yn0
The real answer is - it's still early (PNaCl was released publicly last week!); this is a ripe field for disruption because the technology is new. If someone wants to port other languages, it would be very welcome.

SmartWatch h/w schematic [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 9 years ago.
Improve this question
Is it possible to get a schematic in addition to the H/W description at http://developer.sonymobile.com/services/open-smartwatch-project/smartwatch-hacker-guide/?
Sorry we will not be able to share schematics. Could you please be a bit more specific in regards to your question, and we will see what we can do. For your reference we are working with Arduino to get a toolchain in place and I believe that you can benefit from their efforts and their work to get the toolchain in place. Please also check our hacker guide as we updated the page with links where to find the tech specs. We will also try to add more information when/if possible.
Update
The results from the "Proof of concept - Sony SmartWatch" workshop has now been published on GitHub. It is a complete tool chain, with support for the Arduino IDE. Check it out here and here (for command line lovers).
And also keep an eye open for more updates on the Open Smartwatch project web site.
Happy hacking!
Try to find JTAG test point on PCB it's this is the best that we can use because information from Sony not full. For get full information about remapping GPIO, GPIO alternative configuration, other peripheral configuration use JTAG for dump configuration register where running original firmware. Use watchpoint for understand that and when write/read to/from peripheral register.

Good book for Unix Internals [closed]

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
am very much interested in unix. Want to learn in and out.
Can you guys help me by listing some books which can make me a wizard?
Ultimately I want to become a unix programmer.
I am not a novice user in Unix.
You want system administration knowledge, or programming knowledge?
For programming:
Advanced Programming in the Unix Environment
Unix Network Programming
The Art of Unix Programming
For system administration:
Automating Linux and System Administration
Unix and Linux Administration Handbook
As other responders have noted, Advanced Programming in the Unix Environment (APUE) is indispensable.
Other books that you might want to consider (these have more of a Linux focus, but are a good way to become familiar with Unix internals):
Linux System Programming: well written, understandable introduction to the Linux API. Not as much depth as the others, but a good way to get the "lay of the land."
The Linux Programming Interface: A Linux and UNIX System Programming Handbook: more up to date than APUE, but focused on Linux.
Understanding the Linux Kernel (O'Reilly): learn about Unix programming from the perspective of an OS implementer, rather than a application developer.
check these out: UNIX Internals: The New Frontiers , The Design of the UNIX Operating System ,UNIX Systems Programming: Communication, Concurrency and Threads

Network Programming? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I want to leave strictly desktop programming and start exploring networking. I want to make a little program that just sends data from computer A to B running the same program.
Just a few questions before I start...
1) What is a better language for net programming Python or C#?
2) Could you recommend some stuff to help me understand how data is sent over the web?
Thanks!
It really depends on what you're doing. Both Python and C# have very capable modules for network communication - I'd say you'd be equally well-off in either given no knowledge of what you're doing. The decision between Python and C# will probably come down to whether your application lends itself more to the dynamic typing of Python or the static typing of C#.
As for your second question, I've always found it interesting to look at network traffic using a packet sniffer such as Wireshark. Browse to a website in Firefox and (assuming GZip encoding is disabled in the web-browser or on the server) you'll be able to see how the data is transferred. This works for other protocols as well. Reading the RFCs for various protocols can also give you some insight. For a few examples, IRC (1459), FTP (959), HTTP 1.1 (2616). You can find them at the Internet Engineering Task Force website.
Both languages are equally capable. It is a matter of personal preference.
What resources you need will depend on the application you intend to write. The two most important things you will need to know:
The Application Layer, Transport Layer, & Internet Layers of the Internet
Socket Programming
You're diving into a very broad subject, with a lot of information. I found this book to be helpful to me.
I do not want to compare languages, but as you wanted recommendation, I recommend you python and twisted framework
I think C++ is the best, if you consider the efficiency and hardware interactions.

Resources