搜索
bottom↓
回复: 26

RT-Thread/STM32F103VB分支0.3.0 beta2版本

[复制链接]

出0入0汤圆

发表于 2009-4-17 11:05:13 | 显示全部楼层 |阅读模式
RT-Thread/STM32F103VB 0.3.0 beta2版本,兼容STM32F103C8/STM32F103CB, STM32F103R8/STM32F103RB, STM32F103V8/STM32F103VB

修改记录:
- 修正message queue创建时内存分配的问题。
- 修正pendsv异常优先级过高的问题。
- 更改rt_console_puts为rt_hw_console_output,并由各个board自行实现,如果设置rt_hw_console_output为空函数,那么rt_kprintf将自动不起作用。
- 设备驱动框架中添加两个回调函数,设置回调函数的接口为:
    * rt_device_set_rx_indicate,rx_indicate回调函数在设备驱动收到数据时调用,以通知上层应用有多少字节大小的数据已经接收(上层应用此时可以主动调用rt_device_read进行接收)。
    * rt_device_set_tx_complete,tx_complete回调函数在驱动设备完成数据写入时调用,以通知上层应用数据已经写入完成(如果数据是动态申请的,可以在此时释放)。
  设备驱动框架内部相关调用实现:
    * rt_device_open/close,如果驱动设备是DMA接收模式,那么调用open将打开DMA开始进行接收,close则关闭DMA。
    * rt_device_read,设备驱动从设备中读取(轮询模式),或从已经接收到的buffer中读取(接收中断模式、DMA接收模式)
    * rt_device_write,设备驱动往设备中写入数据(轮询模式),或挂接到链表中,等待DMA传输完成(如果当前DMA没使能,那么使能DMA直接进行发送)。
- STM32串口设备,实现在libcpu\stm32\serial.c中,发送支持轮询,DMA发送;接收支持轮询,中断接收,DMA接收等方式。
    * 串口设备的注册在bsp\stm32f103vb\usart.c中,当前默认注册为
        + uart1, 轮询发送,中断接收, 中断接收通知指向finsh,rt_hw_console_output则轮询发送(不产生中断)。
        + uart2, DMA接收,轮询发送
        + uart3, 中断接收,DMA发送
- bsp\stm32f103vb\application.c是几个串口设备的使用例子。

这个版本需要RealView MDK编译环境。

BTW:
请能够在STM32开发板上使用RT-Thread的兄弟发个贴说一下,不成功也说一下,我们会跟进进行相应的支持。如果想要在STM32F103VB以外的芯片上使用(例如SRAM不是20K的情况),也请说出来,我们会根据相应的芯片把修改的地方说出来。STM32F103ZE的除外(USART2的pin配置不同),它会有专门的版本。

点击此处下载 ourdev_437267.zip(文件大小:313K) (原文件名:rt-thread-0.3.0 beta2 stm32f103vb.zip)

RT-Thread运行画面 (原文件名:rtt_stm32.jpg)

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2009-4-17 11:17:02 | 显示全部楼层
先顶一个,昨天 在官方下了一下前面的版本,下个新的,,,准备用一下试试。。。。。

出0入0汤圆

 楼主| 发表于 2009-4-17 13:56:36 | 显示全部楼层
试完还请给出运行结果,谢谢了。

出0入0汤圆

发表于 2009-4-17 17:12:32 | 显示全部楼层
呵呵,终于横空出世了,下来尝尝鲜,准备用在STM32F103R8上试试。

出0入0汤圆

发表于 2009-4-17 20:37:27 | 显示全部楼层
下载,编译,运行,可以得到楼主位类似的结果。

建议楼主下次提醒下要测试哪些内容。

出0入0汤圆

发表于 2009-4-17 21:37:58 | 显示全部楼层
finsh 好像有点问题, 无法解析命令

出0入0汤圆

发表于 2009-4-18 19:56:29 | 显示全部楼层

替马大哈楼主回答问题:
To 【5/6楼】 theta
测试的内容其实非常简单,只有系统运行起来,finsh能够接收输入,例如输入 list_thread() 会有各个线程运行的状况。

其他的(和硬件无关的),我已经做过验证的。

finsh有问题,无法解析命令。不知道你的步骤是怎么样的?能解析 list() 吗?

出0入0汤圆

