Küsimus:
Kuidas arduino programmimälu laiendada?
qwerty10
2016-08-28 10:00:46 UTC
view on stackexchange narkive permalink

Vahel on varjatud C-programmi jaoks ruumi, mille ma tahan arduinole panna, otsa. Mis kiipi on mul vaja arduino programmimälu laiendamiseks, et saaksin oma arduinoga kasutada suuremaid C-programme?

Arvestades, et [kolleeg nimega Petri Häkkinen] (https://plus.google.com/100797925989882885975) pani [arkaadistiilis mängu] (http://www.gammon.com.au/forum/?id = 12623) Atmega328P-l, peaksite ehk vaatama oma koodis ruumi säästmist? Kui see pole otstarbekas, nagu mõned vastused ütlevad, võite saada suurema kiibi suurema programmimäluga. Näiteks Atmega644 on teiste hulgas ka DIP-kiibi pakendis.
Vaadake ka https://forum.arduino.cc/index.php?topic=226465.0
kas saaksite palun oma vastust veidi selgitada? 2) Arduinol on SPI, nii et SD-kaardile pääseb juurde. Kõik SD-kaardil olevad koodid tuleb laadida käivitatavasse mällu. See on keeruline ja mitte algajatele ... Te mõtlete, et saate käsu mälu muuta või ümber programmeerida, kui programm töötab? Kas käimasolev programm saab käivitamislaaduri kutsuda ja uusi juhiseid erinevatele aadressidele laadida? Kas selles vanuses pole programmimälu? Erinev lahendus võib olla rutiinide tuvastamine teie programmis ja kõik "kõned", mis on salvestatud koos spi välismällu ... Täname!
Viis vastused:
James Waldby - jwpat7
2016-08-28 10:13:30 UTC
view on stackexchange narkive permalink

ATmega2560 on kiip, mis lisatakse rohkem mälu, kui Uno programmimälu otsa saab. Mälu veebilehele aadressil arduino.cc näete, et sellel on Flash = 256KB, SRAM = 8KB, EEPROM = 4KB, kus Unos oleval ATmega328 kiibil on Flash = 32KB, SRAM = 2KB, EEPROM = 1KB.

Kui Uno programmimälu saab otsa, on teil umbes kolm praktilist valikut: programmi väiksemaks muutmine; eemaldage alglaadur (ühe või kahe KB vabastamiseks); kasutage teist võimekama protsessoriga tahvlit. Uno pardal oleval protsessoril pole võimalust programmibaitidele juurde pääseda mujalt kui kiibil olev 32KB välklamp. Mega2560 pardal olev protsessor käivitub 8 korda suurema välguga, nii et see mahutab suuremaid programme kui Uno.

Kui eemaldate alglaaduri, võite selle asemel programmeerida USBASP-plaadi abil, nagu kirjeldatud artiklist „Programmeerige AVR-kiip USB-kaabli abil 10-kontaktilise kaabliga” artiklist aadressil learningaboutelectronics.com.

aga kui vabastate alglaaduri, siis kuidas saaksin programmeerimiseks kasutada arduino IDE-d?
@qwerty10, vaata redigeerimise viimast lõiku. Arduino IDE toetab USBASP-i ok.
Kas see ei töötaks ühegi programmeerijaga, kes saaks ATMEGA-sse koodi üles laadida? Ainult USBASP asemel. Nagu ma aru saan, ei kasutata tegelikult 10 tihvti, vaid nende tihvtide alamhulka.
@qwerty10, USPASP on Interneti-teenuse pakkuja (süsteemses programmeerimises) programmeerija. Üldiselt saab kiibi programmeerimiseks kasutada mis tahes Interneti-teenuse pakkuja programmeerijat (koos alglaaduriga või ilma), kui sihtkiibil on saadaval MOSI, MISO, SCK, RST, VCC ja GND tihvtid.
Praegune Unos kasutab väga kompaktset alglaadurit optiboot. Selle eemaldamine vabastab ainult 512 baiti.
@qwerty10: USBASP-l on 6-kontaktilise pistikuga versioone. 10-kontaktilisel pistikul on 4 üleliigset tihvti.
@Edgar Bonet. Mul on veel üks küsimus Edgar. Kui ma võtan Uno pistikupesast välja atmega 328 kiibi ja asendan selle hoopis atmega8-16PU kasutamisega ning põletan selle 512 baiti alglaaduri - kas see tähendab, et saan arduino Unot kasutada koos atmega8-ga nagu atmaga328 (aga 328 tunnuste alamhulk). ATMEGA8 on muidugi vanem kiip kui 328, kuid sellel on siiski samad pistikud.
@qwerty10: Olen üsna kindel, et see peaks töötama füüsilisel tasandil. Tarkvaratasandil peate siiski veenma Arduino IDE-d sellega hästi mängima. Võite proovida IDE-le öelda, et teie laud on tegelikult “Arduino NG või vanem w / ATmega8”.
@Edgar Bonet. Nii et kui seda kasutada atmeg8 kiibiga Arduino NG-ga, tähendab see seda, et alglaadur paneb arduino atmega8 kaitsmed kasutama arduino PCB kristalli? Või seab alglaadur arduino atmega8 kaitsmed oma sisemise ostsillaatori kasutamiseks? See kellateave peab olema teada, et liikuda arduino prototüübilt vooluahela püsivale PCB-versioonile. Kui palju mälu on pärast bootladeri kirjutamist atmega8-le - kas see on 8KB asemel 7,5 KB?
@qwerty10: Te olete oma esialgsest küsimusest väga kaugel. See peaks olema tõesti uus küsimus.
@Edgar Bonet. Ma arvan, et vastus on, sest see kinnitab uno-plaadi atmega328 tihvti alamhulga (st 328 tihvtid võivad olla samad kui mega8), seega vajaks see kristalli ja kondensaatoreid.
KIIV
2016-08-28 12:53:30 UTC
view on stackexchange narkive permalink

