element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Arduino
  • Products
  • More
Arduino
Arduino Forum Raspberry Pi vs. Arduino for learning from "bare metal" and up
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Arduino to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Not Answered
  • Replies 5 replies
  • Subscribers 393 subscribers
  • Views 434 views
  • Users 0 members are here
  • bare
  • rasberry
  • metal
  • arduino
Related

Raspberry Pi vs. Arduino for learning from "bare metal" and up

miner_tom
miner_tom over 10 years ago

Hi to the community.


I'm and old hardware engineer and have been designing  boards since the days of the 8086. The last couple of years I have been involved with the hardware design of embedded systems boards such as those using Broadcom SOC's but I've not been directly involved with the firmware other than loading reference code and toolchains and doing very simple drivers.


I have been doing my research in choosing an embedded system for WiFi projects. First, I was looking at the Arduino Yun, because of the built in WiFi. What I found, and hopefully the members of this community can correct me if I am wrong, is that the Arduino is designed for you to load the operating system, which is based upon OpenWrt and not really to mess with it. Just write programs that run on the compiled kernel. Not being satisfied with that, I downloaded the source OpenWrt variant that is suggested at the Arduino Wiki and began the arduous task of compiling it, so as to begin to learn its workings. Now, I was somewhat familiar with OpenWrt as I have downloaded and compiled it and loaded it onto my router. But, it must be 2 million lines of code and getting around in it is a real bear. Compiling the Arduino version of OpenWrt took forever (8 hours and lots of downloads) and I was restricted to having to do it on a 32 bit native (not virtual) distribution of Debian. Of course, like the OpenWrt that runs on my router, it is very large and one can change it as ones own risk. Even the WiFi drivers have no source code as they are derived from a reverse engineered Broadcom WiFi driver called b34.


So, other than running OpenWrt with the stock binaries and using that to compile programs on the Arduino, I can't see how one can learn much about how the hardware interfaces with the software. Finally, the software reference manual for the Broadcom router that I have, a very vanilla RTN-16 (the BCM47xx family) is so proprietary that I could never find it (I'm not talking about the 3 page pinout but the reference manual itself). In fact, I never was able to locate the software reference manual of any of the major vendors of routers running OpenWrt that I could find (and that was a lot of them).


If what I have said about the Arduino is incorrect then please set me in the right direction. Really. I am here to learn.


In contrast, the Raspberry Pi has lots of information available concerning running it as "bare metal" even without an operating system. For example at https://github.com/dwelch67/raspberrypi there is a wealth of information concerning running the hardware in assembly, toggling LED's, doing simple displays, etc. In addition, there is "ass tons" (my son in laws expression) of information available about how to construct an operating system for the Raspberry Pi, as small or as large as one could desire. The only drawback that I see is that there is no native WiFi for the Raspberry Pi so one is tasked with finding a suitable WiFi dongle and loading drivers. Not a difficult task.


It seems to me that if one wants to learn firmware programming from the bare metal, up, then the Raspberry Pi seems to me to be the one to use.


Comments? I am really not a troll and if I offend anyone that uses the Arduino, by the remarks that I made above, I humbly apologize. In fact, I have purchased neither board yet. Doing proper research first.


Thank You

Tom

  • Sign in to reply
  • Cancel

