mirror of
https://gitee.com/cosyos/cosyos.git
synced 2026-10-06 04:59:34 +08:00
87 lines
4.1 KiB
Plaintext
87 lines
4.1 KiB
Plaintext
经 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)其它可能的、未知的兼容性问题。
|
||
|
||
|