| Микроконтролери и електроника 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 периферия |
А може ли някакъв кратък контекст - като за блондинките като мен? |
|
| Автор: | 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 периферия | |||||||||||||||||||||||||||
При x86 четене от периферия
При mc6800 по спомен
В първия случай ако объркаш нещо с указателите например напишеш memset(0, 0, 256) периферията няма да пострада(ще омажеш таблицата на векторите с прекъсвания...). Във втория резултатът ще бъде неясно какъв... |
||||||||||||||||||||||||||||
| Автор: | palavrov [ Пет Юни 26, 2026 4:39 pm ] | |||||||||
| Заглавие: | Re: Memory mapped vs IO mapped периферия | |||||||||
То това работи като става на въпрос за случайни грешки - но нищо не помага като имаш лоша архитектура или грешна логика. И с защита на паметта и със следене на типовете - все тая ... |
||||||||||
| Автор: | 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/ |
|