mirror of
https://gitee.com/cosyos/cosyos.git
synced 2026-08-17 08:42:13 +08:00
经 CosyOS-III Cube 升级安装之后的系统构建 1、系统配置 CosyOS-配置 / syscfg.h -> 系统配置>>标准头文件,应首先被正确定义。 而后,在 C51、A51 标签页中,可能需要添加标准头文件的包含路径。 2、MCU配置 CosyOS-配置 / mcucfg_8051.h -> 系统时钟频率,需要正确定义。 3、main函数(参照例程 demo_main.c) 初始化 PendSV中断(必须) 配置 DEBUG(可选) 启动 CosyOS(必须) 4、系统中断(参照例程 demo_int.c) 屏蔽 定时器0中断原函数(必须) 屏蔽 PendSV中断原函数(必须) 5、DEBUG(可选,参照例程 demo_debug.c) 不出意外的话,您的项目现在已经可以正常编译了。 但在未来,仍需重点关注如下内容: 1、系统配置 CosyOS-配置 / syscfg.h [Keil支持图形] 2、MCU配置 CosyOS-配置 / mcucfg_8051.h [Keil支持图形] 3、启动文件配置 CosyOS-移植 / startup_8051.s [Keil支持图形] 启动文件关乎硬件栈配置、内存零安装等重要功能,但往往却被用户忽略。 4、移植文件配置 CosyOS-移植 / port_8051s.s 其中的用户定义部分,与PendSV中断配置、用户自定义任务切换现场保护 等功能息息相关,在未来可能需要适当调整。 5、编译器配置 Cube 已经为您初步优化了编译器配置,并配置为 NOOVERLAY方案。 如果您要自行调整编译器配置,应注意以下事项: (1)内存模型,必须选择Large模型 (2)优化级别,可选级别:4~8级,推荐级别:8级 CosyOS for 8051,有如下三种编译方案供您选择: (1)NOOVERLAY (2)OVERLAY-虚拟中断 (3)OVERLAY-手动修改调用树 其中 NOOVERLAY方案,不仅具有良好的易用性,其可靠性也是最高的, 优先推荐采用。 当内存资源紧张时再考虑 OVERLAY方案,以节约内存。建议只有精通 C51的高级用户考虑OVERLAY方案,以免对系统的可靠性造成不利影响, 因为C51对函数指针的调用树及覆盖分析有可能是错误的。 CosyOS内核中,通过函数指针间接调用并且调用树是错误的具体包括: ---------------------------------------------------------------- 函数类别 | 函数名称 | 真实调用处 --------------+-----------------------------------+------------- 定时中断钩子 | u_timint_##tmid | SysTick中断 --------------+-----------------------------------+------------- 定时查询钩子 | u_timqry_##tmid | SysTick中断 --------------+-----------------------------------+------------- 定时查询事件 | u_timqryevent_##tmid | SysTick中断 --------------------------------------------------+------------- 通过挂起服务调用(iPendSVC)间接调用的自定义函数 | PendSV 中断 ---------------------------------------------------------------- 这些函数在覆盖地图中都是被 ?C_INITSEG 调用的,如果采用覆盖方案, 覆盖地图中应逐一查看这些函数,对于使用了内存的应手动修正调用树或 移除覆盖分析。 ------------------------------------------------------------------- 其它注意事项 1、默认情况下,任务栈SIZE不允许大于255。只有在启用了XBPSTACK的任务切换 现场保护时,任务栈SIZE才允许大于255,最大可为65535。 2、CosyOS for 8051,原生仅适配 Keil C51 编译器,如果您使用其它编译器, 应注意以下事项: (1)CosyOS 内核中需要 __C51__ 关键字做条件编译,移植汇编文件中需要 __A51__ 关键字做条件编译,如果编译器不支持该关键字可自行添加。 (2)CosyOS 内核中会用到 #pragma NOAREGS 来实现相对寄存器访问,如果 编译器不支持应设法等效替换。 (3)已知某些编译器不支持 .s 汇编文件,可将移植文件中的 .s 文件更名为 .A51,如 port_8051s.s 更名为 port_8051s.A51。 (4)其它可能的、未知的兼容性问题。