Sida 1 av 2

Blivande guiden: µC bortom 8 bitar

Postat: 10 oktober 2006, 01:05:58
av $tiff
Tanken med denna tråden är att det ska bli en fortsättning på min tidigare guide Mikrokontrollers för nybörjare. Denna gången hoppas jag att övriga här på forumet är minst lika glada för att komplettera som förra gången jag försökte!

Det är tänkt att det ska presenteras och jämföras mellan mikroprocessor/-kontrollers i klassen över 8-bit här, med stop någonstans innan FPGA. Kommer ni på en bättre titel på tråden så föreslå gärna!
De typer som gärna bör nämnas är: MIPS, SPARC, dsPIC, AVR32. Vet ni något om dem får ni väldigt gärna bidra med denna info!


Inledning
När man tröttnat på begränsningarna i PIC och AVR, vad ska man då göra?
Våga ta steget från 8 bitar till 16 bitar, eller kanske hela vägen till 32 bitar direkt? Vilka är fördelarna, var är fallgroparna? Vad finns det för produkter här i nuläget?
Det säger sig själv att lite kraftigare processor kärver lite mer av användaren/utvecklaren. Det är inte helt trivialt att komma igång, det är säkerligen en stor fördel om man sysslat med ARM/PIC förut och kodat i C/C++ förut.




Vad är en DSP?
Digital Signal Processor. En Mikroprocessor/kontroller dedikerad för tunga beräkningar. Dessa används i applikationer där det krävs massiv men ändå flexibel beräkningskraft. DSP-programmering blir därför nästan en ren implementation av matematiska algoritmer i en processor.
DSP kör med Harvard-arkitektur, vilket skiljer data- och instruktionsbussen från varandra.
(mer förklaring, vad innebär Havard för begränsningar/tillgångar?)


Exempel på tillämpningar av DSP:
- Kraftfull audiobehandling (alla har minst en i sin "surroundanläggning" hemma)
- Kraftelektronisk reglering (beräkningsenhet åt vektorstyrning av motorer, etc)
(fler exempel?)


Vem tillverkar DSPs?
Texas Instruments
Analog Devices
(fler stora tillverkare?)


Mer info om DSP! (DIY-projekt, guider, etc)
DSP-guide
JOS On-Line Publications
e-DSP
(mer!)


Coolt, jag vill prova! Var får jag tag i DSP?
Det är ytterst lämpligt att börja med ett färdigt utvecklingskit, där man får med lite exempelkod och eventuellt även kompilator och utvecklingsverktyg.
(länkar här)



Vad är en ARM
ARM, Acorn RISC Machine, är en 32-bits processorarkitektur som är utvecklad främst för inbyggda sytem, optimerad för strömsnål drift. ARM finns idag på marknaden grovt indelat i två familjer, ARM7 och ARM9. Den senare är kraftfullare. ARM bygger på RISC-arkitekturen, vilket gör den inte allt för avlägsen sina småsyskon PIC/AVR om man vill koda nere på assemblernivå.
(mer info!)


Exempel på tillämpningar av ARM:
- Nöjesprylar! (Game Boy Advance, Nintendo DS, iPod, Nintendo DS, Nokia N-Gage)
- Mobiltelefoner (Sony Ericsson, Siemens, BenQ, etc.)
- Routrar, switchar, brandväggar


Vem tillverkar ARM?
Philips (NXP)
Atmel
Texas Instruments
STMicroelectronics
Freescale


Mer info om ARM! (DIY-projekt, guider, etc)
ARM-projects
(fler länkar här)


Coolt, jag vill ha en, var köper jag?
Förslagsvis börjar man med ett utvecklingskort av lämplig kaliber. Följande länkar kan ge dig valuta för pengarna:
Olimex
(fler länkar här)


Jag behöver visst en kompilator också...
Om man kodar i C så finns det gratis kompilator under GCC för Win:
WinARM
WinARM-forum
(fler alternativ, gratis och ogratis!)




Övriga länkar
BDTi Processor Overview
BDTi Benchmarks


