Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
MicroBlaze软核
移植rtt到microblaze
发布于 2011-12-16 19:01:10 浏览:10443
订阅该版
在xiong总的帮助下,把rtt移植到microblaze上。在AVNET的LX9板子上做的测试。 目前实现了定时器和uart的中断驱动。跑了finsh和examples/kernel下的程序。 ``` finsh>>tc_start("thread") TestCase[thread_delay] passed thread counTestCase[thread_delete] passed thread count:TestCase[thread_detach] passed TestCase[thread_dynamic] passed TestCases[thread_dynamic_simple] failed TestCase[thread_dynamic_simple] failed TestCase[thread_priority] passed TestCases[thread_resume] failed TestCase[thread_resume] failed TestCases[thread_same_priority] failed TestCase[thread_same_priority] failed TestCase[thread_static] passed TestCase[thread_static_simple] passed threaTestCase[thread_suspend] passed TestCases[thread_yield] failed TestCase[thread_yield] failed finsh>>tc_start("event") TestCase[event_simple] passed finsh>>tc_start("mbox") TestCase[mbox_simple] passed finsh>>tc_start("mempool") TestCase[mempool_simple] passed finsh>>tc_start("messageq") threadTestCase[messageq_simple] passed finsh>>tc_start("semaphore") TestCase[semaphore_buffer_worker] passed TestCase[semaphore_dynamic] passed TestCase[semaphore_priority] passed TestCases[semaphore_producer_consumer] failed TestCases[semaphore_producer_consumer] failed TestCase[semaphore_producer_consumer] failed TestCase[semaphore_static] passed finsh>>tc_start("mutex") TestCase[mutex_simple] passed finsh>>tc_start("timer") TestCase[timer_control] passed TestCase[timer_create] passed TestCase[timer_static] passed TestCase[timer_stop_self] passed TestCase[timer_timeout] passed ``` 其中timer_control.c文件修改了一下,否则timer测试不通过: 将 `rt_timer_control(timer1, RT_TIMER_CTRL_SET_TIME, (void*)50);` 修改为: ``` tmp = 50; rt_timer_control(timer1, RT_TIMER_CTRL_SET_TIME, (void*)&tmp); ```
查看更多
23
个回答
默认排序
按发布时间排序
aozima
2011-12-16
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
顶
nl1031
2011-12-17
这家伙很懒,什么也没写!
写了wiki,提交移植代码到SVN,在 http://code.google.com/p/rt-thread/downloads/list 上传了ISE和XSDK工程文件。一楼的测试还没有完全通过,有时间我再查查哪里有问题。也希望感兴趣的朋友帮忙测试。
shaolin
2011-12-17
这家伙很懒,什么也没写!
我也来顶。
StevenChen526
2011-12-18
这家伙很懒,什么也没写!
项一个。 [s:154]
nl1031
2011-12-18
这家伙很懒,什么也没写!
stack.c堆栈初始化中有bug,返回地址差了8个字节。 `*stk-- = (unsigned long) texit;` 应改为 `*stk-- = (unsigned long) texit - 8;` thread,timer,semaphore,messageq,mutex,mempool,mbox,event的测试中只有thread_same_priority有问题。 跟踪发现`tc_command.c中rt_sem_take(&_tc_sem, tick * _tc_scale);`有问题, 没有等到相应timeout时间就返回了。`tick * _tc_scale`是100,只等了大约3个ticks就返回了,奇怪。
barryzxy
2011-12-18
这家伙很懒,什么也没写!
必须顶
nl1031
2011-12-18
这家伙很懒,什么也没写!
`examples/kernel`下测试代码修改了几处,大家看看对否? thread_delay.c文件thread_entry函数中由 ``` tick = rt_tick_get(); rt_kprintf("thread delay 10 tick\n"); rt_thread_delay(10); if (rt_tick_get() - tick > 10) ``` 改为 ``` rt_kprintf("thread delay 10 tick\n"); tick = rt_tick_get(); rt_thread_delay(10); if (rt_tick_get() - tick > 10) ``` 查询方式的打印比较耗费时间,会影响后面条件判断。 thread_resume.c文件_tc_cleanup()函数中,` tc_done(TC_STAT_PASSED);`修改为`tc_stat(TC_STAT_PASSED);`。 这样修改后`tc_start("thread")`都pass了。另外,感觉heap的测试程序中类似`if (mem_check(ptr1, 1, 1) != RT_FALSE) goto _failed;`判断有问题。
bernard
2011-12-19
这家伙很懒,什么也没写!
你是否已经使用了svn上的版本?trunk的版本,timer的测试用例似乎并不是你描述的那样。
nl1031
2011-12-19
这家伙很懒,什么也没写!
是trunk代码。 “thread_delay.c文件thread_entry函数中由 tick = rt_tick_get(); rt_kprintf("thread delay 10 tick\n"); rt_thread_delay(10); if (rt_tick_get() - tick > 10) 改为 rt_kprintf("thread delay 10 tick\n"); tick = rt_tick_get(); rt_thread_delay(10); if (rt_tick_get() - tick > 10) 查询方式的打印比较耗费时间,会影响后面条件判断。” tick = rt_tick_get();执行完,再执行rt_kprintf("thread delay 10 tick\n");的话,if (rt_tick_get() - tick > 10)条件会成立,从而执行tc_done(TC_STAT_FAILED); 就是说在microblaze上,rt_kprintf("thread delay 10 tick\n");执行会超过1个tick,超过10mS。
nl1031
2011-12-19
这家伙很懒,什么也没写!
“thread_resume.c文件_tc_cleanup()函数中, tc_done(TC_STAT_PASSED);修改为tc_stat(TC_STAT_PASSED);。 ” tc_command.c的tc_thread_entry中, ``` _tc_current = index->name + 4; rt_kprintf("Run TestCase: %s\n", _tc_current); _tc_stat = TC_STAT_PASSED | TC_STAT_RUNNING; tick = index->func(); if (tick > 0) { rt_sem_take(&_tc_sem, tick * _tc_scale); ``` 跟踪发现,执行rt_sem_take时,_tc_sem->value=1,似乎应该是前一个测试thread_resume.c的_tc_cleanup()中最后执行的tc_done(TC_STAT_PASSED); release的信号量。所以,我改成tc_stat,后面的thread_same_priority就通过测试了。
撰写答案
登录
注册新账号
关注者
0
被浏览
10.4k
关于作者
nl1031
这家伙很懒,什么也没写!
提问
5
回答
30
被采纳
0
关注TA
发私信
相关问题
1
rtthread在zynq或者microblaze上面的使用
2
寻求microblazer下rtthread 驱动开发合作
3
RT-Thread for MicroBlaze
4
microblaze tc问题
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
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部