VxWorks
@ 23-04-2008, 01:01
Как получить реальное время и дату, если time() возращает uptime а не секунды с 1 января 1970 года? now() отсутствует как класс.
Вот такой вот вопросец :) Я уже часа три бьюсь над ним...
а в каком виде оно возвращает аптайм? все равно в секундах с начала эпохи?
Манов, как я понимаю, нету, посмотреть что они сами пишут про свои интерпретации нельзя. А вообще часы в системе есть? дату и время оно знает? А то может оно аптайм показывает потому, что у нее дата при включении сбрасывается на начало эпохи?
в качестве варианта могу предложить такое - создать файл (если уже есть, то тачнуть его (utime)) и потом попытаться почитать дату и время модификации файла (stat).
VxWorks
@ 23-04-2008, 10:08
Манов нет. Часы в системе есть, причем правильные, однако показываются только одной программой, сырцов от которой нет.
В системе date возращает 01 Января 1970 + время, прошедшее с момента рестарта системы. Тоже самое выдает и time().
Все файлы имеют дату в 1970 году. Для системы это некритично.
Вот такие дела... rdate в системе тоже нет, может, скомпилировать какой-нибудь ntp клиент?
дык если системные часы показывают хреновое время, то понятно, что time() его и выдает.
А, собственно, что мешает на старте системы устанавливать системное время правильно по твоей программе?
что-то типа
date `mycooldateprog`
ну там с форматом только надо разобраться, но это не должно быть сложно.
А потом и time() будет правду говорить.
P.S. Можно и ntp, но оно тебе надо?
VxWorks
@ 23-04-2008, 16:02
Дык та программа время не выдает, я только показывает на дисплее. Причем, не всегда, а только когда захочет. Я сильно подозреваю, что в нее встроен ntp клиент, но до него не добраться, ибо он часть экзешника.
Я хочу написать простую программу, чтобы показывать время на дисплее постоянно. Дисплейную часть я уже освоил, а вот со временем облом.
ндааа... тебе надо топик переименовать из "программирование в линуксах" на "как побороть эту гадость с недолинуксом внутри" :)
И, кстати, не думаю, что там у тебя ntp внутри. Был-бы ntp - он-бы тебе системное время выставлял. Этот момент можно проверить очень просто, кстати. Отруби девайс от интернета и проверь покажет-ли он время. Если да - значит к ntp оно отношения не имеет, время есть где-то внутри. Но вот где... Но это уже не по линуксу вопрос, а по твоей конкретной железяке, ибо у него системное время не совпадает с нормальными часами.
Дизасм, дебаг и патч оригинальной проги. :drag:
VxWorks
@ 23-04-2008, 21:14
Без подключения к Инету девайс не запускается и время не показывается.
Set
А как дизассемблить ARM9 под Линуксами? Я могу вытащить экзешник в комп.
QUOTE (VxWorks @ 23-04-2008, 13:14) |
Без подключения к Инету девайс не запускается и время не показывается.
|
в очердной раз у меня созрело предложение выкинуть этот девайс в мусорку. Или не выкидывать, но и не мучаться.
IDA Pro должно работать с arm9.
VxWorks
@ 24-04-2008, 00:16
Короче, посмотрел я куда лезет прога. А лезет она в /dev/rtc.
Можно ли как-то посмотреть, что есть этот /dev/rtc и как к нему обращаться7
QUOTE (VxWorks @ 23-04-2008, 16:16) |
Короче, посмотрел я куда лезет прога. А лезет она в /dev/rtc. Можно ли как-то посмотреть, что есть этот /dev/rtc и как к нему обращаться7 |
в нормальных линуксах есть комманда hwclock, она умеет читать и писать rtc.
Выкинуть девайс нафиг. :actu:
VxWorks
@ 24-04-2008, 01:49
OK, нашел сырцы rdate и скомпилировал, но работать оно нифига не хочет. Подозреваю, что проблема в библиотеках, то бишь, компилируется оно с библиотекой для хоста, а не для таргета. Как заставить компилятор использовать правильные библиотеки? Я могу их скопировать с девайса, но хедеров там нет, только сами библиотеки. libc.so.6 и т.п.
-L, если мне память не изменяет. Но я никогда не кросс-компилил, не знаю тонкостей.
Попробовать написать маленькую прогу на сях и почитать /dev/rtc, как в мане написано сложно? Хотя... все равно ведь кросс-компилить надо
Brait
@ 24-04-2008, 07:50
VxWorks, а ты на hwclock смотрел? Она есть? Работает?
VxWorks
@ 24-04-2008, 11:28
FiL
-L задает директории поиска для библиотек, -l саму библиотеку. Но компилятор все равно не хочет подключать ее.
К слову о мане и чтении /dev/rtc - а как его читать? Открыть как файл и скинуть поток сознания с него в другой файл, чтобы посмотреть что он выдает?
Brait
Нету.
ну там в мане чего-то написано про read, ioctl...
я не программер, не знаю.
Было бы логично посмотреть в сорсы hwclock на любой другой версии глюникса.
VxWorks
@ 24-04-2008, 19:19
QUOTE (Set @ 24-04-2008, 16:57) |
Было бы логично посмотреть в сорсы hwclock на любой другой версии глюникса. |
А зачем? В системе же системных часов нет. А к /dev/rtc обращается только сама прога, причем хз как.
Я вот тут с rdate ковыряюсь - скачал сорсы, но вот как заставить эту сволочь компилироваться супротив правильной библиотеки - не знаю.
QUOTE (VxWorks @ 24-04-2008, 11:19) |
QUOTE (Set @ 24-04-2008, 16:57) | Было бы логично посмотреть в сорсы hwclock на любой другой версии глюникса. | А зачем? В системе же системных часов нет. А к /dev/rtc обращается только сама прога, причем хз как.
Я вот тут с rdate ковыряюсь - скачал сорсы, но вот как заставить эту сволочь компилироваться супротив правильной библиотеки - не знаю. |
hwclock в обычных юниксах как раз читает rtc и по нему выставляет системное время. И наоборот. то есть это как раз прога для работы с /dev/rtc.
Так что идея на посмотреть сырцы hwclock - это очень здраво. А заодно можно попробовать ее скомпились.
Brait
@ 25-04-2008, 03:08
Глянул я исходники hwclock, действительно ничего особенного, простое чтение из "/dev/rtc" через ioctl (обычный read результата не даст). Но ведь header'ы кернела нужны, они есть? И кросс-компиляцией я никогда не занимался, знания чисто теоретические.
VxWorks
@ 25-04-2008, 10:23
Проблема в том, что нет ничерта, в системе два файла .h - zconf.h и zlib.h
Как сами понимаете, к кернелу они отношения не имеют.
а что гугл говорит на предмет скомпилированного hwclock'a для твоей архитектуры?
VxWorks
@ 25-04-2008, 16:33
Ничего не говорит - чип довольно редкий :(
Brait
@ 28-04-2008, 02:47
Тогда давай подробности, типа 'uname -a' (если есть), названия чипа и т.д. Хоть узнаем, с чем мучаемся.