Перейти к содержанию
    

x893

Свой
  • Постов

    4 034
  • Зарегистрирован

  • Посещение

  • Победитель дней

    5

Сообщения, опубликованные x893


  1. 6 hours ago, uriy said:

    Массово применяем AT32F415CCT7.

    BOOT0 у меня заведен на землю через резистор 4.7К и также выведен на разъем для программирования.

    На разъеме для программирования есть SWD и UART чтобы можно было залить bootloader через оба эти интерфейса.

    По факту производство заливает bootloader через китайские J-Link, купленные на али за 1000 рублей. 

    Последующие обновления прошивки через другой интерфейс UART, который имеет выход во внешний мир.

    Что у вас означает фраза "виснет" при вызове прерывания?

     

    Аналогично. Только и первая прошивка тоже через USB

  2. 2 minutes ago, paskal said:

    Для работы BOOT0=0, а для программирования BOOT0=1. То что вы предлагаете, это мне при каждой перезаписи программы надо лезть в схему и переключать BOOT0. А раньше я это делал программно. Командой jump из бутлодера запускал программу во флеши. А с этим глюком я не могу запускать программу без перекоммутации ножек.

    Нияего не понял. Я на F415 програмно вызываю system bootloader без boot0 (всегда в 0).

  3. 34 minutes ago, EdgeAligned said:

    до 2019 года был отдельный кодогенератор CubeMX

    Как был - так и остался.

    34 minutes ago, EdgeAligned said:

    К сожалению, в CubeIDE (если не ошибаюсь) так и не удосужились внедрить инструментарий юнит-тестов.

    Это только продвинутым менеджерам нужно. Поэтому они и несчастливы.

    41 minutes ago, Pjotar said:

    который в случае ошибки вызывает функцию HandleErorr() без аргументов. Вызывает из двадцати мест, без указания там кода ошибки. И я такой секундочку, я хочу передать в эту функию код ошибки и как-то там ножкой просигналить. Ну вот необходимость нагенерированный код переписать.

    Error_Handler. И можно сделать её как угодно. Всё в руках создателя.

  4. 1 hour ago, EdgeAligned said:

    Возможно, топикстартера не устраивает стиль оформления текста, способ компоновки файлов. Например, меня тоже оное вообще не устраивает, поэтому я вообще не пользуюсь Кубом. Потому как начинал с STM еще задолго до того, как появился Куб вообще.

    Шашечки, или ехать. Каждый решает сам.

  5. 2 hours ago, Pjotar said:

    Добрый день!

    Хотелось бы узнать, как поступаете с кодом, который генерирует CubeIDE. Работаете в рамках, заданных генератором, сохраняете возможность перегенерировать? Генератор очень удобный для старта проекта, но у меня возникает желание создать чистый проект без зависимости от код-генератора и туда уже ручками всё переносить и допиливать.

    Код генерируется, добавляю что мне нужно. Потом поправляю в кубе и по циклу.
    /* USER CODE ...*/

  6. 2 hours ago, nanorobot said:

    Имею пару клонов JLink от starterkit.ru, использую для отладки T113-s3 и f1c100s. Такая странность,  в f1c100s скорость заливки выше раза в два, или даже более. Размер "прошивки" для T113-S3 уже достиг 1.5 М, поэтому процесс происходит медленно и печально. Частотой клока для JLink игрался, результата нет. Как то можно  увеличить скорость, с использованием китайских клонов, или залить другую firmware  в мои клоны, у меня сейчас такой..

    Firmware: J-Link ARM V8 compiled Nov 28 2014 13:44:46
    Hardware: V8.00

    Купить за 400 тыр фирменный JLink-Pro  - жаба не позволяет ... Есть ли китайцы с более старшей версией hardware? Что можете посоветовать?

     

    v9, v10, v11
    Всё на Али в огромных количествах

  7. 8 hours ago, BSACPLD said:

    Заказ будет сорван по срокам.

    Мой руководитель люлей получит, а я скорее всего уволюсь 😞

    Устал уже объяснять им азбучные истины... 

    Сил моих просто нет... 

    Ну и хрен на них. Ума нет - пиши пропало. Работу найти сейчас не проблема.

  8. 7 hours ago, makc said:

    Очень удобно, пользовался как раз для реализации FSM и кооперативной многозадачности. Особенно удобно в gcc, где можно взять адрес метки.

    Не только gcc имеет псевдо-переменную __LINE__

  9. 1 hour ago, Arlleex said:

    А Вам самому удобно ими пользоваться? Я когда-то попробовал, фишку понял, но не оценил.

    Их при описании стейтмашин еще можно как-то приплести, но как по мне, проще уж реально кооперативный режим ОС использовать и не мудрить.

    Я не пользуюсь. Вернее чем удобно, тем и пользуюсь.

  10. https://dunkels.com/adam/pt/examples.html

    18 лет тому назад

    The example shows two protothreads, one for the sender and one for the receiver.
    
    #include "pt.h"
     
    PT_THREAD(sender(struct pt *pt))
    {
      PT_BEGIN(pt);  
      do {
        send_packet();
        /* Wait until an ackowledgement has been received, or until the
           timer expires. If the timer expires, we should send the packet
           again. */
        timer_set(&timer, TIMEOUT);
        PT_WAIT_UNTIL(pt, acknowledgment_received() ||
                          timer_expired(&timer));
      } while(timer_expired(&timer));  
      PT_END(pt);
    }
     
    PT_THREAD(receiver(struct pt *pt))
    {
      PT_BEGIN(pt);
      /* Wait until a packet has been received, and send an
         acknowledgment. */
      PT_WAIT_UNTIL(pt, packet_received());
      send_acknowledgement();  
      PT_END(pt);
    }

     

  11. 17 minutes ago, Ruslan1 said:

    Да пожалуйста:

    Задача1: раз в какое-то время запускать опрос датчика

    Задача2: просыпается по прерыванию, которое посылает сюда сообщение из датчика (принятое, например, по ПДП или побайтово). Обработка и отсылка сообщения в задачу, собирающую данные со всех датчиков для формирования из них нужного пакета (например, передача 20 показаний датчика за раз, или десяти опрошенных датчиков).

    задача3: работа с внешним интерфейсом (запросы-ответы от линии связи, передача всех запрошенных данных)

    задача4: работа с внешним интерфейсом (периодические отсылки, например измеренные данные)

    задача5: локальный интерфейс (лампочки-кнопочки-дисплейчики)

    задача6: локальный отладочный терминал (обычно UART с системой команд и/или отладочным логом)

    задача7: опрос набортных сенсоров (ну например напряжение питания и состояние батареи).

    задача6: вотчдог, контролирующий все задачи: принимает сообщения от всех задач и ребутит систему или отдельные задачи если ему чего-то не нравится.

    А еще очень помогают приоритеты, чего суперлупом не сделать. Например, когда длинные вычисления делаются в задаче с малым приоритетом в фоне, а подача в нее новых данных (буферизация) идет средствами RTOS (очередь сообщений). Понятно, что природу не обмануть и суммарное время нужно считать (чтобы все вычисления успевались до переполнения очереди), но для особо настырных есть многоядерные камни (начиная с народного ЕСП32)- и задачи запросто могут быть разделены между ядрами. У меня есть проект, где одно ядро ЕСП32 только DSP вычислениями загружено по такой схеме.

     

    И что значит "расчехлять"? оно такое страшное? Первый раз, конечно, нужно документацию прочитать, чтобы сконфигурировать ну и вообще понять что это и как. Но даже тут сэкономить можно: просто найти на используемый камень пример в Интернете с морганием светодиодом, и использовать как опору. И читать документацию, смотря на этот пример.

    Не, так глубоко я не заплывал. К сожалению. Или к счастью, это сейчас спорный вопрос. 🙂

    Не понятно из-за чего сыр-бор идёт.
    Можно с РТОС, можно без.
    Кому как удобнее, так и делает.

     

×
×
  • Создать...