发表于 2009-4-18 23:19:42 | 显示全部楼层
期待文档早点见面:)

我只简单的把配置换为STM32F103R8,编译时只有两个warning如下,并无大碍:
..\..\src\kservice.c(915): warning:  #177-D: function "__tolower" was declared but never referenced
..\..\finsh\finsh_parser.c(719): warning:  #111-D: statement is unreachable


程序运行正常:
\ | /
- RT - Thread Operating System
/ | \ 0.3.0 build Apr 18 2009
2006 - 2009 Copyright by rt-thread team
thread1 --> 1
finsh>>Thread2 count:1
thread1 --> 2
Thread2 count:2
Thread2 count:3
thread1 --> 3
Thread2 count:4
Thread2 count:5
thread1 --> 4
Thread2 count:6
Thread2 count:7
list()

--Function List:
hello            -- say hello world
version          -- show RT-Thread version information
list_thread      -- list thread
list_sem         -- list semaphone in system
list_event       -- list event in system
list_mutex       -- list mutex in system
list_mailbox     -- list mail box in system
list_msgqueue    -- list message queue in system
list_mempool     -- list memory pool in system
list_timer       -- list timer in system
list             -- list all symbol in system
--Variable List:
dummy            -- dummy variable for finsh
        0, 0x0000
finsh>>

        0, 0x0000
finsh>>thread1 --> 5
Thread2 count:8
Thread2 count:9
thread1 --> 6
Thread2 count:10
Thread2 count:11

出0入0汤圆

 楼主| 发表于 2009-4-20 08:54:49 | 显示全部楼层
在整RT-Thread的文件系统了,有STM32F103VB/RB SPI SDCard接口的同志请举手!呵呵,在STM32F103ZE上整合完后还请帮忙测试(SPI SDCard的驱动我会预先给一个)

出0入0汤圆

发表于 2009-4-20 09:06:36 | 显示全部楼层
在那边注册了个ID,与这里相同,结果PASS忘记了.发了两次邮件也没有人回应,请帮恢复下密码

出0入0汤圆

 楼主| 发表于 2009-4-20 09:15:05 | 显示全部楼层
那边似乎邮件不通:-P 密码已经重置,密码发到你注册的信箱了。

出0入0汤圆

发表于 2009-4-22 15:50:44 | 显示全部楼层
问题找到了, 是我的串口调试软件有问题, 在超级终端上可以。

我有STM32F103VB SPI SDCard接口

出0入0汤圆

 楼主| 发表于 2009-4-22 16:44:35 | 显示全部楼层
好啊,RT-Thread的文件系统快好了,读已经没问题了,写还在调试,今天晚上估计可以搞定。然后就是做一些常规测试、多线程模式下的文件访问测试和压力测试,完了后就可以发布了。

出0入0汤圆

发表于 2009-4-22 22:30:55 | 显示全部楼层
稍微看了一下串口的代码,有103VB的板子的可以测试一下用DMA接收的那个串口,用串口调试软件往串口不间断发送字符,发一段时间之后再恢复正常,看看VB的板子是否还能收到字符?

出0入0汤圆

发表于 2009-4-26 20:22:25 | 显示全部楼层
ffxz
   您好,我研究一下RT-Thread for stm32,怎么得到STM32F103ZE移植代码?
   谢谢?
   我的邮箱是yuxinyinet@163.com

出0入0汤圆

 楼主| 发表于 2009-4-27 20:33:18 | 显示全部楼层
如果是研究,可以先研究RT-Thread for STM32F103VB,核心都是一个

RT-Thread/STM32F103ZE过几天发布,需要完善一下文件系统里的缓存层

出0入0汤圆

 楼主| 发表于 2009-4-29 09:22:54 | 显示全部楼层
求一个万利板SPI方式SD卡的驱动,最好是试过能用的,这样我好改成RT-Thread的,然后再配上文件系统就都OK了。

出0入0汤圆

发表于 2009-4-29 22:51:54 | 显示全部楼层
to ffxz,
     http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3238182&bbs_page_no=1&bbs_id=3020
     “FATFS R0.06版本测试程序 已经测试成功,欢迎使用 ”
     上的驱动可以!
     我用这个驱动稍加修改(修改了管脚)我用的STM32F103ZE。
     FATFS R0.06版本测试程序 已经测试成功,欢迎使用

