NerdKits - electronics education for a digital generation

You are not logged in. [log in]

NEW: Learning electronics? Ask your questions on the new Electronics Questions & Answers site hosted by CircuitLab.

Basic Electronics » Embedding Multi-Core Processors

August 14, 2011
by Twarter369
Twarter369's Avatar

I have been reading up on multi-Core programming using MPI and OpenMP. I would like to embed an Athlon II Dual-Core M300 (or similar) in a robotics project I am working on. However, I can't find any introductory info on setting up a programming bed for those types of chips. I am even having trouble finding through hole sockets for them. Any knowledge or links you guys can drop on me would be greatly appreciated.

August 15, 2011
by BobaMosfet
BobaMosfet's Avatar

Twarter369-

You're confusing a CPU with an MPU. An MPU is a 'computer on a chip'. It has a CPU integrated within it, and has many other components integrated allowing it to be a functional mini computer, on its own.

A CPU on the other hand, is like a big fat brain- with nothing in it. It needs All those extra components- ROM, RAM, ADC, ALU, FPGA, etc., in order to bring it up to the same level as the MPU- albeit much more powerful.

BM

August 15, 2011
by bretm
bretm's Avatar

And doesn't the Athlon II have something like 938 pins? That would be very unwieldy to deal with in a hobby-scale project. If you could find a 0.1" pitch adapter that would work in a breadboard, it would be over a meter long, dual in-line.

August 15, 2011
by bretm
bretm's Avatar

The GHz speeds would require a carefully-designed circuit layout. If you want to use this type of chip for robotics, I'd start with a complete motherboard and go from there.

August 15, 2011
by BobaMosfet
BobaMosfet's Avatar

I would start with something much simpler- wrap your head around an MC68000, or a Z80.

BM

August 17, 2011
by Twarter369
Twarter369's Avatar

Thank you Bret and Boba. I appreciate the info. Boba, neither of those chips is listed as dual core. I have yet to find a Dual Core MPU. Are there any available?

August 17, 2011
by rajabalu21
rajabalu21's Avatar

Please see this. Propeller is a multicore MPU.

-Raja

August 17, 2011
by Twarter369
Twarter369's Avatar

Rajabalu, Thank you! That looks like exactly the base I need.

August 19, 2011
by BobaMosfet
BobaMosfet's Avatar

I wouldn't try working with a dual core until you can work with a single core CPU effectively. That's why I suggested the chips I did.

BM

August 20, 2011
by Twarter369
Twarter369's Avatar

Well, thank you but I have to disagree. It is not necessary to learn on a single core. Nor would I recommend it to people. Multi-core processors are everywhere, and we need to start taking better advantage of them as programmers. It's like(IMO)telling someone they have to learn to drive a Model T before they could handle today's automobiles. It's just not true, and it would waste a lot of time because you have to learn 2 systems instead of one.

August 20, 2011
by Ralphxyz
Ralphxyz's Avatar

Twarter369, yup you are correct [quote] "It is not necessary to learn on a single core." [/quote]

But you might want to heed the voice of experience.

There are a lot of "maybes" that can be avoided.

Like after six months of learning duo core programming you "think" maybe I should have started with a single core processor.

But please keep us posted the Propeller is a very popular processor they have some great contest, something I wish Atmel did.

Ralph

August 21, 2011
by BobaMosfet
BobaMosfet's Avatar

Ralph,

Thanks, I appreciate it.

Twarter369-

It was only a suggestion. Proceed on your own course, and if you find it's faster for you to develop that way-- go for it. One of the most amazing things about this entire thing is that you have the ability to do it your way. I just hope it proves fruitful for you.

BM

August 22, 2011
by Twarter369
Twarter369's Avatar

There seems to be a missing post from me. I will break it down again.

I never meant to sound as if I was snubbing the start smaller advice. I apologize if it came across that way. After all I already own a single core MPU, while I do not yet own the propeller. I wouldn't dream of stopping my studies altogether to wait on a different chip, so I will in effect be following your advice of grasping Single Core better before moving on. What I should have written was that I prefer not to limit my studies based on what I don't already know. It is a system that has worked for me for quite some years now.

August 22, 2011
by Twarter369
Twarter369's Avatar

I would like to add that any advice I receive is seriously needed, duly investigated, and greatly appreciated!

August 22, 2011
by BobaMosfet
BobaMosfet's Avatar

Twarter369- no offence taken. Part of the joy of this board is that each person gets the opportunity to find their own way- and I personally have more respect for those that do.

Go like a ball of fire!

BM

August 23, 2011
by Ralphxyz
Ralphxyz's Avatar

Thanks to Noter's threads on Master/Slave and of course the Nerdkit Expanded LED Array

Master/Slave SPI

Master/Slave I2C

I have been inspired to to think of using the AVR mcu in a parallel processing mode (multi core?)!

I would go beyond Master/Slave to the Intelligent Port Expander mode.

You could have multiple processors dong distinct individual processes while communicating with one another.

There might be one mcu handling serial communications with a pc, another measuring multiple temperature sensors, another handling switch input, and one lighting LEDs, with another giving LCD readouts.

Simultaneous multi core processing for $35.00 or less.

The best part being that this scenario is something even someone with limited programing skills, like myself, could do once I read the Nerdkit user guide and followed some of the threads here in the Nerdkit forum.

Ralph

August 23, 2011
by Twarter369
Twarter369's Avatar

I thought about the Master/Slave(s) set up, but I thought it would be too limited by the number of Bus' connecting the inherently distributed memory system. Still, it seems like this method of duplexing would provide a viable alternative to a multi-core chip. It would also allow you to pick different chips based on the functions they serve. I believe this would be referred to as "Process Parallelization", or "Hardware Parallelization".

Could you make a shared memory system by connecting two A168's to the same EEPROM bank? I have yet to work with external memory hardware of any kind so this is just an idea I had. The transfer rate would probably be prohibitively slow for robotic applications, huh?

Final branch of Ralph's Idea, M/S an A644 to 3 A168's. Each 168 independently reads from the same bank of robotics sensors, and sends a local classification of the objective to the A644. The A644's job is to decide which input is more like its own, save all 4 to an SD card and send out the command to the 3 A168s to complete whatever task was decided. I am picturing robotic motion applications galore!

Post a Reply

Please log in to post a reply.

Did you know that microcontrollers have two different kinds of memory, program space (flash) and SRAM? Learn more...