Linux på en AVR?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Detraw
Inlägg: 630
Blev medlem: 31 januari 2004, 10:32:37
Ort: Stockholm (Nacka)

Linux på en AVR?

Inlägg av Detraw »

Hmm jag satt och funderade på vilka projekt man ska dra igång, och kom fam till att det skulle vara grymt att bygga en helt fristående webserver av en (eller flera) AVR:er.. Det lättaste skulle ju i sånna fall vara att man kopplade in lite externt minne och la linux på det, som man sedan kunde lägga in t ex apache på

Linux man kan man ju banta ner riktigt rejält, särskilt om man inte ska ha med stöd för tagentbord, mus, pci, agp med mera. Sedan är ju en del linux som är skrivna i C

Så tror ni att det är möjligt, och i sånna fall är det några som har tips eller ideér och tankar över projektet, eller kanske tips på dokumentation

/Daniel
Användarvisningsbild
Melker
Inlägg: 410
Blev medlem: 26 maj 2003, 22:17:34
Ort: Umeå

Inlägg av Melker »

Tror det finns någon som gjort en TCP/IP-stack som går att använda som webb eller mailserver, kika runnt på avrfreaks, tror det var där jag såg det.
Att få in linux eller apache på en avr tror jag nästan du kan glömma.
matseng
Inlägg: 2360
Blev medlem: 16 september 2003, 17:18:13
Ort: Dubai, United Arab Emirates
Kontakt:

Inlägg av matseng »

En grymm ide. Om den sedan är grymmt enfaldig eller grymmt bra kan man ju fundera på. ;-)

Börja att läsa lite mer om det hela på linuxdevices, där kan du hitta mycket info som rör just dina tankar. http://linuxdevices.com/index.html

I det stora hela så måste du förutom att stippa ner kärnan och allt annat runt omkring extremt kraftigt för att få rum på några hundra kilobyte så beöver du oxo en linuxkernel som inte använder sig av en MMU (memory management unit). Sådana speciallea kernels finns framtagna så att man kan köare linux på elänbdigt gamla x86-burkar eller på andra pytte-processorer som inte minneshantering.

Sedan tror jag bestämt är det den dum tanke på att stoppa in Apache i burken. Varför använda sig av en mjukvara som totalt har över 101 000 rader kod? En riktigt tiny webbserver kan man skriva på några tiotals rader kod. Mer avancerad behöver inte webbservern vara om den ska köra på en processor utan varesig minne eller kraft.

Sedan ska du koppla in ett nätverkskort till AVR'en. Och det är enkelt och snabbt gjort däremot.

Det stora problemet blir att porta över linuxen till AVR-arkitekturen. Och det är det som kommer att ta upp den mesta tiden. Här är ett utdarg ur ucLinux mailinglista. Killen som skriver svaret överderiver definitivt inte svårigheterna.
> I've just started a project to port uCLinux to a new processor which doesn't
> have an mmu or a GNU-compatible compiler and I find myself in grave need of
> advice and assistance.

Well, this is going to take up some serious time. I hope you don't
have a life. Such a project requires in-depth knowledge of C
programming, assembly language programming (for the target arch).
Om du bara vill ha en webbserver på ett AVR/Atmel-chip så finns det gott om byggen yte på nätet. Man kopplar in ett ETH-chip till AVR'en, skriver en tiny TCP/IP-stack och implementerar en extremt pyttig webbserver. Det är inget märkvärdigt sålänge man kan läsa och förstå ett par hundra sidor med datablad och känner till ETH/TCP/IP-lagrernas uppbyggnad på en nivå som är lägre än "bitt-nivå".

Här är ett exempel på ett bygge: http://www.picoweb.net/prodpw1.html

Letar du lite på internet efter "tiny web server" eller "smallest web server" eller liknande så hittar du en helt bunt olika varianter.
Användarvisningsbild
Melker
Inlägg: 410
Blev medlem: 26 maj 2003, 22:17:34
Ort: Umeå

Inlägg av Melker »

Låter ju helt klart intressant alltså... Bara funderar lite (när jag är nästan toltalt borta på Linux), vad skulle det innebära egentligen, vad från Linux kan man utnytja in en AVR?
henkebenke
Inlägg: 515
Blev medlem: 31 maj 2003, 10:42:37
Ort: Helsingborg

