Перейти к содержанию
    

artemkad

Свой
  • Постов

    2 442
  • Зарегистрирован

  • Посещение

  • Победитель дней

    11

Сообщения, опубликованные artemkad


  1. 9 минут назад, dOb сказал:

    В порядке как описано в проекте. IMHO

    Как ни странно, но Keil передает линковщику объектные файлы в виде *.o, а потому к порядку описанному в проекте это отношения не имеет.

    А вот IAR да, сам передает список и потому уже он устанавливает порядок линковки

  2. 57 минут назад, tonyk_av сказал:

    Если  __PLC_params будет первой в списке переменных, размещаемой в секции, то она будет размещаться с самого начала.

    Если есть, предположим, две переменные указанные для размещения в этой секции, но в разных объектных файлах, которая из них будет первой?

  3. 1 час назад, dimka76 сказал:

    Если кроме самой __PLC_params  в этой секции ничего не будет, то однозначно располагаться будет с самого начала секции.

    А если несколько, да еще и в разных файлах проекта, то порядок размещения начнет зависеть от порядка линковки, который обычно устанавливает среда разработки на свое усмотрение. И тут, внезапно, оказывается, что идея разместить все переменные в отдельном файле оказывается не такой уж и плохой - там порядок будет зависеть только от порядка размещения в файле и все что есть будет видно по месту.

  4. 12 часов назад, tonyk_av сказал:

    Думаю, людям, читавшим мануал на ld, понятно, что массив __PLC_params будет начинаться с адреса 0x08004000.

    Чуток не так - __PLC_params  будет располагаться в секции .plc_params, а вот с какого в ней адреса  это предмет для уточнений.

    5 часов назад, tonyk_av сказал:
    8 часов назад, Intel4004 сказал:

    Во-от, что и требовалось понять. Только без скаттер-файла толку от этого нет.

    Вообще-то это дока на компилятор и атрибуты компилятора.

    Кстати, забавно что базовые библиотеки описывающие доступ к железу которое обычно по фиксированным адресам к услугам линковщика тоже не прибегают.

  5. 31 минуту назад, AlanDrakes сказал:

    Немного усложнённый вариант, уже с двумя транзисторами:

    Нормальный вариант, но или нижний транзистор ставить npn(тогда вместо диодов резисторы) или перед всеми диодами их аноды через резисторы подключить на массу. Иначе диоды нормально не будут закрыты и возможны ошибки определения того, что стало причиной побудки.

    33 минуты назад, AlanDrakes сказал:

    к пину микроконтроллера с внутренней подтяжкой к нулю.

    Ну или так. Хотя далеко не все такое имеют....

  6. 3 часа назад, tonyk_av сказал:

    то я не умею размещать переменные по нужным адресам. Может, хватит глупости говорить?

    Это где я говорил что ты не умеешь? Я намекал, что подобное умение от тебя не замечено на этом форуме на практике. От тебя есть много слов "о всем хорошем и против всего плохого", но вот в коде который ты приводил  "линковщик сам размещал секцию куда ему вздумается". Единственное что ты продемонстрировал это умение указывать выравнивание. Возможно ты и что-то другое умеешь, но тут это умение за тобой не замечено на практике.

    20 минут назад, tonyk_av сказал:

    Как очень кривовато. Сомневаюсь, что Кейл не умеет делать это всё без вынесения в отдельный файл.

    Да что ты говоришь... Ежу понятно, что умеет. Вот только по причинам указанным мной выше, а именно, по причине отсутствия вменяемой док и примеров, люди предпочитают ограничиваться слегка отредактированным куцым примером из доки который хоть как-то работает. А все остальное компенсируется средствами отлично описанного компилятора.

  7. 1 час назад, A.V.Avtomat сказал:

    у, во-первых, заправленность зажигалки проверяется элементарно визуально, не обязательно электроникой,

    А наличие искры - носом. Если газом воняет, но еще  не взорвалось, то искры нет...

  8. 5 минут назад, dimka76 сказал:

    Почему ради одного. Пускай редко, но и потом понадобится.

    Как показывает практика следующий раз придется изучать заново.

    6 минут назад, dimka76 сказал:

    Но там кажется эти секции прямо в GUI можно создать.

    Только в самом простейшем случае. Все что сложнее надо править руками.

  9. 10 минут назад, jcxz сказал:

    А задание размещения абсолютным адресом - потенциальные грабли на будущее.

    Само собой - потенциально это грабли. Вот только альтернатива - изучать ради одного момента по-иди отски описанную доку на компоновщик без возможности найти адекватные примеры и с перспективой наделать еще и кучу маловразумительных ошибок и там. Потому многие и упрощают себе жизнь прямой адресацией из основного кода. Опять-же, Keil почему-то не считает файл компоновщика файлами проекта  и при поиске их игнорирует.

  10. 18 минут назад, jcxz сказал:

    Думаете - в процессе работы в прошивку могут внедриться вирусы? Прямо во флешь???  :shok:

    Зачем-же сразу вирусы... Прошивка может меняться, к примеру в процессе компиляции кода Forth-машины.😜

  11. 13 минут назад, jcxz сказал:

    А что - прошивка может измениться "в процессе её записи в МК или в процессе работы внутри МК"??? Что это за прошивка такая, самоизменяющаяся?

    Ну да, у многих программаторов есть команда прямой записи некоторых данных по конкретному адресу в записываемом МК. Т.е. он пишет прошивку из файла, но по указанному адресу меняет данные на требуемые. А требуемые данные могут формироваться в результате работы скрипта или программы.

    12 минут назад, jcxz сказал:
    12 минут назад, artemkad сказал:

    Причем в обеих случаях линковщик сам размещал секцию куда ему вздумается

    Не бывает такого. Чушь несёте.

    Согласен - не совсем куда вздумается. В место адрес которого определяется объемом предыдущих откомпилированных и размещенных  секций.

  12. 1 час назад, tonyk_av сказал:

    Тут на форуме я уже несколько раз выкладывал примеры скриптов линковщика ld и примеры программ для gcc/g++, показывающие использование автоматического размещения и инициализации переменных во флэш STM32.

    Несколько это пара. Причем в обеих случаях линковщик сам размещал секцию куда ему вздумается, а программе возвращались лишь данные по ее размещению.  Ну а когда понадобилось разместить данные в конкретном месте из-за архитектуры памяти конкретного МК ты предложил ... поставить W25Q с FatFS

  13. 35 минут назад, tonyk_av сказал:

    Я тоже не думаю, а просто знаю и пользуюсь.

    Пока что, судя по предыдущим заявлениям, все ваше знание и пользование заключается в том, что "я не делаю ничего - как линковщик сделает так и лучше".

  14. 2 часа назад, tonyk_av сказал:

    Потому, что линковщик лучше вас вычислит где разместить переменные.

    Да вроде тут речь не о переменных, а о константе. Которая, к примеру, появится в прошивке в процессе записи программы в МК. Таким способом прописываются сериальники и калибровки. Не думаю, что линковщику лучше вычислит как изменится прошивка в процессе ее записи в МК или в процессе ее работы внутри МК.

  15. 48 минут назад, AlanDrakes сказал:

    Простой вариант - разорвать минусовую цепь питания между батареей и устройством при помощи N-канального MOSFET'а. Кнопка через диод будет притягивать затвор к питанию. Второй диод через вывод микроконтроллера служит для удержания транзистора открытым.

    Не, это стремный вариант - отключенный контроллер болтающийся кирпичом между питанием и затвором полевика скорее всего не даст себя нормально отключить.

  16. 3 минуты назад, Метценгерштейн сказал:

    так работает.

    Видишь у тебя резистор обозначен желтыми точками - через него течет ток, а в предыдущем варианте он серый - через него ничего не течет потому как он не подключен

  17. 47 минут назад, Метценгерштейн сказал:

    а почему тут не меняется на выходе напряжение при замыкании- размыкании кнопки?

    Подозреваю надо с эмулировать нагрузку подключив резистор к Vcc иначе падать будет очень долго

  18. 6 минут назад, Метценгерштейн сказал:

    Там если симулировать- как смотреть напряжение на выходах?

    Подозреваю снизу слева выдает ошибку. Отключи конденсатор 10мкФ параллельно батарейке - с точки зрения того симулятора такое недопустимо.

  19. 1 час назад, Метценгерштейн сказал:

    Только нижний транзистор- не надо ли от базы на землю еще резистор 100К, чтобы закрывался быстрее.

    Теоретически - надо, а практически в пределах индустриального исполнения(температуры ниже 85 градусов) и необходимых там скоростях запирания - нет. Биполярник управляется током базы а потому для современных транзисторов можно и без резистора. Там и для верхнего для базы не очень нужен, но там вполне законно может возникнуть желание поставить р-канальный полевик, а потому места для разрядного резистора надо иметь.

    1 час назад, Метценгерштейн сказал:

    Номиналы просчитаны? Или подбирать надо?

    Там о-о-о-чень широкие диапазоны возможных резисторов. Это схема класса "+\- лапоть - сойдет". Будет зависеть в основном от глубины желания сэкономить на потреблении ключа и нежелания выбирать транзисторы. В целом при питании 5В все 20к вполне можно увеличивать до 100к. Если нет желания делать принудительное периодического отключения из-за залипшей кнопки, 1к на pwr_on  можно делать таким-же как и на кнопках.

    1 час назад, Метценгерштейн сказал:

    И транзисторы какие использовать? BC856, BC817?

    Сойдет.

    1 час назад, Метценгерштейн сказал:
    5 часов назад, Plain сказал:

    Наверное, имеет смысл сказать подробнее — кнопка управляет транзистором или стабилизатором через элемент ИЛИ, ко второму входу которого подключён выход МК — такой элемент может быть явным в виде ИС, диодным или даже резисторным.

    А для чего это городить? Есть схема от artemkad выглядит рабочей?

    Там описан общий принцип в том числе и моя схема с резистивным ИЛИ.

    1 час назад, Метценгерштейн сказал:

    Есть ли супервизор, чтобы выполнял подобное

    Как показывает практика супервизор это более редкий зверь чем транзисторы

    • Thanks 1
  20. 12 минут назад, Метценгерштейн сказал:

    не очень понял. Задача- держим 5 сек, после чего МК включается. Тут как это реализовать?

    МК включается сразу и отсчитывает сколько тебе надо. Если больше 5 секунд держится кнопка - продолжает работать. Если короче - отключается вместе с кнопкой.

  21. 5 минут назад, Vasily_ сказал:

    Сделать как советуют Plain и artemkad. Только поставить управляемый стабилизатор, тогда и транзисторы не нужны.

    с управляемым стабилизатором надо как-то разделить сигналы от соседних кнопок. К примеру диодами. С транзистором не надо т.к. его база больше 0.7В не поднимается

    .

  22. 45 минут назад, Метценгерштейн сказал:

    Тогда пока не знаю. Какой- то таймер. Не потребляет. Зажали кнопку на 5 сек- он постоянно выдал 1. 

    Сам от рабочего МК отсчитал свои 10 сек, подал на GPIO, та ресет этому таймеру нажала- он опять выключился и снял выход 1. МК обесточился.

    Пока такие мысли.

    Почти классика

    https://tinyurl.com/2cqsrkjx

    После нажатия на кнопку контроллер включается, сам подает уровень на pwr_on, что надо делает после чего подает на эту ногу ноль отрубая все питание.

  23. Зачем ИМС? Парой транзисторов рвущих собственное питание можно обойтись.

    14 минут назад, Метценгерштейн сказал:

    и дергать от МК ресет ногу 555

    Если с целью снижения потребления, то это еще надо проверить сколько жрет при нажатом Reset.

×
×
  • Создать...