Källor
Wikipedia:
ARM architecture
DSP
RISC
Harvard Architecture

Postat: 10 oktober 2006, 12:57:54
av cykze
Bra, men finns det någon anledning till att du inte lägger in den i Wiki:n istället?

DSP och ARM

Postat: 10 oktober 2006, 13:50:47
av JimmyAndersson
Eller åtminstone flytta den till Guider/FAQ :wink:

Postat: 10 oktober 2006, 14:16:20
av sodjan
Och om det är tänkt som allmän info om processorer med > 8 bitars
arkitektur, så vet jag inte vad "vs." i rubriken står för. Det låter
mer som om det vore något val mellan "DSP" och "ARM" inför någon
specifikt applikation.

Sen vill jag bara nämna PIC24 också. En "ren" 16-bitars uC utan dsp-delen.

Re: DSP vs ARM

Postat: 10 oktober 2006, 14:43:24
av björn
$tiff skrev: Kommer ni på en bättre titel på tråden så föreslå gärna!

Postat: 10 oktober 2006, 14:55:06
av sodjan
He he, det försvann i textmängden... :-)

Igentligen tror jag inte att det kan vara *en* tråd (eller ämne/sida på wikin).
Snarare en om 16/32 bitars uC och en annan om DSP. Problemet
skulle kunna vara att t.ex dsPIC faller lite mitt i mellan grupperna... :-)

Hur som helst, ett bra initiativ är det i alla fall, och vi får se om någon orkar
plocka upp "tråden" (!) och göra något av det....

Postat: 10 oktober 2006, 15:48:29
av $tiff
Jo, precis. Det är lite tänkt att vara en överblick för "livet bortom 8 bitar" i mirkokontroller/processor-världen. Sedan kan man lägga in mer detaljerad info i undersidorna.
Anledningen till att jag inte la den i wikin direkt är att den får mer uppmärksamhet här, sedan när det har dykt upp lite mer bidrag så är den mogen att bli en komplett artikel.

Postat: 10 oktober 2006, 16:00:20
av JimmyAndersson
Jag vet inte om jag är extra vaksam eller extra petig, men titta på rubriken...

"Mikorkotrollers"

:)


Men för övrigt är det en lysande idé!

Postat: 10 oktober 2006, 16:03:57
av Icecap
Låter som en bra idé.

Jag vill ju slå ett slag för Renesas M16C samt Fujitsu FFMC16LX-serien, fördelen med dom är att det finns inbyggd hårdkodad bootloader, man behöver bara en serieport för att programmera dom.

------------------------------------
Fujitsu F²MC16LX serien är en 16-bitars kärna och en del modeller har RAM och FLASH i processorn vilket ger en fullvärdig mikroprocessor. Man kan starta en extern bus vilket medger adressering upp till 16Mbyte och man kan välja om dessa 16Mbytes ska vara i byte eller word-mode. Själva CPU'ns interna minne och portar tar såklart en del av detta minnesutrymme.

I serien finns det olika versioner med olika minnesstorlek och olika periferfunktioner, en version har t.ex. 5 UART, en annan har CAN 2.0 osv.

I processorn finns även en PLL som medger att man kan multiplicera CPU-klockan med upp till 4x, detta gör att man kan montera kretsen med ett 4MHz kristall och ändå köra med 16MHz systemklocka, detta ger en instruktionstid på 62,5ns! (gäller 1-word instruktioner). AD, DA, timers, UART, portar osv finns i olika mängd beroende på kapsling, version osv.
I alla versioner finns watchdog timer.

En del av att använda en processor är ju att smidigt kunna lägga in programmet i processorn. Ofta krävs ett programmeringsmodul eller liknande men F²MC16LX-serien har smart nog ett hårdkodad program i. detta program, tillsamman med det rätta PC-program medger programmering via en serieport, såklart måste man ha en nivåomvandlare (t.ex. en MAX232) men sedan behövs det bara ett par bygtlingar.

Programmet använder en befintlig serieport vilket gör att om man ändå skulle ha en PC-kommunikationsport kostar det inget extra!

