andrewlekar 0 27 октября, 2009 Опубликовано 27 октября, 2009 · Жалоба Что-то не соображу, как идеологически правильнее сделать следующее. У программы есть интерфейс SPI slave и можно ей послать данные на запись или указать регистр для чтения. Идея такая, чтобы таким образом рулить настройками программы, запускать/останавливать некие действия. Как лучше организовать архитектуру этих регистров внутри программы для избежания гонок, а также с таким расчётом, чтобы в дальнейшем мог быть прикручен и другой интерфейс, например uart. Mailbox не очень подходит, потому что нужно организовать и чтение. Мютексы не понравились тем, что нужно указывать какой-то приоритет. И вообще, стоит ли здесь использовать сервисы оси или сделать программными средствами: буферизация данных + volatile атрибут? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 27 октября, 2009 Опубликовано 27 октября, 2009 · Жалоба Mailbox не очень подходит, потому... Например, два майлбокса передача и прием. И вообще, стоит ли здесь использовать сервисы оси или... Вам виднее, что Вы там в результате хотите сделать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrewn 0 27 октября, 2009 Опубликовано 27 октября, 2009 · Жалоба сделать следующее > идеологически правильнее Divide et empera и никакой другой идеологии нет. > для избежания гонок применяется или mutext или binary semaphore (with maxval=1), что почти одно и тоже. Ничего другого и никаких других средств нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrewlekar 0 28 октября, 2009 Опубликовано 28 октября, 2009 · Жалоба > идеологически правильнее Divide et empera и никакой другой идеологии нет. Ну это то понятно. применяется или mutext или binary semaphore (with maxval=1), что почти одно и тоже. Ничего другого и никаких других средств нет. Однако про бинарный семафор в доке микриумовской сказано, что нельзя применять для расшариваемых ресурсов. Причина не указана. Сделал проверку семафора (декремент) перед обращением к переменной и восстановление семафора (инкремент) после. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrewn 0 28 октября, 2009 Опубликовано 28 октября, 2009 · Жалоба Однако про бинарный семафор в доке микриумовской сказано, что нельзя применять для расшариваемых ресурсов. Причина не указана. Причина в том, что возможны два последствия, взаимоблокировка (deadlock) и/или инверсия приоритетов. Возможны но не обязательны. Второе последствие не очень страшно, т.к. инверсия это один из частных случаев приоритетного планирования, а первое последствие можно избежать - если аккуратно спланировать использование и передачу ресурсов от задачи к задаче, в том числе и буферизацию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться