Вопрос по работе мк
- Войдите на сайт для отправки комментариев
Приветствую. С ардуино начал работать недавно поэтому помидорами прошу не кидать.
Может кто-нибуть подсказать каким образом программа размером 32кб исполняется при наличии оперативки всего в 2кб. Если взять для примера нормальный комп, там операционная система создает виртуальное адресное пространство для каждой программы и загружает копию файла(образ) в память, сопоставляя посредством специальных таблиц виртуальные адреса и адреса физического озу (если говорить в двух словах не вдаваясь в сегментацию и страничность). При этом при недостатке физического озу, данные свопятся на винч. В микроконтроллере же насколько я понимаю нет встроенных программ, выполняющих эти функции (или всетаки есть?). Каким же образом исполняется длинный код при наличии такой маленькой оперативки?
Где расположена программа? Правильно в flash памяти. Где расположены данные? Правильно в sram.
Много у вас данных? Правильно - немного. Есть у Вас операционная система? Правильно - нет. Вы сами выделяете память и никто другой. Где неясность с памятью?
Кроме того, вспоминаем (узнаем), что микроконтроллеры AVR - типичные представители вычислительных машин Гарвардской архитектуры.
Это очень легко исправить, например, поручив микроконтроллеру обрабатывать строки или того хуже - потоки данных с датчиков. Не зря в "толстых" ATmega'х имеется подготовка для расширения RAM до 64 КБ.
И это дело поправимое:
mRTOS,
freeRTOS,
avrX,
uOS...
"Ой! У меня калькулятор корень не считает! Может нужно компьютер купить?" :)
Уровень камня должен соответствовать задаче!
P.S. а корни, синусы и т.п. я в детстве умел на калькуляторе без оных функций считать :)
step962, я всего лишь пояснил ТС что и как согласно ситуации, которую он описал. Никто не запрещает забить память в упор, поставить ОС, но для таких контроллеров это скорее редкость, чем правило (я про ОС), во всяком случае на 8битных контроллерах я с этим не сталкивался (видимо еще всё впереди).
Да и я всего лишь уточнил.
А насчет ОС - почитайте на easyelectronics DIHALT'а. Он там соловьем разливается, расписывая смысл применения, возможности и достоинства самодельной RTOS (всего 300 байтов кода или около того). Может быть, станете ее ярым поклонником и еще кого-нибудь на форуме в это дело втянете. ;)
Спасибо, я там тоже обитаю, однако пока что до ос не добрался, всему свое время. Почитаю, мне это интересно, особенно на кортексах, благо теперь он у меня есть.
На кортексах, как говорится, сам бог велел какую-нить ось воткнуть. Там памяти много. А на 8-битных - это лишнее. Они для простых систем.