Вопрос по работе мк

Ruslan2000
Offline
Зарегистрирован: 01.02.2013

Приветствую. С ардуино начал работать недавно поэтому помидорами прошу не кидать.

Может кто-нибуть подсказать каким образом программа размером 32кб исполняется при наличии оперативки всего в 2кб.  Если взять для примера нормальный комп, там операционная система создает виртуальное адресное пространство для каждой программы и загружает копию файла(образ) в память, сопоставляя посредством специальных таблиц виртуальные адреса и адреса физического озу (если говорить в двух словах не вдаваясь в сегментацию и страничность). При этом при недостатке физического озу, данные свопятся на винч.  В микроконтроллере же насколько я понимаю нет встроенных программ, выполняющих эти функции (или всетаки есть?).  Каким же образом исполняется длинный код при наличии такой маленькой оперативки?    

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Где расположена программа? Правильно в flash памяти. Где расположены данные? Правильно в sram.
Много у вас данных? Правильно - немного. Есть у Вас операционная система? Правильно - нет. Вы сами выделяете память и никто другой. Где неясность с памятью?

step962
Offline
Зарегистрирован: 23.05.2011

Кроме того, вспоминаем (узнаем), что микроконтроллеры AVR - типичные представители вычислительных машин Гарвардской архитектуры.

kisoft пишет:
Много у вас данных? Правильно - немного.

Это очень легко исправить, например, поручив микроконтроллеру обрабатывать строки или того хуже - потоки данных с датчиков.  Не зря в "толстых" ATmega'х имеется подготовка для расширения RAM до 64 КБ.

Цитата:
Есть у Вас операционная система? Правильно - нет.

И это дело поправимое:
mRTOS,
freeRTOS,
avrX,
uOS...

 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

"Ой! У меня калькулятор корень не считает! Может нужно компьютер купить?" :)

Уровень камня должен соответствовать задаче!

P.S. а корни, синусы и т.п. я в детстве умел на калькуляторе без оных функций считать :)

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

step962, я всего лишь пояснил ТС что и как согласно ситуации, которую он описал. Никто не запрещает забить память в упор, поставить ОС, но для таких контроллеров это скорее редкость, чем правило (я про ОС), во всяком случае на 8битных контроллерах я с этим не сталкивался (видимо еще всё впереди).

 

step962
Offline
Зарегистрирован: 23.05.2011

Да и я всего лишь уточнил.

А насчет ОС - почитайте на easyelectronics DIHALT'а. Он там соловьем разливается, расписывая смысл применения, возможности и достоинства самодельной RTOS (всего 300 байтов кода или около того). Может быть, станете ее ярым поклонником и еще кого-нибудь на форуме в это дело втянете. ;)

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Спасибо, я там тоже обитаю, однако пока что до ос не добрался, всему свое время. Почитаю, мне это интересно, особенно на кортексах, благо теперь он у меня есть.

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

На кортексах, как говорится, сам бог велел какую-нить ось воткнуть. Там памяти много. А на 8-битных - это лишнее. Они для простых систем.