Linux Kernel 4.14: Soporte para ODROID-XU3/4/MC1/HC1

Linux Kernel For ODROID

Exynos 5422 es un System-on-a-Chip (SoC) Samsung que ha sido la base de los productos de Hardkernel durante varios años. Empezando con el ODROID-XU3 de alta gama, más tarde se lanzó una variante más asequible, el ODROID-XU3 Lite; pasó por un completo rediseño con el ODROID-XU4 y XU4Q, y recientemente lo podemos encontrar en el nuevo ODROID-HC1 y MC1, orientados para el uso de NAS y clusters, respectivamente.

Lanzado inicialmente con la versión 3.10 del kernel Linux, han sido muchos los intentos para actualizar los productos ODROID basados en Exynos 5422 a un kernel más reciente, con kernels experimentales lanzados para las versiones 4.0, 4.2, 4.4 y 4.8 por la comunidad, hasta que Hardkernel ayudó a desarrollar y liberar una versión estable del kernel 4.9.

Durante cada ciclo de desarrollo del kernel, el SoC conseguía más actualizaciones para el kernel estándar gracias a los esfuerzos de Samsung y de la comunidad. De este modo, cada vez resultaba más fácil actualizar a la última versión del kernel. De hecho, durante un tiempo, los ODROID basados en Exynos 5422 podían usar el kernel estándar sin modificaciones. Sin embargo, el problema radicaba en que la versión estándar no cuenta con todos los controladores y algunos sistemas no funcionaban.

El siguiente kernel con soporte de larga duración (LTS) es la versión 4.14, que se lanzará en noviembre. Casualmente, hace poco se ha revelado que el soporte para kernels LTS se extenderá hasta los 6 años. Esto significa que la versión 4.14 recibirá soporte hasta finales de 2022. Esta es una gran noticia para los dueños de esas pequeñas, extensibles, potentes y económicas placas, como son los ODROID.

Esta versión del kernel pasa por ser particularmente atractiva para los ODROID Exynos 5422, especialmente porque incluye importantes correcciones para la decodificación y codificación de video por hardware (MFC), el escalador de hardware y convertidor de espacios de color (GScaler) y un nuevo driver para HDMI CEC, que permite controlar el dispositivo a través de un mando a distancia por infrarrojos.

Además, incluye in sinfín de parches desde la versión 4.9 mantenidos por Hardkernel que pueden beneficiar a los usuarios de ODROIDs, como son las mejoras en los sistemas de archivos EXT4 y BTRFS, las mejoras en la máquina virtual basada en kernel (KVM), drivers WiFi nuevos y actualizados, y mejoras en los drivers para sistemas multimedia (por ejemplo, mejor soporte para sintonizadores de TV).

La comunidad intervino y empezó a solucionar el resto de problemas incluso antes de que se liberara el kernel 4.14:

  • Los Drivers Mali fueron actualizados a la versión r20p0
  • Se ha añadido soporte para el programador automático de tareas Multiprocesamiento Heterogéneo (HMP) de CPU
  • Parches para los puertos USB3 en ODROID
  • Parche para la interfaz Gigabit Ethernet
  • Soporte adicional para varias interfaces, tales como el botón de encendido, SPI, ADC, GPIOs
  • Controlador de sonido HDMI para el ODROID-XU4
  • Mejoras para tarjetas sd/módulos eMMC que incluye soporte para velocidades superiores
  • Soporte mejorado para el hipervisor de máquina virtual
  • Soporte habilitado para el hardware watchdog
  • Soporte para los contadores de rendimiento de hardware de la CPU (PMU)
  • Incluido soporte oficial para ODROID-HC1 (programado para la versión de kernel 4.15)
  • Soporte adicional para frecuencias extra de CPU y características térmicas mejoradas
  • Soporte añadido para las tablas ASV de la CPU de Samsung que permite mejorar la selección del voltaje de la CPU y el nivel térmico.

Con la mayoría de correcciones y parches desarrollados o importados desde el kernel 4.9, la versión 4.14 del kernel ya está lista para someterla a las pruebas de los usuarios. Los interesados pueden descargar, compilar e instalar el kernel en la distribución oficial Ubuntu de Hardkernel usando estas instrucciones:

$ git clone --depth 1 --single-branch -b odroidxu4-4.14.y https://github.com/mihailescu2m/linux
$ cd linux  
$ wget https://gist.github.com/mihailescu2m/115c9e2135f9b12f3d05669e18137c3d -O .config
$ make -j 8 zImage dtbs modules
$ sudo cp arch/arm/boot/zImage arch/arm/boot/dts/*.dtb /media/boot
$ sudo cp .config /media/boot/config
$ sudo make modules_install
$ kver=`make kernelrelease`
$ sudo cp .config /boot/config-${kver}
$ cd /boot
$ sudo update-initramfs -c -k ${kver}
$ sudo mkimage -A arm -O linux -T ramdisk -a 0x0 -e 0x0 -n initrd.img-${kver} -d initrd.img-${kver} uInitrd-${kver}
$ sudo cp uInitrd-${kver} /media/boot/uInitrd
Los comentarios y resultados de las pruebas son bienvenidos en el foro "Kernel 4.14 debugging party" en http://bit.ly/2ltTPbD.

Be the first to comment

Leave a Reply