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

esaulenka

Свой
  • Постов

    1 459
  • Зарегистрирован

  • Посещение

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

    2

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


  1. 52 minutes ago, Ivan. said:

    АЦП (6000 раз в секунду). В 1Мб максимум удается передать 3 канала в CSV формате ASCII(HEX)

    Если передавать в бинарном виде, это всего 3*2(у вас же <=16 бит АЦП?)*6000 = 36kbyte/sec. В 115200 не лезет, но в мегабитный UART с бааальшим запасом на любые протоколы.

    Правда, не уверен, что вы сможете перепосылать ошибочные данные - только выкидывать битые.

     

    Ну да ладно. У меня другой вопрос - что такое 

    					while (cs.cbInQue) { ...
    

    и зачем оно тут? Достаточно ж вроде верхнего цикла.

    Ещё вопрос. Вы можете поменять софт отправителя, чтобы просто слал байты по кругу? У вас потери всегда на стыке вызовов Read() (и всегда ли?) или возможны другие варианты?

    Ещё вопросы: SetCommMask() / ClearCommError() из цикла убирать пробовали? Кажется, так делать не обязательно.

     

    И вообще, чем вам QSerialPort не угодил?

  2. On 5/12/2023 at 1:33 PM, makc said:

    Там в wiki всё довольно подробно описано.

    А вы пробовали? Лет пять назад я собирал статику Qt5 на MSVC. Не могу сказать, что я суперкрутой программист под win32, но подбор всех ключей, чтобы оно нормально собралось и не пыталось затащить всякие webengine, занял несколько дней.
    Может, с mingw будет проще, но что-то я сомневаюсь...

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

  3. 42 minutes ago, gazpar said:

    Вот есть у меня код, при вырубании exceptions & RTTI размер бинаря получается 350кБ. А это черезчур много для имплементированого функционала. Поэтому хочу найти легковесную замену либе, идущую вместе с тулчейном GCC.

    Для начала понять бы, что именно у вас там такое большое.

    По опыту - всякие "излишние" фичи стандартной библиотеки занимают десяток кБ, не больше.

    Я пользовался этим рецептом: 

    (что-то не могу найти его где-нибудь на гитхабе...) 

     

    Но, повторюсь, магической экономии сотни килобайт он не даст, надо разбираться, что вы такое сделали. У меня прошивки в 300 килобайт ни разу не получались. Хотя не один год старался, писал 🙂

     

  4. Требования опишите, пожалуйста.

    Потому что эмбеддед нынче - от атмеги и младших STM (тогда -fno-exceptions -specs=nano.specs ) до Qt (хех, Qt тоже без exceptions работает).

    И мерять исходный размер файла библиотеки, который потом урежется в 20 раз линкером, занятие странное...

     

    Чисто для затравки. Можете погуглить "embedded standard template library". Но как по мне, какая-то странная штука. Современная STL удобнее, безопаснее (в том смысле, что лучше протестирована). При наличии ограничений на использование динамической памяти в ней достаточно примитивов, которые работают без new/delete.

  5. On 11/26/2022 at 1:35 AM, Obam said:

    PS: о, знакомый логотипчик (помнится, в те поры это был МНП-М3: под капотом Xilinx, BlackFin. NMEA и собственный бинарный протокол)

    (просто пофлудить) а вы понимаете, зачем оно там? модуль U-blox там внизу, зачем ещё что-то?!

  6. @ev_zubkov, если вам ещё актуально.

    1) кажется, у вас сборка идёт в несколько потоков. Поэтому сообщения о компиляции tx_trace_XXX.c - к делу не относятся, старт компиляции tx_thread_system_suspend.c, в котором, собственно, и содержится ошибка, чуть выше.

    2) в этом самом system_suspend используется макрос TX_LOWEST_SET_BIT_CALCULATE. В старших cortex-m он разворачивается в две ассемблерные команды - clz и rbit (вот оно). В cortex-m0 таких команд нет, и нужна отдельная функция (кажется, отсюда). Ваша задача - найти, откуда компилятор притащил неверный tx_port.h.

    3) .s файл - временный, ассемблерный результат обработки си-шного исходника (ну там же по пути очевидно же).

  7. вот, прямо как специально для к вашему вопросу статья подоспела: https://blog.willemmelching.nl/carhacking/2022/11/08/rh850-glitch/

    (я мимо проходил, подобным не занимался и браться не хочу)

  8. 1 hour ago, Arlleex said:

    В том и проблема, что я даже не знаю, какой компилятор в этой чудо-среде.

    В стародавние времена Borland делал свой собственный компилятор. В какой-то момент (уже когда всё это поделие стало RAD'ом) они стали поняли, что рынок хочет всяких MacOS/Win64, и включили в свою IDE творчески допиленный clang. Под win32, насколько я помню, можно собирать любым компилятором, под остальные платформы - только clang'ом.

    Насколько их версия отличается от оригинального, я не разбирался.

  9. 3 hours ago, jenya7 said:

    FIFO 8 байт, больше не конфигурируется, хотя в документации обещают до 128.

    Я не настоящий сварщик, но в файле KV5XP144M240RM.pdf в разделе UART сказано

    5. UART0 and UART1 contain 8-entry transmit and 8-entry receive FIFOs

    6. All other UARTs contain a 1-entry transmit and 1-entry receive FIFOs

    (чуда с огромными FIFO не случилось).

    У вас в регистре UARTx_PFIFO что записано?

     

    1 hour ago, aaarrr said:

    Если в медленный канал, тогда какие вопросы?

    Насколько я понял изначальный вопрос, в данном случае не важна скорость работы прерывания. Его можно вовсе запретить, и все 128 переданных байт якобы должны лечь в аппаратное FIFO.

  10. On 8/20/2022 at 7:08 PM, Arlleex said:

    Вы этого не добьетесь

    Самое смешное, что в STM32F1xx и STM32F4xx поведение DMA при разных PSIZE/MSIZE принципиально разное. В F1xx DMA добивает нулями (или обрезает), количество транзакций чтение/запись одинаковое. Более новые DMA умеют склеивать и разрезать данные, количество транзакций будет разное. Возможности переключать это поведение не предусмотрено.

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

    Первое,
    15.4 TIMx registers

    Refer to Section 2.2 for a list of abbreviations used in register descriptions. The 32-bit peripheral registers have to be written by words (32 bits). All other peripheral registers have to be written by half-words (16 bits) or words (32 bits). Read accesses can be done by bytes (8 bits), half-words (16 bits) or words (32 bits).

    т.е. по 8 бит туда писать нельзя никоим образом.

    Второе,

    15.1 TIM2 to TIM5 introduction

    The general-purpose timers consist of a 16-bit auto-reload counter driven by a programmable prescaler.

    т.е. прескалер/каунтер/капча-компэйр регистры имеют размер 16 бит, и писать в старшую часть что-то кроме нулей не надо (я никогда не проверял, как оно работает. Подозреваю, просто игнорируется).

     

    В описании DMA есть некая мутная фраза, как устроена передача в APB (таймеры висят на APB)

    Addressing an AHB peripheral that does not support byte or halfword write operations

    When the DMA initiates an AHB byte or halfword write operation, the data are duplicated on the unused lanes of the HWDATA[31:0] bus. So when the used AHB slave peripheral does not support byte or halfword write operations (when HSIZE is not used by the peripheral) and does not generate any error, the DMA writes the 32 HWDATA bits as shown in the two examples below:

     To write the halfword “0xABCD”, the DMA sets the HWDATA bus to “0xABCDABCD” with HSIZE = HalfWord

     To write the byte “0xAB”, the DMA sets the HWDATA bus to “0xABABABAB” with HSIZE = Byte

    Assuming that the AHB/APB bridge is an AHB 32-bit slave peripheral that does not take the HSIZE data into account, it will transform any AHB byte or halfword operation into a 32-bit APB operation in the following manner:

     an AHB byte write operation of the data “0xB0” to 0x0 (or to 0x1, 0x2 or 0x3) will be converted to an APB word write operation of the data “0xB0B0B0B0” to 0x0

     an AHB halfword write operation of the data “0xB1B0” to 0x0 (or to 0x2) will be converted to an APB word write operation of the data “0xB1B0B1B0” to 0x0

    For instance, to write the APB backup registers (16-bit registers aligned to a 32-bit address boundary), the memory source size (MSIZE) must be configured to “16-bit” and the peripheral destination size (PSIZE) to “32-bit”.

     

    Я никогда не проверял это утверждение (насколько помню, регистры таймера во всех заголовках описаны как 32-битные).

    Но вам ведь тоже никто не мешает установить PSize=32bit, MSize=8bit (см. табличку в описании, данные будут дополнены нулями).

  12. On 7/21/2022 at 2:49 PM, jcxz said:

    А если завтра этот InfluxDB разорится?

    On 7/21/2022 at 2:44 PM, jcxz said:

    Описание протокола на него есть? Протокол открыт?

    Вы по каким-то идеологическим причинам не пытаетесь даже поверхностно разобраться в вопросе, о котором спорите?

     

    Quote

    InfluxDB is an open source time series database. It has everything you need from a time series platform in a single binary – a multi-tenanted time series database, UI and dashboarding tools, background processing and monitoring agent. All this makes deployment and setup a breeze and easier to secure.

     

    Quote

    Telegram APIs

    We offer two kinds of APIs for developers. The Bot API allows you to easily create programs that use Telegram messages for an interface. The Telegram API and TDLib allow you to build your own customized Telegram clients. You are welcome to use both APIs free of charge.

     

    Впрочем, вопрос у меня риторический, можете не отвечать.

  13. On 7/11/2022 at 7:16 AM, V_G said:

    Возможно, и под VS2019 работает, проверить не на чем

    Работает. На мелких проектах. Но "просто пересобрать" какой-нибудь Qt - так себе развлечение.

    Да и в современный интернет на XP выйти - то ещё развлечение (можно, конечно, тащить все свои библиотеки, как Firefox и Chrome, и не пытаться пользоваться системными, но хочется, всё-таки, жить попроще...).

     

    On 7/11/2022 at 11:14 AM, repstosw said:

    подскажите откуда скачать компилятор GCC C/C++  для платформы MC68000 (M68K) ?

    Дааа, незавидные "перспективы микроэлектроники в России"... :-)

    Первые же ссылки (https://github.com/kentosama/m68k-elf-gcc под линукс, https://sourceforge.net/projects/mingw-gcc-68k-elf/ под винду) - не помогают? Или прям свежая-новая версия необходима?

  14. 54 minutes ago, Forger said:

    В данном случае вы пытаетесь указателю на один тип данных присвоить значение указателя на совершенной другой тип данных.

    Вы невнимательно читаете. До указателя на uint16_t разговор ещё не дошёл.

    Компилятор не видит объявление указателя P8DataMas (вторую строчку из приведённого кода). Зато видит третью строчку, но из-за устаревшей 50 лет назад магии считает, что эта переменная имеет тип по умолчанию - int (см. варнинг). А присвоить int'у указатель без явного приведения не может (это уже ошибка, на которой компиляция останавливается). 

     

    1 hour ago, Forger said:

    и как он хранится в пямяти в том или ином МК/CPU

    А как он хранится в памяти в том или ином МК ? Одинаково они хранятся, и в том МК, и в ином CPU.

  15. On 3/19/2022 at 8:31 AM, Arlleex said:

    А C++, за счет более строгой типизации, не дает так сделать.

    Вот объяснение, почему так нельзя делать в C++: https://isocpp.org/wiki/faq/ctors#ctor-initializer-order

    Там, правда, почему-то сказано, что "компилятор может выдавать предупреждение". Проверил на gcc нескольких версий и на MSVC - все отказываются это компилировать.

     

    В случае C - да, конечно, компилятору проще сделать константный массив и в момент инициализации memcpy'ить его в нужное место.

  16. On 3/5/2022 at 12:14 PM, xvr said:

    Компилятор хочет что бы вы ему посвежее стандарт поставили (С++11 не поддерживает эти фичи, их внесли обратно из С99 позже)

    Если быть точным, то в C++20 добавили только designated initializers (как это по-русски? назначенный?..) для структур. Для массивов, как в исходном вопросе, поддержки нет (я невнимательно слежу за развитием языка, но вроде б эту фишку и не обсуждали для добавления в последующие стандарты).

    Также в C++ есть ограничение, что члены структуры должны инициализироваться в том же порядке, как они расположены в самой структуре (с C можно было инициализировать как угодно). 

  17. On 2/16/2022 at 5:25 PM, Arlleex said:

    В чем глобальная разница?

    Первый вариант - так исторически сложилось с незапамятных времён (а дальше - стандарт соблюдает обратную совместимость). Второй вариант - неявное преобразование типов сознательно запретили, из соображений, что оно противоречит общей идее С++ о строгой типизации.

    Подробнее можно прочитать в предложении о введении такой инициализации: https://www.stroustrup.com/N1919-initializer_lists.pdf

    Только не спрашивайте, как это всё работало до 2005 года ;-) (точнее, 2011, оно попало в стандарт C++11).

  18. 54 minutes ago, andrew_b said:

    Что за хороший тон? Первый раз слышу.

    Ну, вот, например. Это, конечно, правила для ДРУГОГО языка, но ознакомиться с мыслями умных людей стоит.

     

    56 minutes ago, andrew_b said:

    Их так проще найти.

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

  19. 21 hours ago, GenaSPB said:

    А по стандарту языка С, переменные могут быть объявлены только в начале блока.

    Начиная со стандарта 1999 года, этого ограничения больше нет, переменные можно (и, согласно правилам хорошего тона, нужно) объявлять в месте использования.

  20. Вам всё ещё актуально?

    Не понял, что вы делаете. Насколько вижу, отправление из вашего контроллере (что за контроллер-то?) работает, в канвайзе видно 378-е сообщение. Кто тогда отправляет 379-е ? То сообщение, которое вы пытаетесь принять, кто отправляет? Как оно выглядит? (тут неочевидная штука - свои сообщения контроллер не видит).

    Также проблема может быть в настройках фильтра. Мне очень лень разбираться, что там навертели в кубе. Покажите значения регистров кана (хоть картинками из отладчика)

     

    И да, следите пожалуйста за форматированием кода. Кривые отступы не очень помогают пониманию...

  21. 20 hours ago, Gradient said:

    Перекопал форум, что-то ссылок не нашел. Подскажите где лежит.

    В стародавние времена проект жил на сорсфорже, если я ничего не путаю.

    И в 3-й версии там есть ARM7 && IAR. В 4-ю оно уже не попало (некому перетаскивать было?..)

     

    https://sourceforge.net/projects/scmrtos/files/scmrtos/

     

  22. 1 hour ago, uriy said:

    Хотел сделать копию NFC ключа для подъезда, купил метки с алика.

    Если вы про mifire (судя по упоминанию телефона), то там как-то сложно всё.

    У меня есть в закладках https://mysku.ru/blog/ebay/41849.html хотел скопировать ключ от нашего подъезда, но руки так и не дошли (особенно после выяснения кода от этого домофона).

  23. 1 hour ago, =AK= said:

    Еще одна выковырянная из носа "проблема".

    Ну ок. Своим мнением о велосипедостроении я поделился, больше мне выковыривать из носа нечего.

     

    1 hour ago, =AK= said:

    Пользователь лезет в Википедию, читает про LFSR, находит полиномы, меняет.

    Поль-зо-ва-тель? Конечный? Он слова-то LFSR не знает. У нас же типа "безопасность через скрытность", как оно там внутри устроено, никому рассказывать нельзя.

     

     

      

    1 hour ago, =AK= said:

    Цена вопроса - порядка десятка килобаксов, наверное.

    Тут @Vasily_ как-то упоминал, что дамп атмеги стоит несколько сотен баксов. Я не проверял. Ну, вам просто к сведению.

     

     

    Спор, постоянно скачущий с бузины на киевского дядьку, пошёл на очередной круг. Ещё раз напомнить, что вы зачем-то мешали сложность подбора полинома и сложность подбора ключа? Мне надоело, спасибо за беседу.

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