-
- Здорово! Большое спасибо за статью! - Evgeny_CD(07.03.2009 16:44)
- Интересно, а как быть получить исходники самой ОСи, не за многие килоеврики? Похоже, эта ОСь - это просто образец искусства embedded программирования. - Evgeny_CD(07.03.2009 17:15)
- Гы-гы, исходниками там, похоже, никто не торгует и за килоеврики. "AVIX is distributed as a binary library, offering a number of configurable parameters where the parameters that are configurable depend on the type of distribution" - Evgeny_CD(07.03.2009 19:12)
- да, в сорцах она не распространяется - Alex B.(07.03.2009 23:40)
- Гы-гы, исходниками там, похоже, никто не торгует и за килоеврики. "AVIX is distributed as a binary library, offering a number of configurable parameters where the parameters that are configurable depend on the type of distribution" - Evgeny_CD(07.03.2009 19:12)
- Я просто потрясен! Это, на самом деле, оцень изящный путь к ортогонализации многих процессов в RTOS. Вместо блокировок, критических секций и пр, несколько процессов смогут корректно работать с одной и той же сущностью, не мешая друг другу... Просто Evgeny_CD(13 знак., 07.03.2009 17:09)
- Не совсем "не мешая друг-другу". Одно и тоже битовое поле модифицировать в разных потоках нельзя! - M@ik(07.03.2009 17:19)
- Именно! Но если у нас есть слово, в которое упакована куча битовых полей, и если каждое битовое поле назначено монопольно одному потоку, то взаимного влияния нет. - Evgeny_CD(07.03.2009 17:28)
- Это неизбежно только для регистров периферии. В других случаях проще раскидать битовые поля :-). - =AlexD=(07.03.2009 17:30)
- А в целом - безусловно полезный приём. - =AlexD=(07.03.2009 17:31)
- Это неизбежно только для регистров периферии. В других случаях проще раскидать битовые поля :-). - =AlexD=(07.03.2009 17:30)
- Я думаю некорректно вообще в данном случае говорить об атомарности. Скорее о разделении доступа к битовым полям, но не об атомарности! Атомарность - это всётаки разделение доступа к одним и темже данным, а не к разным. - =AlexD=(07.03.2009 17:23)
- А что считать одними и теми же данными? Alex B.(430 знак., 07.03.2009 23:39)
- И работает методика только при наличии атомарной операции XOR с памятью(портами). Чего нет в чистых load/store архитектурах. Короче, чудес не бывает. - =AlexD=(07.03.2009 18:07)
- Cortex-M3 чистая load-store архитектура, или грязная? а там ведь есть bit-band область для всей периферии. Alex B.(315 знак., 07.03.2009 23:38)
- Чем цепляться к частностям, лучше бы отметил в статье не идеальную переносимость приёма и требования к системе команд. Для фиксации внимания. - =AlexD=(08.03.2009 02:21)
- обязательно. только это не я цепляюсь - Alex B.(08.03.2009 02:22)
- Я и не цеплялся, это реакция на излишне восторженный пост Evgeny_CD =AlexD=(310 знак., 08.03.2009 02:37)
- Да-да, с одной и той же нельзя, можно только с разными, волею сужеб попавшими в комуналку адресуемой единицы памяти. Это и необходимость команды xor с памятью з записью результата в память должно быть отмечено. - ReAl(08.03.2009 11:00)
- Ладно, восторги убираем, копилку изящных решений пополняем. - Evgeny_CD(08.03.2009 02:38)
- Я и не цеплялся, это реакция на излишне восторженный пост Evgeny_CD =AlexD=(310 знак., 08.03.2009 02:37)
- обязательно. только это не я цепляюсь - Alex B.(08.03.2009 02:22)
- Чем цепляться к частностям, лучше бы отметил в статье не идеальную переносимость приёма и требования к системе команд. Для фиксации внимания. - =AlexD=(08.03.2009 02:21)
- Во-во. Именно поэтому с кочки зрения AVR и с бочки зрения ARM вообще непонятно о чём речь :-) ReAl(351 знак., 07.03.2009 19:13)
- Cortex-M3 чистая load-store архитектура, или грязная? а там ведь есть bit-band область для всей периферии. Alex B.(315 знак., 07.03.2009 23:38)
- Именно! Но если у нас есть слово, в которое упакована куча битовых полей, и если каждое битовое поле назначено монопольно одному потоку, то взаимного влияния нет. - Evgeny_CD(07.03.2009 17:28)
- Не совсем "не мешая друг-другу". Одно и тоже битовое поле модифицировать в разных потоках нельзя! - M@ik(07.03.2009 17:19)
- Интересно, а как быть получить исходники самой ОСи, не за многие килоеврики? Похоже, эта ОСь - это просто образец искусства embedded программирования. - Evgeny_CD(07.03.2009 17:15)
- Мелкое замечание по макросам AlexBi(639 знак., 05.03.2009 18:22)
- Спасибо. что смогу - поправлю, но все точно не получится. При включении этого варнинга компилятор проверяет даже размер битовых полей Alex B.(111 знак., 07.03.2009 23:20)
- Я бы вообще это ошибкой считал. А вас что смущает? - Сергей Борщ(08.03.2009 12:45)
- Ошибкой считал что? предупреждение о неявном преобразовании типов? - Alex B.(08.03.2009 12:48)
- попытку присвоить число, которое не умещается в переменную. - Сергей Борщ(08.03.2009 12:59)
- ну-ну. А как быть с переменными? Как тип-то привести? - Alex B.(08.03.2009 13:12)
- Пример вы привели с константой. С переменными можно наложить маску. - Сергей Борщ(08.03.2009 16:27)
- ах маску наложить?! вообще-то компиляторы обычно вычисляемые выражения не проверяют. - Alex B.(08.03.2009 16:38)
- Что вы уходите от ответа и меняете условия? У вас в примере была попытка присвоить константу, которая не умещается в переменную. На такое ругается большинство вменяемых компиляторов. Про переменные в вашем сообщении не было ни слова. Сергей Борщ(247 знак., 08.03.2009 19:41)
- Я никуда не ухожу и ничего не меняю. У меня по этой ветке сложилось впечатление, что у вас какие-то свои счеты с простой логикой. Alex B.(167 знак., 08.03.2009 21:35)
- Возможно. Я лишь пытаюсь понять то, что вы написали, ибо меня заинтересовало "портируются под что угодно (если есть возможность использования inline ассемблера)." Вместо ответов на уточняющие вопросы получаю либо "Потому что нельзя и все", либо Сергей Борщ(652 знак., 09.03.2009 11:11)
- не надо передергивать! Alex B.(822 знак., 09.03.2009 13:00)
- Возможно. Я лишь пытаюсь понять то, что вы написали, ибо меня заинтересовало "портируются под что угодно (если есть возможность использования inline ассемблера)." Вместо ответов на уточняющие вопросы получаю либо "Потому что нельзя и все", либо Сергей Борщ(652 знак., 09.03.2009 11:11)
- Я никуда не ухожу и ничего не меняю. У меня по этой ветке сложилось впечатление, что у вас какие-то свои счеты с простой логикой. Alex B.(167 знак., 08.03.2009 21:35)
- Что вы уходите от ответа и меняете условия? У вас в примере была попытка присвоить константу, которая не умещается в переменную. На такое ругается большинство вменяемых компиляторов. Про переменные в вашем сообщении не было ни слова. Сергей Борщ(247 знак., 08.03.2009 19:41)
- ах маску наложить?! вообще-то компиляторы обычно вычисляемые выражения не проверяют. - Alex B.(08.03.2009 16:38)
- Пример вы привели с константой. С переменными можно наложить маску. - Сергей Борщ(08.03.2009 16:27)
- ну-ну. А как быть с переменными? Как тип-то привести? - Alex B.(08.03.2009 13:12)
- попытку присвоить число, которое не умещается в переменную. - Сергей Борщ(08.03.2009 12:59)
- Ошибкой считал что? предупреждение о неявном преобразовании типов? - Alex B.(08.03.2009 12:48)
- Я бы вообще это ошибкой считал. А вас что смущает? - Сергей Борщ(08.03.2009 12:45)
- Спасибо. что смогу - поправлю, но все точно не получится. При включении этого варнинга компилятор проверяет даже размер битовых полей Alex B.(111 знак., 07.03.2009 23:20)
- Из исходника узнал много нового для себя о препроцессоре Си=) Однако, так и не понял, зачем нужно было городить трехэтажный макрос BFA с переменным числом параметров, в котором действие определяется по значению первого параметра? Не лучше ли сделать 5 M@ik(600 знак., 05.03.2009 08:39)
- Хочется прозрачности тогда дописать так и можно использовать что удобнее. DL36(2853 знак., 05.03.2009 09:27)
- Подскажите, что означает ## в этой строке? Не совсем понятно SIERRA(59 знак., 18.09.2013 11:00)
- И где здесь прозрачность? Да если мне придется разбираться в программе, где используются все эти макросы - я повешусь. Действительно, иногда отказывает чувство меры. Еще немного, и будем программы полностью на маросах писать. Выучить 5 стандартных M@ik(100 знак., 05.03.2009 09:45)
- Ну вообще авторство не моё, я только приспособил DL36+(483 знак., 05.03.2009 11:35, )
- Ну не знаю... Там на первый взгляд наворочено, но после двух минут все понятно. К тому же у вас получится 15 макросов (если каждую операцию раскрывать), а у меня всего три. Мне так понятнее, удобнее и прозрачнее. - Alex B.(05.03.2009 10:10)
- Так бывает, когда отказывает чувство меры. - =AlexD=(05.03.2009 09:09)
- Хочется прозрачности тогда дописать так и можно использовать что удобнее. DL36(2853 знак., 05.03.2009 09:27)
- update: по горячим следам добавил макрос с косвенной адресацией и операции установки/сброса/инвертирования по маске. - Alex B.(04.03.2009 17:05, ссылка)
- Максима: "А нечего вообще битовые поля использовать". Сдали огромную часть территории на откуп компилятору, а теперь нужно изобретать, как забрать обратно. - Vladimir Ljaschko(04.03.2009 15:25)
- В данном случае битовые поля структуры - это частный случай. Речь идет об атомарной модификации периферийного регистра или переменной Alex B.(909 знак., 04.03.2009 17:41)
- Не забывать про volatile и "проблемы во всей красе" не будет. - AlexBi(04.03.2009 17:45)
- и это правда. Главное, структуру специально volatile объявил, а указатель нет, а на предупреждение компилера забил Alex B.(1178 знак., 04.03.2009 18:24)
- По большому счету сказать нечего, но уж очень эти универсальные макросы разрушают моск. Да и код растет. Разумно описать явными макросами весь доступ к периферийным регистрам (типа TOGGLE_LED через xor ), ну а биты в переменных ... ХЗ... Что мешает Vladimir Ljaschko(177 знак., 04.03.2009 17:31)
- Я там листинги поправил немножко (забыл указатель инициализировать). Даже в этом примере код растет на две инструкции. Если учесть, что в первом случае нужно запрещать прерывания - то так на то и выходит. Alex B.(871 знак., 04.03.2009 17:58)
- Сама по себе неатомарность не порок Vladimir Ljaschko(1062 знак., 04.03.2009 18:22)
- До тех пор, пока не нарвешься Alex B.(728 знак., 04.03.2009 18:39)
- Первый раз я нарвался на грабли на 8080+таймер 21 год назад :) А усилия - да, проблема. - Vladimir Ljaschko(04.03.2009 18:52)
- До тех пор, пока не нарвешься Alex B.(728 знак., 04.03.2009 18:39)
- Сама по себе неатомарность не порок Vladimir Ljaschko(1062 знак., 04.03.2009 18:22)
- "xor" в С нет, а ^= компилируется по-разному. - AlexBi(04.03.2009 17:43)
- Я там листинги поправил немножко (забыл указатель инициализировать). Даже в этом примере код растет на две инструкции. Если учесть, что в первом случае нужно запрещать прерывания - то так на то и выходит. Alex B.(871 знак., 04.03.2009 17:58)
- Не забывать про volatile и "проблемы во всей красе" не будет. - AlexBi(04.03.2009 17:45)
- В данном случае битовые поля структуры - это частный случай. Речь идет об атомарной модификации периферийного регистра или переменной Alex B.(909 знак., 04.03.2009 17:41)
- Введение сумбурное, идеи в макросах интересные. Непонятности во введении: Сергей Борщ(1038 знак., 04.03.2009 15:22)
- Сумбурное - это непонятное, или некорректное? Alex B.(823 знак., 04.03.2009 16:48)
- Так вот и непонятка: Сергей Борщ(790 знак., 04.03.2009 22:18)
- хм, у меня тоже непонятка в смысле претензий Alex B.(1286 знак., 04.03.2009 23:41)
- Это не претензии. Вы просили "зацените"? Зацениваем. Сергей Борщ(2591 знак., 05.03.2009 12:08)
- теперь более-менее понятно Alex B.(1548 знак., 05.03.2009 13:42)
- А каким образом предлагаете защищать доступ к разделяемому ресурсу из двух прерываний? Причем одно из прерываний имеет приоритет выше другого, т.е. может вытеснять низкоприоритетное. Остановка планировщика и мютексы здесь не помогут. - solosh(20.03.2009 22:34)
- Если у архитектуры есть такая фича - RTOS может это поддерживать на уровне своих сервисов. Alex B.(127 знак., 21.03.2009 02:02)
- А каким образом предлагаете защищать доступ к разделяемому ресурсу из двух прерываний? Причем одно из прерываний имеет приоритет выше другого, т.е. может вытеснять низкоприоритетное. Остановка планировщика и мютексы здесь не помогут. - solosh(20.03.2009 22:34)
- теперь более-менее понятно Alex B.(1548 знак., 05.03.2009 13:42)
- Это не претензии. Вы просили "зацените"? Зацениваем. Сергей Борщ(2591 знак., 05.03.2009 12:08)
- А вот еще: Сергей Борщ(391 знак., 04.03.2009 21:56)
- хм, у меня тоже непонятка в смысле претензий Alex B.(1286 знак., 04.03.2009 23:41)
- Так вот и непонятка: Сергей Борщ(790 знак., 04.03.2009 22:18)
- Сумбурное - это непонятное, или некорректное? Alex B.(823 знак., 04.03.2009 16:48)
- Спасибо, хорошая статья. - vesago(04.03.2009 15:09)
- Очень полезно! Спасибо. - amusin(04.03.2009 13:31)
- Хорошая статья. Аффтар пеши исчо. - she(03.03.2009 19:46)
- Мне очень понравилось, спасибо. На основании этой статьи я откорректировал общеизвестные макросы для работы с портами применительно к С30, может еще кому будет полезно. - DL36(03.03.2009 19:29, ссылка)
- Здорово! Большое спасибо за статью! - Evgeny_CD(07.03.2009 16:44)