fanxsp
发表于 2023-11-6 12:13:35
tzz1983 发表于 2023-10-28 10:08
51内核我用的型号也比较多,但是51内核植入OS就是比较烦,因为256字节IDATA的限制,我曾经也想自己做一个 ...
你是用什么板来测试的?刚买的STC的核心板,板上就电源和芯片,没有其它东西,连接示灯都 没有。想做几个STC的例子,试一下。
tzz1983
发表于 2023-11-6 12:56:51
fanxsp 发表于 2023-11-6 12:13
你是用什么板来测试的?刚买的STC的核心板,板上就电源和芯片,没有其它东西,连接示灯都 没有。想做几个 ...
我有很多实际项目本来就是用STC做的,我没有什么实验板,就是用自己的产品在做测试,你弄个屠龙刀吧,降龙棍好像也有指示灯。淘一个很便易的。试OS只要有个USB转串口线和几个指示灯基本就行了
神农鼎
发表于 2023-11-6 13:29:07
fanxsp 发表于 2023-11-6 12:13
你是用什么板来测试的?刚买的STC的核心板,板上就电源和芯片,没有其它东西,连接示灯都 没有。想做几个 ...
你把对应的原理图贴上来,如是 STC 官方出品,肯定有指示灯
CosyOS
发表于 2023-11-6 14:48:52
tzz1983 发表于 2023-11-3 11:19
赛元8547 是51内核吧,你做的OS能避开“搬栈”吗? 有没有办法 避开“搬栈”? 这个点我想了好久都没想到 ...
对于一个用51做的大型项目来说,我认为内存model采用大模式是人性化的、同时也完全兼顾性能的方法。
因为一个稍大型的项目,往往要定义很多的全局变量、很多的函数(局部变量),
当采用大模式时,只需把少量需要高效处理的变量定义存储域为data即可。
而采用小模式时,你会发现大量的变量都需要定义为xdata,这个工作量将远高于大模式。
当采用大模式时,由于只有少量的变量被定义为data,还方便了项目的迁移(至其它内核)。
当然,人各有志,别人采用小模式也自有他的道理(如一个很小的项目就很适合),各玩各的就好。
只不过,若使用了CosyOS,51就只能用大模式了。
fanxsp
发表于 2023-11-6 15:08:30
神农鼎 发表于 2023-11-6 13:29
你把对应的原理图贴上来,如是 STC 官方出品,肯定有指示灯
不是官方的,淘宝上买的。已经在商城再买一块开天斧了。
神农鼎
发表于 2023-11-6 15:15:49
如何扫码网上小量购买:通过新分销商的 STCMCU 商铺 购买产品的操作手册简介:江苏芯安集成电路设计有限公司是STC官方授权的分销商,现芯安上线 微信【小程序商城】,方便客户线上购买。操作流程如下:一、如何找到 STCMCU 商铺1. 可以扫描下方微信二维码进入关注STCMCU 公众号,通过公众号菜单进入;2. 也可直接在微信搜索STCMCU,关注公众号或直接进入STCMCU 商铺。
CosyOS
发表于 2023-11-6 16:04:04
CosyOS - 栈的处理方式
首先,我简单介绍一下CosyOS对栈的处理。
CosyOS把栈的处理方式称之为任务栈模式,共分为三种,
MSP模式、PSP模式、MSP+PSP模式。
1、对于51来说,CosyOS采用了搬栈这一传统方案,也就是MSP模式。
2、对于Arm来说,CosyOS所采用的方法当然是主流的双栈指针了,
也就是MSP+PSP模式。
3、对于251/32G系列或者AI8051U来说,
CosyOS支持MSP模式、PSP模式,这两种模式供用户选择。
(1)MSP模式,当然还是搬栈;
(2)PSP模式,每个任务的任务栈都是主栈,当哪个任务运行时,
哪个任务的任务栈就是当前的主栈。
PSP模式与MSP+PSP模式的异同
PSP模式,中断入栈也入任务栈,所以需要更大的任务栈;
MSP+PSP模式,中断时为Handler模式,入栈入的是主栈;
任务时为Thread模式,入栈入的是当前任务的任务栈。
可以看出,PSP模式相比MSP+PSP模式,需要更大的任务栈(保存中断入栈),
也就是需要更大的edata内存/直接支持堆栈,然而这也是没有办法的事情。
MSP模式的优势
凡事都是辩证的,有一利必有一弊。
MSP模式虽然在任务切换时保存现场/恢复现场的效率低下,
但只要主栈和内存池足够大,就可确保所有任务栈永不溢出,
当然,前提是任务栈得是动态的。
这一点是PSP模式、MSP+PSP模式所不具备的。
PSP模式、MSP+PSP模式,一旦任务栈溢出,既成事实,
数据覆盖可能已经发生,无法挽回。
fanxsp
发表于 2023-11-6 16:31:20
CosyOS 发表于 2023-11-6 16:04
CosyOS - 栈的处理方式
首先,我简单介绍一下CosyOS对栈的处理。
这个思路是很好,能不能详细说明一下,是怎么实现的。一般任务栈的大小都是静态的,也就是在编译时就已经确定。
CosyOS
发表于 2023-11-6 16:43:43
CosyOS 发表于 2023-11-6 16:04
CosyOS - 栈的处理方式
首先,我简单介绍一下CosyOS对栈的处理。
我只是简单介绍一下CosyOS对栈的处理,仅供参考,当然也欢迎大家批评指正。
我观STC官方移植的FreeRTOS-STC32G,和网友tzz1983移植的UCOSII-STC32G,似乎都未提供MSP模式,
当用户任务数量达到10个以上时,4K的edata内存大概率是不够用的,当然这取决于多方面因素,如全局变量的多少,创建了多少内核对象(邮箱、队列等),中断优先级共用了几级等。
CosyOS
发表于 2023-11-6 16:50:22
本帖最后由 CosyOS 于 2023-11-6 17:16 编辑
fanxsp 发表于 2023-11-6 16:31
这个思路是很好,能不能详细说明一下,是怎么实现的。一般任务栈的大小都是静态的,也就是在编译时就已经 ...
你把任务栈设计成动态的就可以了,在初始化时malloc分配用户定义的size。当任务切换时,发现主栈里的数据拷贝到任务栈放不下时,再重分配够大的任务栈即可。
具体你可参考 CosyOS-II 源码。
页:
1
2
3
4
5
6
[7]
8
9
10
11
12
13