搜索
bottom↓
回复: 29

火牛板学习RT-Thread Step by Step——第一篇:修改RT-Thread目录结构

[复制链接]

出0入0汤圆

发表于 2011-12-2 14:34:28 | 显示全部楼层 |阅读模式
先说说自己的情况:
看过点抢占式实时操作系统的书,但没有真正使用过。最近使用STM32一阵子了,有块火牛开发板,关注了RTT快一年多。
于是这两天基于火牛板开始学习RT-Thread抢占式操作系统。

下载下来后,简单看了看源代码和编程指南。有点小晕,因为书写风格和自己不太样,而且到处都是 rt_ 的 变量、函数、结构体
另外发现一个问题,基于RT-Thread的文件结构,移植起来比较麻烦。bsp——board support package,都是针对特定的板子定制的驱动。
第一个疑问就是,我自己写好的那些底层驱动怎么用啊?放在哪里啊?难道用一块板子就要重写一遍驱动吗?

针对STM32已经有不少现成的底层驱动,系统架构自认为搭建的不错。于是第一步,就先把RT-Thread的代码划分了下,重构了项目的结构。
使用的工具:
uVision V4.20.03.0
火牛开发板 2009版
win7电脑一台,j-link一个。

版本:
rt-thread V0.3.3  (0.3系列的最终版)
STM32F10x_StdPeriph_Driver V3.4.0



重构的结构图

结构图 (原文件名:sshot-1.png)


此结构图的基本思路如下:
STM32工程模板使用了分层。
层次间只允许高层调用低层,不允许低层调用高层。
相同层次的软件可以互相调用,但必须说明调用关系。
这样便于软件模块化,移植维护也会更方便。

其层次结构如下:

         --------------- 最高层 ----------------
        |                                       |
层一    |        Applications (应用层)          |
        |                                       |
         ---------------------------------------
        |                                       |
层二    |            Modules (组件层)           |
        |                                       |
--------------------------------------------------------
|                  API (应用程序编程接口)                |
--------------------------------------------------------
        |                                       |
        |               OS (系统)               |
        |                                       |
         ---------------------------------------   -------RT-Thread的bsp包就是层三和层四
        |                                       |
层三    |            Drivers (驱动层)           |
        |                                       |
--------------------------------------------------------
|                CMSIS (Cortex软件标准接口)            |
--------------------------------------------------------
        |                                       |
层四    |           Libraries (芯片库)          |
        |                                       |
         --------------- 最低层 ----------------


1. Applications:应用层
     - 包含了main文件, 中断处理文件, 系统配置文件
     - 不建议直接调用最底层 Libraries

2. Modules:组件层
     - 按大功能划分的软件组件。如UI组件、文件系统
     - 不建议直接调用最底层 Libraries
     - 用户可在此处添加特定工程的组件层
     - 用户可在此处添加常用的组件层(完善模板)
     - 将RT-Thread 的 filesystem net rtgui移植到了此层

3. OS:操作系统
     - 提供 RT-Thread 系统
     - 这一层仅包含 RT-Thread src以及libcpu文件,和finsh组件

4. Drivers:PCB板级驱动
     - 如按键、EEPROM、模拟I2C等等
     - 该层要能对上屏蔽掉最底层 Libraries
       这样起到承上启下的作用,方便跨平台移植
     - 部分驱动需要针对RT-Thread系统重写
     - 用户可在此处添加特定的驱动
     - 用户可在此处添加常用的驱动(完善模板)

5. Libraries:MCU外设库
     - 此部分由芯片厂商提供,是标准库
     - 用户不得修改此层

6. Compiler:编译器
     - 方便跨编译器平台的移植
     - 提供 RealView MDK 的工程模板
     - 用户可在此处添加其它编译器工程模板(完善模板)

7. Documents:文档说明
     - 提供 doxygen 注释风格的模板,说明,软件
     - STM32工程模板说明
     - Libraries 官方用户手册(仅针对Libraries部分,此文档由doxygen生成)
     - 用户可在此处添加其它说明性文件

8. API:Application Programming Interface,应用程序编程接口
     - API旨在提供软件抽象层,加快项目的开发和移植速度
     - 层一、层二的应用都应该基于API函数来使用
     - API函数由 Drivers 和 OS 提供, Libraries不得提供函数到应用接口
     - API函数必须使用标准C书写,与软件平台和硬件完全无关

9. CMSIS:Cortex Microcontroller Software Interface Standard,Cortex软件标准接口
     - CMSIS是ARM公司发布的一个标准接口,旨在提供Cortex-M处理器系列硬件抽象层
     - 仅 Drivers 和 OS 可直接调用 CMSIS 的函数
     - 目前仅提供了芯片核心部分的CMSIS,芯片外设标准库仍是由ST官方书写的



其中驱动部分的硬件配置都单独隔离出来,统一放到了 stm32f10x_conf.h 中。

硬件配置代码 (原文件名:sshot-1.png)

譬如上图配置了4个硬件LED灯的IO口信息,并将4盏LED灯分别命名为LED1,LED2,LED3和LED4.




这样修改后,必须要重写部分代码。
Driver是文件中,drv_开头的就是通用驱动。rt_开头的就是针对RT—thread系统重写的底层驱动。debug文件用于assert处理。

