Red de conocimiento informático - Espacio del host - Mi placa de desarrollo Friendly Arms micro2440, después de grabar uboot y el kernel de Linux, quiero establecer un sistema de archivos raíz de red nfs, pero sigo teniendo problemas.

Mi placa de desarrollo Friendly Arms micro2440, después de grabar uboot y el kernel de Linux, quiero establecer un sistema de archivos raíz de red nfs, pero sigo teniendo problemas.

Después de iniciar Linux-2.6.35 en la placa de desarrollo fs2410, el sistema de archivos se monta a través de nfs, pero rtc no funciona y se imprime la siguiente información antes de montar el sistema de archivos:

TCP registrado cúbico

NET: Familia de protocolo 1 registrada

RPC: Módulo de transporte UDP registrado.

RPC: Módulo de transporte tcp registrado.

drivers/rtc/hctosys.c: No se puede abrir el dispositivo rtc (rtc0)

Configuración IP: Listo:

dispositivo=eth0, addr=192.168 20.253, máscara=255.255.255.0, gw=192.168.20.1,

host=thomas _fs2410, dominio=, nis-domain=(ninguno),

bootserver=192.168.20.192. , rootserver=192.168.20.192, rootpath=

Buscando el puerto RPC 100003/2 en 192.168.20.192

Buscando el puerto RPC 100005/1 en 192.168.20.192

VFS: root (sistema de archivos nfs) está montado.

Devfs montados en /dev

Memoria inicial liberada: 184K

Solución:

1. Opciones de configuración del kernel

---Reloj en tiempo real

[*] Establece la hora del sistema desde RTC en el inicio y la recuperación

(rtc0) RTC utilizado para configurar la hora del sistema

[ ] Soporte de depuración RTC

***Interfaz RTC***

[*] /sys/ class/rtc/rtcN (sysfs)

[* ] /dev/rtcN (dispositivo de caracteres)

[ ] Emulación RTC UIE en la interfaz de desarrollo

***- Controlador RTC de CPU***

[ ] Simule RTC UIE en la interfaz de desarrollo

*** controlador RTC en la CPU***

<*SoC RTC de la serie Samsung S3C

2. El kernel de Linux ya es compatible con S3C2410 RTC, pero no se ha agregado a la matriz de inicialización del dispositivo de la plataforma, por lo que esta parte del sistema no se inicializará cuando se inicie. Debe modificar el archivo mach-smdk.

c

estructura estática platform_device *smdk2410_devices[] __initdata = {

&s3c_device_ohci,

&s3c_device_lcd,

&s3c_device_wdt,

&s3c_device_i2c0,

&s3c_device_iis,

&s3c_device_rtc, //nuevo código

}

3. / Ejecute este código en el directorio dev para crear un nodo de dispositivo:

sudo mknod rtc c 10 135

4. Vuelva a compilar el kernel y verifique la información de inicio.

S3C24XX RTC, (c) 2004,2006 Simtec Electronics

s3c-rtc s3c2410-rtc.rtc deshabilitado, reactivado

s3c-rtc s3c2410-rtc: rtc core: registrado s3c como rtc0

Esto muestra que el controlador rtc está en funcionamiento

Temporizador de vigilancia S3C2410, (c) 2004 Simtec Electronics

s3c2410-wdt s3c2410-wdt: Consulte Watchdog inactivo, reinicio deshabilitado, IRQ habilitado

Dispositivos sin DAI UDA134X

Dispositivos sin DAI s3c24xx-i2s

Lista de dispositivos ALSA:

Tarjeta de sonido no encontrada.

TCP cúbico registrado

NET: Familia de protocolos registrados 17

s3c-rtc s3c2410-rtc: hctosys: fecha/hora no válida

La información anterior indica que la hora RTC actual no es válida y la hora RTC inicial es el miércoles 31 de diciembre a las 23:59:59 1969

Se puede ver en la función del núcleo int rtc_valid_tm(struct rtc_time *tm; ) que cuando el año es menor que 1970, se considera una hora no válida, la función devuelve -EINVAL

drivers/rtc/rtc-lib.c

/*

* rtc _time representa fecha/hora válida?

*/

int rtc_valid_tm(struct rtc_time *tm)

