打印

RT-Thread开源实时操作系统/STM32F103VB 0.3.0 b3版本

RT-Thread开源实时操作系统/STM32F103VB 0.3.0 b3版本

这个版本更新有些多,RT-Thread/STM32F103VB 0.3.0 beta3更改记录:
- 内核,添加IAR EWARM 5.x工程,在内核定义中做相应的平台定义;
- 添加文件系统组件DFS,DFS是一套虚拟文件系统(类似Linux的VFS,但几乎不占用空间)
- 添加文件系统DFS-EFSL:把著名的FAT文件系统实现EFSL引入到DFS中,同时对它的不足进行修改:重写文件系统缓冲层;添加多扇区读写支持。(我们自己实现的DFS-FAT还在进行压力测试中,测试完毕后也会放出)
- STM32固件库更新到2.0.3patch1

RT-Thread/STM32F103VB 0.3.0 beta2更改记录:
- 修正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是几个串口设备的使用例子。

简而言之,RT-Thread/STM32F103VB 0.3.0 beta3是一个RTOS + Shell(finsh) + VFS(DFS + EFSL(FAT16/32)),并且文件系统已在万利STM32开发板SPI SDCard上验证通过(大范围的SD/MMC卡还有待验证)。

有用的链接:
RT-Thread官方网站:http://www.rt-thread.org
RT-Thread官方论坛:http://www.rt-thread.org/phpbb/
内核API在线文档:http://www.rt-thread.org/rt-thread/rttdoc_0_2_3
RT-Thread编程指南(未完成):http://www.rt-thread.org/phpbb/viewtopic.php?f=2&t=195

到目前为止,不管您是使用RealView MDK还是IAR EWARM,您都可以尝试使用RT-Thread。
自由与理想!

TOP

RT-Thread/STM32F103ZE分支0.3.0 beta1版本

这个是第一个STM32F103ZE的beta版本,注:仅用于beta测试。

这个版本包括:
- RT-Thread Kernel + finsh
- DFS/DFS-EFSL文件系统
- LwIP协议栈(对小系统进行优化过,内存占用大幅缩小)

默认指标包括:
- 线程优先级256优先
- DFS缓存4K
- OS Tick 10ms
- IP地址:192.168.1.30
- 可用RAM大约50K (在未使能外扩SRAM的情况下)
- 系统启动完毕默认使用RAM 5K

可以根据STM32F103VB的情况进行剪裁,把lwip应用于更小内存的情况:
建议剪裁掉finsh,释放大约5k的RAM空间,这样总供使用内存空间可以做到15k - 16k的样子。

已知问题:
enc28j60的驱动在我的板子上跑起来非常容易掉包,原因未知(硬件问题的几率大一些)。如果您有enc28j60,也可以试试,欢迎反馈情况。
自由与理想!

TOP