赞
踩
openharmony移植示例 基于最新的master版本,目前支持的芯片有:
GD32F450
目标是移植更多的开发板更多的MCU支持OpenHarmony
经过几天的努力,终于成功把最新版本的OpenHarmony轻量系统内核移植到ARM单片机上,现在代码开源、移植文章也完成7篇,后续会考虑增加视频讲解,直播。以便大家也可以自己移植。
开发板照片如下,自己在网上随便买的一块
目前OpenHarmony内核已经跑起来了,可以实现开发板上的LED灯闪烁。
串口调试打印信息:
系统创建了两个线程,如下:
//线程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"); } }
本次移植所有代码都将会开源给大家,同时也会持续做适配,后面会适配网卡、LCD、触摸屏等驱动。
同时会整理一场直播,教会大家如何移植和使用
开源仓库:
https://gitee.com/qidiyun/openharmony-bsp-example/tree/master
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。