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

adnega

Свой
  • Постов

    3 594
  • Зарегистрирован

  • Посещение

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

    3

Весь контент adnega


  1. Да, но размер и положение задается в скрипте линкера (и в настройках проекта?).
  2. Я бы еще корректность инициализации кучи проверил.
  3. В обработчике HF можно узнать значения регистров R0, R1, R2, R3, R12, LR, PC, XPSR. Например, по PC (и LR) в листинге можно найти кусок кода с проблемой.
  4. В чем сложность показать подключение?
  5. Очень помогло если бы вы показали подключение, все сигналы между контроллером и программатором.
  6. У вас Software reset, а нужно железный. Частоту уже рекомендовали понизить.
  7. Как вариант, еще RESET на МК нужно завести с программатора, а в утилите программирования в настройках указать Connect Under Reset. Может, частоту SWD нужно снизить.
  8. Я думаю, на T_VCC должно быть питание с таргета. А на GNDDetect должно быть GND. Вы какими сигналами соединили программатор и контроллер?
  9. Там что-то типа Vtarget есть, чтобы подать VCC от таргета?
  10. Можно попробовать софтово возбудить exti-прерывание (EXTI_SWIER1), чтобы исключить вопросы к обработчику.
  11. Я тоже зависаний никогда не видел, но в спецификации указано. Например, из SPI-режима без передергивания питания никак в SD-режим не вернуться. И неуправляемой подтяжки хватает, чтобы паразитно карту запитать, поэтому все подтяжки вешаю на тот же ключ.
  12. Я подтяжки делаю к питанию карты, а питание карты подаю через управляемый ключик, т.к. карта требует в некоторых ситуациях "power cycle".
  13. в файле bl_export.c //----------------------------------------------------------------------------- // APPLICATION //----------------------------------------------------------------------------- #ifndef IS_BOOTLOADER const volatile sBL_EXPORT bl_export __attribute__((used, section(".bl_export"))); //----------------------------------------------------------------------------- // BOOTLOADER //----------------------------------------------------------------------------- #else // IS_BOOTLOADER const sBL_EXPORT bl_export_func __attribute__((used, section(".bl_export"))) = { &set_pin, // bl_set_pin &get_pin, // bl_get_pin }; #endif // IS_BOOTLOADER в файле bl_export.h //----------------------------------------------------------------------------- // Описание типов функций //----------------------------------------------------------------------------- typedef void t_bl_set_pin(const WORD pin, const BYTE value); typedef int t_bl_get_pin(const WORD pin); //----------------------------------------------------------------------------- // typedef struct sBL_EXPORT //----------------------------------------------------------------------------- typedef struct sBL_EXPORT { t_bl_set_pin *bl_set_pin; t_bl_get_pin *bl_get_pin; }; в приложении bl_export.bl_set_pin(WORKLED_PIN, wl_state? 1 : 0); скрипт линкера библиотеки MEMORY { RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 32K FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 16K - 240 - 16 BL_EXPORT(rw!x) : ORIGIN = 0x08003F00, LENGTH = 240 } SECTIONS { .bl_export : { KEEP(*(.bl_export)); } >BL_EXPORT } скрипт линкера приложения MEMORY { RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 32K BOOTLOADER (rx) : ORIGIN = 0x08000000, LENGTH = 16K - 240 - 16 BL_EXPORT(rw!x) : ORIGIN = 0x08003F00, LENGTH = 240 } SECTIONS { .bl_export (NOLOAD) : { KEEP(*(.bl_export)); } >BL_EXPORT }
  14. Не совсем понял этот пункт Типа, он запускается при минимум 1.7В, а затем может до 0.6В ?
  15. Это для честных пользователей или для уличения вредителей? Просто, если вредитель подготовленный, то всякие внешние решения он может обойти. А tamper, подключенный к МК уже не обойти.
  16. Может, их можно собрать в структуры, а затем вообще избавиться от невыровненных данных. В любом случае, оставлять указатели, по-моему, зло. В таком случае выдается предупреждение, что атрибут будет проигнорирован: *(_packed int*)p+1 = 0x12345678;
  17. Можно typedef struct sARP_RECORD { sMAC_ADR mac; sIP_ADR ip; DWORD time; BYTE used; } __attribute__((packed)) sARP_RECORD;
  18. SPN - это как именно данные трактовать.
  19. Главное в крайности не впадать. Наемный работник, если он такой гениальный и прищемленный руководством, может вполне назарабатывать себе раза в три-пять больше. Да, это не $M, но достойно жить вполне хватит. Да, с наемной работой придется расстаться. Налоги на УСН вполне посильные. Я до ИП работал по договорам с НДФЛ 13%. Тут условно УСН 7%. Почти в два раза выгоднее.
  20. Налоговое законодательство самое изменчивое, но оно таким и должно быть для выполнения своих функций. Кста, в том году обязательные платежи за себя должны были быть повышены, но остались на прежнем уровне. Я обычно заранее все плачу, поэтому как бы переплатил. Вариант, но там нужно смотреть на ограничения. У меня жена на патенте работала два года. Лучше бы сразу на УСН вела деятельность - до сих пор аукается. Долго рассказывать, но я для себя сделал вывод, что лучше пользоваться чем-то знакомым для самих налоговиков, а не экзотикой (типа патента).
  21. Оформить ИП и вкалывать на полную катушку с уплатой всех налогов.
  22. Вот архив с исходниками.
  23. Давно аналогичной проблемой озадачен. Если юзеры не будут ломать прошивку, то самый простой и удобный способ - генерация какой-нить контрольной суммы с ID-чипа и какой-то иной информацией. Т.е. юзеры дают вам значение функции от ID-чипа (seed=f1(ID)). Вы в ответ передаете другое значение (key=f2(seed)). Юзеры используют key для инициализации устройства. Второй вариант - шить секретный загрузчик. Тут все просто, понятно, надежно, но нужно физически контактировать с чипом или изделием. Третий вариант - некое аппаратное устройство, которое проинициализирует изделие. В этом устройстве вами будет заложено N штук лицензий с возможностью пополнения.
×
×
  • Создать...