Идеология на самом деле очень простая: если вам нужно _надежно_ определять время внутри ключа, оперировать им и измерять - то вам нужен ключ Guardant Code Time. Он для этого и создан.
Моя цель - измерять интервалы времени внутри ключа, не полагаясь на поддержку извне. Вопрос - как использовать ту же time() внутри ключа (для моих целей разница между time() и clock() несущественна). Я не могу собрать программу, которая использует эти функции:
Если в программе есть вызов time(), во время линковки я получаю сообщение об ошибке:
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':
time.c:(.text+0x1c): undefined reference to `_gettimeofday_r'
Если попытаюсь использовать clock(), тогда на линковке:
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':
clock.c:(.text+0x14): undefined reference to `_times_r'
Я плохо знаю runtime библиотеки для ARM|Coretx, подскажите что подключить надо. Мне кажется совершенно невероятным, что существует процессор, который не может вернуть что-нибудь наподобие clock(). Просто по каким-то непонятным причинам этой функции не оказалось в runtime библиотеках для guardant code. Может есть ASM вставка?
Версии инструментов:
GuardantSDK -- 6.1
WinARM -- 20060606
Yagarto -- 2.21 и 2.22
AndreyStepin пишет:Здравствуйте,
Идеология на самом деле очень простая: если вам нужно _надежно_ определять время внутри ключа, оперировать им и измерять - то вам нужен ключ Guardant Code Time. Он для этого и создан.
Если надежность определения времени несущественна, то вы вполне можете вызывать ту же функцию time() в хостовой программе и передавать результат внутрь GrdCodeRun. Длительность времени между выполнениями некоторого кода легко меряется, накладные расходы легко вычисляются.