element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • 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 & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • 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
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • 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
Embedded and Microcontrollers
  • Technologies
  • More
Embedded and Microcontrollers
Embedded Forum Microcontrollers, SoC's, CPU's, ARM and programming of those things
  • Blog
  • Forum
  • Documents
  • Quiz
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Embedded and Microcontrollers to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Suggested Answer
  • Replies 14 replies
  • Answers 3 answers
  • Subscribers 472 subscribers
  • Views 1892 views
  • Users 0 members are here
  • test
  • jtag
  • soc
  • ieee_1149.1
  • computer
  • programming
  • embedded
  • operating_system
  • microcontroller
  • cpu
  • arm
Related

Microcontrollers, SoC's, CPU's, ARM and programming of those things

sinistra92
sinistra92 over 13 years ago

Hello everyone,

 

Up to now, I have been programming 8 bit AVRs (in C). I now ordered Raspberry Pi and I want to switch on to a little more advanced chips (eg. ARM in RPi and AVR32).

I have trouble understanding how all the "more advanced" chips work and how they are programmed.

 

This is what I know (or I think is true):

I know that to get a microcontroller to work, I need to write a program on the computer and program the device through a programmer.

This also applies to 32-bit microcontrollers (many of which are ARM based). In this case, apart of boot-loading or company specific port, only JTAG would program the device.

ARM is just an architecture, or a "template" to some extend, that gives base to uC's and so there are many different companies making their 32bit around ARM.

Above ARM and 32 bit uC are Embedded solutions, eg. SoC's which are a composition of at least one microcontroller inside (commonly ARM), some flash, RAM, ROM, GPU optionally, etc.

SoC's are good to run a simple OS like Linux. A GPU is a separately programmable part of an SoC.

CPU is not a microntroller, is very fast and does the instructions which are given it.

JTAG is a universal device that can debug and programm all JTAG supportive devices, given I have appropriate software.

 

 

Now things I don't understand:

SoC's have a microcontroller inside them, so they must be programmable, but are they all like that? Does an SoC have a program stored in it's flash, that it fetches instructions from, just like an 8bit?

Something must take files from an SD card and run them in a Raspberry Pi, something must tell the GPU inside what display interface to use etc, but I can't find a source code, or an evidence of a program being run inside a SoC.

How is it really happening? (1)

 

About CPUs, I think they are not programmable, so they are supported by BIOS that fetches the initial instructions from HDD boot section and the CPU automatically performs all what is given to it, and so, the motherboard has to take care of all the results the CPU "throws out".

Is this really what is happening? (2)

 

About JTAG. It is mainly a test solution for debugging etc, but one of its uses is accessing the memories of a micronotroller, so they can be therefore programmed. But then why are there so many different JTAGs on the market?

Why isn't one JTAG IEEE 1149.1 compatible with ALL the chips? The instructions are universal, aren't they? Why is there a special JTAG for AVR32 and a different one for Xilinx? (3)

 

 

I am sorry to ask so many questions, but I really couldn't find very much information about those and I think a discussion like this would help people by bringing these answers in one place. I have numbered three distinct issues.

If there is something I misunderstand in the first part, please tell me as it may be trivial to some people, but not as such to me.

 

 

Thanks,

Wojciech

  • Sign in to reply
  • Cancel

Top Replies

  • Kelv
    Kelv over 13 years ago +2 suggested
    ok, please remember this reply is all generic SoC, if you would like to send me your Pi I will be happy to look further into it for you 1+2) Whilst I can't comment on the boot process of the Pi, generally…
  • Former Member
    Former Member over 13 years ago +2 suggested
    About question 2: Here is what I can tell you: Yes, a CPU performs what it is given to it... To do so, it has registers witch are small blocks of real physical memory in the CPU. The quantity varies with…
  • Former Member
    Former Member over 13 years ago +1
    1) as far as I know there is a bootloader in there. It may be configurable or not, this is the decision of the product manufacturer. In the case of the Raspi it is not: it's hardcoded to load from the…
