29.12.2013, 22:14
|
|
Прописка
Регистрация: 26.10.2011
Сообщений: 122
Сказал спасибо: 53
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Trial период в ARM
Хотела спросить совета. Клиент хочет купить некое устройство, но платить готов только опробовав его в течение месяца. Поскольку особого доверия именно к этому клиенту нет, а продать хочется, то есть смысл программно ограничить срок работы.
Собственно идея: Т.к. в устройстве используется STM32F103RG задействовать RTC и использовать прерывания от alarm-а и в обработчике которого прописать нечто вроде такого
flash_unlock();
flash_erase_all_pages();
Честно предупредить клиента, что через месяц устройсто перестанет работать. Алгоритм планируется такой:
Батарейка вставлена, устройсво запущено впервые.
1. RTC_SetAlarm(60); //Через 60 секунд будут стерты все страницы flash
2. У программиса есть эти 60 секунд чтобы RTC_SetAlarm(0x278D00); //30 дней.
Не важно как, кнопку нажать или по UART...
Это для народа, который у нас ушлый, может догататься и батарейку через 29 дней достать-вставить....
Собственно спрашиваю у гуру STM нет ли каких подводных камней в таком подходе....
|
|
|
|
30.12.2013, 00:02
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Trial период в ARM
Сообщение от Jane9226
|
Хотела спросить совета. Клиент хочет купить некое устройство, но платить готов только опробовав его в течение месяца. Поскольку особого доверия именно к этому клиенту нет, а продать хочется, то есть смысл программно ограничить срок работы.
Собственно идея: Т.к. в устройстве используется STM32F103RG задействовать RTC и использовать прерывания от alarm-а и в обработчике которого прописать нечто вроде такого
flash_unlock();
flash_erase_all_pages();
Честно предупредить клиента, что через месяц устройсто перестанет работать. Алгоритм планируется такой:
Батарейка вставлена, устройсво запущено впервые.
1. RTC_SetAlarm(60); //Через 60 секунд будут стерты все страницы flash
2. У программиса есть эти 60 секунд чтобы RTC_SetAlarm(0x278D00); //30 дней.
Не важно как, кнопку нажать или по UART...
Это для народа, который у нас ушлый, может догататься и батарейку через 29 дней достать-вставить....
Собственно спрашиваю у гуру STM нет ли каких подводных камней в таком подходе....
|
А нельзя перенести действия в область официальных отношений? Юридический договор о триал периоде, обязательства возврата устройства. В случае невозврата - барьерная неустойка, чтоб мало не показалось. Подписи, мокрые печати. Любой суд обяжет возместить. Да и потом, ОНО надо в одном экземпляре? Если это серия, то о чем речь, рвем серию...
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
30.12.2013, 01:23
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: Trial период в ARM
1. впаяйте батарейку RTC (и можете контролировать ее уровень - при отсутствии см.п.5/6)
2. напишите и 1 раз запустите загрузчик для установки какого нибудь
особого числа в RTC, от которого будете считать 30 дней (защита от тупого обнуления)
3. прошейте свою прогу и следите за датой в RTC
4. при достижении 30 дней трите кристалл
5. если число в RTC будет вне диапазона - трите кристалл - налицо попытка взлома.
6. при потере частоты 32kHz - аналогично
7. не забудьте поставить защиту на чтение/отладку
Последний раз редактировалось Hives; 30.12.2013 в 01:27.
|
|
|
|
30.12.2013, 01:27
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: Trial период в ARM
Можно привязаться к кол-ву включений. На 100 включение стирать все
|
|
|
|
30.12.2013, 02:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,450
Сказал спасибо: 376
Сказали Спасибо 1,060 раз(а) в 624 сообщении(ях)
|
Re: Trial период в ARM
Зачем стирать?
Достаточно сделать так, чтобы демопрошивка каждые 30 секунд "действовала на нервы" какой нибудь рекламой, т.е. прерывала нормальную работу на те же 30 сек. Далее нормальная работа возобновлялась.
И так по циклу.
__________________
Мелочи не решают главного. Они решают всё!
|
|
|
|
30.12.2013, 02:31
|
|
Прописка
Регистрация: 26.10.2011
Сообщений: 122
Сказал спасибо: 53
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Trial период в ARM
Цитата:
|
6. при потере частоты 32kHz - аналогично
|
Спасибо, дельный совет, будем тактироваться от внутреннего генератора, мне точность не нужна...
Цитата:
|
А нельзя перенести действия в область официальных отношений?
|
Можно, но мне более интересена техническая сторона чем юридическая.
|
|
|
|
30.12.2013, 03:16
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,003
Сказал спасибо: 0
Сказали Спасибо 4,946 раз(а) в 2,374 сообщении(ях)
|
Re: Trial период в ARM
Сообщение от gary2007
|
чтобы демопрошивка каждые 30 секунд прерывала нормальную работу на те же 30 сек
|
не всегда возможно и чревато, вплоть до нарушения ТБ
Сообщение от Jane9226
|
мне более интересена техническая сторона чем юридическая
|
хотите оженить клиента?
|
|
|
|
30.12.2013, 06:54
|
|
Прописка
Регистрация: 26.10.2011
Сообщений: 122
Сказал спасибо: 53
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Trial период в ARM
Сообщение от Jane9226
|
Спасибо, дельный совет, будем тактироваться от внутреннего генератора, мне точность не нужна...
|
Облом, от внутреннего генератора (LSI) счетчик не тикает, когда основное питание снято и продолжает тикать с того места, где остановился, когда включаешь (батарейка естественно впаяна) От внешнего кварца все тикает как нужно, но тут другой облом. Объясню на примере. Скажем
RTC_SetAlarm(60); /*Через 60 секунд сработает аларм и прошивка умрет смертью храбрых */
Запускаем, ждем 40 секунд и... выключаем основное питание. Ждем еще 30 секунд, включаем и счетчик продолжает тикать с 70 ти секунд....успешно пройдя "суицидную" цифру 60. Вывод: Хотя счетчик (CNT) и был равен регисту ALR, но поскольку питание было выключено флаг не был установлен, прерывание не сработало после подачи питания. Придется видимо как то обходиться без аларма...
|
|
|
|
30.12.2013, 09:56
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Trial период в ARM
Если отключить батарейку, то у часиков слетит инициализация и значения 4 энергонезависимых регистров в них. Так что определить отключение батерейки нет проблем.
|
|
|
|
30.12.2013, 10:17
|
|
Прописка
Регистрация: 29.06.2010
Сообщений: 104
Сказал спасибо: 14
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
|
Re: Trial период в ARM
Я делал так, создал константу с рассчитанным заранее значением и переменную во флеши, при каждом запуске программы идет их сравнение, в программе запускаешь любой таймер с нужной настройкой и постоянно инкрементируешь переменную! когда значение переменой превышает значение константы делаем что нужно для неработоспособности проги! стирать кристалл думаю не стоит так как после оплаты можно предусмотреть какую нибудь хитрую манипуляцию для лечения!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Книги
|
dosikus |
Делимся опытом |
11242 |
29.12.2015 23:45 |
AVR32 vs ARM CortexM-3?
|
Archer07 |
Микроконтроллеры, АЦП, память и т.д |
17 |
30.01.2012 16:04 |
ARM начинающим с нуля - KEIL с лекарсвом, методички, книги
|
avr123-nm-ru |
Микроконтроллеры, АЦП, память и т.д |
22 |
31.03.2010 00:24 |
ARM & Linux
|
svad0 |
Микроконтроллеры, АЦП, память и т.д |
4 |
13.02.2010 12:54 |
Помогите связать ARM и IAR через WIGGLER
|
kibo |
Микроконтроллеры, АЦП, память и т.д |
1 |
22.12.2008 18:38 |
Часовой пояс GMT +4, время: 23:05.
|
|