Prefacio
El ejemplo de trasplante de Openharmony se basa en la última versión maestra. Los chips actualmente compatibles son:
STM32F407
GD32F303
GD32F450
El objetivo es portar más placas de desarrollo y más MCU para admitir OpenHarmony.
Después de varios días de arduo trabajo, finalmente trasplantamos con éxito la última versión del kernel del sistema liviano OpenHarmony al microcontrolador ARM. Ahora el código es de código abierto y se han completado 7 artículos de trasplante. Consideraremos agregar explicaciones en video y transmisiones en vivo en el futuro. Para que todos puedan trasplantarse.
Efecto
La foto de la placa de desarrollo es la siguiente. Compré una al azar en línea.
El kernel OpenHarmony ahora se está ejecutando y las luces LED en la placa de desarrollo pueden parpadear.
Información de impresión de depuración del puerto serie:
el sistema creó dos subprocesos, de la siguiente manera:
//线程2,用于点灯和打印
VOID TaskSampleEntry2(VOID)
{
printf("______>>>>>>>>> %s %d\r\n", __FILE__, __LINE__);
led_init();
while (1) {
printf("___>>>>>> %s %d\r\n", __FILE__, __LINE__);
led_on(0);
led_on(1);
led_on(2);
led_on(3);
LOS_TaskDelay(1000);
led_off(0);
led_off(1);
led_off(2);
led_off(3);
LOS_TaskDelay(1000);
}
}
//线程1,用于打印
VOID TaskSampleEntry1(VOID)
{
printf("______>>>>>>>>> %s %d\r\n", __FILE__, __LINE__);
while (1) {
printf("___>>>>>> %s %d\r\n", __FILE__, __LINE__);
LOS_TaskDelay(1000);
}
}
//创建线程
VOID TaskSample(VOID)
{
UINT32 uwRet;
UINT32 taskID1;
UINT32 taskID2;
UINT32 taskID3;
TSK_INIT_PARAM_S stTask = {
0};
stTask.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskSampleEntry1;
stTask.uwStackSize = 0x1000;
stTask.pcName = "TaskSampleEntry1";
stTask.usTaskPrio = 6; /* Os task priority is 6 */
uwRet = LOS_TaskCreate(&taskID1, &stTask);
if (uwRet != LOS_OK) {
printf("Task1 create failed\r\n");
}
stTask.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskSampleEntry2;
stTask.uwStackSize = 0x1000;
stTask.pcName = "TaskSampleEntry2";
stTask.usTaskPrio = 7; /* Os task priority is 7 */
uwRet = LOS_TaskCreate(&taskID2, &stTask);
if (uwRet != LOS_OK) {
printf("Task2 create failed\r\n");
}
}
Código fuente abierto
Todos los códigos para este trasplante serán de código abierto para todos y la adaptación continuará, más adelante se adaptarán la tarjeta de red, la pantalla LCD, la pantalla táctil y otros controladores.
Al mismo tiempo, se organizará una retransmisión en directo para enseñar a todos cómo trasplantar y utilizar
Almacén de código abierto:
https://gitee.com/qidiyun/openharmony-bsp-example/tree/master