Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Memory mapped vs IO mapped периферия
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=19741
Страница 1 от 1

Автор:  syscop [ Пет Юни 19, 2026 7:47 pm ]
Заглавие:  Memory mapped vs IO mapped периферия

Да спорим... :)
Според мен IO mapped е по-добрият вариант. Няма шанс като "изпуснеш" някой указател и ръката/кракът на робота да утрепе някого... :(

п.п.
Пускам темата тук с надеждата да е полезна за повече хора.

Автор:  itso.t [ Пет Юни 19, 2026 9:37 pm ]
Заглавие:  Re: Memory mapped vs IO mapped периферия

А може ли някакъв кратък контекст - като за блондинките като мен? :D

Автор:  ToHu [ Пет Юни 19, 2026 10:20 pm ]
Заглавие:  Re: Memory mapped vs IO mapped периферия

Ами от една страна уж е по-защитено, от друга .... дали ще омажеш самия регистър или някоя променлива която го определя каква е разликата? Чисто теоретично количеството IO е в пъти по-малко от изпозлваната памет, т.е. всякакви проблеми с паметта имат по-голяам шанс да се проявят в самите ти променливи от колкото в IO-то.

Автор:  TheWizard [ Пет Юни 19, 2026 10:40 pm ]
Заглавие:  Re: Memory mapped vs IO mapped периферия

ако само ти си "администратор" на кода и IO-то, прави го както ти е най-лесно и бързо

Автор:  HCL [ Съб Юни 20, 2026 12:57 am ]
Заглавие:  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. Та от тази гледан точка АИ-то може да не замини програмистите ами изцяло да замени софтуера с хардуер :)

Автор:  syscop [ Съб Юни 20, 2026 8:41 am ]
Заглавие:  Re: Memory mapped vs IO mapped периферия

itso.t написа:
А може ли някакъв кратък контекст - като за блондинките като мен? :D


При x86 четене от периферия
Код:
mov al, 20h
in al, dx ; входно-изходна операция

При mc6800 по спомен
Код:
ldaa 20h

В първия случай ако объркаш нещо с указателите например напишеш memset(0, 0, 256) периферията няма да пострада(ще омажеш таблицата на векторите с прекъсвания...). Във втория резултатът ще бъде неясно какъв...

Автор:  palavrov [ Пет Юни 26, 2026 4:39 pm ]
Заглавие:  Re: Memory mapped vs IO mapped периферия

HCL написа:
Това не помага защото пази само регистъра. Това което се записва в него си стои в нормалната памет. Достатъчно е един грешен указател да прецака стойността едно ниво по-нагоре и драйвера пише грешката в периферията.

Ако целта е хардуерна изолация слагаш MPU. То real-time ядрата като Cortex-M7 си идват с такъв. Изолираш кода на драйвера и регистрите и ако нещо тръгне да пипа по погрешка директно дава fault. Не е пълно спасение, но ограничава пораженията.

А ако е нещо наистина критично пишеше на memory-safe език със силна типизация като Rust. Там подобни достъпи гърмят още при компилация. Самото писане до регистъра ще е в unsafe блок, но тази част на драйвера я четете двама до пълно разбиране и така.

Отделно гледаш дали логиката е коректна. Познавам хора, които нищо друго не правят, освен да доказват формално отсъствието на грешки. Пишат на Rust и верифицират с Kani/Creusot. А ако не става въпрос за real-time доказваш в Rocq/Gallina директно екстрактваш към OCaml.

И пак няма гаранция, че няма да отрепеш някой. Там си трябват системни концепции за защита на различни нива, често независими едно от друго с известно ниво на редундантност.

Хардуеристите сме свикнали, пишем на VHDL и яко verification coverage и formal. Та от тази гледан точка АИ-то може да не замини програмистите ами изцяло да замени софтуера с хардуер :)

То това работи като става на въпрос за случайни грешки - но нищо не помага като имаш лоша архитектура или грешна логика. И с защита на паметта и със следене на типовете - все тая ...

Автор:  ToHu [ Пет Юни 26, 2026 6:20 pm ]
Заглавие:  Re: Memory mapped vs IO mapped периферия

Ами случай със грешка може да се случи навсякъде, от тази гледна точка няма съществена разлика, вариант сигналите се гласуват ....ама и там идва момента къде ще настъпи грешката ....ако някоя заблудена частица удари на подходящо място и логиката с гласуване може да се окаже ненадеждна ...е да изхода и той трябва да е сейфти ....за да дойде накрая чичо плъх и да ти пикае на сейфтито след като закуси с изолацията му :)

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/