
Re: Memory mapped vs IO mapped периферия
Това не помага защото пази само регистъра. Това което се записва в него си стои в нормалната памет. Достатъчно е един грешен указател да прецака стойността едно ниво по-нагоре и драйвера пише грешката в периферията.
Ако целта е хардуерна изолация слагаш MPU. То real-time ядрата като Cortex-M7 си идват с такъв. Изолираш кода на драйвера и регистрите и ако нещо тръгне да пипа по погрешка директно дава fault. Не е пълно спасение, но ограничава пораженията.
А ако е нещо наистина критично пишеше на memory-safe език със силна типизация като Rust. Там подобни достъпи гърмят още при компилация. Самото писане до регистъра ще е в unsafe блок, но тази част на драйвера я четете двама до пълно разбиране и така.
Отделно гледаш дали логиката е коректна. Познавам хора, които нищо друго не правят, освен да доказват формално отсъствието на грешки. Пишат на Rust и верифицират с Kani/Creusot. А ако не става въпрос за real-time доказваш в Rocq/Gallina директно екстрактваш към OCaml.
И пак няма гаранция, че няма да отрепеш някой. Там си трябват системни концепции за защита на различни нива, често независими едно от друго с известно ниво на редундантност.
Хардуеристите сме свикнали, пишем на VHDL и яко verification coverage и formal. Та от тази гледан точка АИ-то може да не замини програмистите ами изцяло да замени софтуера с хардуер
