找回密码
 立即注册
楼主: CosyOS

全局不关总中断的 RTOS,CosyOS-III-V1.2.0, 送 擎天柱-AI8051U转89C52核心板

 火... [复制链接]

5

主题

1070

回帖

4729

积分

荣誉版主

积分
4729
 楼主| 发表于 2024-7-1 22:08:40 | 显示全部楼层
stc-x*** 发表于 2024-7-1 21:09
CosyOS-II-STC8H中,默认情况下,系统时钟是定时器0,pendSV是外部中断0,DEBUG监控是串口2。因CosyOS-II-S ...

printf()是C51标准库函数,调用的是标准库的putchar(),就是连接到串口1。
如果想更换其它串口,只能自己重写putchar()。
回复

使用道具 举报 送花

17

主题

29

回帖

299

积分

中级会员

积分
299
发表于 2024-7-2 10:28:20 | 显示全部楼层
有点照本宣科的感觉。
回复

使用道具 举报 送花

5

主题

1070

回帖

4729

积分

荣誉版主

积分
4729
 楼主| 发表于 2024-7-2 23:14:34 | 显示全部楼层
tzz1*** 发表于 2024-6-30 20:13
非常感谢, 等会我去尝试

我找到 PUSH DR56 导致 访问 xdata 异常的原因了!
不是 不能 PUSH DR56,

是因为各个任务在首次调度的时候,是直接恢复现场,
所以,各个任务栈数据的初始化 要正确,DPXL 对应的字节需要正确的初始化,
直接把 DPXL 赋值给它就行。
示例:*(s_u8_t *)(node_news->bsp + MCUCFG_BASICSTACKSIZE - 5) = DPXL;

因为 DPXL 在启动文件中已经被正确赋值了:

截图202407022300081733.jpg


这样,就可以 PUSH/POP DR56 了。

现在,我这里测试都已经 OK 了。




点评

非常感谢您的关心 不过我这里不是这个问题, 任务初始化时,我一直有对DPXL的处理的 之前是这样子的, 从来没有因为POP DR56出现过问题 [attachimg]49799[/attachimg] 即便是现在我改了,问题还是没解决 [attachim  详情 回复 发表于 2024-7-3 10:15
回复

使用道具 举报 送花

19

主题

920

回帖

2767

积分

荣誉版主

积分
2767
发表于 2024-7-3 10:15:07 | 显示全部楼层
本帖最后由 tzz1983 于 2024-7-3 10:16 编辑
Cos*** 发表于 2024-7-2 23:14
我找到 PUSH DR56 导致 访问 xdata 异常的原因了!
不是 不能 PUSH DR56,
是因为各个任务在首次调度的时 ...

非常感谢您的关心

不过我这里不是这个问题, 任务初始化时,我一直有对DPXL的处理的
之前是这样子的, 从来没有因为POP DR56出现过问题

截图202407031001392498.jpg



即便是现在我改了,问题还是没解决
截图202407031003514893.jpg


截图202407031005118193.jpg


现在我的问题是, 只要把任务控制块放在XDATA, 就是出现各种不服.  (仅限任务控制块, 其它OS全局变量放在XDATA不影响)

另外一点很有意思, 就是启用URAT1 的DMA时才会出问题, URAT1中断模式没有问题.  
我仔细检查了DMA相关的代码, 确实找不到问题, 那代码量也不大.
那现在问题来了, 到底是因为 DAM 未知的影响(或软件/或硬件的),  还是OS移植本身的问题 , 很难判断。
访真也很难起作用, 即抓不到出问题的那个时间节点.



点评

看来,我们的情况是不同的。 那就检查下 所有指向任务控制块的指针,注意指针域。 我曾有过多次经验,同一个功能、同一段代码,在C51、MDK,下测试都没问题, 在C251下,尤其是Large模型,就会出问题。 这通常都与  详情 回复 发表于 2024-7-3 12:30
回复

使用道具 举报 送花

8

主题

89

回帖

1055

积分

金牌会员

积分
1055
发表于 2024-7-3 11:06:16 | 显示全部楼层
Cos*** 发表于 2024-6-27 19:44
CosyOS-II 最新版 V3.0.0 发布!

新版特性:

我刚刚把之前 CosyOS-II V2.2.2 升级到 V3.0.0
过程很丝滑,比较简单
自动进入省电/休眠/掉电模式 已经增加到配置中 ,终于不用改内核代码
希望这个世界让我小装一次B
回复

使用道具 举报 送花

19

主题

920

回帖

2767

积分

荣誉版主

积分
2767
发表于 2024-7-3 11:30:29 | 显示全部楼层
Cos*** 发表于 2024-6-30 13:33
根据我的经验,当内核对象在 XDATA 时,需注意以下事项:

1、generate reentrant fuctions,不要打勾。

回馈一个问题:
虽然通过研究发现,一个可重入函数,即使局部变量被定义在xdata中,仍然还是分配在可重入栈中,
也就是“可重入优先原则
这个说法并不严谨.以下6种举例:


void TestXdata(void) reentrant
{
        unsigned char val[1];           //large编译模式 正确, 变量在重入栈中
   
    val[0] = 0XFF;
    P2 = val[0];
}

void TestXdata(void) reentrant
{
        unsigned char edata val[1];     //large编译模式 不正确, 变量为固定位置
   
    val[0] = 0XFF;
    P2 = val[0];
}

void TestXdata(void) reentrant
{
        unsigned char xdata val[1];     //large编译模式 正确, 变量在重入栈中
   
    val[0] = 0XFF;
    P2 = val[0];
}

void TestXdata(void) reentrant
{
        unsigned char val[1];           //xsmall编译模式 正确, 变量在重入栈中
   
    val[0] = 0XFF;
    P2 = val[0];
}

void TestXdata(void) reentrant
{
        unsigned char edata val[1];     //xsmall编译模式 正确, 变量在重入栈中
   
    val[0] = 0XFF;
    P2 = val[0];
}

void TestXdata(void) reentrant
{
        unsigned char xdata val[1];     //xsmall编译模式 不正确, 变量为固定位置
   
    val[0] = 0XFF;
    P2 = val[0];
}

以上红色两种情况并没有体现出 "可重入优先的原则"
总结来说, 正确的说法应该是:  局部变量(含参数)不要强制指定存储类型, 让编译器自己决定. 就不会出错


点评

研究的很仔细,  详情 回复 发表于 2024-7-3 12:32
回复

使用道具 举报 送花

5

主题

1070

回帖

4729

积分

荣誉版主

积分
4729
 楼主| 发表于 2024-7-3 12:30:52 | 显示全部楼层
tzz1*** 发表于 2024-7-3 10:15
非常感谢您的关心

不过我这里不是这个问题, 任务初始化时,我一直有对DPXL的处理的

看来,我们的情况是不同的。
那就检查下 所有指向任务控制块的指针,注意指针域。
我曾有过多次经验,同一个功能、同一段代码,在C51、MDK,下测试都没问题,
在C251下,尤其是Large模型,就会出问题。
这通常都与 指针域 或 指针的应用 相关。

我曾碰到的两个问题:
1、两个不同指针域的指针变量,放在一个union中,会出问题,最后改为只定义一个指针变量,需要时再强制转换;
2、数据结构不要用指针直接赋值,改为memcpy。
示例(CosyOS 任务管理器):
s_tasknode_ts     node_temp;
s_tasknode_tsp    node_curr = sTaskNode(&u_taskhand_Taskmgr);

node_temp = *node_curr; // 早期的方法,在Large模型时异常
s_memcpy(&node_temp, node_curr, sizeof(s_tasknode_ts)); // 现在的方法,各种情况都正常


回复

使用道具 举报 送花

5

主题

1070

回帖

4729

积分

荣誉版主

积分
4729
 楼主| 发表于 2024-7-3 12:32:52 | 显示全部楼层
tzz1*** 发表于 2024-7-3 11:30
回馈一个问题:
这个说法并不严谨.以下6种举例:

研究的很仔细,
回复

使用道具 举报 送花

5

主题

1070

回帖

4729

积分

荣誉版主

积分
4729
 楼主| 发表于 2024-7-3 12:33:56 | 显示全部楼层
Yang.*** 发表于 2024-7-3 11:06
我刚刚把之前 CosyOS-II V2.2.2 升级到 V3.0.0
过程很丝滑,比较简单
自动进入省电/休眠/掉电模式 已经增 ...

回复

使用道具 举报 送花

已绑定手机

0

主题

9

回帖

80

积分

注册会员

积分
80
发表于 2024-7-3 14:00:58 | 显示全部楼层
Cos*** 发表于 2023-10-20 22:30
参会学习,【免费+包邮 送】:
【一箭双雕之USB转双串口,2个USB-CDC转串口+HID烧录】
【STC-USB Link1D,2 ...

你好我想问一下就是怎么领取就是在咱们这个一件双雕呢?

点评

【免费+包邮】 送/申样/采购 可上班时间加 如下您对应地区的客服 QQ或微信联系 加STC华南区客服刘经理QQ: 3398500488 ;微信:18106296592 要求 【免费+包邮】 送, 还免费教仿真 加STC华南区客服曹经理QQ:19338922  详情 回复 发表于 2024-7-3 14:35
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-11-11 23:54 , Processed in 0.075687 second(s), 91 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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