在 rt-thread > libcpu 文件夹下找到自己需要的控制器内核文件夹。我是用的控制器型号是 STM32F103,因此我把 cortex-m3 文件夹移动到 rt-thread > libcpu 文件夹下,其他的文件夹都可以删掉,如下图所示 编辑 三、 将 rt-thread 文件夹中的内容添加到工程编译的引用中 如果是 Keil MDK工程,就把 rt-threa...
目前RT-Thread已经针对将近90种开发板做好了移植,大部分 BSP 都支持 MDK﹑IAR开发环境和GCC编译器,并且已经提供了默认的 MDK 和 IAR 工程,用户可以直接基于这个工程添加自己的应用代码。 每个 BSP 的目录结构高度统一,且都提供一个 README.md 文件,包含了对这个 BSP 的基本介绍,以及相应的说明,方便用户快速上手。
一、前言 上一章:(GCC环境搭建进阶版——用VScode和Cube MX搭建ST单片机开发环境(应用篇) 随着项目需求的增加,构建一个低耦合,面向对象的架构可以降低后续开发的成本,一个可以支持多任务的实时操作系统RTOS就应运而生,无论是uCOS、FreeRTOS、RTThread都大同小异,本章就RT进行举例说明如何构建GCC开发环境。上一章已...
三、 修改 stm32f10x_it.c 在接口文件context_gcc.S中实现了函数SysTick_Handler、PendSV_Handler和HardFault_Handler这三个函数,因此应该将stm32f10x_it.c中的这三个中断处理函数屏蔽掉。 四、 修改启动文件 将startup_stm32f103xb.s 文件中的main函数入口改为 RT-Thread 的entry 如下图所示 五、 打开 RT-...
这样在 gcc 编译的时候就要定义一个宏,防止 rt-thread 的 libc 和系统的 libc 冲突。 GCC 下的链接脚本: 链接脚本使用 rt-thread 官方代码里的 link.lds 最省事了,该折腾的 rt-thread 官方都折腾好了。 以前Sugar 使用 CubeMX 生成的 链接脚本,要是用 C++ 的话要改的地方比较多。
RT-Thread的工程要将外部C++的算法程序移植进来混合编译,C++程序有xxx.h,xxx.cpp两个源文件,直接使用build.sh报了很多错误,肯定无法编译!已经做过如下实验:1.目前我 ...
Step 12. 单步到进入到rt_hw_context_switch_to函数处,该函数位于context_gcc.S文件,由汇编语言编写实现。 rt_hw_context_switch_to仅仅在调度器启动时运行一次。该函数的C语言实现接口中,有一个参数,传入thread->sp变量的地址。 对于参数个数不大于4的C语言接口函数,编译器会按参数在列表中的顺序,自左向右 ...
以下是 GCC RT-Thread 版本的 startup.s .section .text.Reset_Handler .weak Reset_Handler .type Reset_Handler, %functionReset_Handler:ldr sp, =_estack /* set stack pointer */ // STM32的data段需要从flash搬移到对应的sram,bss段对应的sram需要初始化为0 ...
PLATFORM = 'gcc' EXEC_PATH = r'/usr/bin' 2.运行QEMU看看效果 在windows下是运行qemu.bat,linux下则是qemu.sh。进入到rt-thread/bsp/qemu-vexpress-a9下,输入 ./qemu.sh 即可启动虚拟的开发板。如果运行不了qemu.sh,则需要使用 chmod +x qemu.sh ...
RTThread使用编译器(这里仅讲解 KEIL, IAR 或者 GCC 稍微有点区别,但是原理是一样的)自带的$Sub$$和$Super$$这两个符号来扩展了main函数,使用$Sub$$main可以在执行main 之前先执行$Sub$$main,在$Sub$$main函数中我们可以先执行一些预操作,当做完这些预操作之后最终还是要执行 main 函数,这个就通过调用$Super...