Введение

RS08 – это семейство 8-битных микроконтроллеров от NXP Semiconductors. Архитектура RS08, первоначально выпущенная компанией Freescale в 2006 году, представляет собой версию с уменьшенным объемом ресурсов центрального процессора Freescale MC68HCS08, который является частью семейства микропроцессоров 6800. Она была реализована в нескольких устройствах микроконтроллеров для встраиваемых систем. По сравнению со своими аналогами HC08 и Freescale S08, RS08 имеет значительно упрощенную конструкцию. Буква 'R' в номерах компонентов обозначает "Reduced" (уменьшенный); сама Freescale описывает ядро как "ultra low end" (сверхнизкий уровень). Типичные реализации включают в себя меньшее количество встроенных периферийных устройств и ресурсов памяти, компактные корпуса (наименьший – QFN6 размером 3 мм x 3 мм x 1 мм) и стоимость менее 1 доллара США. Цели упрощенной конструкции – повышение эффективности, снижение стоимости для устройств с небольшим объемом памяти и уменьшение площади кристалла. RS08 использует архитектуру фон Неймана с общей шиной данных и команд; возможно выполнение инструкций из памяти данных. Устройство не обладает двоичной совместимостью с ядром S08, хотя наборы команд и режимы адресации являются подмножеством S08. Это облегчает переход от ядра S08 к ядру RS08 для разработчиков и инженеров. Режимы адресации Short и Tiny обеспечивают более эффективный доступ и обработку наиболее часто используемых переменных и регистров. Эти инструкции имеют однобайтовые коды операций, что снижает объем необходимой программной памяти при их частом использовании. Площадь кристалла на 30% меньше, чем у ядра S08. Ядро RS08 использует ту же структуру шины, что и S08, что позволяет повторно использовать модули памяти и периферии. Оно предоставляет интерфейс Background Debug Mode (режим отладки в фоновом режиме) – интерфейс отладки по одной линии, обеспечивающий интерактивное управление процессором при установке в целевую систему.

Архитектурные особенности

Ядро RS08 не использует стек. При вызове подпрограммы оно сохраняет адрес возврата в регистре связи с теневым счетчиком программы. Если подпрограмма, в свою очередь, вызывает другую подпрограмму, она может сохранить адрес возврата в локальной переменной, вызывать необходимые подпрограммы и восстановить сохраненный адрес непосредственно перед возвратом. Регистр состояния ядра содержит биты флагов переноса (Carry) и нуля (Zero). Флаги переполнения (Overflow) и знака (Negative), обычно присутствующие в других ядрах, отсутствуют.

Перерыв в обработке

Перерывания не передаются через векторы прерываний, как это происходит практически во всех других процессорах Freescale. Перерывания RS08 могут вывести процессор из состояния ожидания WAIT или STOP (когда выполнение временно приостановлено), но в противном случае не изменяют ход программы. Фактически, RS08 выполняет любой фрагмент кода до завершения. Эффект отдалённо напоминает кооперативную многозадачность в операционных системах. Несмотря на то, что обработка внешних событий происходит синхронно, не требуется дополнительных затрат на переключение контекста, и возможна работа в режиме низкого энергопотребления. Арбитраж прерываний полностью контролируется программно.