Jump to content

    

Darth Vader

Участник
  • Content Count

    271
  • Joined

Everything posted by Darth Vader


  1. Возможно, в этом и проблема. После перехода из загрузчика в основную прошивку эта функция переопределяет значение VTOR на адрес начало флеш-памяти, т.е. на таблицу векторов загрузчика. А это совсем не то, что требуется для работы прерываний в основной программе.
  2. Понятно. Спасибо за разъяснение. А то думал, что что-то пропустил в описании формата.
  3. Я исходил из этого: Раз поле длины LL имеет размер в 1 байт, то максимальный размер описываемого одной записью области памяти может быть 255 байт (в случае LL=0xFF)
  4. Дыр в таком формате файлов нет по-определению. Он состоит из одной или нескольких записей. Каждая запись описывает непрерывную область памяти размером от 0 до 255 байт, в т.ч. начальный адрес этой области. Т.е. можно описывать фрагментированные по адресному пространству данные. При этом могут получиться дыры. Формат никак не описывает их содержимого. Программатор либо проигнорирует их, либо заполнит некоторым значением по-умолчанию, которое зависит от типа микросхемы.
  5. И что им помешает его украсть? Надпись про то, под какой лицензией вы его распространяете? Они же не выкладывают исходников своего ПО. Там может быть сколько угодно "украденного" кода, и этого никак не проверишь. Не хочешь, чтобы кто-то у тебя что-то украл - просто не говори никому, что это у тебя есть, не выкладывай никуда, молчи в тряпочку. Когда все уверены, что красть у тебя нечего - вот тогда и не украдут. Или вы уверены, что будучи выложенными на гитхабе, ваши проекты могут сделать кого-то счастливее, а мир лучше, и просто не можете держать их в себе, хотите поделиться ими со всем миром?
  6. Мы уже превратились. В углеводородную республику. Торгуем природными ресурсами, ибо обработать их и произвести из них конкурентоспособную на мировом рынке вещь не можем. А если что-то и можем - какова доля от экспорта таковых продуктов, по сравнению с долей от экспорта необработанных природных ресурсов? Оглядываюсь вокруг, пытаясь найти вещи, которые произведены в России, и которые бы имели успех на рынке Европы, США, Азии - и не нахожу. Все либо сделано уже там и импортировано в РФ полностью или по-частям, либо сделано у нас, но там это не нужно - у них своего такого добра хватает (мебель, например), местного производства.
  7. Это потому, что у интиллегентов с ВО развито чувство совести, не позволяющее воровать. Сторож без ВО вынес бы пол склада за одну ночь и свалил. А человеку с ВО совесть не позволяет этого сделать. Так что тут действует стереотип, что человек с ВО - совестливый интеллигент, который чужое не сворует и не продаст. Все зависит от предметной области для которой делается проект. Если для АЭС или ускорителя частиц, или для САР полета крылатой ракеты или гиперзвуковой маневрирующей БЧ - то нужна. А если для системы капельного полива теплицы или просто светодиодом помигать - то нет. Все зависит от задачи, под которую разрабатывается проект. Обычно требуются знания из курса ТОЭ, ТОР, ЦОС, дискретной математики. Ну и цифровые устройства - без них схему не разработаешь. Остальное определяет предметная область применения устройства.
  8. Т.е. схему он не РАЗРАБОТАЛ, а надергал частями из интернета? Точнее даже не схему, а топологию платы? Просто повторил чужой опыт, слегка адаптировав решение под свои потребности, не имея понятия, как это работает? Это по-вашему хороший разработчик? Вам бы на собеседованиях присутствовать. В роли доброго начальника. У вас очень хорошо это получается. Высшего образования нет - да не важно, это 5 лет, потраченных впустую. Опыта программирования нет - ерунда, за 20 минут войдёте в курс дела, потом за год прокачаетесь. Никогда не разрабатывали электропривод - не беда, дадим вам проект системы управления ТЭД электровоза - в интернете кода скачаете, на ютубе видео посмотрите, как-нибудь заведёте. Вон, даже Слесарь без ВО и схемы смог движок крутануть.
  9. Там не скучно. Написано просто, живо, без теоретической тягомотины и высшей математики. Минимум теории, максимум практики. Показан процесс разработки изнутри. Лично мне было очень интересно и познавательно.
  10. Честно говоря, раз вам так понравилось программирование МК в качестве хобби - пусть таковым пока и остаётся. Учитесь, разбирайтесь, копайте глубже и шире. Вобщем, развивайтесь в данном направлении. Для себя, чисто ради интереса. Пройдёт год-два-три и вы сами уже сможете оценить уровень своих компетенций. И решить: превращать это хобби в профессию, или так и оставить в виде технического творчества для души. Просто, для вашего понимания, какие задачи будут стоять перед вами, если все-таки решите сделать это профессией - почитайте хороший цикл статей о разработке электропривода и его системы управления на микроконтроллере: раз, два, три. Сравните сложность и трудоемкость этого проекта с типичными ардуино-проектами для начинающих, на которых вы сейчас практикуетесь. А также необходимые знания в области электротехники. Они у вас есть?
  11. А как же QT? Или на нём бабла по-быстрому не срубить?
  12. Не решает проблемы. В разных местах программы, для разных целей, мне удобно задавать значение разных полей объединения. Где-то слова, где-то массива из 4-х байт. Что-то комитет по стандартизации С++ проворонил этот момент. Конструкторы объединения - интересная идея.
  13. В Си можно сделать так: #include <stdint.h> // Объявляю тип объединения typedef union { uint32_t Word; uint16_t HWord[2]; uint8_t Byte[4]; } WordUnion_t; // Объявляю и инициализирую константный массив из 3-х объединений const WordUnion_t MyVal[3] = { {.Byte = {0x12,0x34,0x12,0x34}}, // Это объединение инициализировано, как массив байт {.HWord = {0x5678,0x1234}}, // Это объединение инициализировано, как массив полуслов {.Word = 0x12345678} // Это объединение инициализировано, как массив слов }; С++ такое не поддерживает. Ему нельзя явно задать поле объединения, которое я хочу инициализировать. Убираем имена полей и пытаемся инициализировать, как обычные структуры в С++: const WordUnion_t MyVal[3] = { {0x12,0x34,0x12,0x34}, {0x5678,0x1234}, {0x12345678} }; Компилятор и на это ругается. Только элемент MyVal[2], по его мнению, инициализирован верно. Эксперимент показал, что инициализировать объединение в С++ можно только по полю, объявленному первым при описании этого объединения. В моем случае, по .Word. Что бы мы ни писали в инициализаторах, он расценивает это, как значение поля Word. Собственно, вопрос: а если мне надо/удобно инициализировать моё объединение по другому полю, неужели синтаксис языка этого не позволяет? Странное впечатление создается. Язык большой, развесистый, позволяет сделать кучу всего несколькими разными способами, а такого простого действия, как инициализации нужного поля объединения - не позволяет.
  14. А вот в этой статье автор делает вывод, что С++ не так уж и нужен, и привносит больше сложности и запутанности в проект, нежели упрощает его (ради чего весь С++ и задумывался). Так что у каждого по этому вопросу своё мнение.
  15. Cortex®-M7

    В том сообщении была шутка. Сарказм. Картинка относилась к тому, что вы её не поняли и восприняли всерьёз, хотя смайлик в конце намекал, что это именно шутка. Про С++ в МК можно почитать, например, тут. В начале статьи есть ссылка на предшествующую ей. Или в этой статье.
  16. Cortex®-M7

    Все индивидуально. Кто-то жить без этого нового не может, а кому-то и С99/С++2003 выше крыши, и большего не надо. Начать можно с этого обзора. А дальше решить, нужно оно именно вам или нет.
  17. Cortex®-M7

    Не хватает, если хочешь пользоваться возможностями С++ 11/14/17. Если пользуешься только С89/С99/С++98 то всего хватает. Самый простой пример - позиционная инициализация структур. Отличная вещь, не надо помнить порядок следования полей внутри структуры. Надо лишь знать их имена. Но версия 5 её не поддерживает. Совсем.
  18. В выпадающем списке на вкладке Target можете выбрать версию 6.6. Версия 6 развивается, поддерживает современные стандарты С/С++. Версия 5 даже С/С++ 11 поддерживает весьма ограниченно. А прошло уже 9 лет...
  19. Есть мнение, что Н - это Низкочастотный, а не Ножевой.
  20. Cortex®-M7

    Его надо выбрать вручную в настройках проекта на вкладке опций С/С++ в верхнем правом углу. По-умолчанию выбран 5.
  21. Нормально размещает. Абсолютных адресов размещения секций вы ему не задали. Значит, линкер имеет право размещать секции как угодно по своему усмотрению внутри адресного пространства ОЗУ, лишь бы они не накладывались друг на друга и умещались там. Мог бы стек разместить в начале, потом кучу, потом bss. Или куча-стек-bss. Все варианты правильные и рабочие. Для изменения порядка размещения или задания привязки положения секций к фиксированным адресам надо явно указывать это линкеру в sct-файле.
  22. Попробуйте разделить выражение явно, как его вычисляет ядро и посмотреть, где случится хардфолт:
  23. Раз доступ к байту всегда выровнен, значит он разрешен.
  24. Keil, Create Library

    Для С++ это значит, что при написании библиотечного класса количество .срр файлов будет равно количеству методов в классе, исключая встраиваемые?