Мисля, че може да приемете, че качването на код в Arduino е еднопосочна комуникация: това би било като да поставите ягоди в блендер и Daquiri излиза. Ако това беше вярно, можете просто да вземете всичко, което IDE изхвърля към серийния порт, да го запишете във файл и имате двоичен файл на Arduino. (Преминете към TL;DR, ако не се интересувате от подробности. Краен резултат: това предположение не е правилно).
Предположението за еднопосочна комуникация не е напълно правилно: има програма на Arduino (наречена "bootloader"), който отговаря за комуникацията с програмиста ("програмист": програма, която програмира Arduino, приемете, че това е Arduino IDE засега). В най-"естественото" им състояние процесорите Arduino не могат да бъдат програмирани през серийни линии. По-скоро тези чипове се програмират или чрез системно програмиране (ISP) или чрез JTAG протокол. Буутлоудърът е програма, която работи на Arduino CPU и зарежда скици/програми през серийния порт. Тази програма се изпълнява при стартиране и търси команди за програмиране през серийния порт.
Ако открие, че програмист се опитва да комуникира програмна информация, той ще прочете компилирания двоичен файл на Arduino, идващ по серийната връзка, ще го съхрани във флаш памет, ще го изпрати обратно по серийната връзка за проверка и ако всичко е успешно, ще излезе и стартирайте съхранената скица. Ако на серийния порт не се появи информация за програмиране, тоест никой програмист не се опитва да напише нова скица, тогава буутлоудърът просто излиза и стартира програмата, която вече е съхранена във флаш.
TL;DR: За да внедрите псевдо-Arduino на вашия сериен порт, трябва да напишете програма, някакъв код, който симулира Arduino (бутлоудър) на другия край на вашия виртуален сериен порт. Така че, когато програмист/IDE каже на Arduino "там ли си?" вашата програма ще отговори с "да!", точно както Arduino би отговорил.
Буутлоудърът на Arduino по подразбиране е съвместим със STK-500: това означава, че прилага Команди STK-500 – справката за които може да бъде намерена тук. Ако решите да направите това, тогава най-лесното нещо може да бъде да започнете със съществуващ буутлоудър, като например Arduino или AdaFruit (има други също) и го модифицирайте. Такъв буутлоудър би имал всички команди, които вече са внедрени, и тъй като е написан на C (не бих избрал асемблиран буутлоудър за модифициране :), трябва да е достатъчно лесен за модифициране.
Като алтернатива може да решите, че STK-500 е твърде труден за изпълнение. Ако случаят е такъв, можете да използвате всеки програмен протокол, който Avrdude поддържа: Avrdude е програма за програма ming AVR чипове и Arduino IDE използва Avrdude вътрешно за изпращане на скицата към Ардуино. Ако направите това, тогава ще трябва да промените настройките в Arduino IDE за програматора, който използвате.
Лично аз смятам, че съвместимостта със STK-500 е най-добрият вариант за това, но YMMV.
person
angelatlarge
schedule
03.04.2013