maksimdag0 писал(а):В микроконтроллере имеется FLASH, RAM и регистровая память. Главный вопрос: физически, это несколько разных памяти?
Да. Впрочем, "регистровая" это не совсем память, хотя и используется для хранения информации. Но в большей степени это часть процессора.
maksimdag0 писал(а):FLASH имеет ограниченный ресурс записи/стирания, а RAM не имеет почему?
Именно потому что разные технологии. Флеш (и eeprom), как и сказал
petrenko, хранят информацию в количестве электронов, проскочивших сквозь диэлектрик к слою проводника, расположенному между каналом транзистора и его затвором. Если электроном много - транзистор открыт, если мало - закрыт. Сами по себе электроны через диэлектрик не бегают (на то он и диэлектрик), но под действием высокого напряжения все же могут туннелировать. Но это со временем разрушает диэлектрик.
А ОЗУ - схема на обычных транзисторах, работающих в обычных режимах. Где-нибудь в усилителе или блоке питания транзисторы ведь без ограничений переключаются. Вот и здесь так же.
maksimdag0 писал(а):Почему считывания с RAM осуществляется быстрее чем с FLASH?
На самом деле, хороший вопрос. Казалось бы, тоже транзистор, пусть и странной конструкции. Что мешает считать с него информацию мгновенно.
Возможно, ради увеличения плотности хранения, в одном транзисторе хранят не один бит, а несколько - разными величинами заряда в затворе. Тогда лишнее время уходит на декодирование. В "компьютерных" флешках это применяется, но в контроллерных - не знаю. Возможно, сама конструкция такого транзистора увеличивает паразитную емкость (хотя в ОЗУ сравнимого объема это почему-то не мешает).
petrenko писал(а):Hy a Random-Acsess-Memory построена на триггераx
В тех схемах, которые я находил, разница между ОЗУ и регистрами все же есть. Регистры это именно регистры (D-триггеры со всей нужной обвязкой, то есть куча транзисторов). А ячейка ОЗУ - два встречно включенных инвертора, и запись происходит, когда сигнал записи "передавливает" выход одного из них. То есть гораздо более простая штука.
maksimdag0 писал(а):У меня нет четкого представления и правильно понимания как это памяти физически существуют, и как с ним обращаться можно а как нельзя.
Ну неправильно к ним обращаться это еще надо постараться.
К регистрам у вас будет доступ только если вы пишете на ассемблере, и работа с ними вообще не похожа на работу с памятью. Если же пишете на Си, с ними работает компилятор.
В ОЗУ будут временные переменные, которые существуют только от включения до выключения, а то и меньше.
А в ПЗУ (flash) - статические данные, которые меняться не будут. Код программы, какие-то константы. Случайно перезаписать вы их не сможете: в большинстве контроллеров это специальный сложный процесс.
---
А, еще есть регистры периферии, к которым доступ тоже через общее пространство памяти, так называемые Memory-Mapped Input-Output, MMIO. Но они могут быть организованы вообще как угодно.