Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
MicroBlaze软核
microblaze tc问题
发布于 2012-10-25 08:41:35 浏览:5829
订阅该版
将以前的移植挪到rt-thread 1.1.0上,稍微改了一点代码,就运行以来。 简单交代一下运行环境:components下只选了finsh和libc,libc用的minilibc。examples中只有kernel部分。 microblaze跑在avnet的lx9开发板上。配置了mb,bram 16K,cache i/d各2K,usb_uart,timer,debug,ddr,gpio_led。其中timer和usb_uart开了中断。程序在ddr中运行。 目前tc没有通过的是: thread,mempool,messageq没有通过测试。 例如,thread_delay测试两次,第一次没有通过,第二次通过了。 ``` > finsh>>tc_start("thread_delay") 0, 0x00000000 finsh>>Run TestCase: thread_delay thread inited ok thread delay 10 tick TestCase[thread_delay] failed RT-Thread TestCase Running Done! finsh>>tc_start("thread_delay") 0, 0x00000000 finsh>>Run TestCase: thread_delay thread inited ok thread delay 10 tick thread delay 15 tick thread exit TestCase[thread_delay] passed RT-Thread TestCase Running Done! ``` thread_delete测试,运行了几次,有时候能通过,有时候不能通过: ``` > finsh>>tc_start("thread_delete") 0, 0x00000000 finsh>>Run TestCase: thread_delete thread1 end tid2 is bad TestCases[thread_delete] failed TestCase[thread_delete] failed Run TestCase: thread_delete thread1 end TestCases[thread_delete] failed tid2 is bad TestCases[thread_delete] failed TestCase[thread_delete] failed Run TestCase: thread_delete thread1 end TestCases[thread_delete] failed thread2 end TestCase[thread_delete] failed RT-Thread TestCase Running Done! finsh>>tc_start("thread_delete") 0, 0x00000000 finsh>>Run TestCase: thread_delete thread1 end thread2 end TestCase[thread_delete] passed RT-Thread TestCase Running Done! ```
查看更多
14
个回答
默认排序
按发布时间排序
nl1031
2012-10-25
这家伙很懒,什么也没写!
编译加优化O2后,TC绝大部分都能测试通过,真是奇怪。
nl1031
2012-10-25
这家伙很懒,什么也没写!
简单比较了O0和O2的反汇编代码,O2更接近于C语言表达。 例如: rt_tick_t rt_tick_get(void) { /* return the global tick */ return rt_tick; } O0的反汇编: a400021c
: a400021c: 3021fff8 addik r1, r1, -8 a4000220: fa610004 swi r19, r1, 4 a4000224: 12610000 addk r19, r1, r0 a4000228: b000a402 imm -23550 a400022c: e860b408 lwi r3, r0, -19448 a4000230: 10330000 addk r1, r19, r0 a4000234: ea610004 lwi r19, r1, 4 a4000238: 30210008 addik r1, r1, 8 a400023c: b60f0008 rtsd r15, 8 a4000240: 80000000 or r0, r0, r0 O2的反汇编: a4000204
: a4000204: b000a402 imm -23550 a4000208: e8601730 lwi r3, r0, 5936 a400020c: b60f0008 rtsd r15, 8 a4000210: 80000000 or r0, r0, r0 看来以后就用O2优化吧
bernard
2012-10-25
这家伙很懒,什么也没写!
thread_delay失败,你那边是否把OS_TICK开得特别高?或者串口波特率非常低?thread_delay的测试代码本身存在些问题,我已经修正从更新了,可以再试试。 thread_delete好像也是OS_TICK分辨率非常高的缘故?RT_TICK_PER_SECOND的值是多少?
nl1031
2012-10-25
这家伙很懒,什么也没写!
RT_TICK_PER_SECOND是100,串口波特率是115200。可能是uart的发送fifo比较小,用查询方式发送速度比较慢。我在rt_kprintf()前后控制gpio,然后用示波器测量了一下,打印10几个字符大约需要1.5mS。 现在经过O2的优化处理,以及修改了thread_delay,thread_delete,thread_same_priority,执行tc_start("thread")全部通过了。 原来以为不优化,占用的堆栈可能会多一些,增加了stack尺寸,也没有效果。算了,没时间仔细研究编译器的优化问题了。就用O2优化吧。
nl1031
2012-10-25
这家伙很懒,什么也没写!
thread_delay修改跟以前一样,将打印字符的位置进行了调整。 thread_delete中问题比较奇怪,将_tc_thread_delete函数中的返回值增大一些,就可以通过测试。原来是25,修改成27后,反复测试没有出过错误。 thread_same_priority还跟上次遇到情况一样,_tc_thread_same_priority函数中,返回100不起作用,返回前,增加了rt_thread_delay(100)能通过测试。不过,thread_same_priority好像还有问题,单独执行tc_start("thread_same_priority")测试,会反复测试退不出来。我增加了两个count的打印。 finsh>>tc_start("thread_same") 0, 0x00000000 finsh>>Run TestCase: thread_same_priority t1_count=830531 t2_count=399806 TestCase[thread_same_priority] passed Run TestCase: thread_same_priority t1_count=829804 t2_count=399805 TestCase[thread_same_priority] passed Run TestCase: thread_same_priority t1_count=829805 t2_count=399805 TestCase[thread_same_priority] passed Run TestCase: thread_same_priority t1_count=829807 t2_count=399804 TestCase[thread_same_priority] passed Run TestCase: thread_same_priority t1_count=829803 t2_count=399806 TestCase[thread_same_priority] passed
nl1031
2012-10-25
这家伙很懒,什么也没写!
刚测试了svn上的thread_delay没有问题了。
nl1031
2012-10-25
这家伙很懒,什么也没写!
thread_same_priority问题是_tc_cleanup函数返回前的tc_stat设置有问题。 if (t1_count / t2_count != 2) tc_stat(TC_STAT_END | TC_STAT_FAILED); 如果t1_count / t2_count 等于2时,应该设置TC_STAT_PASSED。 将上面代码改为: if (t1_count / t2_count != 2) tc_stat(TC_STAT_END | TC_STAT_FAILED); else tc_done(TC_STAT_PASSED); 另外,t1_count 前面不加上volatile的话,可能会被优化掉?打印的count值是0。 经修改,解决问题。
nl1031
2012-10-25
这家伙很懒,什么也没写!
thread_same_priority还有问题,执行tc_start("thread")测试时,失败。单独用tc_start("thread_same")测试,通过。好像thread_same_priority还是受到其他测试程序影响,没有等100个tick,直接结束了。 finsh>>tc_start("thread") 0, 0x00000000 finsh>>Run TestCase: thread_delay ... TestCase[thread_resume] passed Run TestCase: thread_same_priority t1_count=0 t2_count=0 TestCases[thread_same_priority] failed TestCase[thread_same_priority] failed finsh>>tc_start("thread_same") 0, 0x00000000 finsh>>Run TestCase: thread_same_priority t1_count=429606 t2_count=184568 TestCase[thread_same_priority] passed RT-Thread TestCase Running Done!
bernard
2012-10-25
这家伙很懒,什么也没写!
芯片有cache吗?有cache会导致执行序列有部分差异。
bernard
2012-10-25
这家伙很懒,什么也没写!
另外,把觉得测试代码有问题,修改过后能pass的提交一份到svn吧。我根据diff再看看。
撰写答案
登录
注册新账号
关注者
0
被浏览
5.8k
关于作者
nl1031
这家伙很懒,什么也没写!
提问
5
回答
30
被采纳
0
关注TA
发私信
相关问题
1
rtthread在zynq或者microblaze上面的使用
2
寻求microblazer下rtthread 驱动开发合作
3
RT-Thread for MicroBlaze
4
移植rtt到microblaze
5
RTThread Studio增加microblaze支持
6
如何将RT-THREAD移植到 xilinx a7的fpga上?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
8
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
3
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部