# OSAL
OSAL(operating system abstraction layer),操作系统抽象层,是一种以实现多任务为核心的系统资源管理机制,实现了类似操作系统的某些功能,但并不能称之为真正意义上的操作系统。本OSAL仓库源码来源于TI CC2530的zigbee协议栈Z-Stack中,剥离了其应用相关及不通用的功能模块,提取其最核心的事件驱动型多任务内核。OSAL的实现源码非常精简高效,总共约1100多行,全部纯C语言实现,最小资源占用要求为RAM约512Byte,ROM约2KB。理论上可以移植至全部支持C语言的芯片平台。
## OSAL移植的接口
| OSAL接口 | 说明 |
| -- | -- |
| Message Management API | 消息管理 |
| Task Synchronization API | 任务同步 |
| Timer Management API | 定时器管理 |
| Memory Management API | 内存管理 |
## 移植说明
1. 完成hal\timer.c文件,为系统提供滴答时钟,建议滴答心跳的周期为1~10ms,并对应修改hal\timer.h中的宏定义TICK_PERIOD_MS为相应心跳毫秒值;
2. 修改osal\type.h文件中的全局中断开关宏定义(可为空),根据需要修改数据类型的宏定义,根据实际芯片字长修改“halDataAlign_t”类型;
3. 根据需要修改osal\osal_memory.h文件中的内存池大小定义,默认最大为32768字节,osal\osal_memory.c中osalMemHdr_t类型需要确保长度为16bit或以上,非8位单片机需要设定内存池的字节对齐;
4. 添加任务函数中的任务优先级数值大的任务则优先级高;
5. 根据需要修改osal\osal_memory.h文件中的OSALMEM_METRICS定义,有效则开启内存统计功能;
各API的使用可参考doc下的官方API手册《OSAL_API.pdf》。
## 动态内存管理拓展说明
OSAL中默认使用15位的数据标识管理内存,最大能管理32768字节,需要增加管理更多的动态内存可按照以下方式拓展:
1. 注释掉osal_memory.c中的内存大小编译限制;
2. 替换osal_memory.c中的全部uint16为osalMemHdr_t;
3. 修改osal_memory.h中的osalMemHdr_t类型宏为halDataAlign_t,确保芯片字长halDataAlign_t为32bit;
4. 修改osal_memory.c中的宏定义OSALMEM_IN_USE为0x80000000;
## 编译运行
本仓库在linux下可以直接编译运行基础例程,例程定义了两个任务,任务一使用定时器API进行定时触发打印事件,并累计打印次数,每累计5次就会向任务二发送统计事件,任务二接收任务一发送的统计事件后进行统计结果的打印输出。
编译:
```shell
wat@wat:~$ make
building ./app/main.c
building ./app/osal_main.c
building ./app/print_task.c
building ./app/statistics_task.c
building ./hal/timer.c
building ./osal/osal_msg.c
building ./osal/osal_event.c
building ./osal/osal_timer.c
building ./osal/osal_memory.c
building ./osal/osal.c
linking object to linux-osal-example.elf
real 0m0.585s
user 0m0.332s
sys 0m0.242s
```
运行:
```shell
wat@wat:~$ ./linux-osal-example.elf
Init hal timer ok !
Print task printing, total memory : 6144 byte, used memory : 92 byte !
Print task printing, total memory : 6144 byte, used memory : 92 byte !
Print task printing, total memory : 6144 byte, used memory : 92 byte !
Print task printing, total memory : 6144 byte, used memory : 92 byte !
Print task printing, total memory : 6144 byte, used memory : 92 byte !
Statistics task receive print task printf count : 5
Print task printing, total memory : 6144 byte, used memory : 92 byte !
Print task printing, total memory : 6144 byte, used memory : 92 byte !
Print task printing, total memory : 6144 byte, used memory : 92 byte !
Print task printing, total memory : 6144 byte, used memory : 92 byte !
Print task printing, total memory : 6144 byte, used memory : 92 byte !
Statistics task receive print task printf count : 10
Print task printing, total memory : 6144 byte, used memory : 92 byte !
Print task printing, total memory : 6144 byte, used memory : 92 byte !
......
```
没有合适的资源?快使用搜索试试~ 我知道了~
嵌入式+单片机+微型操作系统+C
共161个文件
sample:12个
c:10个
d:10个
需积分: 5 0 下载量 182 浏览量
2024-05-15
19:10:11
上传
评论
收藏 500KB ZIP 举报
温馨提示
OSAL(operating system abstraction layer),操作系统抽象层,是一种以实现多任务为核心的系统资源管理机制,实现了类似操作系统的某些功能,但并不能称之为真正意义上的操作系统。本OSAL仓库源码来源于TI CC2530的zigbee协议栈Z-Stack中,剥离了其应用相关及不通用的功能模块,提取其最核心的事件驱动型多任务内核。OSAL的实现源码非常精简高效,总共约1100多行,全部纯C语言实现,最小资源占用要求为RAM约512Byte,ROM约2KB。理论上可以移植至全部支持C语言的芯片平台。
资源推荐
资源详情
资源评论
收起资源包目录
嵌入式+单片机+微型操作系统+C (161个子文件)
0167dd07aa6341a7a3a4b15bb1cb1557ac46c6 384B
031dca130ae0acf56fca120fd90ddef07b4fb3 77B
0623d57705bd8906e6c55ae732e7c8c00e2ad0 168B
088b5aad83a90012c02392aeabc36abbf7e6b8 262B
0afefe3a44ac6430f9f20a625187d1d3447b09 1KB
0c15b4d1c853946cee2566d09a2c2ee3ce5366 127B
0ff71d1c850adf2ca60026de3b62e557b8f099 140B
1190bcd89bbfe99c4272e2fd7316dc296ad10d 651B
218a2b23a63846b825d88e9ad33454cb644bd1 406B
25e060ab1f4c4bc0ae4e7ddd954ad3137c74b2 91B
26ee9a01f948c706debbc1801c6870e2c13d05 1KB
276dac0942851dca5a22982992850f3cf45545 5KB
28cae83aebc86c5d25ed0e11b5bb5573d084c2 458B
3435c8164b77e86440e5611f8dc671fff4d50a 269B
373df0f10e61879647dfde4201dc79b416001d 705B
38dcef195dcb6f9650eca7cb11a53dcde03b3e 333B
3c5ab3fb0e21c8f6c0bacf1595d7214f68e6d7 186B
40228c95fed0e4099215b35e86b7f34d916469 117B
42e67da482df87f7d66bacb01f02d95287703b 1KB
458ed77249fb6780cc4a7177d4a3f5c18b7c48 1KB
4da6ebcef87fa8d9d36606e0c9a45e7b4b2830 1KB
4e8308aef8228b50865e16ca20e2859ea99fb5 146B
52e7e5406112fe1e0d75f4c72a969a1008a414 512B
578475da75a7e0042328a0d621a27248ac43d6 368B
58e75402980a770cbc91a22dd115e84604d184 330B
5945cc3a0ef1790b11aa5e05334416cc5d7caa 52B
5a270d3903ff6eafb551e52416f39c31851988 77B
6247d6adb7ca1296f691cc59b3cfb4fa6322c5 653B
6268f74bf2be9a66c6a19479ae5b6f4a758e0d 176B
6449aa6a2a8098694454fd75cb519fb1b723a0 158KB
65ef6e582431f009ba681ca73b9779f3f81eb6 52B
6a6319d5e16ec982eb371d4fc8badbef6b0c5f 320B
6af1fac54c785e7766c08e8348f6a643b41dd2 419B
6f22e7b9d103bdd2f5cbc23ab5087f1c22b4b7 828B
762696af739f4ebc6f134b0495f00e37e88e3f 173B
770ff59756f3068d6103dac51dae130a152966 325B
77cf7cbdebdea4a89eb43097190e1f1a909771 186B
7836af29aa3d7c5461e558e7b985266fe36231 354B
78a67f0c6ea04a9295b3a314ace1d780de45a7 270B
7a0662429557aefabb88e92dd7a6362bd67237 2KB
7a9a1fb22e7a0e4f15b5a74a7b3a5d841bff81 3KB
7ae1e1e4996d03db0d044d681f74c1349a484b 200B
8290aba185bc318a128647ca32346f3acb43ae 525B
836fe06b2aca93bc3163cd0e702c4c599d7331 3KB
8ab11d345805e8bcfddfdadcf5ec7a29b194d3 3KB
9110fd5e223065d684041d3b63a5d73db4ba4a 912B
929bf899471a4ad7c84ece52dd45e3672602ec 262B
95b197faa22a507b6fb3f2aaf85cc47847bc24 236B
96190892a93eb3409c65d5a88204e3e4f9390e 3KB
984867afa57d788237c53556c37843a02b37ac 383B
9b7698bbb92502b6c3749ac59a4d7f633a22b5 52B
9f28c30c4614e8358e089a06bfc7dcd7f8e32a 139B
a0262bdecb27ae0c43e034bb26b3bd70c21f24 293B
a190046be365547b61c953b9b3bf6605093db2 601B
a5b7bfe4820b42e13fed3f4628445b3f647c41 5KB
a6411b6def4eea36406c291de19e1ed1016259 90B
a7afd942c8e90ddbdfa6fa765543d9bffaa30b 2KB
abed30b0af7d4fd24c6dd5a2c70313a4f84927 163B
ae63ad57064f4160290b081ebf0c8fff39c4f2 2KB
b0381a22b702688a6c6c20ba150b9a9217868e 153B
b1a47b79a63c886677fcb99ab18ff0a6a5b5e5 57B
b28d3c68076de60d2ef17f3f519b38a489b704 133B
b60eedd3e0ad2ec0f0f245f0d760e36a127aaa 507B
b7a294516352e2b45beb31ad646a12d62f4d7f 905B
bbfad39eeceb471034017de60bc6148f32cf30 326B
bc2520328adfc5a1991b3d9dda2f5e92eef506 524B
bc7858cb4bfafa487bde22102e70f9ae42977d 123B
bebd979c70bc2a60b5a500a4a1654db7fc54c1 173B
bf31df67c6de5fdfb54be25b8aadaacb3f0d86 682B
build.bfg 281B
osal_memory.c 13KB
osal_timer.c 13KB
osal_msg.c 11KB
osal.c 5KB
osal_event.c 5KB
print_task.c 3KB
timer.c 2KB
statistics_task.c 2KB
osal_main.c 814B
main.c 355B
c12d8d90347d196ab737b04227aa693152bd93 113B
c1cbfd0cae2ff261a4a7cc30024efaadd99d45 681B
c504929cc7412d139a86ec9c28fa2414ca9aba 182B
c796a783ad8267278c1bf38c212bcad257031c 407B
config 304B
statistics_task.d 202B
print_task.d 187B
osal_main.d 184B
main.d 169B
osal_msg.d 161B
osal_event.d 139B
osal_timer.d 139B
osal.d 133B
osal_memory.d 90B
timer.d 82B
d028e620debe957cf18dadbaacf4a1d39e33f4 489B
d669525915c39a04490d4cf66020ef1431d272 412B
da378eee94c09d6d23c227951c70270492d153 507B
da573b2e8c7b258d959f715d4ae8c21cecbea7 1KB
dc0203e89bbfe0104268410ef73d393c54834e 411B
共 161 条
- 1
- 2
资源评论
疯狂理查德
- 粉丝: 53
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功