<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Guardant &mdash; Время в GuardantCode]]></title>
	<link rel="self" href="https://forum.guardant.ru/feed/atom/topic/229" />
	<updated>2012-10-31T10:59:17Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.guardant.ru/topic/229/</id>
		<entry>
			<title type="html"><![CDATA[Re: Время в GuardantCode]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1098/#p1098" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Ираклий]]></name>
				<uri>https://forum.guardant.ru/user/412/</uri>
			</author>
			<updated>2012-10-31T10:59:17Z</updated>
			<id>https://forum.guardant.ru/post/1098/#p1098</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Время в GuardantCode]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1096/#p1096" />
			<content type="html"><![CDATA[<p>Сходу мы вам помочь не сможем. Описанный вами функционал наверняка существует в микропроцессоре ключа, но мы не ставили цель его экспортировать для клиентов. Более того, микропроцессоры в наших ключах могут меняться (даже внутри одного поколения ключей) и некоторые возможности могут отличаться по реализации. </p><p>Наша задача, как поставщика продукции, предоставить какой то ограниченный функционал который мы будет поддерживать независимо от аппаратной реализации ключей. И указанная вами функция в список не входит, т.к. для работы со временем у нас есть модели Code Time. </p><p>Поэтому вы можете самостоятельно посмотреть что за процессор в вашем ключе, воспользоваться Google и изучить вопрос. Это самый надежный метод. Я же отправлю запрос разработчикам и попробую поставить вопрос о включении такой возможности в декларируемый API наших ключей, но по срокам ничего обещать не могу.</p><p>Готового решения для текущего поколения ключей у нас нет.</p>]]></content>
			<author>
				<name><![CDATA[AndreyStepin]]></name>
				<uri>https://forum.guardant.ru/user/8/</uri>
			</author>
			<updated>2012-10-31T08:00:26Z</updated>
			<id>https://forum.guardant.ru/post/1096/#p1096</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Время в GuardantCode]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1094/#p1094" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Ираклий]]></name>
				<uri>https://forum.guardant.ru/user/412/</uri>
			</author>
			<updated>2012-10-29T10:06:35Z</updated>
			<id>https://forum.guardant.ru/post/1094/#p1094</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Время в GuardantCode]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1093/#p1093" />
			<content type="html"><![CDATA[<p>Здравствуйте,</p><p>Идеология на самом деле очень простая: если вам нужно _надежно_ определять время внутри ключа, оперировать им и измерять - то вам нужен ключ Guardant Code Time. Он для этого и создан.</p><p>Если надежность определения времени несущественна, то вы вполне можете вызывать ту же функцию time() в хостовой программе и передавать результат внутрь GrdCodeRun. Длительность времени между выполнениями некоторого кода легко меряется, накладные расходы легко вычисляются.</p>]]></content>
			<author>
				<name><![CDATA[AndreyStepin]]></name>
				<uri>https://forum.guardant.ru/user/8/</uri>
			</author>
			<updated>2012-10-29T08:04:04Z</updated>
			<id>https://forum.guardant.ru/post/1093/#p1093</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Время в GuardantCode]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1087/#p1087" />
			<content type="html"><![CDATA[<p>Я разрабатываю программу загружаемую в Guardant Code (тот, который НЕ Time) и мне понадобилось в загружаемом коде определять время. Любое время которое как-то можно привязать к реальному. Например - число тиков от момента подачи питания на устройство, по гринвичу, etc... Точной привязки не надо, достаточно уметь определять длительность между выполнением некого кода. </p><p>Использовать time() нельзя, не слинкуется, GcaGetTime() возвращает GrdE_NoService.</p><p>Есть какие-нибудь идеи, может я что проглядел в API?</p>]]></content>
			<author>
				<name><![CDATA[Ираклий]]></name>
				<uri>https://forum.guardant.ru/user/412/</uri>
			</author>
			<updated>2012-10-24T16:44:56Z</updated>
			<id>https://forum.guardant.ru/post/1087/#p1087</id>
		</entry>
</feed>
