Aplicación ligera de Python: método de inicio

1. Introducción

Las aplicaciones ligeras de Python se desarrollan en base a MicroPython. MicroPython hereda la sintaxis elegante y breve de Python y proporciona una conveniente biblioteca de operación de hardware integrada.

Como placa de desarrollo de IoT lanzada por Alibaba Cloud Intelligent IoT, HaaS100 se adapta al motor operativo MicroPython, proporciona una variedad de interfaces de operación de hardware enriquecidas y proporciona la plataforma Alibaba Cloud IoT y capacidades relacionadas con la inteligencia artificial en la nube.

Con esta placa de desarrollo, puede implementar fácilmente el control de hardware, la inteligencia artificial en la nube y la interoperabilidad de la nube a través de programas de Python.

Para obtener más información sobre las aplicaciones ligeras de Python, consulte el siguiente enlace:

Descripción general de las aplicaciones ligeras de Python

Este artículo presentará cómo elegir el método de inicio más adecuado para mejorar la eficiencia del desarrollo de aplicaciones ligeras de Python.

 

2. Video de efectos

Método de inicio de la aplicación Python Light

 

En el video de arriba se muestran dos métodos de ejecución:

  • Interactivo
  • Ejecución de archivos

A continuación, ampliaremos la explicación en base a estos dos métodos, para que los desarrolladores puedan elegir correctamente el método de inicio más adecuado en el desarrollo diario.

 

3. Preparación ambiental

3.1, hardware

  1. Una placa de desarrollo HaaS100
  2. Fuente de alimentación uno
  3. micro usb uno
  4. sdcard uno

3.2 Software

  1. El último código fuente abierto de HaaS100
  2. Herramienta serial

 

4. Preparación de firmware

Puede seguir la aplicación Python de la luz para comenzar rápidamente de alguna manera, descargar directamente la grabación de firmware, también puede descargar el código fuente, operación de programación compilada.

Las funciones del programa principal finalmente quemadas en la máquina son las siguientes:

  • Registrar un comando de Python
  • Determine si debe ingresar al modo interactivo o de archivo de acuerdo con los parámetros entrantes

 

4.1, análisis de código

Después de descargar el último código fuente abierto de HaaS100, vaya al directorio de la aplicación / ejemplo, puede ver el proyecto de muestra de la aplicación ligera Python:

py_engine_demo Este procedimiento de entrada de demostración es appdemo.c. En este código se hacen principalmente dos cosas:

  1. Registrar comando de Python
  2. Inicie la máquina virtual de Python

 

Registrar comando de Python

static struct cli_command command = {

    .name     = "python", /*命令名称*/

    .help     = "start micropython ", /*命令的帮助描述信息*/

    .function = handle_identity_cmd   /* 命令的实现函数*/

};



int application_start(int argc, char *argv[])

{

    # 调用系统cli命令注册接口

    int  ret = aos_cli_register_command(&command);

    if (ret) {

        printf("register micropython command failed \n");

    }else{

        printf("register micropython command succeed \n");

    }

}

 

Inicie la máquina virtual de Python

int python_main_entry(void *p)

{

    //printf("global_argc = %d;global_argv = %p;%s;\n", global_argc, global_argv, __func__);

    tick_t   sleep_time;

    sleep_time = krhino_ms_to_ticks(10); /*  10ms to ticks */

    #sleep 10ms 确保新的task 在默认task之后执行

    krhino_task_sleep(sleep_time); /*  sleep 10ms */


    mpy_thread_args* args = (mpy_thread_args*)p;

    if (args == NULL)

    {

        printf("%s:args is illegal\n", __func__);

        return -1;

    }

    # 启动python 虚拟机

    mpy_init();

    mpy_run(args->argc, args->argv);

    # 退出虚拟机,释放内存

    free_mpy_thread_args(args);


    return 0;

}


static void handle_identity_cmd(char *pwbuf, int blen, int argc, char **argv)

{

    //printf("argc = %d;argv = %p; %s;\n", argc, argv, __func__);

    # 申请需要传递到新的task 相关信息的内存

    mpy_thread_args* args = alloc_mpy_thread_args(argc, argv);

    # 启动一个新的task,去执行python命令

    aos_task_new("python_main_entry", python_main_entry, (void*)args, 1024*20);

}

 

4.2, compilar

En el directorio raíz del código de AliOS Things, ejecute el siguiente comando

aos make py_engine_demo@haas100 -c config

aos make

Después de compilar, en el directorio out / py_engine_demo @ haas100 / binary /, generará un [email protected] mientras que el directorio platform / mcu / haas1000 / release / write_flash_tool / ota_bin / generará un nuevo archivo littlefs.bin 

 

4.3, quemar

Consulte la aplicación Python de inicio rápido ligero en aspectos de programación. Si es una computadora con Windows, el paquete de firmware para grabar se encuentra en el directorio platform / mcu / haas1000 / release /

 

 

5. Operación interactiva

Después de que el sistema esté encendido, ingrese Python en la línea de comando serial sin ningún parámetro, e ingrese al modo interactivo por defecto.

En este modo, puede ingresar código Python para ejecutar en tiempo real y mostrar los resultados de la ejecución. Debido a que es muy conveniente, al igual que un diálogo hombre-máquina, una entrada y una salida, este modo se llama friendly_repo, y hay un raw_repl correspondiente a friendly_repo.

  • friendly_repl

Modo de diálogo hombre-máquina, conveniente para depuración y programación rápidas

Salir: ctrl + d

Cambiar: ctrl + a dos veces para ingresar al modo raw_repl

 

  • raw_repl

Modo nativo, inconveniente para la interacción, conveniente para la transmisión y ejecución de flujo de archivos

Cambiar: ctrb + b cambiar al modo friendly_repl

En el modo raw_repl, el flujo de archivos se puede enviar directamente a la máquina para su ejecución a través del puerto serie Esta parte de este artículo no se presentará por el momento.

 

6. Ejecución de archivos

La ejecución de archivos se divide en dos situaciones:

  • El archivo está en el dispositivo HaaS
  • El archivo está en la computadora (PC)

 

6.1. Ejecutar archivos en equipos HaaS

Actualmente, en el sistema de archivos HaaS100, los archivos se pueden colocar en la partición incorporada / data o en la externa / sdcard.

datos

El archivo de la partición / data está prefabricado durante la fase de compilación, la ventaja es que siempre existirá, la desventaja es que si se actualiza o modifica, es necesario compilarlo o grabarlo. / platform / mcu / haas1000 / prebuild / data / es un directorio más de la partición de datos.Normalmente, todos los archivos de este directorio se compilarán en littlefs.bin y se accederá al sistema a través de / data / + ruta específica.

De forma predeterminada, el directorio / data contiene dos subdirectorios

  • / data / lib

Directorio de la biblioteca oficial de Python , no lo modifique

  • / datos / python

Archivos fuente ejecutables de casos de Python

 

tarjeta SD

La ruta predeterminada de la tarjeta sd en el dispositivo es / sdcard. En comparación con los datos, su ventaja es que no es necesario flashear y el espacio es lo suficientemente grande. Edite directamente en la PC y guárdelo en la tarjeta SD, y luego conecte el dispositivo (actualmente no es compatible con la conexión en caliente, la máquina debe reiniciarse después de conectarse)

 

6.2, ejecute el archivo en la PC

La ejecución de archivos en la PC también se puede dividir en dos métodos, ejecución de transmisión de archivos y ejecución de descarga de archivos. Debido a que la ejecución del flujo de archivos es más complicada y requiere una serie de soporte de herramientas, este artículo no presentará la ejecución del flujo de archivos por el momento.

La descarga de archivos se refiere a descargar el archivo en la PC a los datos o tarjeta SD del dispositivo y luego ejecutar el archivo descargado a través de Python. Actualmente, el dispositivo HaaS100 ya es compatible con la función tftp, por lo que podemos descargar archivos desde la PC al dispositivo a través de tftp. El método de la función tftp es el siguiente:

  • Redes del lado del dispositivo (preste atención para reemplazar ssid y contraseña)

python   / datos / python / network / ConnectWifi. py   "SSID"   "Contraseña"

Después de que la conexión sea exitosa, la dirección IP del dispositivo se imprimirá en el registro

  • Inicie el servidor tftp en el dispositivo

inicio del servidor tftp

  • La PC y el dispositivo están conectados a la misma LAN para garantizar que la PC pueda hacer ping al dispositivo ip

Inicie el cliente tftp en el lado de la  PC y pase el archivo de la PC a la ruta especificada en el lado del dispositivo a través del comando put (se puede hacer a través de herramientas gráficas o scripts)

El siguiente es un script simple: send_file.sh

#ip="192.168.1.173"

ip=$1

filename=$2

#filename="test.py"

tftp ${ip}  << !

binary

put ${filename} ${ip}:/sdcard/${filename}

quit

Suponiendo que la IP del dispositivo es: 192.168.1.173, el archivo / sdcard que debe enviarse a la máquina es test.py, ingréselo en la terminal de la computadora

bash send_file.sh 192.168.1.173 test.py

 

Soporte para desarrolladores

MicroPython hereda las características fáciles de aprender y usar de Python y, al mismo tiempo, proporciona un paquete de biblioteca básico basado en hardware integrado, lo que permite a los desarrolladores realizar fácilmente el desarrollo integrado en tiempo real a través de un entorno interactivo, haciendo desarrollo simple y conveniente.

Para obtener más información sobre el desarrollo integrado de MicroPython, puede escanear el código para unirse al grupo de desarrolladores de Dingding o escanear el código en WeChat para seguir la cuenta oficial de la comunidad tecnológica de HaaS .

 

Supongo que te gusta

Origin blog.csdn.net/HaaSTech/article/details/115216834
Recomendado
Clasificación