改动最大的还是Application中。原代码一律rt_开头的风格能让人很快失去方向,不知道那些是rtt的核心代码,哪些其实是应该自己去写的。
现将startup去除,改为了大多数人乐意看到的 main命名方式

main函数 (原文件名:sshot-1.png)
其中:HardwareInit需要用户自己填入要初始化的硬件设备,如LED灯。
      ApplicationInit本质是添加RT-Thread线程。

第一次计划写学习笔记,希望能一周一次,坚持下来。。。
多说无益,最后直接上打包后的工程文件。

STM32_RTThread 工程模板ourdev_700960MDHCMG.rar(文件大小:3.26M) (原文件名:STM32_RTThread_V100.rar)

出0入0汤圆

 楼主| 发表于 2012-6-29 09:21:02 | 显示全部楼层
重新上传一下资料。老的一直都下载不了


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2011-12-2 15:29:34 | 显示全部楼层
上传失败,回去再试试吧。。。。。。

出0入0汤圆

发表于 2011-12-2 15:36:39 | 显示全部楼层
继续啊

出0入0汤圆

发表于 2011-12-2 16:06:57 | 显示全部楼层
这个要顶的

出0入0汤圆

发表于 2011-12-2 21:35:18 | 显示全部楼层
这个必须顶,楼主代码就是规范

出0入0汤圆

发表于 2011-12-2 23:22:05 | 显示全部楼层
这样的帖子不顶不好意思。也说不过去。

出0入0汤圆

发表于 2011-12-11 12:10:31 | 显示全部楼层
不知道这样的话,版本升级时会不会更费事?

出0入0汤圆

发表于 2011-12-29 13:53:15 | 显示全部楼层
楼主的文件结构好,代码规范,思路清晰,果断顶!

出0入0汤圆

发表于 2011-12-29 18:31:09 | 显示全部楼层
同用火牛,mark

出0入0汤圆

发表于 2012-1-3 07:31:22 | 显示全部楼层
这个一定要支持!

出0入0汤圆

发表于 2012-1-3 08:37:18 | 显示全部楼层
顶!

出0入0汤圆

发表于 2012-1-3 08:54:02 | 显示全部楼层
03版确实感觉不好,为啥application在BSP里面,04的就很好了,分的细了

出0入0汤圆

发表于 2012-1-3 10:18:11 | 显示全部楼层
正想在火牛上学习RT-Thread

出0入0汤圆

发表于 2012-1-7 19:19:45 | 显示全部楼层
和楼主的口味类似,喜欢看规范化的代码,赏心悦目~~~O(∩_∩)O~

出0入0汤圆

发表于 2012-2-16 20:02:56 | 显示全部楼层
回复【楼主位】draapho
-----------------------------------------------------------------------

很好的东西,最近也在看rtt,感觉有些晕,谢谢楼主的东西。

出0入0汤圆

发表于 2012-6-6 16:43:34 | 显示全部楼层
恩  恩    恩

出0入0汤圆

发表于 2012-6-13 09:56:04 | 显示全部楼层
下不了了,那位能在上传一份!!!!

出0入0汤圆

发表于 2013-9-3 10:24:59 | 显示全部楼层
准备上手RT-Thread,没有去找其他的资料学习,就把楼主写的作为入门教材来看了,非常感谢。

出0入0汤圆

发表于 2013-10-16 20:02:22 | 显示全部楼层
这个系统现在用的多吗?

出0入0汤圆

发表于 2014-8-20 10:36:54 | 显示全部楼层
楼主的提的疑问简直道出了我心里的痛啊,完全不知道该干什么,怎样点亮LED都不知道,之前看的教程都是讲RT_Thread的操作系统的知识,但是我拿到操作系统了要怎眼用一点都不知道,哎,希望楼主能解决我的问题,感激不尽

出0入0汤圆

发表于 2014-9-2 19:34:21 | 显示全部楼层
楼主是不是应该和rtthread的开发人员交流一下,改善一下代码的规范易懂程度

出0入0汤圆

发表于 2014-9-17 15:43:05 | 显示全部楼层
看了几天RT-Thread。。。。

出0入0汤圆

发表于 2014-11-5 17:27:38 | 显示全部楼层
mark。

出0入0汤圆

发表于 2014-11-5 19:50:02 | 显示全部楼层
谢谢!!!!!!!

出0入0汤圆

发表于 2015-5-28 09:12:01 | 显示全部楼层
本帖最后由 ycmzq 于 2015-5-28 09:51 编辑

楼主文章的思路很清晰,非常值得RTThread初学者的借鉴。

出0入0汤圆

发表于 2016-10-20 11:21:56 | 显示全部楼层
确实不错哈。分层思想值得学习!编程结构清晰规范!好资料!

出0入0汤圆

发表于 2016-10-20 13:11:33 来自手机 | 显示全部楼层
非常不错,结构清晰,初学者能快速上手运用

出0入0汤圆

发表于 2016-11-21 08:56:54 | 显示全部楼层
分层思想值得学习!

出0入0汤圆

发表于 2016-11-21 12:30:34 | 显示全部楼层
STM32_rtthread_net 编译时提示错误信息?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

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

本版积分规则

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

GMT+8, 2024-4-20 05:11

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

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