KLite 移植说明 V1.0
2019独角兽企业重金招聘Python工程师标准>>>
KLite 移植说明 V1.0
KLite是一个“简洁易用”的嵌入式操作系统微内核
目前支持Cortex-M0/M3/M4,支持Keil/IAR/gcc
一.普通移植
普通移植是指在KLite已经支持的CPU架构(如Cortex-M0,M3,M4)上进行移植,
这种情况的移植工作非常简单,只需要修改源码cpu.c即可,对于其它文件请
不要修改。
对于cpu.c主要实现以下几个函数:
1.void cpu_init(void)
作用:初始化目标CPU的系统时钟
说明:此函数必须在kernel_init()之前手动调用,建议放在startup.s执行
2.void cpu_core_init(void)
作用:初始化内核用到的中断
说明:此函数在kernel_init()函数内部调用
3.void cpu_tick_init(void)
作用:初始化系统滴答定时器,通常为1ms
说明:此函数在kernel_start()函数内部调用
4.void cpu_idle(void)
作用:完成一些省电操作
说明:此函数在kernel空闲时由系统调用
二.完全移植
完全移植是指在KLite目前不支持的CPU架构(如ARM7,ARM9)上进行移植,
这种情况的移植难度比较大,需要修改cpu_core_xxx.s和cpu.c。
对于cpu_core_xxx.s文件需要实现以下功能:
1.中断管理
void cpu_irq_disable(void) //作用:关闭CPU中断
void cpu_irq_enable(void) //作用:开启CPU中断
2.线程堆栈管理
void cpu_tcb_init(struct tcb* tcb, uint32_t sp_min, uint32_t sp_max)
作用:初始化线程堆栈
说明:tcp为目标线程上下文指针,sp_min和sp_max为堆栈指针的最大值和最小值,
请根据目标CPU平台的堆栈增长方向决定目标TCB中的sp成员值,
并初始化堆栈中的:
PC=tcb->main (线程入口函数)
R0=tcb->arg (线程入口函数参数)
LR=kthread_exit(线程退出)
void cpu_tcb_switch(void)
作用:任务上下文切换
说明:全局变量kern_tcb_now为当前运行中的任务上下文指针
全局变量kern_tcb_new为即将切换到的任务上下文指针
a.将当前CPU运行相关的寄存器压入kern_tcb_now->sp指向的堆栈中
b.从kern_tcb_new->sp指向的堆栈中弹出CPU运行相关的寄存器
c.标记kern_tcb_new->state为运行状态,并将kern_tcb_now的值修改为kern_tcb_new
3.提供内核时钟
在目标CPU平台实现1个1ms中断的定时器,并在中断函数中调用kernel_tick()函数
对于cpu.c的修改,请参照前面的“普通移植”即可。
三.广告
如果你完成了一项完全移植,非常希望你能提交到http://git.oschina.net/kerndev/klite.git
如果你对KLite感兴趣,请加入QQ群:317930646
转载于:https://my.oschina.net/kerndev/blog/729409
KLite 移植说明 V1.0相关推荐
- 【今日爆点】华为HDC开发者大会上正式发布深度欧拉V1.0
3月27日上午,华为开发者大会2020(Cloud)通过华为云网线上开幕,首先华为宣布"沃土计划2.0"的进一步举措,将在2020年投入2亿美元推动鲲鹏计算产业发展,同时华为云与计 ...
- 【正点原子Linux连载】第四十一章 嵌入式Linux LED驱动开发实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- 转载:SRT传输库评估报告(V1.0.0)
原文地址:https://blog.csdn.net/mediapro/article/details/105790057,感谢大神: SRT传输库评估报告(V1.0.0) www.mediapro. ...
- MKS PI V1.0使用说明书
广州谦辉信息科技有限公司 MKS PI V1.0使用教程 创客基地QQ群:489095605 232237692 邮箱:Huangkaida@makerbase.com.cn 文章目录 一.产品简述 ...
- Spacecube V1.0:适应多任务应用的可重构SpaceCube处理系统
摘要 本文着重介绍了采用可重构SpaceCube系统来解决各种空间飞行任务的复杂应用需求的方法和有效性.SpaceCube是一个可重构的.模块化的.紧凑的.多处理平台,用于需要极高处理能力的空间飞行应 ...
- PC休闲游戏~植物大战僵尸-植物连连看v1.0正式发布啦(更新iPhone版本)!
11.29: 又稍微花了一些时间制作了HD的iPad版本,不过提交app store审核失败了,侥幸看来真的只有一次啊 -增加计分(done) -增加关卡选择(done) 6.14: 看到卖的很悲惨, ...
- MKS SKIPR V1.0 使用说明书
广州谦辉信息科技有限公司 创客基地QQ群:489095605 232237692 邮箱:Huangkaida@makerbase.com.cn MKS SKIPR V1.0使用说明书 文章目录 一.产 ...
- CDMA 1X WAP2.0业务网 设备实施规范 (V1.0)
CDMA 1X WAP2.0业务网 设备实施规范 (V1.0) 前 言: 近10年以来,移动通信(包括数据和语音)和Internet几乎成为了在全世界范围内发展最快,最具活力的两项技术.而Intern ...
- CDMA 1X通信网 WAP2.0业务技术体制 (V1.0)
CDMA 1X通信网 WAP2.0业务技术体制 (V1.0) 前 言 近10年以来,移动通信(包括数据和语音)和Internet几乎成为了在全世界范围内发展最快,最具活力的两项技术.而Internet ...
最新文章
- ajax dojo deferred,dojo(四):ajax请求
- 新冠疫苗生产靠AI?看强生、普华永道玩转AI的秘密
- 3 float py 位小数 裁剪_对一个 float 精度问题的分析
- linux安装报错之:ifconfig command not found解决
- Deep-Learning-with-Python] 文本序列中的深度学习
- 如何把备份的bak还原到新的数据库
- 修改项目图标_北京2022冬奥会和冬残奥会体育图标发布
- 2021安新中学高考成绩查询,石家庄二中雄安校区•河北安新中学2019届冲刺高考百日誓师大会...
- 前端CSS - 相对定位,绝对定位,固定定位
- Python让繁琐工作自动化——chapter15 保持时间、计划任务和启动程序
- JS中某事件需要同时调用几个function另类解决办法。
- jQuery常用插件
- xml与map的相互转换
- Sigma Designs SMP8910媒体处理器的3DTV、蓝光和OTT体验
- Python基础算法案例:24点纸牌游戏算法
- 离谱的布斯法(补码一位乘)
- 你也能看懂的:主成分分析法
- warning: waiting for transaction lock on /var/lib/rpm/.rpm.lock
- React Hook的用法: State + Effect(一)
- 描述自己性格的英语单词(优点)