嵌入式操作系统内核——KLite

现在,嵌入式操作系统已经越来越多了,如大家都熟知的ucos、freertos、rt-thread等。这些操作系统都各有各的特点:stm32嵌入式开发中的rtos,你用过哪些?     本篇笔记再来给大家介绍一个简洁易用的嵌入式操作系统内核 —— klite。
klite源码
源码链接:https://gitee.com/kerndev/klite     klite的作者是jiangxiaogang。
klite简介
klite以mit协议开放源代码。它是一款入门级的小型抢占式操作系统内核,以简洁易用为设计目标,旨在降低学习嵌入式操作系统编程和入门的难度。     简洁的api风格,简洁的调用方式,简单的移植方法,可能是目前最简单易用的嵌入式操作系统内核。
支持优先级抢占
支持相同优先级的线程
支持线程同步互斥
支持动态内存管理
支持多编译器gcc, iar, mdk
klite移植
klite目前已经为arm cortex-m0/m3/m4做好了底层适配,如果你的cpu平台是基于以上平台的,如stm32,gd32,nrf51,nrf52,freescale k40等系列单片机,那么可以直接使用预编译的库文件进行开发。     只需要修改template.c里面几个简单的函数即可开始编程。否则可能需要自行移植cpu底层的汇编代码。
klite使用
1、klite编译
在build目录下面有预设的工程文件,选择你要使用的编译器和目标cpu平台,  编译完成后,会生成kernel.lib文件,将kernel.lib,kernel.h,emplate.c复制到你的项目源码中,使用lib文件可以减少重复编译时间,当然你也可以选择把全部源码添加到你的工程中。
2、修改template.c
根据目标cpu的编程手册,实现template.c里面的2个空函数。
void cpu_sys_init(void);      这个函数被kernel_init调用,为用户提供一个接口,用于实现那些必须在系统初始化之前的准备工作,例如初始化cpu的时钟,设置flash等。void cpu_sys_idle(uint32_t time);    这个函数被kernel_idle调用,为用户提供一个接口,用于实现系统休眠.例如调用wfi指令,或者什么都不做。void systick_handler(void);    这个函数是平台相关的滴答时钟中断函数,需要在滴答时钟中断中调用kernel_tick(n),n表示一次中断的毫秒数。 3、在main函数里面添加初始化代码
main函数的推荐写法如下:
//只需要包含这一个头文件即可#include kernel.h//用于初始化应用程序的线程void init(void *arg){}//空闲线程,只需调用kernel_idle即可void idle(void *arg){ kernel_idle();}//c语言程序入口void main(void){ static uint8_t heap[heap_size]; kernel_init((uint32_t)heap, heap_size); thread_create(init, 0, 0); thread_create(idle, 0, 0); kernel_start();}    说明: kernel_init 用于初始化内核;
thread_create 创建主线程init和idle;
kernel_start 用于启动内核;
init是一个线程函数,在该函数中实现你的其它初始化代码.
更多函数参数说明请参考api文档。


交流固态继电器,交流固态继电器的使用
苹果计划将至少20%iPhone产能转移至印度
DIALOG 半导体有限公司的多点触控显示感应器IC 通过 WINDOWS 8.1 认证
锤子手机T2拆解,看看这款手机的内部做工如何
凯迪拉克全新一代CT6上市 开启智能化竞争时代
嵌入式操作系统内核——KLite
苹果将与现代、通用、雪铁龙合作造车
MCU单片机外扩的国产串口SRAM简介
中空长航时察打一体无人机“海上卫士”的作用
东旭光电打破国内石墨烯技术空白 正式涉足石墨烯传感芯片领域
区块链数字钱包有哪些理念需要先了解
PFC可调光LED驱动器NCL30000的功能特点及适用范围
基于采用LabWindows/CVI虚拟仪器技术实现高度表测试系统的设计
Redmi Note9 4G:重新定义千元机新标准
Zynq UltraScale + MPSoC的DDR接口
滚柱导轨的基础清洁方法
人工智能和机器学习将成为在这个新世界中创建深度科技公司的根基
智能断路器工作原理及技术特点
基于FPGA技术与以太网的无源光网络实现MAC控制器的设计方案
云存储的五个常见安全问题及解决措施