Inlägg av henkebenke »

Det hade ju varit rätt coolt att köra linux på en avr, däremot hade det nog varit tämligen meningslöst. Ska man göra en liten webserver så behöver man inte ett så kraftfullt os som linux, det räcker med rudimentär trådhantering. Att skriva en egen TCP/IP-stack är kul, håller på med det i en kurs för tillfället, men det är inte helt trivialt.
Däremot skulle jag kunna rekommendera AXIS´ Etrax-chip som är gjorda för nätverksapplikationer. Den senaste generationen heter 100LX och har MMU och egen Linux-port (cris). Chipet kan man få för 40$, tyvärr så är det BGA. Däremot så har de utvecklingskort med det mesta färdigt för ca 250$.
http://developer.axis.com/products/index.html
Användarvisningsbild
Jonaz
Inlägg: 2358
Blev medlem: 4 november 2003, 22:06:33
Ort: Huddinge

Inlägg av Jonaz »

Har för mig att nån här inne (vem det var kommer så klart inte ihåg) hade en polare som hade byggt en server med en pic.
Pinkevin
Inlägg: 285
Blev medlem: 1 januari 2004, 12:44:10
Ort: Norrtälje

Inlägg av Pinkevin »

Jonaz skrev:Har för mig att nån här inne (vem det var kommer så klart inte ihåg) hade en polare som hade byggt en server med en pic.
Måste vart danei:s kompis, http://www.geekjoan.com/forum/viewtopic ... erver#4285
Eelector
EF Sponsor
Inlägg: 656
Blev medlem: 3 juni 2003, 23:58:52
Ort: Trollhättan
Kontakt:

Inlägg av Eelector »

Om du kan tänka dig pic så är nog denna sida läsvärd:
http://picnic.sourceforge.net/
Detraw
Inlägg: 630
Blev medlem: 31 januari 2004, 10:32:37
Ort: Stockholm (Nacka)

Inlägg av Detraw »

Tackar för era svar.

Som du säger matseng så måste den bantas nått groteskt, men det tror jag inte är så svårt med tanke på att linux är opensource, desutom finns det kerneler som får platts på en floppy, om man tar en sån och bantar har man redan en god grund.

Sen kanske det va lite överdrivet med apache, det kom jag på själv efter nån sekunds tänkande :) en webserver kan man jo skriva själv för just bara de behov man har.

men vad menar du med att det stora problemet är att porta over Linux?

och detta ETH-chip har jag inte hört talas om, vad är det för nått??

henkebenke >> hur menare du att man kan lösa det utan Linux? Att skriva nått från grunden kommer väl ta lite tid, och med ett riktigt bantat Linux kan man ju uppnå samma sak, eller?
Användarvisningsbild
zus
Inlägg: 198
Blev medlem: 14 december 2003, 11:34:08
Ort: Göteborg

Inlägg av zus »

Inte nog med att kerneln måste bantas ned _väldigt_ mycket. Du måste också skriva om minneshanteringsrutiner (som tidigare sagts har inte AVR:en någon MMU). Boot-koden måste göras om...troligen också all I/O-hantering. Dessutom måste drivrutiner skrivas för ethernet-interfacet (alt. skrivas om). Är själv linuxfrälst men att köra detta os på en AVR, njae...

När du gjort ovanstående är det ju inte heller så mycket "original-linux" kvar utan du har ju då i princip skrivit ett helt nytt os.
Detraw
Inlägg: 630
Blev medlem: 31 januari 2004, 10:32:37
Ort: Stockholm (Nacka)

Inlägg av Detraw »

Hmm det verkar som om man kanske skulle ta och skippa linux, och istället köra allt utan nått slags operativsystem :?:

Annars kanske man kan göra så att man lägger sin linux dist på en extern EEPROM som man laddar med bootloader till MPU:n
matseng
Inlägg: 2360
Blev medlem: 16 september 2003, 17:18:13
Ort: Dubai, United Arab Emirates
Kontakt:

Inlägg av matseng »

