swordlife 发表于 2010-5-3 19:14:16

STM32 Radio 代码移植相关疑问咨询

手头有一个安富莱的STM32F103ZE的开发板,在上面移植了STM32 Radio相关代码,目前有如下问题,请教一下大家。

目前LCD驱动程序、DM9000已经移植成功。但是有些问题没有解决,现象如下:

LCD:
1. 调用STM32 Radio中的画线函数,清屏函数都可以正确反应,运行STM32 Radio程序可以在LCD上显示一个 “网络图标”。
2. 其他就没有任何反应了,那个播放器的界面没有出现。

疑问:这个时候没有播放器的界面是否是属于正常现象?(我目前的J-link 无法跟踪全部代码,总是跟踪一些代码之后就会出现R5或者R6寄存器错误,退出)

USB:
1. 通过Finsh命令 输入USB_cable,STM32 Radio通过Finsh反馈如下信息,但是没有调用void USB_cable(void)函数,从而没有建立msc_thread_entry进程
      msc_thread = rt_thread_create("msc_thread",
                                    msc_thread_entry, RT_NULL,
                                    1024, RT_THREAD_PRIORITY_MAX-1,1);
-----------------------------------------------------------------------------------------------------------
Finsh反馈:
finsh>>USB_cable
        134256369, 0x080096f1
finsh>>
finsh>>
finsh>>
finsh>>
finsh>>
finsh>>
finsh>>
finsh>>
finsh>>
finsh>>USB_cable
        134256369, 0x080096f1
finsh>>
finsh>>
finsh>>
finsh>>
finsh>>
finsh>>
finsh>>
finsh>>
finsh>>

这里发送一个Finsh命令,但是反馈很多 Finsh>>字符上来,不知道是否是正常反应?
------------------------------------------------------------------------------

2. 通过其他方法调用void USB_cable(void)函数,建立msc_thread_entry进程,但是程序卡在如下语句:
    while( test_unit_ready_last == test_unit_ready_start )
    {
       rt_thread_delay( RT_TICK_PER_SECOND );
    }

找遍了整个工程文件的.c .h文件,test_unit_ready_start 变量只是通过如下语句初始化了一下,再没有改变过了,

    unsigned long test_unit_ready_start = rt_tick_get();//在此处初始化test_unit_ready_start变量
    test_unit_ready_last = test_unit_ready_start;//在此处初始化test_unit_ready_last变量

疑问:
   怎么才能让Finis 正确响应,调用void USB_cable(void)函数,建立msc_thread_entry进程? 怎么才能改变test_unit_ready_start变量的值?
(我从SVN上同步更新了Radio 项目的代码,应该没有漏掉其他源文件没有下载)

aozima 发表于 2010-5-3 19:33:26

1."这里发送一个Finsh命令,但是反馈很多 Finsh>>字符上来" 估计你的串口有问题,发送了很多不应该发送的数据.(每发送一个回车就出来一次finsh>>)

2. 不要再直接在finsh中调用USB_cable,SVN中已在finsh中去掉了这个命令.因为USB_cable里面会锁UI,如果直接在finsh中执行现测试发现有问题.所以就去掉了.

3. while( test_unit_ready_last == test_unit_ready_start ) 用来等待 PC端发来第一个命令...这类操作最好不要使用单步调试.

4. "test_unit_ready_last 变量只是通过如下语句初始化了一下,再没有改变过了"
   mass_mal.c 中每接收到一次PC发来的命令就自动更新一次. 用来实现PC端移除后自动重新启动.

综合上述:
你的代码没有完全和SVN中同步,请使用svn st 命令查看各文件状态,有冲突的,先删除本地文件或目录(有用的自行备份),再同步.
如果使用小乌龟,直接看颜色即可.

加油.

ffxz 发表于 2010-5-3 19:37:31

这个还是等待radio中的USB例程吧

USB例程,aozima你来完成?

eworker 发表于 2010-5-3 20:35:45

学习

gzhuli 发表于 2010-5-4 00:08:13

唉,USB是个很麻烦的东西。

McDeggy 发表于 2010-5-4 15:45:36

回复【楼主位】swordlife
-----------------------------------------------------------------------

我也和LZ用的是同一块板子,做好了LwIP,但是用netio测试的时候,板子的接收速度能达到300KBytes/s,而发送速度只有5000Bytes/s,并且在netio发送32KBytes的包时候死掉,不知道LZ能不能把你的板子的测试速度发我看下呢?好对照一下,看看是硬件问题还是软件问题。netio版本:1.2.6。
QQ:644736880,希望能和LZ交流一下。

swordlife 发表于 2010-5-5 22:05:24

【】McDeggy 再见,列宁:

我没有在那块板没有做过net方面的实验,故无法帮助你。

ffxz 发表于 2010-5-5 23:17:43

呵呵,等radio板子吧,radio板子上每个例程都能跑,完整的工程也能跑:-)

USB、USB、nnd有时间折腾个全套的USB栈,覆盖device、host、OTG

aozima 发表于 2010-5-5 23:24:22

回复【7楼】ffxz
呵呵,等radio板子吧,radio板子上每个例程都能跑,完整的工程也能跑:-)
usb、usb、nnd有时间折腾个全套的usb栈,覆盖device、host、otg
-----------------------------------------------------------------------
USB有计划了? 一直对USB存在一种恐惧感.

cat_li 发表于 2010-5-5 23:24:34

回复【1楼】aozima
1."这里发送一个finsh命令,但是反馈很多 finsh>>字符上来" 估计你的串口有问题,发送了很多不应该发送的数据.(每发送一个回车就出来一次finsh>>)
2. 不要再直接在finsh中调用usb_cable,svn中已在finsh中去掉了这个命令.因为usb_cable里面会锁ui,如果直接在finsh中执行现测试发现有问题.所以就去掉了.
3. while( test_unit_ready_last == test_unit_ready_start ) 用来等待 pc端发来第一个命令...这类操作最好不要使用单步调试.
4. "test_unit_ready_last 变量只是通过如下语句初始化了一下,再没有改变过了"
   mass_mal.c 中每接收到一次pc发来的命令就自动更新一次. 用来实现pc端移除后自动重新启动.
综合上述: ......
-----------------------------------------------------------------------

小乌龟是什么东东呀

ffxz 发表于 2010-5-5 23:26:43

回复【8楼】aozima
usb有计划了? 一直对usb存在一种恐惧感.
-----------------------------------------------------------------------

有计划也没时间啊,东西并不复杂的。我得先把RT-Thread/GUI,当然还有内核
页: [1]
查看完整版本: STM32 Radio 代码移植相关疑问咨询