Byglingarna är för att ändra läge på ett par mode-pinnar till programmeringsmode, slå på spänning och starta PC-programmet, när det skrivar att det är färdigt är det bara att bygla av och resetta, sedan kör det nya programmet i processorn.

Man bör ju till detta ha ett programmeringsspråk då det ju inte är mycket att ha annars, till denna CPU medföljer det assembler och en C-kompiler GRATIS! Ingen begränsning eller funktionsperiod, den är full-size direkt. Det enda man ska göra är att registrera sig, då får man per automatik en nyckel per e-mail, ingen avgift eller annat licenskrångel.

Allt detta finns på Data-CD'n man kan få vid att begära den från EBV Elektronik och en beskrivning kan finnas på denna sida. Databladen på de olika delar är ganska väl utformade och relativt enkla att hitta rätt i, det finns enklare kodexempler och tips.

-------------------------------------------------------------
Renesas M16C-serien är en ganska omfattande serie, fördelen i detta är att man kan välja just den processor som passar till detta projekt, kapslingen är den samma och man kan välja att migrera enbart i minnesstorlek. Detta medger att man kan koppla upp en version med massor av minne på experimentplattan, utveckla vad som ska utvecklas och när allt fungerar och man ska starta serieproduktionen kan man byta till den minste version som har minne nog.

Själva programöverföringen går även här till med en serieport (+ nivåomvandlare) och ett PC-program som kommunicerar med det interna bootloader-program. För att aktivera detta måste man byga ett par pinnar i ett visst läge och resetta processorn.

Det finns en uppsjö av timer/counter, UART med olika lägen, AD, DA och portar. Man kan ställa in den till att använda extern bus där den kan adressera upp till 1Mbyte varav en del av platsen upptas av det interna minne/portar osv.

Det finns en PLL til klockan och CPU'n kan köra med upp till 24MHz. Det finns inbyggd watchdog timer och en intern (ca:) 1MHz klocka som kan användas som automatisk nödklocka. Med rätt mjukvara kan CPU:n alltså känna av att kristallen krossas (slutar fungera) och utföra funktioner beroende på detta.

Programmet i processorn kan låsas med ett 7-sifrigt hexadecimal tal och ingen programmerings eller raderingsfunktion kan aktiveras innan denna kod är öppnad.

Databladen är tyvärr en bedrövelse i sig. Rörigt, svårt att hitta ALL information om t.ex. en UART då den är spridd, UART-delen ett ställe, portpinna ett annat och interrupten ett tredje. Det finns en C(++)-kompiler som har en kodbegränsning på 48K och ingen optimering utan licens, den heter HEW (High-performance Embedded Workshop). IAR har en bra C-kompiler enl. Renesas supporten men den är definitivt inte gratis.

Efter att ha testat en del känner jag att M16C är snabbare än Fujitsun under samma förutsättningar (CPU-klock osv) men det är inte mycket skillnad. Faktisk har jag av kostnadsskäl fasat ut Fujitsu MB90F583 och fasat in Renesas M30624FGPFP av kostnadsskäl, det skiljer ca: 50:- i priset och styrningen tillverkas i 1K serier åt gången.

Därmed sagt: de 2 processorer är ganska likvärda.

NB: Fördelen med PLL på systemklockan är ett par: man kan anpassa systemhastigheten under drift till det mest energiekonomiska läget utan att ha komplicerade externa oscillatorer och man får lägre EMI (alltså störningar) vilket gör avkoppling mindre kritisk och besvärlig.

Postat: 10 oktober 2006, 16:26:08
av $tiff
Hoppsan, rubriken... lätt hänt! :eh:

>> Icecap

Jag ser gärna att du plitar ner några rader i stil med de jag börjat med om dessa µC, jag tror det är många som skulle ha nytta av det. Visst var det så att tillverkaren är generös med mjukvara (kompilator/debugger) till dem också?

Postat: 10 oktober 2006, 18:30:16
av cyr
Jag skulle kunna skriva en del om DSP-processorer i allmänhet och om Blackfin i synnerhet.

Håller nog med sodjan om att det skulle passa bäst med en separat artikel om DSP och en om mer avancerade uC:s (eller om man är mer ambitiös, två översiktliga artiklar och en om varje familj).

Postat: 10 oktober 2006, 21:06:39
av björn
Skall se om jag får tid att skriva ihop lite om ARM7 någon dag, just nu är det dock fullt upp med annat så om någon annan vill börja hade det varit kul.

AVR32 snabbgenomgång..

Postat: 13 oktober 2006, 12:19:45
av overclocked
Jag hoppar in här eftersom jag såg AVR32 nämnas och jag precis tittat lite på den. Osså nämner jag Propeller också som jag tycker verkar vara en "rolig pryl".

AVR32 (ATMEL)
---------
AVR32 är en nykonstruerad uC (SOC = System On A Chip) med en 32-bit CPU core och med MÅNGA integrerade controllers för att kunna prata med yttre enheter, jag räknar upp några här....
- Dubbla Ethernet KControllers
- AC97 Controller ink. 16-bit Stereo DAC
- MMU, minnes controller
- DMA Controller
- LCD-screen Controller upp till 2048*2048
- USB 2.0 Controller (osäker om den är Master eller endast Slave i chipet)
- UARTs med många möjligheter, RS-232, Irda, USART.
- I2C, SPI
- PS2-controller
- MMC/SD/CF controller för minneskort (fungerar även som IDE-controller)

m.m. m.m. alltså typ ett vanligt PC-moderkort på en krets!

En oviktig sidoinformation är att den är konstruerad av ett norskt forskar/konstruktion-team om jag har rätt uppgifter... men den är säkert bra ändå! :-) Kunde inte hålla mig....

Dessutom innehåller CPU:n också en utökad instruktionsuppsättning som gör att den effektivt kan hantera DSP-sysslor. Ett exempel är att den redan vid 75Mhz CPU-klocka klarar av att spela upp en QVGA (320*240) MPEG4-ström med 30FPS! Som jämförelse påstår dom påm sin site att en "vanlig" ARM-CPU måste klockas kring 266Mhz för att klara samma syssla. M.h.a. detta så ska man då kunna ha en förhållandevis låg klockfrekvens (läs låg strömförbrukning) men ändå kunna hantera de vanligt sett tunga sysslor som en användare kan vilja utföra!

AVR32 är dessutom från början konstruerad för att kunna köra avancerade operativsystem såsom Linux så den är anpassad speciellt även för detta. Dessutom har Atmel uttalat att de stödjer bevakningen/hanteringen av Linux-portning till denna CPU vilket gör det hela ännu mera intressant. Självkalrt ligger då en nyutvecklad GNU-ToolChain (C/C++) i botten för att kunna kompilera Linux-kärnan till AVR32.

STARTERKIT INFO
--------------------
Det finns ett avancerat full-laddat Starter Kit (ATSTK1000) som innehåller en massa ROLIGT, men som tyvärr också blev lite för dyrt för min smak.. men kanske släpper dom ett mera avskalat Starter Kit för oss prismedvetna hobbyister framöver..
http://www.atmel.com/dyn/products/tools ... ol_id=3918

Kitet har typ allt! Dom skickar med ett 256/512MB SD-Card på vilket Linux redan ligger kompilerat och klart för att köra! Den har direkt HTTP, FTP; Telnet, direkt Out-Of-The-Box! Bara att börja leka!

Links:
http://en.wikipedia.org/wiki/AVR32
http://www.atmel.com/products/AVR32/
http://www.avrfreaks.net/

Propeller snabbgenongång..

Postat: 13 oktober 2006, 15:28:48
av overclocked
Jaha osså tar vi en till då...

Propeller (Parallax):

Detta är en lite skum produkt men som verkligen ger rysningar av välbehag hos oss som gillar att labba med ny teknologi! Parallax är idag känt för en produkflora i stil med labbkort såsom: BasicStamp, JavelinStamp och uC såsom SX-chipen! Personligen snubblade jag över produkten Propeller första gången kring 1 April i år och trodde då ALLVARLIGT att detta var ett April-skämt! Den där propeller-mössen tillsammans med snacket runt Multiple-Core Technology verkade inte riktigt troligt... men det var sanning! Produkten Propeller innefattar en specifik kärna som finns förpackat i lite olika förpackningar.
Som man brukar säga, en bild säger mer än 1000 ord.... Men jag babblar på iallafall! :-)
http://www.parallax.com/propeller/index.asp