Top Replies

  • dwinhold
    dwinhold over 10 years ago +1
    I personally use both, they both are great for their perpose. The Arduino is great for motor, LCD and sensor control. I find the only drawback is the programming only allows one operation to be performed…
  • Robert Peter Oakes
    Robert Peter Oakes over 10 years ago +1
    I tend to take the other approach, figure out what you want to acheive, then look at how to do it RPI and Arduino are very different and have a good place in different environments, the PI typically running…
  • dwinhold
    0 dwinhold over 10 years ago

    I personally use both, they both are great for their perpose. The Arduino is great for motor, LCD and sensor control. I find the only drawback is the programming only allows one operation to be performed at a time. The Raspberry Pi can do all of this and more as you can run linux on it with almost any programming language. They are both worth learning and developing, it all depends on the application.

     

    Dale

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 10 years ago

    Hi Tom;

     

    I would agree with your premises (and I'm a huge Arduino and Raspberry Pi (aka RPi) fan!).  I like the Yun, but there's not the depth and breadth of knowledge base, nor open software stacks that there are for the RPi.  The original thought behind the Arduino was to make a uC simple enough to program and operate that a non-Engineer could do it.  "Arduino"; there are two of them now in the midst of a court battle to determine the owners of certain trademarks and IP, is a microcontroller board.  The Raspberry Pi is a known as a "Single-Board Computer" (aka SBC) that was intended as an educational platform for primary and secondary students to learn hardware.  Of the two, the RPi has more capability to be a bare-metal machine.

     

    Don't discount some of the other, lesser-known SBC's and uC's; although the communities won't be anywhere near as large..  BeagleBone Black is an excellent SBC that uses a TI Sitara CPU.  TI also now has their MSP432 board with on-die WiFi and UART (I really like this board); and the "Educational BoosterPack Mark II" with several sensors, output devices, and even a TFT LCD.  It also is supported by IAR Workbench, TI's Code Composer Studio, Keil, and Energia (which uses the C-like Arduino language, and is meant to look like the Arduino IDE); so you can use ASM, Arduino, or C/C++ to program.  Cypress PSoC is another board with real merit.  There are a plethora of others that different folks likely know.  Intel's Edison is a newer entry that is something of a bridge between uC and SBC.

     

    I mention the others as it seems to me that it's easier to learn to write firmware for a uC than for an SBC (I'm an electronics Engineer, also).  The Arduino Uno R3 has been the flagship for Arduino for several years; although they have several other boards.  The now-defunct Arduino "Esplora" was their equivalent to the TI Educational BoosterPack, so we'll see how TI does with theirs.  If it's a factor there's also the cost difference.  You can pick up an Arduino, or a good clone, for less than $25US.  The RPi is referred to as, "The one hundred dollar $35 computer".  Programming the firmware you have to provision the UART, TCP/IP stack, and audio and video output for it to function as an SBC (you can also run these headless, but that's a little trickier for some).  The uC's only require the UART to get started (and FTDI has done virtually all the work for that).  Many people get started with lower-level languages by writing a bootloader for the Arduino.  Not simple, but it's easier than firmware for an SBC.

     

    I'm mainly trying to point out a comparison of uC and SBC, rather than trying to say which is "better".  You'd know which is preferable better than I.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Robert Peter Oakes
    0 Robert Peter Oakes over 10 years ago

    I tend to take the other approach, figure out what you want to acheive, then look at how to do it

     

    RPI and Arduino are very different and have a good place in different environments, the PI typically running a higher level OS is better a the "Master" controller and UNO / Launchpad / other uController as the "Slaves" performing the mundaine low level stuff that is more timing critical

     

    All of this can be run in C like languages or higher in the case of the PI. Devices like the Yun are simply a combination of an embedded Linux controller and an Arduino UNO. the UNO part taking charge of the timing critical parts and the Embeded Linux part handling less timing critical higher order functions like WIFI, Ethernet, SD Card magic etc. a good merging of two subsystems into a single board solution.

     

    Using a PI as the master and one or more UNO like boards as the slaves acheives a similar thing but on a grander scale

     

    So unless you want to learn how to code an OS multitasking or otherwise, I would suggest using a PI like device for what it is goos at, an HMI (Human Machine Interface) (Ignoring the often used prupose as an educational platform for linux and programming or mega low cost desktop image )

     

    I guess what I am saying is the answer is not a single chip or platform, the question even is not a single approach, it all depends on what your trying to make ?

     

    Not sure if I confused or helped there but I hope the latter

    Peter

    image

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • michaelkellett
    0 michaelkellett over 10 years ago

    If you really want to get into the nuts and bolts look at getting an ESP8266 module and using it with a plain vanilla Arduino or an ARM Cortex dev board like the ST Nucleo or Discovery parts. Very cheap parts, quite a lot of web support and real control of what is going on - no need to use a single byte of other people's code on the target.  (Although you'll be using code embedded in the ESP8266.) Development tools are free from IAR,Keil, GCC etc.

     

    MK

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Robert Peter Oakes
    0 Robert Peter Oakes over 10 years ago in reply to michaelkellett

    Actually, those ESP boards are little gems, for simpler projects you don't even need an arduino, Launchpad or any other controller, they can do it all on their own, A friend of mine (Since I was 16) has a significant ammount of skill on these and has posted alot of it on his ESP facebook and web channels

    ESP8266 WIFI Miracle Board | Scargill

    https://www.facebook.com/esp8266wifi

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube