找回密码
 立即注册
楼主: tzz***

uC/OS-II @ STC32G 移植

[复制链接]
  • TA的每日心情
    奋斗
    1 小时前
  • 签到天数: 171 天

    [LV.7]常住居民III

    1

    主题

    164

    回帖

    707

    积分

    高级会员

    积分
    707
    发表于 2023-11-6 12:13:35 | 显示全部楼层
    tzz1983 发表于 2023-10-28 10:08
    51内核我用的型号也比较多,但是51内核植入OS就是比较烦,因为256字节IDATA的限制,我曾经也想自己做一个 ...

    你是用什么板来测试的?刚买的STC的核心板,板上就电源和芯片,没有其它东西,连接示灯都 没有。想做几个STC的例子,试一下。

    点评

    你把对应的原理图贴上来,如是 STC 官方出品,肯定有指示灯  详情 回复 发表于 2023-11-6 13:29
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    20

    主题

    575

    回帖

    1191

    积分

    荣誉版主

    积分
    1191
     楼主| 发表于 2023-11-6 12:56:51 | 显示全部楼层
    fanxsp 发表于 2023-11-6 12:13
    你是用什么板来测试的?刚买的STC的核心板,板上就电源和芯片,没有其它东西,连接示灯都 没有。想做几个 ...

    我有很多实际项目本来就是用STC做的,我没有什么实验板,就是用自己的产品在做测试,你弄个屠龙刀吧,降龙棍好像也有指示灯。淘一个很便易的。试OS只要有个USB转串口线和几个指示灯基本就行了
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9459

    回帖

    1万

    积分

    管理员

    积分
    14001
    发表于 2023-11-6 13:29:07 | 显示全部楼层
    fanxsp 发表于 2023-11-6 12:13
    你是用什么板来测试的?刚买的STC的核心板,板上就电源和芯片,没有其它东西,连接示灯都 没有。想做几个 ...

    你把对应的原理图贴上来,如是 STC 官方出品,肯定有指示灯
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 13:14
  • 签到天数: 172 天

    [LV.7]常住居民III

    5

    主题

    572

    回帖

    2327

    积分

    荣誉版主

    积分
    2327
    发表于 2023-11-6 14:48:52 | 显示全部楼层
    tzz1983 发表于 2023-11-3 11:19
    赛元8547 是51内核吧,你做的OS能避开“搬栈”吗? 有没有办法 避开“搬栈”? 这个点我想了好久都没想到 ...

    对于一个用51做的大型项目来说,我认为内存model采用大模式是人性化的、同时也完全兼顾性能的方法。
    因为一个稍大型的项目,往往要定义很多的全局变量、很多的函数(局部变量),

    当采用大模式时,只需把少量需要高效处理的变量定义存储域为data即可。
    而采用小模式时,你会发现大量的变量都需要定义为xdata,这个工作量将远高于大模式。
    当采用大模式时,由于只有少量的变量被定义为data,还方便了项目的迁移(至其它内核)。

    当然,人各有志,别人采用小模式也自有他的道理(如一个很小的项目就很适合),各玩各的就好。

    只不过,若使用了CosyOS,51就只能用大模式了。



    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    1 小时前
  • 签到天数: 171 天

    [LV.7]常住居民III

    1

    主题

    164

    回帖

    707

    积分

    高级会员

    积分
    707
    发表于 2023-11-6 15:08:30 | 显示全部楼层
    神农鼎 发表于 2023-11-6 13:29
    你把对应的原理图贴上来,如是 STC 官方出品,肯定有指示灯

    不是官方的,淘宝上买的。已经在商城再买一块开天斧了。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9459

    回帖

    1万

    积分

    管理员

    积分
    14001
    发表于 2023-11-6 15:15:49 | 显示全部楼层
    截图202311061515289076.jpg

    如何扫码网上小量购买
    通过新分销商的 STCMCU 商铺 购买产品的操作手册
    简介:江苏芯安集成电路设计有限公司是STC官方授权的分销商,
    现芯安上线 微信【小程序商城】,方便客户线上购买。操作流程如下:
    一、如何找到 STCMCU 商铺
    1. 可以扫描下方微信二维码进入关注STCMCU 公众号,通过公众号菜单进入;
    2. 也可直接在微信搜索STCMCU,关注公众号或直接进入STCMCU 商铺。

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 13:14
  • 签到天数: 172 天

    [LV.7]常住居民III

    5

    主题

    572

    回帖

    2327

    积分

    荣誉版主

    积分
    2327
    发表于 2023-11-6 16:04:04 | 显示全部楼层
    本帖最后由 CosyOS 于 2023-11-6 16:18 编辑

    CosyOS - 栈的处理方式

    首先,我简单介绍一下CosyOS对栈的处理。
    CosyOS把栈的处理方式称之为任务栈模式,共分为三种,MSP模式PSP模式MSP+PSP模式
    1、对于51来说,CosyOS采用了搬栈这一传统方案,也就是MSP模式。
    2、对于Arm来说,CosyOS所采用的方法当然是主流的双栈指针了,也就是
    MSP+PSP模式。
    3、对于251来说,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模式,一旦任务栈溢出,既成事实,数据覆盖可能已经发生,无法挽回。


    点评

    我只是简单介绍一下CosyOS对栈的处理,仅供参考,当然也欢迎大家批评指正。 我观STC官方移植的FreeRTOS-STC32G,和网友tzz1983移植的UCOSII-STC32G,似乎都未提供MSP模式, 当用户任务数量达到10个以上时,4K的edata  详情 回复 发表于 2023-11-6 16:43
    这确实是个好思路  发表于 2023-11-6 16:19
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    1 小时前
  • 签到天数: 171 天

    [LV.7]常住居民III

    1

    主题

    164

    回帖

    707

    积分

    高级会员

    积分
    707
    发表于 2023-11-6 16:31:20 | 显示全部楼层
    CosyOS 发表于 2023-11-6 16:04
    CosyOS - 栈的处理方式

    首先,我简单介绍一下CosyOS对栈的处理。

    这个思路是很好,能不能详细说明一下,是怎么实现的。一般任务栈的大小都是静态的,也就是在编译时就已经确定。

    点评

    你把任务栈设计成动态的就可以了,在初始化时malloc分配用户定义的size。当任务切换时,发现主栈里的数据拷贝到任务栈放不下时,再重分配够大的任务栈即可。  详情 回复 发表于 2023-11-6 16:50
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 13:14
  • 签到天数: 172 天

    [LV.7]常住居民III

    5

    主题

    572

    回帖

    2327

    积分

    荣誉版主

    积分
    2327
    发表于 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内存大概率是不够用的,当然这取决于多方面因素,如全局变量的多少,创建了多少内核对象(邮箱、队列等),中断优先级共用了几级等。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 13:14
  • 签到天数: 172 天

    [LV.7]常住居民III

    5

    主题

    572

    回帖

    2327

    积分

    荣誉版主

    积分
    2327
    发表于 2023-11-6 16:50:22 | 显示全部楼层
    本帖最后由 CosyOS 于 2023-11-6 17:16 编辑
    fanxsp 发表于 2023-11-6 16:31
    这个思路是很好,能不能详细说明一下,是怎么实现的。一般任务栈的大小都是静态的,也就是在编译时就已经 ...

    你把任务栈设计成动态的就可以了,在初始化时malloc分配用户定义的size。当任务切换时,发现主栈里的数据拷贝到任务栈放不下时,再重分配够大的任务栈即可。
    具体你可参考 CosyOS-II 源码。
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-17 09:14 , Processed in 0.075111 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表