Kolla interna strukturen nertill på den sidan (block diagram).

Propeller innehåller 8 separata processing-enheter, så kallade COG's, som var och en har ett eget minne och några andra lokala resurser och även delar på ett gäng globala resurser som är gemensamt för alla.

Precis som någon nämnde tidigare i fallet med så används även här en intern PLL för att multiplicera upp klockan som skickas in. Maximalt kan kretsen hantera att alla 8 COG'sen exekverar i 80Mhz. Bl.a. så har varje COG en speciell del som kan användas för Video-generering vilket gör att man kan skapa enkla användar-gränssnitt som presenteras på antingen en VGA-skärm eller en vanlig TV. Istället för att lägga in en MASSA Controllers så är deras tanke att du laddar hem koden (eller skriver den själv) som gör att en av dina COG'ar antar den Controller-roll du för tillfället behöver! Ex. kan man då använda en av COG's som CPU, en som grafik-controller, en som ljud-controller, en som RS-232 controller och en som PS/2-controller. I detta scenario skulle vi då ha använt 5 av dom 8 COG's och alltså ha kvar 3st. till för andra sysslor. Kanske t.ex. lite signalbehandling skulle kunna göras av de återstående tillsammans! :-) Roligt koncept tycker jag, MEN det märks att det är ett mindre företag eftersom dokumnetationen av denna krets är bristfällig, verktygen för utveckling finns bara för Windows och är delvis skrivna i ASSEMBLER?? och dokumnetationen för utbecklingverktyget och kretsen ligger i samma dokument?? Men vafan, jag tycker fortfarande man ska ge kretsen en chans!

OPERATIVSYSTEM
--------------------
Vad gäller operativsystem så verkar det inte bli möjligt att på enkelt sätt köra t.ex. Linux på den, utan betydligt enklare operativ för inbyggda system är nog mera aktuellt. idag verkar det itne finnas något att utgå ifrån... iallafall inte vad jag kan se. Det pratas i forumen om något enkelt operativsystem som postas i nya versioner eftersom där som kanske kan bli något så småningom... men det är INGET Linux.

PROGRAMMERINGSMÖJLIGHETER
-------------------------------------
Här finns idag två möjligheter, antingen använder man assembler direkt mot respektive COG, eller så använder man deras eget högnivåspråk SPIN som är speciellt framtaget för att enkelt kunna hantera de olika COG'sen. man ska även kunna blanda dessa två lite som man vill..
C/C++ -kompilator finns ingen idag och jag har heller inte hittat någon som funderar på att skriva en sån, men det dyker säkert upp... hmmm man kanske skulle.....

STARTER KIT
----------------
Dom Starter Kits som finns att tillgå idag är relativt "billiga" $130 respektive $80. Det som koatar $130 verkar väldigt innehålla väldigt mycket roligt/användbart för pengarna tycker jag!
http://www.parallax.com/detail.asp?product_id=32100

Men i Forumen pratas redan om ett nytt mini-starter kit som skulle kosta c:a $15 för intressenterna till detta kort är ju väldigt prismedvetna hempulare! Kretsen lös kostar idag $12.50, så då förstår man hur grundläggande detta kommande Starter Kit kommer att bli.

Links:
http://www.parallax.com/
http://www.parallax.com/propeller/index.asp
http://www.parallax.com/detail.asp?product_id=32100

Postat: 13 oktober 2006, 18:13:41
av cykze
Kanonbra skrivet. :tumupp:

Du får gärna lägga in det i Wiki:n. Propeller respektive AVR32. Logga in med samma uppgifter som till forumet. Vill du ha hjälp med formateringen så är det bara att du säger till så kan någon annan lägga in det åt dig.