Jump to content

    

Darth Vader

Участник
  • Content Count

    194
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Darth Vader

  • Rank
    Частый гость

Recent Profile Visitors

772 profile views
  1. Приведение типов. Сначала целого к указателю на структуру, затем указателя к целому числу.
  2. Вот этого как раз и не гарантируется. Зависит от реализации. Может от старшего к младшему. Как big endian vs little endian. На счет непрерывности следования битовых полей друг за другом (без зазоров) и расположения строго в последовательности объявления - не помню. Но может тоже быть не стандартизировано. Тогда вообще ни в чем нельзя быть уверенным.
  3. А почему constexpr uint32_t ADR = (uint32_t)(&(RCC->CR)); не работает? Что есть в выражении справа от знака присваивания того, что ещё не известно на этапе компиляции или что может измениться в рантайме? Я ничего такого там не вижу. Всё известно на момент объявления ADR.
  4. ... или создать статическую константную строку внутри функции и использовать её там. Ограничив тем самым область видимости строки телом функции и не расходуя впустую стек. uint32_t COM_Save(uint32_t argc, char** args) { int status; static const char ok[] = "Data Save OK\r"; static const char err[] = "Data Save ERROR\r"; status = FLASH_WriteSerializedData(FLASH_PARAM_PAGE); if (status == 0) SYS_SendData(ok); else SYS_SendData(err); return MSG_OK; }
  5. У неё несколько особенностей, определяющих её применение: 1. Малое число транзисторов в ядре, и, как следствие, малая площадь кристалла, меньшая по сравнению с СМ3 цена. 2. Малое энергопотребление. Так что сфера применения МК с ядром СМ0 - маленькие дешовые портативные устройства с батарейным питанием: трекеры, велокомпьютеры и т.п. Если п. 2 можно достигнуть и на МК с ядром СМ3 (STM32L152), то п. 1 для СМ3 недостижим - ядра СМ3, СМ4, СМ7 сложнее и больше, чемСМ0, и от этого никуда не уйти.
  6. На сайте Сеггера прямо написано, что J-link Edu не поддерживает J-flash. Это значит, что никакого официального/законного/честного способа нет.
  7. А ещё инсталлятор CubeIDE не может начать установку программы из папки, путь к которой содержит кириллицу! Инсталлятор, Карл !!! И кто-то из них, то ли CubeIDE, то ли CubeMX, то ли оба некорректно работают в системе из под пользователя с кириллицей. Создают в папке c:\Users\ ещё 2 папки с длинными именами-кракозябрами. Вобщем, тушите свет.
  8. Шёл 2020 год, а ПО так и не научилось корректно работать с кириллицей. Словно снова попал в 97.
  9. Ещё один баг. CubeMX 5.5.0, STM32CubeF1 Firmware Package V1.8.0 генерация кода для MDK-ARM. Если в пути к папке с проектом (или в имени проекта) имеется кириллица - проект генерируется с ошибкой. В проект не добавляется стартап. Хотя он и лежит там. Приходится добавлять вручную. Сам Куб при этом предупреждает, что с проектом что-то не так - есть проблемы.
  10. Посмотрите энциклопедию знаний Амперки. Там есть раздел по программированию на С++. Не бойтесь, плюсы там лишь для красного словца. До ООП там дело не доходит, всё ограничивается Си-подмножеством, базовыми понятиями. Ну и впринципе на сайте Амперки много информации по Ардуино.
  11. И можно будет смело претендовать на должность заместителя директора российского офиса Альтиум. Как минимум.
  12. Нельзя. Делите большую схему на несколько листов. Работать с длиными портянками (А2х5 и т.п.) неудобно.
  13. В версии 6.40 Последовательность не помню. Подбирал экспериментально. Попробуйте сначала FlashDL, потомFlashBP и JFlash. Не требует обновлений - нормально. Для v8 ничегонового не появляется. Для них последняя прошивка от ноября 2014 года.
  14. Выделение места под стек и кучу в Си

    На первом этапе я хотел полностью повторить ассемблерный стартап в части резервирования места под кучу и стек но на С/С++. Т.е. объявить дефайнами размеры стека и кучи, объявить 2 массива соответствующих размеров. Один резервирует память под стек, второй под кучу. На втором добавить ещё пару дефайнов - адреса размещения стека и кучи в памяти и атрибуты __attribute__((at(address))) для масивов, чтобы поместить их в нужные мне места. Вот, собственно, вся задача. А потом возник вопрос, а не следует ли как-то дополнительно сообщить компилятору/линкеру об адресах размещения и размерах областей стека и кучи? Если этого не сделать, то где компилятор выделит память под объект, встретив в коде malloc() или new() ? В конечном итоге полностью отказаться от ассемблерного стартапа, заменив его на С\С++ стартап.