{

if (tm->tm_year < 70

| ( ( sin firmar)tm->tm_mon) >= 12

|| tm->tm_mday < 1

|| ->tm_mon, tm->tm_año + 1900)

| (((sin firmar)tm->tm_hora) >= 24

| | ((sin firmar)tm-> tm_min) >= 60

| ((unsigned)tm->tm_sec) >= 60)

Devuelve -EINVAL

devuelve 0; p>

}

EXPORT_SYMBOL(rtc_valid_tm);

Aquí se explica cómo verificar la idea

# hwclock

Miércoles 31 de diciembre 23: .59:59 1969 0.000000 segundos

# fecha

Jueves 1 de enero 00:06:58 UTC 1970

La hora del sistema está configurada por fecha, hora RTC Configurada por hwclock Cuando se inicia el sistema, la hora del sistema se obtiene primero mediante RTC. Cuando RTC no está configurada, la hora del sistema también usará el miércoles 31 de diciembre a las 23:59:59

# hwclock --help

BusyBox v1.9.2 (2008-04-01 21:32:34 CST) binario de llamada múltiple

Uso: hwclock [-r|--show ] [-s|-- hctosys] [-w|---systohc] [-l|--localtime] [-u|--utc] [-f FILE]

Consulta y configura el reloj de hardware (RTC)

Opciones:

-r lee el reloj de hardware e imprime los resultados

-s establece la hora del sistema desde el reloj de hardware

-w establece la hora del sistema a partir del reloj del hardware Hora del sistema

-w Configura el reloj del hardware a la hora del sistema

-u El reloj del hardware utiliza la hora universal coordinada

-l El reloj del hardware usa la hora local

-f FILE usa el reloj especificado (por ejemplo, /dev/rtc).

Por ejemplo: /dev/rtc2)

# hwclock -s

hwclock: settimeofday() falló: argumento no válido

# hwclock -w

s3c2410-rtc s3c2410-rtc: rtc solo admite 100 años

hwclock: RTC_SET_TIME: argumento no válido

Los mensajes de error anteriores se deben a una configuración de año incorrecta. Si el RTC no está configurado, el RTC no iniciará el temporizador.

Primero configure la hora correcta del sistema y luego pase la hora del sistema al RTC.

# fecha 040612282008.20

domingo 6 de abril 12:28:20 UTC 2008

# hwclock -w

# hwclock

Dom 6 de abril 12:29:01 2008 0.000000 segundos <

# hwclock

Dom 6 de abril 12:30:15 2008 0.000000 segundos

Ok, ¡RTC está funcionando normalmente!

Para sincronizar la hora del sistema con la hora RTC, puede agregar el comando

Hwclock -s

al archivo de inicialización para leer el RTC cada vez que encienda la hora de la computadora y sincronícela con la hora del sistema.

Agregar comando

/bin/hwclock -s

Comandos relacionados con la configuración de la hora (reimpresos)

1. Utilice el comando de fecha en Ver y configurar la hora del sistema en la terminal virtual

Ver el reloj del sistema:

# fecha

Configurar el reloj del sistema:

# fecha 091713272003.30

Formato de configuración común:

# fecha mes día hora minuto año.segundos

2. Utilice el comando hwclock o reloj para ver y configurar el reloj del hardware:

Para ver el reloj del hardware:

# hwclock --show o

# clock --show

Miércoles , 17 de septiembre de 2003 13:00 24:11 - 0,482735 segundos

# Fecha 091713272003 30

Formato de configuración común:

# Fecha, día, hora, minuto y segundo. 00"

Formato de configuración común: hwclock/clock --set --date="mes/día/año hora:minuto:segundo".

3. Alinee el reloj del sistema con la sincronización del reloj del hardware

Los sistemas Linux (estoy usando Red Hat 8.0, no lo he probado en otros sistemas) sincronizan el reloj del hardware con el reloj del sistema de forma predeterminada después de reiniciar si es un inconveniente (el servidor rara vez se reinicia) , puede utilizar el comando clock o hwclock para sincronizar el reloj del sistema con el reloj del hardware

Para sincronizar el reloj del hardware con el reloj del sistema:

# hwclock --hctosys

O

# reloj --hctosys

En el comando anterior, --hctosys significa reloj de hardware al reloj del SISTEMA.

Para sincronizar el reloj del sistema con el reloj del hardware:

# hwclock --systohc

o

# clock --systohc

p>

Configure la hora usando la utilidad de configuración gráfica del sistema

Referencia: