Mejorando el rendimiento de memcpy en 8051

0

Tengo una rutina para SHA-1 en unos pocos bytes de entrada que tarda 17 ms en completarse en un núcleo basado en 8051 (que se ejecuta a 32Mhz). Llama a memcpy una vez, pero parece ser el cuello de botella (¡casi todo el total de los 17ms!).

¿Alguien sabe si hay una manera de mejorar el rendimiento de memcpy ? Gracias

    
pregunta John M.

2 respuestas

1

En primer lugar, considera escribir tu propia versión de la rutina memcpy () para sustituir la llamada de la biblioteca. Luego, puede experimentar con el código para ver cómo el cambio en los tipos de punteros de memoria afecta el rendimiento.

En segundo lugar, puede instrumentar esa rutina con un bit de puerto establecido al comienzo y un bit de puerto libre al final. Puede utilizar un osciloscopio para medir el tiempo real empleado en la rutina. Parece muy probable que haya algo más que solo el tiempo pasado dentro de la rutina memcpy ().

Eche un vistazo al compilador 8051 que está utilizando. Hay una gran diferencia en el rendimiento entre un compilador determinado y uno de los compiladores comerciales más utilizados. Además, no todos los compiladores admiten múltiples punteros de datos o algunos #pragma pueden ser necesarios para activar su uso.

    
respondido por el Michael Karas
1

El CC2541 tiene un controlador DMA. Sugiero usarlo para copias de memoria XDATA < - > XDATA. Tenga en cuenta que esto no funcionará si una ubicación de memoria no es XDATA (como CDATA o (I) DATA).

    
respondido por el Turbo J

Lea otras preguntas en las etiquetas