реклама на сайте
подробности

 
 
> ecos изменение системного времени, ecos изменение системного времени для x86
Eug28
сообщение Aug 24 2011, 14:20
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 11-10-08
Из: Киров
Пользователь №: 40 876



Необходимо из под ecos менять текущее время в BIOSe, не могу найти при помощи какой функции это можно сделать.
Может кто сталкивался, помогите пожалуйста.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 1)
gosha
сообщение Sep 14 2011, 14:30
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 15-06-04
Из: Менделеево
Пользователь №: 30



QUOTE (Eug28 @ Aug 24 2011, 18:20) *
Необходимо из под ecos менять текущее время в BIOSe, не могу найти при помощи какой функции это можно сделать.
Может кто сталкивался, помогите пожалуйста.

Я бы предложил айти исходники драйвера RTC.
И посмотрел, на какие ф-ии он завешивается.

Команда: установить/считать дату из под Redboot
CODE
RedBoot_cmd("date",
            "Show/Set the time of day",
            "[YYYY/MM/DD HH:MM:SS]",
            do_time_date
    );

static bool
verify(cyg_uint32 val, int min, int max, char *id)
{
    if (((int)val < min) || ((int)val > max)) {
        diag_printf("%s is out of range - must be [%d..%d]\n", id, min, max);
        return false;
    }
    return true;
}

void
do_time_date(int argc, char *argv[])
{
    cyg_uint32 now = Cyg_WallClock::wallclock->get_current_time();
    cyg_uint32 year, month, mday, hour, minute, second;
    char *sp;
    bool ok = true;

    if (argc == 1) {
        // Just show the current time/date
        _simple_mkdate(now, &year, &month, &mday, &hour, &minute, &second);
        diag_printf("%04d/%02d/%02d %02d:%02d:%02d\n",
                    year, month, mday, hour, minute, second);
    } else if (argc == 3) {
        sp = argv[1];
        if (!parse_num(sp, (unsigned long *)&year, &sp, "/") ||
            !parse_num(sp, (unsigned long *)&month, &sp, "/") ||
            !parse_num(sp, (unsigned long *)&mday, &sp, "/")) {
            ok = false;
        }
        sp = argv[2];
        if (!parse_num(sp, (unsigned long *)&hour, &sp, ":") ||
            !parse_num(sp, (unsigned long *)&minute, &sp, ":") ||
            !parse_num(sp, (unsigned long *)&second, &sp, ":")) {
            ok = false;
        }
        if (ok) {
            // Verify values make some sense, then set the hardware
            if (year < 100) year += 2000;
            ok = ok && verify(year, 1970, 2034, "year");
            ok = ok && verify(month, 1, 12, "month");
            ok = ok && verify(mday, 1, 31, "day");
            ok = ok && verify(hour, 0, 23, "hour");
            ok = ok && verify(minute, 0, 59, "minute");
            ok = ok && verify(second, 0, 59, "second");
            if (ok) {
                now = _simple_mktime(year, month, mday, hour, minute, second);
                Cyg_WallClock::wallclock->set_current_time(now);
            }
        }
    } else {
        ok = false;
    }
    if (!ok) {
        diag_printf("usage: date [YYYY/MM/DD HH:MM:SS]\n");
    }

}

Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 21:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.02209 секунд с 7
ELECTRONIX ©2004-2016