- Уважаемые, если у кого-то уже изобретён велосипед по эмуляции EEPROM на Flash? Нужен на stm32f407, из аппнотов ST готовые сильно кривые. Ну или пните меня в сторону толковой статьи. Dingo(800 знак., 31.01.2020 11:08 - 11:21, ARM, полностью)MBedder
- Возможно, решение будет использование соответствующей ФС, например littefs (там всё с лицензией хорошо). Либо eefs... POV_(93 знак., 15.02.2020 13:12,
)
- Сделал что-то функционирующее, просьба сильно не пинать. Dingo(357 знак., 07.02.2020 13:06 - 11.02.2020 07:15)
- Кстати, в пустыне уже была ссылка на нечто гламурное: SciFi(212 знак., 31.01.2020 20:32 - 20:36, ссылка)
- Сначала нужно определиться с количеством перезаписей на всю жизнь разрабатываемого прибора. Соотнести это с количеством перезаписей флеши микроконтроллера и ее организацией (какой минимальный объем информации можно стирать) по даташиту. Nikolaev_Aleksey(152 знак., 31.01.2020 14:54)
- т.к. в ОЗУ надо хранить копию страницы пока она стирается и переписывается, то нафиг надо - NAUT(31.01.2020 12:24)
- Могу посоветовать TI Flash EEPROM Emulation qov46(53 знак., 31.01.2020 12:17)
- Дополню: имел ввиду под тегами запись в странице по некоторому смещению, которое отображает состояние страницы: 0xFFFF - чистая; фиксированный ключ (0xA800 ?) - хранит данные; 0x0000 - стираем (прописать перед стиранием). - Dingo(31.01.2020 12:07, ссылка)
- "Эмуляция EEPROM" -- не нужна. Там якобы "побайтовая" запись (но далеко не у всех EEPROM), no чем она (побайтовая запись) поможет, если пишутся, например, длинные целые числа и запись оборвалась на половине (питание кончилось, произошёл сброс fk0(254 знак., 31.01.2020 11:57)
- Задачу можно и нужно упростить. Nikolay801_(473 знак., 31.01.2020 11:49)
- в моём случае - параметры; однако, хочется не всю пачку, а полями(унверсально), но в текущем применении достаточно будет и одним блоком, забирая последний целый. - Dingo(31.01.2020 12:10)
- На самом деле -- это одна вещь. Конфигурацию можно так же писать "по кругу", чем обеспечивается транзакционность. Запись или записана с верной CRC, или можем читать предыдущий вариант (в случае, когда более новая недозаписана, каждая запись имеет fk0(119 знак., 31.01.2020 11:54)
- +1. Так и делаю. В механизм можно встроить гарантию целостности записанных данных, и это будет проще, чем прилеплять его поверх собственно эмуляции eeprom. - SciFi(31.01.2020 11:52)
- Я сделал свою реализацию. A.L.(960 знак., 31.01.2020 11:49)
- есть у меня такое в своем sdk - могу в виде хидера выдернуть, если c++ допустим в проекте, то в любом месте кода это выглядеть будет так klen(4547 знак., 31.01.2020 11:43 - 11:46)
- А зачем тебе всякие эмуляции. Все сводится к тому, что надо одну страницу Flash выделить для хранения данных (типа - это будет EEPROM). При этом надо обеспечить, чтобы в эту страницу не попал код самой программы. Ну и особенность, если хочешь User_(315 знак., 31.01.2020 11:23)
- Про место во флеше линкеру обяснил. Писать до конца, потом на следующую, и только потом стирать заполнившуюся. Dingo(170 знак., 31.01.2020 11:30)
- Одна из главных задач алгоритма эмуляции - не ударить грязью в лицо, если питание вырубилось при записи или стирании (второе сильно вероятнее из-за длительности, но учитывать надо и то, и другое). Отсюда волшебные числа, контрольные суммы, кто во SciFi(316 знак., 31.01.2020 11:38 - 11:40)
- Всё зависит от задачи. У меня один раз, после калибровки, записать коэффициенты в сервисном режиме. Там питание и т.д. не влияет, т.к. файл с коэффициентами лежит в компьютере и после записи проверяется её правильность и CRC тоже присутствует. User_(63 знак., 31.01.2020 11:39)
- Кстати, большая длительность стирания сектора не смущает? Внешняя spi flash для таких дел сильно лучше подходит. - SciFi(31.01.2020 11:12)
- Неплохая сводная таблица по ядрам [Cortex-M] -> - Evgeny_CD(13.02.2020 14:57, ARM, ссылка, полностью)
- Изучаем ситуацию с наличием аппаратного деления. -> Evgeny_CD(286 знак., 13.02.2020 15:02, ссылка)
- (Аппаратное) деление обычно при программировании не нужно (почти) совсем. Дело в том, что деление на константу обычно неплохо заменяется на умножение на обратную величину, деление на 2n на сдвиги. А желание деления на некратную fk0(88 знак., 13.02.2020 21:36)
- PIC32 PIC32MM0256GPM064 - мелкие, недорогие и весьма качественные PIC32. 32 битное деление 11-33 такта Evgeny_CD(1238 знак., 13.02.2020 17:46)
- Cortex-M0+ -> народ извращается - Evgeny_CD(13.02.2020 16:09, ссылка)
- RL78-S3 core есть, RL78-S1 и RL78-S2 нет Evgeny_CD(590 знак., 13.02.2020 16:06)
- 8051 -> народ ищет быстрые извращения -> - Evgeny_CD(13.02.2020 15:53, ссылка)
- В AVR с делением все плохо -> - Evgeny_CD(13.02.2020 15:53, ссылка)
- GigaDevice GD32VF103 (ядро RISC-V Bumblebee ->)- Single-cycle hardware multiplier and Multi-cycles hardware divider support; - Evgeny_CD(13.02.2020 15:45, ссылка)
- dsPIC33CK то же самое - 19 циклов. Evgeny_CD(1634 знак., 13.02.2020 15:35)
- PIC24F, который PIC24FJ256GA705 один из самых дешевых, 32/16 -> 19 циклов. Evgeny_CD(456 знак., 13.02.2020 15:28)
- [!!!holywar!!!] Уважаемый All, подскажите, где-то существует перечень известных косяков в HAL? Я привязан к нему из-за стека USB, BLE и LAN. - NAUT(13.02.2020 14:45, ARM, полностью)
- [GigaDevice свежий каталог] Cortex-M23 и много другого интересного. Evgeny_CD(13.02.2020 14:38, ARM, полностью)
- Получил такую китайскую под(д)елку. Как с этим работать? - как обычный jlink не хочет. VLLV(31.01.2020 18:06, ARM, полностью)MBedder
- Меряю температуру кристалла STM32WB55, в даташите формула (на скриншоте), я вот не пойму откуда там правая часть взялась, особенно если учесть что про модуль ничего не сказано, и со знаком там беда будет? то есть намеряли на комнатной температуре NAUT(298 знак., 09.02.2020 00:41 - 00:49, ARM, полностью)
- если совсем точно, знак меняется в точке 924,3 (в ацп 0,3 не бывает, отбросим), это можно проверять и знак дописывать. что за формула у них в даташите, не пойму. NAUT(09.02.2020 02:50)MBedder
- это сколько градусов в одном попугае, да. смех в том что при нуле попугаев ацп будет где-то -270 по цельсию. почти абсолютный нуль. - NAUT(09.02.2020 01:33)MBedder
- конкретнее, есть калибровка на 130 градусов, там 1378 попугаев. есть калибровка 30 градусов, там калибровка 1029 попугаев. по логике, вычитаем одно из другого получаем 349 попугаев на шкалу 100 градусов или 3,49 попугая на °C. ну это можно принять NAUT(188 знак., 09.02.2020 01:15)MBedder
- Наконец-то и про наше ремесло стали кино делать - Крок(02.02.2020 22:04, ARM, ссылка, полностью)
- Реинкарнация граблей с GCC и sprintf... POV_(1009 знак., 28.01.2020 23:50,
, ARM, полностью)
- хочу у себя повторить, можно исходник чтоб воспроизвести? - NAUT(01.02.2020 00:59)
- Настоящую ошибку компилятора я встречал один раз в жизни: ранняя-ранняя версия КодВижен-а неправильно инициализировала элементы массива структур. Расследование остальных встретившихся "ошибок" неизменно показывало, что "сам дурак". И с ситуацией, Сидоргек(112 знак., 31.01.2020 13:31)
- Не надо объяснять собственную профнепригодность через обливание грязью gcc. К слову "Arm compiler 6" который "не gcc" внутри на самом деле clang, который в общем и целом "ничем не хуже" в части фокусов в очумелых ручках. Крупные программные fk0(1953 знак., 29.01.2020 13:58)
- пианино это инструмент а не дрова, на пианине играть нада уметь, хотя многие его в качестве дров успешно продают. тут талант нужен либо продавана либо музляра.. нет таланта ниче не выйдет, по теме рискну предположить что проблема в выравнивании klen(1372 знак., 29.01.2020 13:10)
- Keil и "искоропки" антонимы, половина стандартной библиотеки c++ не реализована. - evgeniy1294(29.01.2020 10:07)
- А для чего вообще GCC юзать? Или в России уже серьезно решили отказаться от вареза? - Vesago(29.01.2020 09:23)
- То есть корень проблемы так и не найден, но гцц всё равно гавно? Так и запишем. - SciFi(29.01.2020 08:37)
- Только вот Keil стоит от 6000 евро за одно рабочее место. Так что с целью экономии можно и покрасноглазить 😀 - FDA(29.01.2020 07:53)
- Требуются идеи по реализации нечто, типа BIOS для МК. Исходные данные: имеется железо - МК Cortex-M0 и физические драйверы CAN, RS-485, SPI... Для этого железа написан и отлажен (давно) HAL, диспетчер очереди событий, программные таймеры и т.п. Chum_A(1235 знак., 29.01.2020 17:27, ARM, полностью)
- Что бы не писать отдельных "СПАСИБО" всем ответившим, таки СПАСИБО! всем уже ответившим и тем, кто откликнется в будущем. fK0 отдельное спасибо, т.к. его идеи помогли мне столкнуть программиста в практическую область. - Chum_A(30.01.2020 14:08)
- Погляди на DSP/BIOS от Texas Instruments, возможно, найдешь полезные идеи - MBedder(30.01.2020 12:22)
- Кстати, предлагаю озвучить, что вообще надо-то, если это не военная тайна. Потому что вот это ТЗ из 5 пунктов небесспорное. Наверняка и там что-то можно подкрутить. - SciFi(30.01.2020 11:48)
- Ни разу не тайна. Технологический пульт - кнопки, дисплей, физические драйверы интерфейсов. Пульт позволяет реализовать функции проверки тех самых интерфейсов (далее "режимы") в серийных изделиях либо м.б. использован в качестве имитатора приборов Chum_A(878 знак., 30.01.2020 14:00)
- Я пару похожих по смыслу задач решал через динамическое создание классов C++. Каждый режим это класс. Все классы режимов унаследованы от одного базового. При старте создается экземпляр класса, соответствующий нужному режиму, при смене настроек он AlexG(176 знак., 30.01.2020 18:52)
- 1. Ставится загрузчик, который грузит приложение, в которое включен HAL на этапе компиляции. 2. HAL можно оформить как библиотеку. 3. HAL можно включить в загрузчик с предоставлением сервисов через таблицу функций. Ну а прерывания поделите, VLLV(65 знак., 30.01.2020 16:05)
- Я думал, что-то более замысловатое. По сути, раздельные приложения с общей частью. Отлаживаются по одному, загружаются для исполнения тоже по одному. Слишком просто... - SciFi(30.01.2020 14:43)
- Да уж... "регистрировать обработчики прерываний" "регистрировать программные таймеры" урезать осетра и само взлетит. Вместо программных таймеров - события с фиксированными временами, и т.д. а то сущностей ... - VLLV(30.01.2020 12:15)
- Тебе нужна динамическая компоновка (функций ОС к прикладной программе). Фактически это то, чем занимается ОС при загрузке процесса. Поэтому идея взять готовую ОС не самая глупая. Но в принципе не обязательно. fk0(4118 знак., 30.01.2020 02:23 - 11:47)
- 1) У Luminary/TI Stellaris подобное было реализовано. Там HAL сидит в ПЗУ и пользовательская прошивка его вызывает. LightElf(47 знак., 30.01.2020 10:43 - 10:46, ссылка)
- Возьмите NuttX и не мучайте мозг сахарян. То, что вы просите называется полноценной операционной системой. - lloyd(29.01.2020 18:44)
- чтот не понял вашего сумбура! подгружаемые модули? описываете в таблице указателей необходимые блага хала, подгружаемые модули пользуются всеми указанными вами благами хала даже не зная что это такое. - Aleksey_75(29.01.2020 18:23)
- Не исключено, что Pawn удовлетворяет всем требованиям. - SciFi(29.01.2020 17:34, ссылка)
- [STM32H7A3, STM32H7B3, STM32H7B0] 280 MHz, 2Mbyte FLASH, 1,4MB (incl.128K DTCM, 64K ITCM, 1184K+SRAM, 4K backup) SRAM, TFT-LCD, JPEG codec, Chrom-GRC™, optional embedded SMPS, dual Octo-SPI with on-the-fly decryption Evgeny_CD(59 знак., 29.01.2020 01:35, ARM, полностью)
- Добрый день. Такой вопрос, Для простого использования DMAMUX достаточно ли указать в регистре CxCR номер источника события (DMAREQ_ID = 0x4F)(переполнение таймера TIM15), и настроить регистры таймера DIER, как UDE = 1, UIE = 1., для того, чтобы zzz-spider(58 знак., 22.01.2020 09:19, ARM, полностью)
- Запускаем под отладчиком, таймер пусть крутится и генерирует события, крутим регистры, пока DMA не заведётся. Много ли там битов? Уж точно быстрее, чем тягомотина в форуме. - SciFi(23.01.2020 10:07)
- DMAREQ_ID TIM15_UP равен 106 (0x6A) или Вы о чем-то другом? - TIM15_UP(22.01.2020 15:35,
)
- Для STM32L4r5xxx, DMAREQ_ID TIM15_UP = 79(0x4F). 106 - reserved - zzz-spider(23.01.2020 08:57)
- Все так. С теорией не поспоришь. Только в реальности Ничего не происходит. Я так понимаю, что достаточно указать TIM15_UP DMAREQ_ID для нужного канала DMA и при каждом переполнении счетчика будет генерироваться событие, которое будет дергать zzz-spider(348 знак., 23.01.2020 09:45)
- DMAREQ_ID для DMAMUX->CxCR, где x - канал. Вы для TIM15_UP нужный Вам x выбрали (их 7, от 0 до 6, для DMA1 и 7, от 7 до 13, для DMA2). Если нужный (правильный), то этого достаточно и все работает. - TIM15_UP(23.01.2020 09:14,
)
- Проблема в том, что не могу заставить дергать DMAMUX с помощью событий, приходящих от TIM15. Наблюдая за регистрами DMAMUX, вижу, как меняется их значения по другим каналам. Тот канал DMAMUX, который завязан на TIM15, никаких телодвижений нет. zzz-spider(100 знак., 22.01.2020 11:50)
- DMAMUX - это просто матрица коммутации. Для работы ей нужно указать, что и как соединить, event source при необходимости. Если раньше мы выбирали DMA Stream по таблице, то теперь мы её задаём сами. evgeniy1294(241 знак., 22.01.2020 11:21)
- Не могу завести RTC на STM32WB55RGV от внешнего 32.768, на родной отладке nucleo, errata какую-то херь пишет на эту тему обтекаемо, типо глюки у них, но это бывает. было у кого? NAUT(845 знак., 21.01.2020 22:21 - 22:31, ARM, ссылка, полностью)
- Добрый день. Почему в списке отображаемых регистров у IAR-а напрочь отсутствует группа DMAMUX? И как это пофиксить? - zzz-spider(21.01.2020 09:59, ARM, полностью)
- Добрый день. А, не подскажет-ли кто-нибудь ответ на вопрос: Почему IAR (v 8.40)отказывается показывать регистры SMCR у таймеров? Изменить настройки этого регистра можно, но его значения в результате все равно не видно. (STM32L4Rxxx CORTEX 4+) - zzz-spider(13.01.2020 09:36, ARM, полностью)
- Короче друзья, все-таки можно внести изменения в файлы *.svd. Как ни банально, но для сохранения изменений, достаточно снять атрибут ридонли для каталога, где данные файлы лежат. - zzz-spider(20.01.2020 11:28)
- STM32L4Rxxx. В данном мануале усе есть. Меня, вообще, интересует IM15 - zzz-spider(20.01.2020 09:18)
- Господа, проблема остается не решенной до сих пор. По какой-то причине в файле .svd для нужного камня нет секции для описания SMCR регистра для таймеров TIM15, TIM16, TIM17. Соответственно, значения этих регистров в дебаггере я увидеть не могу. В zzz-spider(177 знак., 20.01.2020 07:20)
- Получилось вот так версии 8.40, в окне регистров нужного таймера, в поле Find, забил "SMCR", кликнул Enter и данный регистр появился - zzz-spider(13.01.2020 10:37)
- Ооо..., К стати, для Этого таймера такой регистр в SVD не указан. - zzz-spider(13.01.2020 09:51)
- В svd-файле этот регистр есть? - evgeniy1294(13.01.2020 09:40)
- А чо за беда у STM? Попытался установить
STM32CubeMX STM32CubeIDE, инсталлятор сразу пишет "NSIS error, Error launching installer". Тестирование скачанного архива показывает, что все ок. Argon(68 знак., 17.01.2020 10:46 - 10:58, ARM, полностью)