Поздравляем Cкpипaч с днём рождения!
- StarFive [JH7110] SoC начинает выходить в свет. RISC-V 6 ядер. Evgeny_CD(25 знак., 06.09.2023 12:23 - 13:39, ARM, ссылка, ссылка, полностью)
- Еще плата Evgeny_CD(1 знак., 06.09.2023 21:32, ссылка)
- Суки! Т от 0° и выше - Evgeny_CD(06.09.2023 13:41)
- Малинка, малинка, такая вечеринка... - =AlexD=(06.09.2023 13:16)
- Ядров все-таки шесть. Четыре "толстых", одно "тонкое" и одно
32-битное "тощее", чиста на поржать. - LightElf(06.09.2023 12:58)
- Пример платы Evgeny_CD(1 знак., 06.09.2023 12:26, ссылка)
- Мануал доступен по ссылке из головного поста, качается очень
медленно - 34Мбайта - Evgeny_CD(06.09.2023 12:25)
- ДШ Evgeny_CD(1 знак., 06.09.2023 12:24, ссылка)
- В dsPIC-ах и PIC24 имеются инструкции вида add W0, [W1], [W2] . Это позволяет работать с массивами через указатели. Вероятно в
ARM-ах тоже имеется косвенная адресация. Вопрос состоит в том, как
написать на Си для ARM строку кода в некоем цикле так, чтобы он был
откомпилирован в инструкцию использующую косвенную адресацию, а не
загрузку данных в РОН, арифметику, выгрузку данных из РОНа. Пусть
это будет ранее упомянутая сумма, где W1 - указатель на массив A, my504(29 знак., 06.09.2023 11:52, ARM, полностью)
- Как уменьшить размер прошивки с GCC для risc-v? Ключ оптимизации
-Os выбран, опция -ffunction-sections в компиляторе и --gc-sections
в линковщике стоят, всё равно жирно получается. Peter_M(46 знак., 05.09.2023 10:48, ARM, полностью)
- [STM32MP2]. Cortex-A35. BGA 0.8 Evgeny_CD(2 знак., 29.08.2023 17:59, ARM, ссылка, ссылка, полностью)
- Жаль, что они взяли самое младшее ядро (в своем классе) Cortex-A35.
Надо читать, какие опции SIMD туда вкрячат. У всех 64 битных Cortex
SIMD 128 битый, 2 DP за за раз в том числе. Двухядерный камень,
полагаю, просто отменит простые DSP с таковой 500 МГц. - Evgeny_CD(29.08.2023 19:17)
- Ага, OpenSTLinux is provided with Microsoft Azure RTOS components,
enabling real-time performance. Но это может быть только в
отношении Cortex-M33 Evgeny_CD(1 знак., 29.08.2023 19:04, ссылка)
- Подробности. USB 3.0 тоже будет! Evgeny_CD(1 знак., 29.08.2023 18:54, ссылка)
- Ключевой момент - наличие PCIe 2.0. Значит, можно подцепить мост
PCIe <-> PCI 32 бита 66 МГц, и подцеплять дешевые
китайские FPGA GoWin, Efinix без трансиверов. И будет ваще круто! - Evgeny_CD(29.08.2023 18:44)
- Нам остается только надеяться, что документация будет столь же
подробная, как на STM32MP1. Это откроет дорогу достаточно массовому
использованию 64 битных RTOS. GPU под RTOS, конечно, не будет, да и
фиг ним. С NPU вопрос открытый. У NXP есть MCU с открытым
интерфейсом к NPU, можно писать и грузить свой код. Возможно, здесь
будет похожее. И тогда будет щастье :) - Evgeny_CD(29.08.2023 18:41)
- Linux 6.5 будет поддерживать - Evgeny_CD(29.08.2023 18:00)
- Вопрос про GCC по инициализации переменных в .bss и .data il-2(671 знак., 29.08.2023 13:41, ARM, полностью)
- JLink V8 от starterkit.ru + STM32H743. The firmware of the
connected debug probe (S/N : 58001333) does not support the
connected core : Cortex-M7. Please make sure that a current debug
probe model is used and it is running the latest firmware ... Можно
обновить прошивку? Или легко не отделаться? - Rainman62(29.08.2023 09:35, ARM, полностью)
- Производительность Cortex-M* на FFT Evgeny_CD(1 знак., 23.08.2023 12:59, ARM, ссылка, полностью)
- Вопросы от меня продолжаются. ))) Снова AT32F407. При одновременном
реквесте (от одного источника) двух каналов (стримов) ДМА возникает
какой то конфликт, из-за которого код улетает на зацикливание
(строка 359 стартап файла). ЧЯДНТ?: my504(1 знак., 22.08.2023 13:08, ARM, картинка, полностью)
- Какой смысл имеет предупреждение о невыравненном доступе, если
указатель приводится к uint8_t ? memcpy(p, (uint8_t*)&fl_buf[0].val.time[0],4); Функция может начать копировать пачками по 4 байта? - VLLV(21.08.2023 17:29, ARM, полностью)
- Еще вопрос по F407. Есть TIM4, который должен запускать TIM2 и
TIM5, но с разными задержками. Штатную межтаймерную синхронизацию я
запустил по цепочке TIM4CH2===>TIM5. my504(352 знак., 21.08.2023 14:37, ARM, полностью)
- Нашел... Я тотальный косяк. Короче. Объявил константу, адрес
которой писал в ДМА, как локальную - прямо перед строкой
инициализации адреса памяти в ДМА. Грешным делом полагал, что раз
это константа, то она все равно во флеше. Она и была во флеше,
только как то так, что ДМА в результате слала в периферию не 1, а
ноль.... - my504(21.08.2023 16:33)
- Там надо static. Без этого будет временная переменная в стеке. - SciFi(21.08.2023 16:38)
- Ага. Ещё рекомендую "volatile" добавить. Дескать, она изменчива, на
всякий случай перечитай из флеш заново. Но будет тормозить
исполнение доступом к памяти. - Nikolay_Po(21.08.2023 17:08)
- Компилерское volatile не должно влиять на растасовку по адресам,
чем занимается линкер. Если работало в частном случае, значит
где-то в скрипте или сам линкер чухал доп.атрибут и решал что надо
быть отнести данный адреск к той или иной области, в данном случае
FLASH. - RxTx(21.08.2023 18:48)
- Вредные советы. Читать из флеш будет DMA, и ему всё равно, напишете
volatile или нет. - SciFi(21.08.2023 17:10)
- Успех будет лишь в том случае, если адрес константы будет даден
правильный. А если вдруг компилятор решил (допустим, оптимизация на
скорость) оставить константу в ОЗУ? И даст контроллеру ПДП адрес из
ОЗУ, с которым тот не совладает? Volatile заставляет компилятор,
при обращении к константе, обращаться именно к флэш. А значит, и
адрес для ПДП будет взят и передан верный. - Nikolay_Po(21.08.2023 17:14)
- Это не так работает. В заповедях написано, что переменная static
живёт от начала работы программы и до конца. Если взят её адрес,
переменную нельзя выкидывать. Всё, больше там ничего нет. Вы просто
транслируете распространённые мифы. - SciFi(21.08.2023 17:18)
- ну, кстати, Николай интересные вещи говорит ) статик не означает,
что переменная обязательно во флэше расположится - 0men(21.08.2023 17:29)
- Так компилятор и не выкинет переменную (константу), и адрес
сохранит. Просто модифицирует адресную арифметику под ту область
памяти, куда ему удобно эту константу положить. К примеру, GCC с
-O3 -flto, может хранить константы в ОЗУ лишь потому, что для
чтения ПЗУ нужна особая процедура, увеличивающая время выполнения
кода (к примеру, в AVR). И я не мог заставить программу читать
серийный номер прямо из ПЗУ, до тех пор, пока не объявил константу
volatile. - Nikolay_Po(21.08.2023 17:25)
- Проверил еще раз. Нет, показалось. Адрес в ОЗУ. А если static, то
во флеше. Спасибо. - my504(21.08.2023 16:50)
- Но у меня был const uint16_t startTMR2 = 0x1; И ее адрес был во флеше - он начинался с 0x0800.... - my504(21.08.2023 16:43)
- Для начала проверить, что он стартует, если отладчиком туда
записать что надо. Может, банально тактирование на таймер не
подано. Или таймер неправильно сконфигурирован и не считает. - SciFi(21.08.2023 14:43)
- Вопрос по таймерам F407. Есть 3 канала шаговых движков работающих в
микростеппинге 1/256. Частота высокая. Ездят далеко, импульсов
много (больше 65536). Хочется генерить STEP-импульсы не программно,
а таймерами. Импульсы надо а) считать б) выдавать их с заданной
частотой (вообще в идеале переменной). Как вообще выдать N
импульсов в режиме Master-Slave таймерами понятно, и ST-шная
аппнота есть и др. Вопрос в том как подсчитать > 65536
импульсов? RxTx(792 знак., 21.08.2023 17:38, ARM, полностью)
- IAR ARM 9 хочет double вместо float например для fabs, и я так
понимаю по хэдеру math.h, что float остался только для С++. Что
вообще происходит с вещественными числами? Проект на 9 ИАРе для
CM0, проект на 7 ИАРе (где нет никаких предупреждений) для CM4,
бред какой-то получается. - VLLV(21.08.2023 16:04, ARM, полностью)
- Почему, когда я кладу в регистр DMA адрес порта или памяти:
DMA1_CHANNEL1->maddr = (uint32_t)adc_buf; IAR мне правую
сторону подчеркивает и говорит, что я запихиваю большее в меньшее?
Именно IDE IAR-a, не компилятор, тот варнинга не даёт. Всё, как в
примере, размер указателя я проверил, обычные 4 байта. - Idler(18.08.2023 18:36, ARM, полностью)
- Внезапно снова вопрос. STM32F407 (или AT32F407 - не имеет
значения). АЦП в режиме сканирования. Из рефмануала следует, что
при длине группы более 1 входа флаг готовности данных возникает
лишь один раз по завершении преобразования последнего входа из
группы. Вопрос. А как тогда загружать данные АЦП по предыдущим
входам? - my504(17.08.2023 14:39, ARM, полностью)
- Общий файл констант для С и С# ? maleon(392 знак., 16.08.2023 13:13 - 16:23, ARM, полностью)
- Докладываю, работающее решение: maleon(762 знак., 17.08.2023 09:28)
- мб через сериализацию? - Vit(16.08.2023 17:56)
- Ну а почему нельзя сею процедуру софтверно организовать? SERGHIO(872 знак., 16.08.2023 17:50)
- Кстати, что-то на похожую тему на stackoverflow: SciFi(1 знак., 16.08.2023 16:28, ссылка)
- Странно, в обозначении (названии) язык C# есть решетка, а всего, с
чем она обычно должна была бы работать нет. Непорядок - maleon(16.08.2023 16:10)
- Делаем хидер в котором объявляем static const int Conctanta=314;
Хидер инклюдим во все файлы проекта. За одно отключаем
соответствующие предупреждение - IBAH(16.08.2023 14:45)
- Кажись кресты умеют сами определять где extern, но это не точно. - IBAH(16.08.2023 14:39)
- Желание верное. Кросс-языковые, кросс-платформенные и подобные
проекты требуют отдельного обращения. Принято иметь ОДИН исходный
файл с определениями и препроцессирующий инструмент (тулзу,
утилиту), который создаст выходные файлы под разные языки. Для TXT
файла констант вида NAME VALUE такая утилита или скрипт (или две
утилиты, const2c, const2csharp) пишутся быстрее чем ты набил сюда
вопрос, это несколькок строчек. Не надо бояться пистаь скрипты или
си-утилитки. Как RxTx(172 знак., 16.08.2023 14:16)
- Конечно, можно воспользоваться скриптом, скажем на Питоне (ещё один
язык вдобавок), который будет следить за соответствием и приводить
одно в соответствие с другим. Это как решение может быть, но так
делать не хочу, запускать скрипт каждый раз перед компиляцией. Да и
возможны проблемы с переносимостью на другой ПК, где может не быть
Питона, или какого то пакета к нему - maleon(16.08.2023 14:16)
- Всегда можно внедрить в процесс сборки генерацию этих двух файлов
из третьего. Или первого из второго. Или второго из первого. gawk
для этого хорошо подходит. - SciFi(16.08.2023 14:13)
- Вынеси их в переменные сборочных окружений, любым удобным способом. - выaпpвaпp(16.08.2023 14:03)
- нужно этот 1(один) файл прописать в обоих средах, путь к нему
указать и алга. - Nikolay801_(16.08.2023 13:23)
- Цитата: "Часто меняющиеся константы". Не мое дело, но похоже вы
задумали что-то не то. - Cкpипaч(16.08.2023 13:22)
- #define в обоих языках работает одинаково. - =AlexD=(16.08.2023 13:17)
- [off] Eddy_Em(149 знак., 16.08.2023 13:17)