Pull to refresh
35
0
Vir2o @Vir2o

User

Send message
Поспрашивал сейчас у разных знакомых — у всех все качается. Даже и не знаю в чем тут может быть проблема. Если совсем никак не получится скачать до вечера — могу на почту отправить.
По-всякому бывает… Сейчас буквально все кому не лень пишут такие «либы для контроллеров», и «еще одна» может создать впечатление еще одного недоделанного велосипеда.
Нужно было голосование прикрутить, нужен пост про саму ОС или нет… или можно ограничиться развернутым комментарием с ответами на вопросы вроде «почему вы не взяли готовый и распространенный FreeRTOS».
1. Я не совсем это имел в виду, но пусть будет так.
2. Так и есть.
3. Здесь наши мнения расходятся. Философия этой ОС — KISS в его самом незамутненном виде, поэтому, в частности, для любого М3 может использоваться один и тот же бинарник ядра, даже не исходник.
Если для битов есть символьные константы, или можно использовать простые числа вроде 1 и 0, то я считаю что именно так и нужно делать. Рассуждения о том, что «программист может перепутать», могут завести не в ту сторону. А если он названия переменных перепутает? Это все от лукавого. Не нужно умножать сущности без необходимости, особенно в демо-примере из 100 строк в одном файле.
Макросы в С нужны в совсем терапевтических количествах, потому что они скрывают реализацию и мешают понять, что происходит на самом деле. Что вынуждает разбираться в их реализации, тратить время. Код на С должен выглядеть кодом на С и быть понятным с первого взгляда, нужно дважды и трижды подумать, прежде чем усложнять. Такая вот позиция.
4. Это as designed :) Нужно исходить из того, в чем была задача, собственно. А она была не в том, чтобы диоды мигали строго по очереди, а в том, чтобы визуально, при взгляде на плату было видно, что потоки переключаются и диоды как-то мигают. Можно с тем же смыслом было написать:
MDR_PORTB->RXTX = RANDOM();
Да, иногда возможна ситуация что переключившийся поток сотрет изменения, внесенные другим потоком. Но никаких негативных последствий это не повлечет. Если бы там были не диоды, а устройство, которое требует синхронизированной записи в несколько регистров, то все было бы сделано совсем иначе, с мьютексом.
P.S. Вообще, комменты плохо подходят для дискуссии, пользуясь случаем, приглашаю на наш телеграм-канал, где можно обсудить кодстайл и прочее в более интерактивном режиме :)
Нет конечно, не обижаюсь :) Здоровая критика — всегда на пользу, я учту все замечания, когда руки дойдут.
Первоначально планировалось что это все-таки будет бумажная книга, которая пройдет редактуру, корректуру, верстку, рецензирование и прочее. Но все эти планы пока были поставлены на паузу и контент доводился силами самих программистов со всеми вытекающими… Поэтому я даже в тексте упомянул, что работа не закончена, но было решено ее выложить хоть так, чем оставить пылиться во внутреннем репозитории.
Насколько я помню — нет, но я могу ошибаться. Критическая секция в более общем смысле обсуждается, например, на странице 183. Но, может быть, не совсем внятно. Наверно, это следствие многозначности самого термина, это и участок кода и одновременно примитив синхронизации в некоторых ОС и спинлоки и т.д.
Спасибо, стоит пропдейтить этот момент и в главе 2 назвать критической секцией «взаимоисключающийся» фрагмент кода, а каким образом это исключение достигается, вынести за скобки.
Disclaimer: я сейчас свое личное мнение выражаю, а не мнение компании, которой принадлежит контент.
«Одно место» это не в смысле чужие сайты, а то, что PDF (и word из которого он генерится) все же нужен. Чтобы отдать редактору или корректору например, когда-нибудь в светлом будущем или вообще издательству. Если контент форкается в markdown и начинает существовать в двух форматах, то их нужно синхронизировать между собой на что нужно временные и прочие ресурсы.
Если markdown сделать основным и генерировать и word и PDF из него… Не знаю, по моему опыту markdown все же word и все его возможности заменить не может по части ссылок, оформления, генерации оглавления и так далее. Поэтому удалить word-оригинал — очень смелый шаг на который пока никто не готов. Не удалять его = поддержка двух вариантов текста со всеми вытекающими из этого последствиями.
Там нигде и не говорится, что это единственный вид, на 28 странице-то. Это единственный вид гарантированно доступный на большинстве железа, которое в той главе обсуждается, скажем так. Мьютексы как мьютексы будут только в 6 главе.
2. Наверно не получилось у меня донести мысль. Если расписать словами, то она такая: 1 глава — «что нам хотелось бы получить»; 2 глава — «что у нас есть»; 3 глава — «какие у нас есть способы получить то, что нам хотелось бы из того что есть», здесь приходим к идее о том почему и зачем нужна ОСРВ. Начиная с 4 главы реализуем ее.
4. За код спасибо, да, приведенный вариант более абстрактный, учту в следующих редакциях.
Остается только позавидовать уровню вашего перфекционизма, что единственная строка, способна полностью отбить охоту смотреть остальные тысячи строк :-)
Вообще демо к самой fxrtos отношения не имеет, и, кстати, что с ней не так, с этой строкой?
Спасибо, там довольно много подобных ошибок, не было достаточно времени на вычитку. к сожалению.
Я уточню, сейчас сезон отпусков, но скорее всего нет. И дело тут в том, что хотелось бы, чтобы весь контент был в одном месте, чтобы его легко было обновлять.
Спасибо за отзыв.
Изначально планировалась печать, потом планы поменялись и все отложилось на неопределенный срок. Переформатирование под github pages требует времени, которого пока нет, может быть, впоследствии появится.
Лицензия впоследствии может быть пересмотрена, там приведена стандартная шапка для документации. Код можно копировать свободно. Но зачем… Код из книги почти во всех случаях неполный с вставкой многоточий вместо фрагментов, его цель — демонстрация принципа и не более того. Зато тот же полноценный и компилирующийся код, который лежит в репозитории, доступен на условиях BSD-лицензии, копипастить лучше оттуда.
В силу каких причин? Они явно говорят, что буфер не закэширован, ни слова про какие-то исключения для первой страницы (цитата: "We allocate a probe array in memory and ensure that no part of this array is cached."). ОС тут точно не при делах, потому что буфер больше одной страницы.
Интересно тут другое, они утверждают, что в случае исключения, процессор зануляет регистры, в которые читают, чтобы значения не были доступны в крэшдампе. Вот здесь вся соль: "If the zeroing out of the register is faster than the execution of the subsequent instruction, the attacker may read a false value in the third step.". «Если обнуление быстрее», то есть может быть быстрее, а может быть и не быстрее. При этом две эти команды зависят друг от друга. Может быть там race condition совсем в другом месте, и не там, где кажется?
За кадром остался один интересный вопрос: зачем нужен цикл? В оригинальном PDF объяснение очень мутное.
Здравствуйте! Мне последнее время не дает покоя один вопрос, связанный с HDD. Где-то месяц назад я купил новый ноутбучный диск WD Black. В том что он новый нет никаких сомнений: лично разрезал запечатанный антистатический конверт с силикагелем. Показатели SMART после первого запуска также показывали, что это было первое включение (атрибуты start/stop count, power cycle count и power-on hours count). Но! С момента первого включения атрибут BF (Shock sense) равен 4. И я теряюсь в догадках, это какие-то последствия заводских тестов? Никаким ударам диск не подвергался (при первом запуске, когда впервые всплыла эта 4, был в ssd отсеке десктопа, стоящего на полу). С тех пор BF не растет. Если вы работали с такими дисками, нет ли у них такой особенности что BF имеет ненулевое значение прямо с завода?
Структура и стиль исходников настолько похожи на Windows, что я даже и не знаю, что сказать.
1

Information

Rating
Does not participate
Registered
Activity