Parents
  • Former Member
    0 Former Member over 13 years ago

    About question 2:

    Here is what I can tell you:

    Yes, a CPU performs what it is given to it... To do so, it has registers  witch are small blocks of real physical memory in the CPU. The quantity varies with the CPU. What is happening in there is:

    • The instruction is loaded from the memory to the register called the "instruction register" .This in called a "Fetch".
    • It decodes the value in the register to understand what it has to do. To put it simple, depending on the binary value in this (8,16,32,64) bit register, he will understand : what to do, from where to take the information (at what address in memory or in what register) and where to put it (at what address in memory or in what register). This is called a "Decode".
    • Then it executes what it has decoded. "Execute"
    • Finally writes what is necessary into memory. "Memory acess and register write back"

     

    So it is not exactly the motherboard that takes care of the information it is the CPU itself. But for a big flow of data, for exemple you move a file from one harddrive to another, the CPU does not move each block of 32 bits one by one, he usually asks another process to do so. In a computer it's the DMA. (http://en.wikipedia.org/wiki/Direct_memory_access)

     

    Another thing that will help you developp your understanding on "whats's going on in there?" is memory hierachy.

     

    "The memory hierarchy in most computers is:

    • Processor registers – the fastest possible access (usually 1 CPU cycle), only hundreds of bytes in size
    • Cache (if present) – often accessed in just a few cycles
    • Main memory or RAM – many cycles.
    • Mass storage (Harddrive, SD card) – lots of cycles to acess it."

     

    This is information that I simplified from wikipedia. So information flows upwards and downwards in a way that the CPU does what you've asked for.

     

    Also, I would add, when you say: "CPU is not a microcontroller" this is 100% true but a microcontroller has a CPU! Because it has to execute code.

    For exemple:

    • PICs from microchip has a RISC CPU (that they designed themselves)
    • Arduino, (Atmega) from Atmel has RISC CPU (that they designed themselves)
    • LPC microcontrollers from NXP has a ARM CPU on them (ARM7,ARM9, Cortex M0, Cortex M4...)

     

    Now for a part of your Question 1:

    A SoC is a microcontroller on steroids, much (harder), better, faster, stronger...

    And like a microcontroller, it has a CPU (better and faster usually), more RAM, more memory more functions.

    But how does it work on a Raspberry Pi? I don't know *yet*, I intent to know soon! I'm really looking forward to get one!!!

     

    I hope it wasn't too technical (or not enough)...

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
Reply
  • Former Member
    0 Former Member over 13 years ago

    About question 2:

    Here is what I can tell you:

    Yes, a CPU performs what it is given to it... To do so, it has registers  witch are small blocks of real physical memory in the CPU. The quantity varies with the CPU. What is happening in there is:

    • The instruction is loaded from the memory to the register called the "instruction register" .This in called a "Fetch".
    • It decodes the value in the register to understand what it has to do. To put it simple, depending on the binary value in this (8,16,32,64) bit register, he will understand : what to do, from where to take the information (at what address in memory or in what register) and where to put it (at what address in memory or in what register). This is called a "Decode".
    • Then it executes what it has decoded. "Execute"
    • Finally writes what is necessary into memory. "Memory acess and register write back"

     

    So it is not exactly the motherboard that takes care of the information it is the CPU itself. But for a big flow of data, for exemple you move a file from one harddrive to another, the CPU does not move each block of 32 bits one by one, he usually asks another process to do so. In a computer it's the DMA. (http://en.wikipedia.org/wiki/Direct_memory_access)

     

    Another thing that will help you developp your understanding on "whats's going on in there?" is memory hierachy.

     

    "The memory hierarchy in most computers is:

    • Processor registers – the fastest possible access (usually 1 CPU cycle), only hundreds of bytes in size
    • Cache (if present) – often accessed in just a few cycles
    • Main memory or RAM – many cycles.
    • Mass storage (Harddrive, SD card) – lots of cycles to acess it."

     

    This is information that I simplified from wikipedia. So information flows upwards and downwards in a way that the CPU does what you've asked for.

     

    Also, I would add, when you say: "CPU is not a microcontroller" this is 100% true but a microcontroller has a CPU! Because it has to execute code.

    For exemple:

    • PICs from microchip has a RISC CPU (that they designed themselves)
    • Arduino, (Atmega) from Atmel has RISC CPU (that they designed themselves)
    • LPC microcontrollers from NXP has a ARM CPU on them (ARM7,ARM9, Cortex M0, Cortex M4...)

     

    Now for a part of your Question 1:

    A SoC is a microcontroller on steroids, much (harder), better, faster, stronger...

    And like a microcontroller, it has a CPU (better and faster usually), more RAM, more memory more functions.

    But how does it work on a Raspberry Pi? I don't know *yet*, I intent to know soon! I'm really looking forward to get one!!!

     

    I hope it wasn't too technical (or not enough)...

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
Children
No Data
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