Detraw skrev:Som du säger matseng så måste den bantas nått groteskt, men det tror jag inte är så svårt med tanke på att linux är opensource, desutom finns det kerneler som får platts på en floppy, om man tar en sån och bantar har man redan en god grund.

men vad menar du med att det stora problemet är att porta over Linux?

och detta ETH-chip har jag inte hört talas om, vad är det för nått??

henkebenke >> hur menare du att man kan lösa det utan Linux? Att skriva nått från grunden kommer väl ta lite tid, och med ett riktigt bantat Linux kan man ju uppnå samma sak, eller?
ETH = Ethernet, dvs det chip som göra allt grovjobb mellan processorn och PHY (physical layer prylarna). Till exempel kretsarna CS8900 http://www.cirrus.com/en/pubs/proDatash ... 900a-4.pdf eller 8390 http://www.national.com/ds.cgi/DP/DP8390D.pdf . Båda är *mycket* vanliga i äldre ISA-baserade nätverskskort och är enkla att interface till en mindre processor.

Det största problemet med att porta? Tja förutom att man ska veta vad man håller på med, så är ju ett av problemen att trycka ner allt i storlek. Kommer du ner i under 300 K på en X86-processor så är du extremt duktig enligt vad jag förstått. Att sedan en AVR's RISC-liknande arktitektur kommer att göra koden större i jämförelse med CISC-x86 är något man får lida med... Enligt var jag har sett så får man räkna med några manmånaders arbete att porta till en ny arkitektur - och då är det på burkar som har MMU, BIOS, diskar och allt annat som gör livet enkelt.

Jag lärde mig att hantera ett CS8900-chip, och implementerade en rudimentär TCP/IP-stack på en ATMega8 på en veckas kvällspyssel. Hade jag lagt ner nån dag till så hade den kunnat spotta ut webbsidor oxo.
Detraw
Inlägg: 630
Blev medlem: 31 januari 2004, 10:32:37
Ort: Stockholm (Nacka)

Inlägg av Detraw »

med andra ord: skit i linux och lös det utan? Jo det verkar som det är den bästa lösningen.. så får det nog bli, sen får man ta och fixa linux när man inte har nått bättre för sig (hmm skulle väl bli när man nått 65+ nån gång :D )

Hmm massor med ISA kort råkar jag ha liggandes, det blir ju utmärkt med en sån då, har du några tips på var de sitter eller hur de ser ut.. eller det kanske står betäckning på de...

EDIT: eller hmm du kanske menade att man skulle använda ett helt ISA Ethernet kort och koppla det direkt till MPU:n?
Senast redigerad av Detraw 13 februari 2004, 16:09:03, redigerad totalt 1 gång.
Detraw
Inlägg: 630
Blev medlem: 31 januari 2004, 10:32:37
Ort: Stockholm (Nacka)

Inlägg av Detraw »

Melker skrev:Låter ju helt klart intressant alltså... Bara funderar lite (när jag är nästan toltalt borta på Linux), vad skulle det innebära egentligen, vad från Linux kan man utnytja in en AVR?
Jo t ex skulle man kunna hantera web filer på den genom telnet, med allt som man kan använde i linux går nog att lösa (enklare?) på annat sätt, utan linux...
matseng
Inlägg: 2360
Blev medlem: 16 september 2003, 17:18:13
Ort: Dubai, United Arab Emirates
Kontakt:

Inlägg av matseng »

Titta på chippet (det stora) på korten och se om du hittar siffrorna 8900 eller 8390 på dom. I sådana fall är det bara att köra på.

Så här såg mitt bygge ut:

ATMega8, ethernet via nätverskort. en 4x20 bakgrundsbelyst LCD, en SMT160 temperatursensor och ett moddat (all elektronik borttaget, jag scannar det själv via procesor istället) Ericsson Chatboard.

Jag orkade inte löda loss 4711 pinnar på chippet för att bara sätta fast det på ett annat kort så jag använde mig av hela nätverkskortet i mitt bygge. Fast nu har har sågat bort den vänstra delen av kortet som ändå inte användes. I stor sett utnyttrar jag bara ethernetchippet med tillhörande kristall och ethernetttafon på kortet.

Bild
Skriv svar