# openharmony_liteos-m_learning **Repository Path**: lanzhoo/openharmony_liteos-m_learning ## Basic Information - **Project Name**: openharmony_liteos-m_learning - **Description**: 学习OpenHarmony LiteOS-M内核的使用和移植。 - **Primary Language**: C - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2023-04-10 - **Last Updated**: 2024-12-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # openharmony_liteos-m_learning #### 介绍 学习OpenHarmony LiteOS-M内核的使用和移植。 内容目前打算分为四部分: 一、基于Keil和stm32f407开发板的移植和内核学习 在实验室现有的STM32F407开发板基于原来开发板厂家提供的开发环境和例程移植OHOS 3.0LTS的liteos-m内核。 二、基于windows版DevEco Device Tool和gitee仓hi3861_hdu_iot_application工程的开发环境搭建和应用设计 - 开发工具:devicetool-windows-tool-3.1.0 - 工程环境:[hi3861_hdu_iot_application](https://gitee.com/HiSpark/hi3861_hdu_iot_application) - 开发板:bearpi-hm_nano 三、hi3861裸机程序探索实验 - 开发工具:gitee仓hi3861_hdu_iot_application所带的编译工具链及下载工具,文本编辑器 - 工程环境:简单代码,不需要库文件 - 开发板:bearpi-hm_nano 四、基于hi3861和DeviceTool的开发环境简化及OHOS 3.0 liteos-m内核源码移植 - 开发工具:devicetool-windows-tool-3.1.0 - 工程环境:在hi3861_hdu_iot_application工程基础上简化,去除依赖库,增加OHOS 3.0 liteos-m内核源码 - 开发板:bearpi-hm_nano ## 第一部分 基于Keil和stm32f407开发板的移植和内核学习 基于实验室现有开发板的移植。 openharmony版本:code-v3.0-LTS ### 专题 #### 1、简单任务例程:基于LOS_Task 介绍:([A1_led_task.md](./A1_led_task.md)),工程:01_led_task; #### 2、简单任务例程:基于LOS_Swtmr 介绍:([A2_led_swtmr.md](./A2_led_swtmr.md)),工程:02_led_swtmr; #### 3、简单工程的移植过程介绍 介绍:([PART1/03-simpleproject_porting.md](./PART1/03-simpleproject_porting.md)); #### 4、采用nosys方式运行lwip的liteos-m工程的移植过程介绍 介绍:([PART1/04-lwip_porting_A.md](./PART1/04-lwip_porting_A.md));对应例程([PART1/04_2_1_lwip.rar](./PART1/04_2_1_lwip.rar)); #### 5、采用基于微操作系统方式运行lwip的liteos-m工程的移植过程介绍 介绍:([PART1/05-lwip_porting_B.md](./PART1/05-lwip_porting_B.md));对应例程([PART1/05_2_2_lwip.rar](./PART1/05_2_2_lwip.rar)); ## 第二部分 基于bearpi-hm_nano开发板的应用设计和内核学习 工具:devicetool-windows-tool-3.1.0 参考: ([hi3861_hdu_iot_application](https://gitee.com/HiSpark/hi3861_hdu_iot_application)) (待建设) ### 专题 #### 1、Windows下的deveco device tool开发环境搭建 介绍:([PART2/01-setup.md](./PART2/01-setup.md)) ## 第三部分 hi3861裸机程序探索实验 - 开发工具:gitee仓hi3861_hdu_iot_application所带的编译工具链及下载工具,文本编辑器 - 工程环境:简单代码,不需要库文件 - 开发板:bearpi-hm_nano (建设中) ### 专题 #### 1、开发环境搭建及第一个例程 介绍:([PART3/01-intro.md](./PART3/01-intro.md));工程([PART3/01-led_flash](./PART3/01-led_flash)) #### 2、串口发送例程 介绍:([PART3/02-uart_tx.md](./PART3/02-uart_tx.md));工程([PART3/02-uart_tx](./PART3/02-uart_tx)) #### 3、提供printf功能 介绍:([PART3/03-printf.md](./PART3/03-printf.md));工程([PART3/03-printf](./PART3/03-printf)) #### 4、通过ecall触发中断 介绍:([PART3/04-ecall.md](./PART3/04-ecall.md));工程([PART3/04-ecall](./PART3/04-ecall)) #### 5、定时器3(machine timer)中断 介绍:([PART3/05-timer.md](./PART3/05-timer.md));工程([PART3/05-timer](./PART3/05-timer)) #### 6、定时器2中断 介绍:([PART3/06-timer2_int.md](./PART3/06-timer2_int.md));工程([PART3/06-timer2_int](./PART3/06-timer2_int)) #### 7、通过ecall跳转新位置 介绍:([PART3/07-ecall_jump.md](./PART3/07-ecall_jump.md));工程([PART3/07-ecall_jump](./PART3/07-ecall_jump)) #### 8、实现yield功能:在任务间主动切换 介绍:([PART3/08-yield.md](./PART3/08-yield.md));工程([PART3/08-yield](./PART3/08-yield)) #### 9、同时实现主动(yield)和被动(定时器中断)切换任务 介绍:([PART3/09-taskswitch.md](./PART3/09-taskswitch.md));工程([PART3/09-taskswitch](./PART3/09-taskswitch)) ## 第四部分 基于hi3861和DeviceTool的开发环境简化及OHOS 3.0 liteos-m内核源码移植 - 开发工具:devicetool-windows-tool-3.1.0 - 工程环境:在hi3861_hdu_iot_application工程基础上简化,去除依赖库,增加OHOS 3.0 liteos-m内核源码 - 开发板:bearpi-hm_nano (建设中) ### 专题 #### 1、实现第一个例程 第一步的工作包含了以下内容: - 将OHOS3.0LTS liteos-m kernel源码加入到工程中,去除原工程中的liblitekernel_flash.a、liblitekernel_base.o等库文件,修改应用代码,实现简单的裸机应用; - 去除对u-boot-v2019.07源代码的依赖,大大缩小工程大小(未压缩时,连同生成文件60MB); - 调通LOS_KernelInit()、LOS_TaskCreate()等函数调用,实现简单例子; 详细介绍:([PART4/01-step01.md](./PART4/01-step01.md));例程工程压缩包:hi3861tiny3.part*.rar([PART4/01-step01](./PART4/01-step01));例程中相对原工程修改过的文件:([PART4/01-step01/hi3861tiny3](./PART4/01-step01/hi3861tiny3))