rt-thread 在stm32f4上运行

rtthread源码下载https://github.com/RT-Thread/rt-thread.git

一、仅跑个core调度和基础组件

rtt库代码比较大,因为有充足的案例。本次使用的stm32f4在库上就有example。只是想看看rtt本身核心代码有哪些。因此在cubmx生成的裸板文件上进行修改与粘贴。

├── Core
│   ├── Inc
│   └── Src
├── Drivers
│   ├── CMSIS
│   │   ├── Device
│   │   │   └── ST
│   │   │       └── STM32F4xx
│   │   │           ├── Include
│   │   │           └── Source
│   │   │               └── Templates
│   │   └── Include
│   └── STM32F4xx_HAL_Driver
│       ├── Inc
│       │   └── Legacy
│       └── Src
├── rtthread
│   ├── bsp
│   │   └── f407test
│   │       └── src
│   ├── include
│   ├── libcpu
│   │   └── arm
│   │       ├── common
│   │       └── cortex-m4
│   └── src
└── startup
Core是APP代码,Drivers是标准开源HAL库,startup中存储着.s,外侧则是cmakelists以及ld文件。

主要是增加了rtthread文件夹,其中src和include是rtthread的核心代码,从源码直接复制。

libcpu是复制exapmple中的m4相关。涉及上下文切换,中断管理。

bsp文件夹是板级资源,如堆栈空间大小,以及主频资源初始化等。同时需要实现rt_hw_board_init。从rtthread的entry以及案例来看,rtthread将entry作为入口,在entry中extern了main,因此在reset_handler中将bl main更改为了bl entry。entry中将main作为线程进行处理,main中应该是纯业务。而需要实现的rt_hw_board_init才是硬件初始化。

之前裸板的while(1)更改为main函数,初始化部分变为rt_hw_board_init。

中途因为heap没有初始化,同时define了RT_USING_HEAP,导致么起来。

主要测试了一下跑起来rtthread进行debug,没有重写rt_print这类的。

即使在源码中,为什么USE_RTOS为0?

不过在kputs中已经增加了互斥,这儿串口互斥的use_rtos应该也是没有作用了的。

二、增加终端

终端输入输出是需要增加的项。

增加复制component下的FINSH组件,同时需要增加RT_USING_CONSOLE相关的宏,FINSH、MSH作为输入交互也需要添加。二进制应该增大了10k左右。

同时ld文件需要增加一个保留段,佛则CMD宏增加的INIT函数都不会被调用,是无效的。

实现uart的驱动,重写rt_hw_console_output和rt_hw_console_getchar。就完成了串口交互功能。

这里有点乱的原因是(shell->echo_mode)时换行使用了\n,windows下需要换成\r\n后就能正常显示换行了。或者更改客户端设置,像mobaxterm如下更改。

三、增加RT_USING_DEVICE

device设备框架也是rt-thread的重要特性。增加device后,需要增加较多文件,同时不再使用之前的裸机串口打印方式。

复制了component下的serial组件,提供了统一设备管理接口;复制了单板侧的drv_usart进行单板级的串口适配。

完成适配后串口命令字可以看到挂上的设备。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RT-Thread和LwIP移植到STM32F4平台需要一些步骤,下面是一个简单的指南: 1.下载RT-Thread源代码和LwIP源代码。可以从官方网站获取最新版本。 2.将RT-Thread和LwIP源代码添加到您的工程中。可以直接将源代码文件复制到您的工程目录中,也可以在工程中创建一个新的文件夹,并将源代码添加到该文件夹中。 3.根据您的硬件配置,对STM32F4的寄存器和外设进行初始化。通常,您需要根据硬件手册编写一些初始化代码,以使STM32F4与RT-Thread和LwIP兼容。 4.配置LwIP选项。通过修改lwipopts.h文件,您可以配置LwIP的各种选项,例如IP地址、子网掩码、网关等。 5.在RT-Thread的配置文件rtconfig.h中启用LwIP组件。找到RT-Thread中的lwip组件选项,并确保它被启用。 6.修改RT-Thread的初始化代码,以初始化并启动LwIP。在RT-Thread的应用程序入口函数中,添加初始化LwIP的代码。这包括为LwIP创建一个线程,并为网络接口分配内存等。 7.根据您的需求配置LwIP和RT-Thread的线程、任务和堆栈大小。这些参数的默认值可能不适合您的应用,您可以根据需要进行调整。 8.编译并烧录您的应用程序到STM32F4上。使用合适的编译工具和烧录器,将代码编译成二进制文件,并烧录到STM32F4上。 9.测试和调试。在STM32F4上运行您的应用程序,并使用适当的工具(例如串口终端)检查网络连接。您还可以使用调试器来调试您的应用程序,并解决可能遇到的问题。 这只是一个初步指南,具体的移植过程可能因个人需求和硬件平台的差异而有所不同。对于更深入的了解,建议参考LwIP和RT-Thread的官方文档和社区讨论。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值