referente a este comentario, que varias veces escuche cosas asi de los PIC.
las otras lineas de micros (atmel, texas, motorola, etc) ... que onda ??
todas tienen sus rarezas ??
o hay un criterio mas unificado ?
Fue un error de expresion mio, en muchos sistemas no es necesario un RTOS, o mejor dicho un Sistema operativo que se encargue de manejar tareas, y a eso quise llegar cuando que en un microntrolador es un poco raro. Por lo tanto no necesitas la separacion de Kernel/User/Debug (MIPS), o Privilegiado/No Privilegiado ( ARM ). Queres/Usas acceso total por lo tanto siempre usarias Kernel (MIPS) Y Privilegiado (ARM), en el que podes usar todo del micro, todos sus registros, todas sus funciones.
Arquitecturas como ARM y MIPS que vienen de procesadores, donde ocurre normalmente el tema de tener un software de una tercera persona, hace que se deban tener ciertos recaudos y no dar acceso completo al microprocesador/microcontrolador, ¿te imaginas un programa externo cambiando direcciones de los segmentos de la MMU y haciendo que se sobreescriban datos modificando el OS?, y que por eso imagino que se mantuvieron hasta llegar a sus versiones para microcontroladores, aunque tal ves en una minima expresion.
Mirando un MSP430 (MSP430x2xx Family) de TI no veo que disponga de alguna de estas formas o separaciones que permitan que dentro de un modo se pueda acceder a algunos registros o usar ciertas instrucciones.
Los ATmega creo que tampoco lo poseen. Al menos el ATtiny8 y el ATmega328, no veo nada de eso.
Tal ves poseean una separacion de memoria en que se categorize como BOOT y que bloquee la escritura desde el mismo programa. Pero no estariamos hablando de lo mismo que antes, donde hablamos de restriccion de memorias, accesos a registros del core y uso de algunas intrucciones.
No se si hablarlo de "rareza", para mi lo raro es la implementacion de esos modos que en los unicos casos que lo veria viable es un RTOS, Respecto a las arquitecturas, cada empresa tiene su propia arquitectura y sus propias curiosidades.
Atmel (ATmega328 ) tiene la suya en que si vamos a comparar tiene 32 registros ( de 8 bits ) y se maneja con eso, los accesos a memoria conllevan un tiempo "extra" que acceder a un registro de la CPU. Las operacion unicamente se hacen en esos registros, es decir si tenes un dato en memoria, tenes que traer el dato, usarlo y luego guardarlo.
Los PICs difieren que le presenta al usuario una interfaz mucho mas simple con respecto a su set de instrucciones con la contra de usar para todas las instrucciones varios ciclos de reloj. (Por eso viene que los atmel "van" mas rapido). Pero una instruccion del PIC puede hacer uso de la memoria como algo mas "directo" sin tener que pasarlo a un registro interno.
Los Atmel usan la RAM para el stack, el PIC posee un stack por hardware. Excepto ya los otros PICs de 16bits que su arquitectura adopta ya la forma de usar un puntero al stack. Los PIC tienen los registros de los perifericos como si fuera la RAM (Lo mas seguro que mapeados), Atmel utiliza una instruccion especial para acceder a estos.
El MIPS M4K, posee tambien 32 registros internos y se basa en el read-modify-write (como atmel). Por su contraparte ARM es parecido pero usa 16 registros, donde algunos tiene funciones especiales, y hay intrucciones que no llegan a usar TODOS los registros, Las instrucciones del MIPS son de 32bits, mientras que ARM usa Thumb2 que pueden ser instrucciones de 16bits y 32 bits mezcladas. El MIPS M4K posee un branch delay, no recuerdo si el ARM tambien.
En fin, hay millones mas de caracteristicas que los hacen UNICOS. Estudiar cada arquitectura a fondo lleva mucho tiempo ( Dejando un poco de lado las de 8bits ). Quise ponerme con un Pentium3 que poseo pero son tantas hojas que al final abandone.