<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум Guardant &mdash; Время в GuardantCode]]></title>
		<link>https://forum.guardant.ru/topic/229/</link>
		<atom:link href="https://forum.guardant.ru/feed/rss/topic/229/" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Время в GuardantCode».]]></description>
		<lastBuildDate>Wed, 31 Oct 2012 10:59:17 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Время в GuardantCode]]></title>
			<link>https://forum.guardant.ru/post/1098/#p1098</link>
			<description><![CDATA[<p>Ответ зачтён и понят.</p><p>Со своей стороны хочу предложить несколько идей:<br /></p><ul><li><p>Можно добавить функцию GcaGetUptime() -- сколько времени прошло с момента подключения устройства</p></li><li><p>Можно модифицировать функцию GcaGetTime() чтобы на НЕ time ключах выдавала время с компьютера и при этом возвращала код ошибки GrdE_NoService, например. Сейчас поля данных не инициализируются </p></li></ul><p>Понятно, что компании надо продавать Guardant Time, и понятно, что функционал обычных Code должен быть меньше. Предлагаю только сделать это не за счёт полного отключения функционала,, а лучше за счёт снижения точности. Например GcaGetUptime() может возвращать только число секунд, а GcaGetTime() на не-Time ключах априори не подходит для защитных алгоритмов, так что Code и Code-Time не конкуренты. Кстати и точность тоже можно понизить.</p><p>PS: как мне кажется, такой функционал будет полезен для всех типов ключей, включая старые ARM.</p>]]></description>
			<author><![CDATA[null@example.com (Ираклий)]]></author>
			<pubDate>Wed, 31 Oct 2012 10:59:17 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1098/#p1098</guid>
		</item>
		<item>
			<title><![CDATA[Re: Время в GuardantCode]]></title>
			<link>https://forum.guardant.ru/post/1096/#p1096</link>
			<description><![CDATA[<p>Сходу мы вам помочь не сможем. Описанный вами функционал наверняка существует в микропроцессоре ключа, но мы не ставили цель его экспортировать для клиентов. Более того, микропроцессоры в наших ключах могут меняться (даже внутри одного поколения ключей) и некоторые возможности могут отличаться по реализации. </p><p>Наша задача, как поставщика продукции, предоставить какой то ограниченный функционал который мы будет поддерживать независимо от аппаратной реализации ключей. И указанная вами функция в список не входит, т.к. для работы со временем у нас есть модели Code Time. </p><p>Поэтому вы можете самостоятельно посмотреть что за процессор в вашем ключе, воспользоваться Google и изучить вопрос. Это самый надежный метод. Я же отправлю запрос разработчикам и попробую поставить вопрос о включении такой возможности в декларируемый API наших ключей, но по срокам ничего обещать не могу.</p><p>Готового решения для текущего поколения ключей у нас нет.</p>]]></description>
			<author><![CDATA[null@example.com (AndreyStepin)]]></author>
			<pubDate>Wed, 31 Oct 2012 08:00:26 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1096/#p1096</guid>
		</item>
		<item>
			<title><![CDATA[Re: Время в GuardantCode]]></title>
			<link>https://forum.guardant.ru/post/1094/#p1094</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Идеология на самом деле очень простая: если вам нужно _надежно_ определять время внутри ключа, оперировать им и измерять - то вам нужен ключ Guardant Code Time. Он для этого и создан.</p></blockquote></div><p>Моя цель - измерять интервалы времени <em>внутри</em> ключа, не полагаясь на поддержку извне. Вопрос - как использовать ту же time() <em>внутри</em> ключа (для моих целей разница между time() и clock() несущественна). Я не могу собрать программу, которая использует эти функции:</p><p>Если в программе есть вызов time(), во время линковки я получаю сообщение об ошибке:<br /></p><div class="codebox"><pre><code>Linking: .out/test_.elf
d:/dev/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/bin/ld.exe: address 0x40008300 of .out/test_1.elf section .stack is not within region RAM
d:/dev/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libc.a(time.o): In function `time&#039;:
time.c:(.text+0x1c): undefined reference to `_gettimeofday_r&#039;</code></pre></div><p>Если попытаюсь использовать clock(), тогда на линковке:<br /></p><div class="codebox"><pre><code>Linking: .out/test_.elf
d:/dev/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/bin/ld.exe: address 0x40008300 of .out/test_1.elf section .stack is not within region RAM
d:/dev/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libc.a(clock.o): In function `clock&#039;:
clock.c:(.text+0x14): undefined reference to `_times_r&#039;</code></pre></div><p>Я плохо знаю runtime библиотеки для ARM|Coretx, подскажите что подключить надо. Мне кажется <em>совершенно невероятным</em>, что существует процессор, который не может вернуть что-нибудь наподобие clock(). Просто по каким-то непонятным причинам этой функции не оказалось в runtime библиотеках для guardant code. Может есть ASM вставка? </p><p>Версии инструментов:<br /></p><ul><li><p>GuardantSDK -- 6.1</p></li><li><p>WinARM -- 20060606</p></li><li><p>Yagarto -- 2.21 и 2.22</p></li></ul><br /><div class="quotebox"><cite>AndreyStepin пишет:</cite><blockquote><p>Здравствуйте,</p><p>Идеология на самом деле очень простая: если вам нужно _надежно_ определять время внутри ключа, оперировать им и измерять - то вам нужен ключ Guardant Code Time. Он для этого и создан.</p><p>Если надежность определения времени несущественна, то вы вполне можете вызывать ту же функцию time() в хостовой программе и передавать результат внутрь GrdCodeRun. Длительность времени между выполнениями некоторого кода легко меряется, накладные расходы легко вычисляются.</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (Ираклий)]]></author>
			<pubDate>Mon, 29 Oct 2012 10:06:35 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1094/#p1094</guid>
		</item>
		<item>
			<title><![CDATA[Re: Время в GuardantCode]]></title>
			<link>https://forum.guardant.ru/post/1093/#p1093</link>
			<description><![CDATA[<p>Здравствуйте,</p><p>Идеология на самом деле очень простая: если вам нужно _надежно_ определять время внутри ключа, оперировать им и измерять - то вам нужен ключ Guardant Code Time. Он для этого и создан.</p><p>Если надежность определения времени несущественна, то вы вполне можете вызывать ту же функцию time() в хостовой программе и передавать результат внутрь GrdCodeRun. Длительность времени между выполнениями некоторого кода легко меряется, накладные расходы легко вычисляются.</p>]]></description>
			<author><![CDATA[null@example.com (AndreyStepin)]]></author>
			<pubDate>Mon, 29 Oct 2012 08:04:04 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1093/#p1093</guid>
		</item>
		<item>
			<title><![CDATA[Время в GuardantCode]]></title>
			<link>https://forum.guardant.ru/post/1087/#p1087</link>
			<description><![CDATA[<p>Я разрабатываю программу загружаемую в Guardant Code (тот, который НЕ Time) и мне понадобилось в загружаемом коде определять время. Любое время которое как-то можно привязать к реальному. Например - число тиков от момента подачи питания на устройство, по гринвичу, etc... Точной привязки не надо, достаточно уметь определять длительность между выполнением некого кода. </p><p>Использовать time() нельзя, не слинкуется, GcaGetTime() возвращает GrdE_NoService.</p><p>Есть какие-нибудь идеи, может я что проглядел в API?</p>]]></description>
			<author><![CDATA[null@example.com (Ираклий)]]></author>
			<pubDate>Wed, 24 Oct 2012 16:44:56 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1087/#p1087</guid>
		</item>
	</channel>
</rss>