出0入0汤圆

 楼主| 发表于 2009-4-29 22:57:15 | 显示全部楼层
To 【12楼】 theta
你信箱多少?STM32F103VB的文件系统已经制作出一个版本了

编译,-O3:
Program Size: Code=26794 RO-data=3122 RW-data=580 ZI-data=13948  
体积有些大了,争取再缩小些,这个文件系统里包含了5k byte的cache空间。

我用的SPI配置:
void SPI_Config(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;
  SPI_InitTypeDef   SPI_InitStructure;

  /* GPIOA and GPIOC Periph clock enable */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE);
  /* SPI1 Periph clock enable */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

  /* Configure SPI1 pins: SCK, MISO and MOSI */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  /* Configure PC12 pin: CS pin */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

  /* SPI1 Config */
  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
  SPI_InitStructure.SPI_CRCPolynomial = 7;
  SPI_Init(SPI1, &SPI_InitStructure);

  /* SPI1 enable */
  SPI_Cmd(SPI1, ENABLE);
}

出0入0汤圆

 楼主| 发表于 2009-4-29 22:58:12 | 显示全部楼层
To 【18楼】 yucnet
我用的STM32F103ZE是用SDIO的,文件系统已经能够正常运行,你是用SPI方式的吗?

出0入0汤圆

发表于 2009-4-30 12:50:40 | 显示全部楼层
to ffxz
   我用的是spi方式的,没有测试sdio!有什么要帮忙的告诉我?

出0入0汤圆

发表于 2009-4-30 16:34:07 | 显示全部楼层
to【19楼】 ffxz :

邮件地址已经发到http://www.rt-thread.org  bernard 的短信里

出0入0汤圆

 楼主| 发表于 2009-5-1 10:59:04 | 显示全部楼层
To 【22楼】 theta
STM32F103VB的文件系统测试版本已经发给你了,还请多帮帮忙,谢谢。

出0入0汤圆

 楼主| 发表于 2009-5-1 11:14:26 | 显示全部楼层
STM32F103ZE推迟些发布吧,打算把TCP/IP协议栈加上再发布。

出0入0汤圆

发表于 2009-5-1 19:17:20 | 显示全部楼层
to 【23楼】 ffxz

不客气。 我的SPI配置是这样的:

void SPI_Config(void)
{
u16 i,j;
  GPIO_InitTypeDef  GPIO_InitStructure;
  SPI_InitTypeDef   SPI_InitStructure;

  /* GPIOA and GPIOC Periph clock enable */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE);
  /* SPI1 Periph clock enable */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

  /* Configure SPI1 pins: SCK, MISO and MOSI */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  /* Configure PD9 pin: CS pin  ,PD10 : SD Power*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOD, &GPIO_InitStructure);



  /* SPI1 Config */
  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
  SPI_InitStructure.SPI_CRCPolynomial = 7;
  SPI_Init(SPI1, &SPI_InitStructure);

  /* SPI1 enable */
  SPI_Cmd(SPI1, ENABLE);

    GPIO_ResetBits(GPIOD, GPIO_Pin_10);  // SD卡上电,打开MOS管
  for(i=0;i<65530;i++)
  {
    for(j=0;j<5000;j++)
    {;}
  }
}

另外

/* Select MSD Card: ChipSelect pin low  */
#define MSD_CS_LOW()   {  GPIO_ResetBits(GPIOD, GPIO_Pin_9);}
/* Deselect MSD Card: ChipSelect pin high */
#define MSD_CS_HIGH()    GPIO_SetBits(GPIOD, GPIO_Pin_9)

上电后, 粗暴延迟了一段时间。 文件系统可以跑起来。

没有设置优化,编译结果如下:
Program Size: Code=37682 RO-data=3306 RW-data=580 ZI-data=9412  

finsh>>list_mem()
total memory: 10464
used memory : 2608
maximum allocated memory: 4748
        0, 0x0000

出0入0汤圆

 楼主| 发表于 2009-5-1 22:00:31 | 显示全部楼层
多谢,这样STM32F103VB的beta3版本就可以考虑发布了!

由于影响速度另外一个重要因数是批量数据的读写,所以这个如果可能会在下一个beta版中加入。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 13:02

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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