- Внезапно - в CubeIDE сделал простую структуру. И пробую ее
загрузить в eeprom записывая 3 байта через HAL_I2C_Mem_Write_IT(
.....time1[i],3) Получаю какую то хрень. Mty1(275 знак., 14.05.2024 16:13, ARM, полностью)
- Это ARM, братан! Используй упакованную структуру. Смотри директиву
#pragma pack - IBAH(14.05.2024 16:32)
- В CMSIS нонче есть несколько оберток портабельных: __PACKED_STRUCT,
__PACKED_UNION и что-то рядом. Использование же pragma pack,
например, в хедерах, это, мягко говоря, неаккуратненько, да и между
компилерами не очень портабельно. Я стараюсь обходиться без паков.
Хотя и приходится чужой код поддерживать с наличием. - Vit(15.05.2024 11:11)
- Самые-самые обёртки в lwip: SciFi(379 знак., 15.05.2024 14:51)
- Осталось найти компилятор, не понимающий #pragma pack(push, 1) - LightElf(15.05.2024 12:22)
- Keil - Vit(15.05.2024 14:01)
- Я кейл только для 8051 использую, а там оно не надо. - LightElf(15.05.2024 14:37)
- у меняя всё сильно хуже - составные части нескольких проектов берут
начало от проекта на IAR для C51, потом проекты разошлись на IAR
AVR и Keil C51, были ответвления на IAR MSP430, туча похожих на
ARM7TDMI, CM3, CM4, CM7, Xtensa, сейчас вот на CM23, причём на
разных компиляторах. приходится в этом
бардаке зоопарке как-то разруливать... приходится где-то выбивать с ноги
ручные выравнивания, где-то паковать... - Vit(15.05.2024 14:59)
- Вот Кейл POV(1 знак., 15.05.2024 14:36, картинка)
- Я использую исключительно GCC, и там можно использовать атрибут для
конкретной структуры. Теоретически, можно сделать структуру из
нескольких вложенных структур, часть которых будет упакованными,
часть - нет. Использую упакованные когда нужно передать по каналам
связи или сохранить в изнашиваемую память. - Nikolay_Po(15.05.2024 11:16)
- Я предпочитаю не связываться с паками - упаковываю в массив и назад
распаковываю. - vesago(14.05.2024 19:32)
- Маленький лайфхак. Располагать элементы структуры надо по размеру
4-2-1, тогда тормозить не будет. Точнее: int32 смещение на величину
кратную 4 байтам, int16 на 2 байта итд - IBAH(14.05.2024 17:32)
- +1 нафига памятью разбрасываться и время расчёта crc увеличивать?
Вся структура должна занимать 4 байта в массиве. Я бы и лишний байт
подвязал бы для пользы дела. - =AlexD=(14.05.2024 16:39)
- Мусор легко может быть. Но какое отношение он имеет к CRC?
Контрольная сумма считается вместе с мусором, так что нет проблем.
Верно? - SciFi(14.05.2024 16:15)
- Никак. Выравнивай по 4 байта - POV(14.05.2024 16:15)
- Побайтная запись uint32_t в eeprom. Почему не работает указатель?
Хочу передать последовательно 4 байта. Mty1(353 знак., 16.05.2024 11:35, ARM, полностью)
- Платформа-то какая? Неоднократно применял первый вариант с GCC на
Cortex-M3. Может, прерывания, неожиданные изменения вне контекста? Nikolay_Po(231 знак., 16.05.2024 13:57)
- Контекста нет вообще. Вангую, там косяки в коде, который не
показан. При цитировании косяки были скрыты. - SciFi(16.05.2024 11:57)
- Так и должно быть. Вы передаёте в функцию указатель на 8р, а
переменная, 32р. Оно ещо и материться должно. mse homjak(174 знак., 16.05.2024 11:57)
- формально похже на правильно. но есть нюансы - первый раз это арес
целого, второй адрес байта - есть выравние адресов которые иногда
невидны, давай асм. размотаем косяг. - klen(16.05.2024 11:41)
- Как uint32_t в памяти хранится? BigEndian? LittleEndian? Может тут
собака порылась ? - Bинни Пox(16.05.2024 11:40)
- "Сводный системный топик" :-) по китайской микрухе CH579. Предлагаю
сюда добавлять кто чего нарыл. Для начала гугл-перевод даташита
(побит на две части). LightElf(23.05.2021 22:39 - 23:19, ARM, ссылка, ссылка, полностью)
- Столкнулся со странной ситуацией, честно говоря идей нету. Ничего
подобного никогда не видел. Приволокли кучку сдохших плат на
CH579M, платы изрядно поработали и сдохли во время обновления
фирмвари (не шьются). При глубоком исследовании нескольких образцов
обнаружил, что у всех одна проблема: у страницы флеша по адресу
0x8400 не пишется первая половина. То есть сектор (512байт)
0x8400...0x85FF стирается, но область 0x8400..0x84FF после этого не
пишется, остается в FF. LightElf(360 знак., 12.02.2024 21:14)
- Внезапно обнаружил, что англоязычный даташит на сайте WCH для
сабжевой микрухи не содержит описания некоторых регистров Ethernet
(таблица хэшей и фильтр приема пакетов). Выше есть перевод
китайского даташита, в котором эти регистры описаны. Фильтрация по
хэшу у меня, вроде как, работает вот таким макаром (на базе
китайского разъяснения): LightElf(881 знак., 29.12.2023 16:33)
- Огреб странное, хозяйке на заметку. В процессе экспериментов с SPI0
в DMA где-то нахеровертил. И чипец ушел в нирвану совсем, даже по
SWD не откликается. Предполагаю, что DMA непрерывно лупит и шину на
100% занимает. Еле-еле разлочил за счет того, что в ините есть цикл
ожидания готовности кварца. Замкнул кварц пинцетом и стер флешу по
SWD. - LightElf(19.04.2023 14:43)
- Результаты поиска Kpoк(1 знак., 27.01.2023 23:21, картинка)
- 5 дней назад обновился GitHub. Выложили исходники ethernet драйвера
и документацию на английском. Причем и комменты в исходниках
драйвера тоже на Ём, как и примеры, касающиеся сетевых дел... Гyдвин(1 знак., 27.01.2023 19:45, ссылка)
- Интересная статья про CH579 и его Ethernet на Хабре AlexG(1 знак., 14.01.2023 06:57, ссылка)
- Платан > Гyдвин(1 знак., 08.12.2022 22:34, ссылка)
- Наткнулся на пример реализации пользовательского загрузчика с
перенаправлением векторов у китайцев. Без танцев с
бубнами с корявой поддержкой этого дела в чипе. Такой подход мне нравится
гораздо больше. Ну и сохраняется встроенный bootloader для штатной
прошивки через usb/uart если что. Пример проверил - работает.
Прикрепил... Гyдвин(1 знак., 01.12.2022 04:19, ссылка)
- UPD. Исправил размер массива - слишком большой создавался. Если
интересно - я разобрался со штатным механизмом, вполне нормально
работает. LightElf(2067 знак., 01.12.2022 12:57 - 08.12.2022 22:33)
- Спасибо - RED_DRAGON(01.12.2022 20:56)
- Для пересброса, смотрю, нужно довольно длительное время. Похоже я
вчера как раз с этим и прокололся. Нетерпеливый ;) Метод с
пробросом векторов срабатывает мгновенно. - Гyдвин(01.12.2022 20:23)
- У меня осень была загруженная основной работой. Сейчас полегчало, и
пришел очередной позыв ;) Гyдвин(779 знак., 01.12.2022 15:19)
- Я заливаю свой бут через SWD и первое, что мой бут делает -
отключает нах китайского загрузчика и доступ по SWD. LightElf(713 знак., 01.12.2022 16:04)
- Планирую 579F в массовых девайсах. Надо передать "оживление" в
шаловливые ручки наших паяльшиков. Гyдвин(952 знак., 01.12.2022 19:56, ссылка)
- Млтятььь, забыл еще главное. Мелочь - метки и брелоки. Да еще на
новых принципах. И несколько девайсов, работающих в полях, тоже :(
Вся это байда взаимодействовало между собой, включая то, что
упомянул в предыдущем посте... MSP430, LPC1768, меги328,
СС1101,ENC28, MCP2030, LCD и пр. шалабушки, Гyдвин(370 знак., 02.12.2022 05:25)
- А, блин. У 579F же нету SWD, тогда понятно. - LightElf(01.12.2022 20:16)
- Придется опять юзать Gainta и китайские теперь LCD/OLED....
Наклейка для них обходилась в цену, равную себестоимости всего
остального :) Гyдвин(1 знак., 01.12.2022 20:07, картинка)
- У меня такой вопрос: У тебя похоже железки у же приличное время
эксплуатируются. Как у них со стабильностью работы ethernet? Гyдвин(131 знак., 01.12.2022 14:58)
- Мелкомягкий антивирь ругаеццо на троян в архиве. - LightElf(01.12.2022 13:00)
- Не встречал ли кто отладочной платы, типа arduino, на CH579M, по
проще чем по ссылке? Tech_(1 знак., 19.07.2022 15:53, ссылка)
- Господа пользователи CH57x. Библиотека BLE у производителя только в
кейловском формате LIB существует? есть ли вариант либы для
пользования с gcc? или опробованный с этим камнем опенсорс ble стек
в исходниках? - RED_DRAGON(15.06.2022 21:23)Гyдвин
- Меж тем, чипы в товарных количествах начали появляться на LCSC. "F"
стабильно присутствует 1.5 мес., "M" появился вчера после долгого
отсутствия. Соответсвенно, и наши барыги обещают привезти... Гyдвин(1 знак., 10.05.2022 16:13, ссылка)
- LightElf, какая версия штатного загрузчика в ваших чипах? На моих
китайских платках - 2.7. Сегодня довелось перепаивать контроллер
BLDC (друг приволок). Заодно, наконец, решил набить руку по пайке
CH579M. Все прекрасно сдувается и паяется феном. Сдул, запаял чип
из новой партии. Но, сцуко, в новой партии (заказывали сотню штук)
версия загрузчика 2.8. Если загрузить прошивку их утилиткой по usb,
следующий раз эта утилитка чип уже не видит - загрузчик не
стартует, сколько не Гyдвин(1290 знак., 16.08.2021 17:49)
- Еррата на нее есть на английском? Не нашел типовой схемы включения.
0.35 не 0.5 поставить. - vasily777(04.06.2021 12:46)
- Прислали десяток чипов CH579M c работы. Намереваюсь сдуть со своей
платки и попробовать паять. Но пока не пришла еще пара заказанных у
китайцев платок, чОта очкую - шибко мелкое :) - Гyдвин(03.06.2021 11:53)
- Ну вот как то так... Программатор для заливки загрузчика в платки
при производстве. , чтобы "бибизьянки" чО-нить не намухали :) Гyдвин(958 знак., 03.06.2021 11:43, ссылка)
- Сделал первый подход к аппаратному AES. Пока понял только как
шифровать/расшифровывать в режиме ECB с 128-битным ключем. Более
хитрые варианты (в частности CCM) не особо пока ясны. Вот примерно
что делает кетайская либа при шифровании. LightElf(518 знак., 02.06.2021 19:09)
- Проц среди прочей периферии имеет некий LED Controller. Шо это
такое и куда его применить - понять не удается никак. Если кто
поделится мнением - буду признателен. - LightElf(01.06.2021 20:15)
- Простейший драйвер Ethernet, просто иллюстрация отправки и приема
пакетов LightElf(24.05.2021 18:09, ссылка)
- просто добавляйте к сообщениям тег "CH579" и получите спец. конфу - General(24.05.2021 17:48, ссылка)
- Пины девайса не имеют режима "открытый коллектор/открытый сток".
Аппаратного I2C тоже нет. Следует поиметь в виду. - LightElf(24.05.2021 15:18)
- Поддержка чипа в IAR. FlashLoader, регистры, файлы линкера. Просто
развернуть поверх установленного IAR в соответствующие папки. После
перезапуска IDE камень появится в списке. LightElf(23.05.2021 23:20, ссылка)
- У Cortex-M0 отсутствует регистр VTOR, т.е. перенести вектора
прерываний нельзя. Что несколько неприятно для реализации
бутлодера. LightElf(289 знак., 23.05.2021 23:18)
- Мой топик в конфе ESP8266. - Гyдвин(23.05.2021 23:15, ссылка)
- BLE, NET. Гyдвин(23.05.2021 23:11, ссылка, ссылка)
- Кто-нибудь может поделиться пониманием flashloader в IAR? VLLV(309 знак., 16.05.2024 16:17, ARM, полностью)
- где то в глубинах wch.com. концов окромя картинке в проспекте
ничего не нашел... но как бэ намекаэ (новая riscv микроконтроллер
для управления электродвигателями). английская версия сайта - можно
забыть. klen(10 знак., 16.05.2024 11:19, ARM, ссылка, картинка)
- Что то меня переклинило... Как с помощью одного таймера (на паре
его выходов) получить квадратурные меандры - то есть сдвинутые на
четверть периода)? Пусть это будут таймеры STM32. - my504(13.05.2024 11:23, ARM, полностью)
- таки запустил за выходные на ch32v307 сеть с web сервером используя
ихний libwchnet.a.. порнография. есть подозрения - раскидаю сокеты
в разные потоки и фисе, здохнет. есть кто уже пропол на пузе в этом
вопросе? план у меня такой - выдрать/написать нижнюю часть eth и
замкнуть на стек freertos - китайцы очень не правы с закрытой
либой. это отрыгнется. - klen(13.05.2024 01:51, ARM, полностью)
- Коллеги, у меня вопрос по обработке ошибок в приборе на stm32f4.
Есть DMA i2c UART ADC плюс обработка ошибок от внешних стробов. Как
грамотно построить обработчик ошибок, чтобы отслеживать проблемы
скажем с записью в eeprom, инициализацию DMA и UART итп. Плюс при
штатной работе программы обрабатывать ошибки от внешних сигналов -
нештатная работа управляемого оборудования. Возможно писать
проблемы в небольшой лог в eeprom - пока думаю над этим. Не могу
понять как это Mty1(164 знак., 09.05.2024 16:32 - 16:35, ARM, полностью)
- Есть две функции, ErrorSet() и ErrorClear(). По обнаружению ошибки,
вызывается функция установки сигнала ошибки, которая взводит бит
этой ошибки в общем регистре (слове, массиве) зафиксированных
ошибок и снимает бит в регистре сброшенных ошибок. Nikolay_Po(768 знак., 09.05.2024 19:16)
- Ковыряю дизасм от небольшой автомобильной прошивки. Там запись
критичных значений в eeprom происходит с резервированием в три
копии. При записи - проверяется корректность записи, при чтении -
поиск и восстановление одиночного сбоя. Программа ведет постоянную
проверку на наличие сбоев. Постоянно идет вычитывание "троек" из
EEPROM, постоянно идет пересчет КС прошивки, постоянно идет
тестирование RAM (гасим прерывания, проверяем корректность
резервной области памяти путем pavel2000(703 знак., 09.05.2024 17:27)
- Вы определитесь, вам нужен журнал ошибок на время отладки ПО или
это штатный инструмент в вашем firmware будет? Второе лично мне не
совсем понятно - зачем выпускать ПО с ошибками? - reZident(09.05.2024 16:33)
- WCH CH32V006 RISC-V microcontroller adds more I/Os, memory, and
storage compared to CH32V003 2nd(1 знак., 12.05.2024 18:13, ARM, ссылка, полностью)
- Чего-то запутался в режимах АЦП STM32F4. Есть 6 входных сигналов,
подведенных к разным ножкам микроконтроллера. Использую 2 АЦП,
запускаемые одновременно от таймера с определенной частотой. Есть
требование, чтобы 2 канала из этих 6ти сэмплировались одновременно,
остальные неважно. Потому 2 АЦП, а не один. Хотелось бы оцифровать
3 пары сигналов 5 раз, усреднить результаты по каждому из 6 каналов
и после этого всего 1 раз вызвать прерывание, что данные готовы.
Допустим Yurasvs(796 знак., 10.05.2024 14:44, ARM)
- LL vs Registers - стоит ли заморачиваться LL? Посмотрел на LL
примеры для stm32, он дает достаточно длинный и сложный на первый
взгляд код. Стоит ли заморачиваться LL или сразу все писать на
регистрах? PS: Использую FreeRTOS - Mty1(04.05.2024 13:50, ARM, полностью)
- Дело в другом. Я ведь тебе написал про многопоточность,
реентерабельность и поддержку RTOS, но хочется плюнуть, потому что
реакции не было. LL-код не болеет "детскими болезнями" (ошибками
дизайна) HAL и только за одно это стоит двигаться в направлении LL. - RxTx(07.05.2024 16:33)
- Я несколько дней пытался написать работу с i2c на LL. Не осилил,
бросил. Там во первых нестандартная работа с ACK/NACK при работе с
eeprom, потом нестандартная работа с Stop опять же при работе с
eeprom при выставлении адреса чтения. В связи с этим регистры у
stm32 для i2c сильно замороченные и не очевидные. Короче бросил, и
за полчаса сделал все на HAL. Там все проработано из коробки, в том
числе все нестандартные моменты. И не только в том дело что сложно,
я понял что я не Mty1(91 знак., 09.05.2024 16:16)
- Допустим. Если вам удалось сделать на HAL, это каким-то опровергает
сказанное про HAL или то что он предназначен в целом для
демонстрационных программ или как разросшееся средство поддержки
CubeMX (бывший MicroXplorer)? Драйвера HAL действительно более
проработанные чем LL, в них меньше багов и они быстрее
исправляются. И еще HAL/LL в разной степени готовности у разных
серий. Более того, для USB/ETH LL драйверов вообще нет. А у многих
серий и LL драйвера есть далеко не на RxTx(4 знак., 09.05.2024 17:49)
- и это правильно. :-) - Лaгyнoв(09.05.2024 16:59)
- И кроме того, почитав свежую доку на HAL я увидел, что они обещают
полную совместимость с RTOS, в другом месте я прочел что таймауты в
HAL строятся не на циклах на на systick. Ну и стало ясно, что с i2c
на LL мне упираться не стоит. Думаю более крутой программер осилил
бы, но закопаюсь в этом. Mty1(8 знак., 09.05.2024 16:31, картинка)
- Я много думал над твоим сообщением, это серьезная тема. И не
отвечал не потому что забил. Не раз читал его. И кажется есть что
возразить. Напишу завтра, дай собраться с мыслями. - Mty1(09.05.2024 02:13)
- Если ловите наносекунды - то регистры, а если вы не знаете какой МК
в устройстве будет через пол года, по принципу какой смогли купить
- то куб. - =AlexD=(07.05.2024 16:13)
- Если углубленно знаете матчасть, то да - регистры. Мне нужно быстро
собирать проекты на разных платформах - отсюда времени на
углубленное изучение нет. Поэтому LL и если сложная периферия HAL,
в случае с STM. Ели постарее микросхемы - SPL. С китайскими,
понятно, их SPL подобные библиотеки. Я только STM8 на регистрах
ваял из экономии места. - vesago(04.05.2024 14:26)
- Пример длинного и сложного можно? И желательно в виде асма после
-flto - POV(04.05.2024 14:06)
- WCH заставляет учит китайский язык, переключаешь на нативный язык -
сразу свежие доки и свежие архивы, качнул свежий QingKeV4 Microprocessor Manual v1.3. сдается что аглицкий перестает быть международным, петушиный и
небыл им никогда. klen(306 знак., 08.05.2024 11:56, ARM, ссылка, полностью)
- Вопрос по DMA в stm32f4 - если DMA выдает в порт GPIO данные по
таймеру в кольцевом режиме для DDS. А в это время CPU меняет данные
в буфере в RAM - не должно быть ошибки DMA? - Mty1(05.05.2024 23:24, ARM, полностью)
- Не знаю - в этот ли раздел. Мой STM32 сейчас работает с USB
компьютерной клавиатурой. Всё прекрасно, Куб сделал USB Host для
HID-устройств. Но клиенту на самом деле нужна беспроводная
клавиатура. Т.е. в это гнездо USB я должен какой-то свисток
впихнуть. И чтоб всё работало так же. Это реально? Кто-то делал
такое? Может надо специальный свисток, что STM32 поддержит? - Лaгyнoв(04.05.2024 15:54, ARM, полностью)
- Коллллеги!!! вопрос по LWIP (RAW) .. PCB Timeout скажите можно
реализовать тайм аут соединения на самой структуре PCB_TCP Balda(100 знак., 01.05.2024 11:40, ARM, полностью)