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 1891 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
  • Kelv
    0 Kelv over 13 years ago

    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 image

     

    1+2) Whilst I can't comment on the boot process of the Pi, generally there is an area of flash/ROM that contains a boot loader, This in some cases is read only in others fully reprogramable. This bootloader then configures the rest of the hardware, UART, displays, sdcard  etc. The boot loader is then responsible for what happens next ie boot from SD, flash etc.

    If you are interested you may want to have a scan of the U-boot repo (http://www.denx.de/wiki/U-Boot) as this has helped me in the past getting stated with a number of SoC style devices.

     

    3) J-tag... this is a personal bug bear of mine. Yes, they should all be compatible, the main issues are voltage level and vendor software  lock-ins. Voltage levels are pretty straight forward to get around but being required to use a specific J-tag interface because of a hardware/software tie in is not. There are open source debug interface available that can be used in conjunction with OpenOCD that will allow you to debug/program devices from numerous manufacturers. Being open source OOCD enables you to add new devices if you feel so inclined. OpenOCD will allow you to interface open hardware J-tag interfaces along with commercial ones, to any supported device, just be really wary about the voltage levels involved.

     

    Let me know if there is anything specific you want to know and I'll do my best to help out.

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

    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 image

     

    1+2) Whilst I can't comment on the boot process of the Pi, generally there is an area of flash/ROM that contains a boot loader, This in some cases is read only in others fully reprogramable. This bootloader then configures the rest of the hardware, UART, displays, sdcard  etc. The boot loader is then responsible for what happens next ie boot from SD, flash etc.

    If you are interested you may want to have a scan of the U-boot repo (http://www.denx.de/wiki/U-Boot) as this has helped me in the past getting stated with a number of SoC style devices.

     

    3) J-tag... this is a personal bug bear of mine. Yes, they should all be compatible, the main issues are voltage level and vendor software  lock-ins. Voltage levels are pretty straight forward to get around but being required to use a specific J-tag interface because of a hardware/software tie in is not. There are open source debug interface available that can be used in conjunction with OpenOCD that will allow you to debug/program devices from numerous manufacturers. Being open source OOCD enables you to add new devices if you feel so inclined. OpenOCD will allow you to interface open hardware J-tag interfaces along with commercial ones, to any supported device, just be really wary about the voltage levels involved.

     

    Let me know if there is anything specific you want to know and I'll do my best to help out.

    • 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