Prefacio
-
Recientemente, planeo trasplantar y construir algunos entornos comunes de desarrollo y aprendizaje de RTOS qemu. En la actualidad, RT-Thread y FreeRTOS han ejecutado qemu con éxito, y la verificación preliminar de LiteOS puede ejecutar qemu normalmente. Aquí hay un
realview-pbx-a9
registro -
En primer lugar, aprenda o investigue RTOS. Sólo mirar el código fuente del kernel será aburrido. En su lugar, necesitará desarrollar una placa. Puede que al principio requiera demasiados controladores de hardware, lo que reducirá su interés en aprender e investigar el kernel RTOS. En la etapa inicial, es necesario ejecutar el kernel RTOS. Hay una comprensión global. En este momento, se requiere que qemu aprenda y verifique. En comparación con la placa de desarrollo real, será más conveniente y eficiente.
LiteOS
-
El kernel LiteOS actualmente verificado es: https://gitee.com/LiteOS/LiteOS
-
En comparación con https://gitee.com/openharmony/kernel_liteos_a , puede haber una pequeña diferencia aquí , pero se recomienda utilizar la verificación LiteOS en la etapa inicial y
kernel_liteos_a
faltan algunos archivos de configuración a nivel de placa. -
El kernel de LiteOS se puede clonar a través de Git y la verificación actual de qemu encuentra que no se necesitan otros paquetes de software para ejecutarlo.
-
git clone https://gitee.com/LiteOS/LiteOS.git
qemu realview-pbx-a9
-
Después de clonar con git el repositorio del kernel de LiteOS, puede ingresar al kernel. Al verificar el directorio del kernel, encontrará
tools/build/config/
que hay archivos de configuración para algunas placas compatibles. Entre ellos, qemu actualmente lo admiteqemu-virt-a53.config
realview-pbx-a9.config
y se recomienda actualmenterealview-pbx-a9.config
. Debido a que es un ARM plataforma, la información relevante se compara con la cadena de herramientas de compilación. -
Archivo de configuración: cópielo
tools/build/config/realview-pbx-a9.config
al directorio raíz del kernel y cámbielo a.config
archivo -
Ejecute en el directorio del kernel
make menuconfig
para ingresar a la configuración de la interfaz gráfica. -
[Observaciones] Si
make menuconfig
falla, generalmente necesita configurar un entorno de compilación cruzada
Configurar el entorno de compilación cruzada arm gcc
-
Descargue la cadena de herramientas de compilación cruzada arm gcc: https://developer.arm.com/downloads/-/gnu-rm descarga oficial en ARM , la versión verificada actual:
gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2
que estoy usando actualmentegcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
puede compilar normalmente -
Después de descargar la cadena de herramientas arm gcc, descomprímala en el entorno Linux (ubuntu 20.04) y luego configure las variables de entorno: como modificar
/etc/profile
el archivo -
sudo vim /etc/profile
-
Finalmente agregue:
export PATH=$PATH:/home/zhangsz/tools/gcc-arm-none-eabi-10-2020-q4-major/bin
-
Luego guarde
source /etc/profile
para que la variable de entorno surta efecto. -
Puede ejecutarlo en el shell
arm-none-eabi-gcc -v
y confirmar que la variable de entorno de la cadena de herramientas arm gcc surte efecto.
Instalar kconfiglib
-
LiteOS requiere que esté instalada la versión python2 de kconfiglib.
-
Si el Linux actual, como ubuntu 20.04, no puede instalar la versión python2 de kconfiglib, debe obtener manualmente la versión python2 de pip y luego usar la versión python2 de pip para instalar kconfiglib.
-
Mi sistema actual es ubuntu 20.04, la versión de Python es
Python 2.7.18
, pero no hay una versión de pip de Python 2, la versión de pip predeterminada es python3, por lo que debes instalar manualmente la versión de pip de Python2. -
Obtenga get-pip.py, la dirección obtenida:,
https://bootstrap.pypa.io/pip/2.7/get-pip.py
Ubuntu puede usarla parawget https://bootstrap.pypa.io/pip/2.7/get-pip.py
obtener -
Luego asegúrese de que la versión actual de Python sea la versión 2 y utilícela
python get-pip.py
para instalar la versión python2 de pip. -
Después de instalar la versión python2 de pip, instale kconfiglib con el comando:
$ pip --version
pip 20.3.4 from /home/zhangsz/.local/lib/python2.7/site-packages/pip (python 2.7)
$ pip install Kconfiglib
menuconfig configurar LiteOS
- En la actualidad, se puede guardar directamente sin configuración. Después de familiarizarse con el kernel y los módulos funcionales de LiteOS, puede intentar agregar y modificar la configuración del kernel.
Compilar LiteOS
-
make
Se puede compilar. Si le indica quearm-none-eabi-gcc
no se encuentra la cadena de herramientas, siga la operación anterior y configure la cadena de herramientas arm gcc primero. -
Después de compilar, puede ejecutar qemu realview-pbx-a9
Ejecutar qemurealview-pbx-a9
-
Escriba un script de shell de qemu.sh, el contenido es el siguiente y
chmod +x qemu.sh
establezca el permiso ejecutable -
¿Dónde está el producto compilado de
out/realview-pbx-a9/Huawei_LiteOS.bin
qemu ?realview-pbx-a9
#!/bin/bash
qemu-system-arm -machine realview-pbx-a9 \
-smp 4 -m 512M \
-kernel out/realview-pbx-a9/Huawei_LiteOS.bin \
-nographic
- correr
./qemu.sh
- Entró en el shell de LiteOS, LiteOS comenzó a ejecutarse
resumen
-
Este artículo registra
realview-pbx-a9
la construcción del entorno y el funcionamiento del sistema de LiteOS en qemu. -
Más adelante, continuaré familiarizándome con LiteOS, intentaré usar GDB para depurar el kernel de LiteOS basado en qemu y comprenderé el proceso de inicio del kernel, los módulos del kernel, etc.