Teine võimalus (välja arvatud suurema mäluga MCU) pole Arduino raamistiku ja selle teekide kasutamine. Selline abstraktsiooni tase on mõlemas mõttes kallis - mälukasutus ja kiirus. Kuid see on palju raskem viis. Kui vajate mõnda teeki, peate selle teisaldama (kui te pole seda leidnud), või pakkuma vähemalt Arduino nõutavad funktsioonid.

Näiteks Arduino IDE 1.6.11-s on tühi visand ammendumas 444 baiti välku. Ühe pinMode ja digitalWrite (13,! DigitalRead (13)) kasutamine; + delay (500); tähendab 964 baiti. Muidugi on need suure tõenäosusega ühekordsed. Kui kasutate veel kuut tihvti ja vahetate seda, kulutab see palju vähem programmimälu kui esimest (1192B). Kuid see kasvab ikka väga kiiresti.

Puhtas C-s on tühi programm umbes 134 baiti pikk. Sama funktsionaalsus (ühe tihvti vahetamine iga 500 ms järel) võtab 158 baiti (ja see on palju kiirem).

Kuid hobiprojekti jaoks valiksin hoopis ATMega2560 või ATMega644 / 1284.

Ja võite kasutada ka otsest juurdepääsu riistvarale. Lülitage pin-visand otse registrite abil ja _delay_ms avr-teekidest kasutab 464 baiti 964B asemel. Arduino tuumikogude viivitusega on see 602B.

Te peate silmas "_delay_ms ()".
Sellel on lisakasu, kui saate tegelikult teada oma kasutatavast mcu-st. Nende Arduinode AVR-id on palju võimekamad kui "tavaline kogu" oleksite uskunud. ++
dalearn
2016-08-28 17:30:56 UTC
view on stackexchange narkive permalink

Aga vaarika pi null? Mul on paar ja kasutan neid üsna sageli arduinodena.

Tuleb kaaluda ka teisi arhitektuure, kuid manustatud Linux-süsteem * koos kohustusliku SD-kaardi käivitamisega * nagu pi lisab palju keerukust ja on ainulaadsel viisil habras, isegi kui mitte kallim. On palju tahvleid, mis põhinevad väiksematel, kõrgemalt integreeritud ARM-i MCU-del, mis on rakenduste poolest palju sarnasemad Arduinole, olles samas drastiliselt võimekamad. Aga kui vajate palju töötlemist ehk megabaiti mälu, siis jah, need keerukused hakkavad tasuma.
Eelistan ka nulli, sest see on nii paindlik. Saate lisada rohkem salvestusruumi või kinnitada seda projektidesse, omades samal ajal ka piisavalt suurt protsessorit, et peaaegu kõike teha.
deltaray
2016-08-28 17:37:27 UTC
view on stackexchange narkive permalink

Võite vaadata ka teisi platvorme. Näiteks Teensy 3.2 ühildub Arduinoga ning sellel on 2KB eeprom ja 64KB RAM-i.

Trivet
2017-10-03 17:52:19 UTC
view on stackexchange narkive permalink

Kui küsite laiaulatuslikku küsimust, on kasulik lisada mõned üksikasjad. Nagu see, kui palju mälu on ja miks te seda arvate vajavat.

Kord määrasin protsessori 2 kB programmiruumis, 64 baiti RAM-i ja 1 KIPS-i. Insener küsis MIPS-ilt, et ma selgitasin tuhandeid sekundis. Ta vastas, et nad ei tule nii aeglaselt. Projekti lõpus lisati tohutu kasutajaliides ja mälu muutus kitsaks ... kuid sobis siiski probleemideta.

Nii et kaaluge kasutatavate ressursside üle läbimõeldumat kasutamist.

Küsimusele vastamiseks:

1) Arduino ei paku mugavat bussi mälu toomiseks. Niisiis pole kiibi lisamälu saamiseks mingit võimalust ühendada.

2) Arduinol on SPI, nii et pääseb juurde SD-kaardile. Kõik SD-kaardil olevad koodid tuleb laadida käivitatavasse mällu. See on keeruline ja mitte algajatele ...

3 ) Nagu soovitatud, pingutage koodi. See on ilmselt hea õppimisviis.

3) Liikuge suurema Arduino juurde.

Arduino protsessoreid on erinevaid. Mõned ACR-real, teised ARM-real. Samast perekonnast teise seadme juurde minek on suhteliselt tagasihoidlik muudatus ja see võib anda kuni 368 baiti progam FLASH-i. Kuid need pole täpselt Arduino lauad.

Arduino ARM-i põhised seadmed on väga erinevad ja kasutavad erinevaid teeke.

Vaadake Arduino Mega 2560, mis on väga sarnane Unoga, on sarnane jalajälg peaks kood olema suhteliselt hõlpsalt teisaldatav ja odav.

AVR-perekonnas on suuremaid seadmeid.

Pange tähele, et AVR32 on erinev protsessor ja välisseadmed on piisavalt erinevad et see on teine ​​seade.

Kui soovite pääseda väga suurtesse programmidesse (gigabaiti mälu), vaadake Beagleboardi. Sellel on täis linux, virtuaalse mäluga (vt ülaltpoolt # 2) ja võimsamad sisend- / väljundmehhanismid.

Võib-olla parandasid mõned kirjavead, näiteks millal, 3 ja erinevad
Ma mõtlen, et kui te need kirjavead parandate, võib keegi teie vastuse hääletada ...


See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 3.0-litsentsi eest, mille all seda levitatakse.
Loading...