1. Си / Говнокод #20453

    −46

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    for( pxIterator = ( ListItem_t * ) &( pxList->xListEnd ); pxIterator->pxNext->xItemValue <= xValueOfInsertion; pxIterator = pxIterator->pxNext ) /*lint !e826 !e740 The mini list structure is used as the list end to save RAM.  This is checked and valid. */
    {
    	/* There is nothing to do here, just iterating to the wanted
    	insertion position. */
    }

    Встал остро вопрос выбора использования ОС в команде. Сперва я с пеной у рта пытался навязать использование ОСи как таковой, теперь когда согласились, новый спор. Собираются использовать freertos. А у меня слёзы наворачиваются, когда я вижу подобное говно: стиль тупой блондинки, тяжело воспринимаемые конструкции, модули по 2к+ строк кода, безмозглые комменты и т.д. Для реализации проекта будет годна RTEMS, но к сожалению, я не успел толком её попробовать, что бы конкретно привести факты: быстрее, выше, сильнее. Если говорить только про code style, меня никто слушать не станет. Может есть кто кинет в меня умными ссылками, где freertos смешают с говном?

    Запостил: MiD, 01 Августа 2016

    Комментарии (21) RSS

    • FreeRTOS недавно смотрелся - там говна не так сильно. в добавок - OS маленькая, и ее саму тебе придётся видеть крайне редко.

      с другой стороны, у нас тут на фирме есть фан QP/CPP... http://govnokod.ru/17627 http://govnokod.ru/17616 http://govnokod.ru/17612

      но больше мне это сравнивать не с чем (кроме доморощеных осей).
      Ответить
    • Пиздец, нихуя не понял.
      ОС (OS) - это операционная система (operation system)?
      Ответить
      • господин доеб@лся, что я написал OC вместо RTOS?
        Ответить
      • Да. А RTOS - операционка реального времени.
        Ответить
        • ну а теперь, когда все точки над i расставлены...
          Ответить
        • Ебать, думал ты троллишь.
          Загуглил - подумал, не ошибся-ли профессией.
          Ответить
        • Прочитал статью https://habrahabr.ru/post/129105/
          Так FreeRTOS - это получается просто либа, также как WinAPI в windows? Почему это называется операционной системой?

          Вот в статье показано использование функции vTaskDelay. Откуда оно знает как на моем устройстве сделать задержку на N мс?
          Ответить
          • есть "порты" для каждой железки, которые мелкие детали реализации дополняют.
            Ответить
          • > просто либа
            Скорее фреймворк.
            Ответить
            • до фреймворка FreeRTOS далеко. там есть только набор базовых вещей для RT - очереди, мутексы, поддержка многозадачности, простейшии формы событий - все остальное надо самому ручками писать. но так как это система нацелена для микроконтроллеров и Cortex-M армов, то самому ручками писать это не проблема, потому что для того железа все равно сильно не разгонишься.

              самые большие грабли были в том что FreeRTOS хотело динамическую память - но в v9.0 они добавили статическую инициализацию для всех структур, поэтому даже хип больше не нужен.
              Ответить
              • > Cortex-M
                Няшная всё-таки архитектура, не то что x86. Вектор сброса и обработчики прерываний можно прям обычными функциями хуярить, вообще без асма...
                Ответить
                • > Вектор сброса и обработчики прерываний можно прям обычными функциями хуярить, вообще без асма...

                  зависит от контроллера прерываний. с теми двумя с которыми я уже работал - с поддержкой приоритетов - нужна было пара мелочей (для которых была пара макро с асмом).

                  у ARM'а контроллер прерываний это почти "внешний" девайс: "внешний" == можно своим заменять на стадии "синтеза" чипа.
                  Ответить
                  • Ну NVIC же вроде на всех кортекс-м стоит? Или только на M4?

                    У него прям так прокатило, т.к. все нужные регистры бекапит, а стартовое значение sp записано рядом с резетом.
                    Ответить
                    • насколько я понял это их штатный контроллер прерываний, и все "кастом" должны поддерживать его интерфейс. ARM для NVIС раздаёт VHDL, на основе которого кастомеры могут своё клепать.
                      Ответить
                  • > с которыми я уже работал
                    А названия не помнишь, случаем?
                    Ответить
                    • один из них - я не знаю какой был. второй был кастом чип от Infineon MD8710 - http://www.infineon.com/cms/de/about-infineon/press/press-releases/2010/INFIMM201009-071.html - на базе Cortex-R4 но урезан до уровня ниже чем M3 (не помню чего они там уже урезали; инфинион взял за основу R4 как раз потому что можно было больше вырезать по сравнению с M3, и еще меньше арму денег платить).
                      Ответить
                      • > ниже чем M3
                        Куда там уже резать то...
                        Ответить
                        • всех деталей не знаю. то на что наступал: вырезали FPU (не смотря на то что для медицины делали проц, в M3 FPU стандартная часть); зарезали контроллер прерываний, почему надо было было магические макросы вызывать (либо пользоваться долбанутым тормозным BIOS); вырезали части CP (co-processor) (в частности performance analysis, high precision clock).
                          Ответить
                          • По Царски сделали...
                            Ответить
                          • И это при том, что в R4 обещается джва ядра в lockstep режиме, если верить вики...
                            Ответить

    Добавить комментарий