Arduino bootsector
Arduino bootsector
Kom i diskussion med en kompis som nyligen börjat med Arduino och han hävdade att han lyckats skriva sönder Arduino:s bootsector, försökte förklara för honom att Arduino inte har bootsector.
Har sökt på nätet för att se om jag hade fel och ännu har jag inte sett något projet där det talas om att Arduino har en bootsector.
Arduino har bootloder men det anser jag är en annan sak, så har Arduino bootsector?
Har sökt på nätet för att se om jag hade fel och ännu har jag inte sett något projet där det talas om att Arduino har en bootsector.
Arduino har bootloder men det anser jag är en annan sak, så har Arduino bootsector?
Re: Arduino bootsector
Det är klart att bootloadern bor ju någonstans i minnet, kanske bootsectorn...?
- Klas-Kenny
- Inlägg: 11344
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Arduino bootsector
Hur menade personen att han "skrivit sönder" då?
Bootladdaren (eller dess minnesarea) skrivs ju normalt aldrig någonting till. Dock kan man såklart göra en applikation som skriver till flashminnet, och skriver man då till (eller raderar) den del av minnet där bootladdaren ligger så kommer den inte längre fungera som den ska.
Sen vad gäller just frågan om "bootsektor" så är det ju svårt att tala helt generellt om Arduino, då det finns så många varianter numera.
De ursprungliga ATmega328 eller vad det var, har ingenting sådant. Bara en enda flash-area där allt program ligger.
Men det finns ju modernare varianter med ARM-processor, tex Due som tydligen har en AT91SAM3X8E. Den har enligt databladet en minnesarea som heter "Boot memory", vilket är det första som exekveras vid uppstart.
Bootladdaren (eller dess minnesarea) skrivs ju normalt aldrig någonting till. Dock kan man såklart göra en applikation som skriver till flashminnet, och skriver man då till (eller raderar) den del av minnet där bootladdaren ligger så kommer den inte längre fungera som den ska.
Sen vad gäller just frågan om "bootsektor" så är det ju svårt att tala helt generellt om Arduino, då det finns så många varianter numera.
De ursprungliga ATmega328 eller vad det var, har ingenting sådant. Bara en enda flash-area där allt program ligger.
Men det finns ju modernare varianter med ARM-processor, tex Due som tydligen har en AT91SAM3X8E. Den har enligt databladet en minnesarea som heter "Boot memory", vilket är det första som exekveras vid uppstart.
-
- Inlägg: 1397
- Blev medlem: 29 januari 2011, 21:06:30
- Ort: Lapplandet
Re: Arduino bootsector
Flash-sektorn som bootloadern ligger i blir ju de facto en bootsektor, även om det officiellt inte heter så.
Att atmega328 bara har ett flashminne spelar egenligen ingen roll. Flashet är fortfarande uppdelat i sektorer.
ARM-baserade processorer har oftast en flerstegs-bootloader där första steget ligger i ett ROM just för att man inte ska kunna skriva över det.
Den lilla loadern sköter sen om att ladda användarkoden (som i sig kan vara en annan bootloader) från flash/usb/sd/j-tag/etc.
Att atmega328 bara har ett flashminne spelar egenligen ingen roll. Flashet är fortfarande uppdelat i sektorer.
ARM-baserade processorer har oftast en flerstegs-bootloader där första steget ligger i ett ROM just för att man inte ska kunna skriva över det.
Den lilla loadern sköter sen om att ladda användarkoden (som i sig kan vara en annan bootloader) från flash/usb/sd/j-tag/etc.
Re: Arduino bootsector
Mr Andersson » Då var det bra att jag inte fortsatte diskussionen med honom.
Klas-Kenny »
Hur menade personen att han "skrivit sönder" då?
Det vet jag inte efter som jag borrade inte mycket mer i det då det fanns en möjlighet att han hade rätt.
Klas-Kenny »
Hur menade personen att han "skrivit sönder" då?
Det vet jag inte efter som jag borrade inte mycket mer i det då det fanns en möjlighet att han hade rätt.
- Hobbyisten
- Gått bort
- Inlägg: 2531
- Blev medlem: 3 december 2017, 22:55:25
Re: Arduino bootsector
Han HADE ju rätt som Mr Andersson sa, skilda benämningar bara. Bootloaderkoden ligger i atmegan och sköter kommunikationen med USBn. Det krävs lyckligtvis speciell hårdvara för att bränna in den.
Re: Arduino bootsector
En Arduino (original) är en vanlig gammal ATmega microcontroller.
Den har ett flash programminne som kan raderas i blockar.
Medelst speciella kommandon-följd kan den skriva till sitt eget flashminne - och det är exakt vad bootloadern gör när programmet läggs in.
Detta kan alltså även hända om man utför denna följd i programmet man har lagt in.
Jag har själv använd denna teknik för att spara statistik i en 64kB bank jag hade över i ett projekt.
Fungerar utmärkt - om man ser till att vara 100% säker på adresser, banker osv.
Den har ett flash programminne som kan raderas i blockar.
Medelst speciella kommandon-följd kan den skriva till sitt eget flashminne - och det är exakt vad bootloadern gör när programmet läggs in.
Detta kan alltså även hända om man utför denna följd i programmet man har lagt in.
Jag har själv använd denna teknik för att spara statistik i en 64kB bank jag hade över i ett projekt.
Fungerar utmärkt - om man ser till att vara 100% säker på adresser, banker osv.