首页 > 其他分享 >Threadx rtos 移植指南(stm32f1)

Threadx rtos 移植指南(stm32f1)

时间:2024-04-02 10:35:09浏览次数:22  
标签:files __ tx rtos project common stm32f1 移植 Threadx

Threadx 系统移植非常简单,下面记录 gnu 工具链移植步骤

库文件目录

.
├── cmake                        # CMakelist files for building the project
├── common                       # Core ThreadX files
├── common_modules               # Core ThreadX module files
├── common_smp                   # Core ThreadX SMP files
├── docs                         # Documentation supplements
├── ports                        # Architecture and compiler specific files. See below for directory breakdown     
│   ├── cortex_m7     
│   │   ├── iar                  # Example IAR compiler sample project
│   │   │   ├── example build    # IAR workspace and sample project files
│   │   │   ├── inc              # tx_port.h for this architecture
│   │   │   └── src              # Source files for this architecture
│   │   ├── ac6                  # Example ac6/Keil sample project
│   │   ├── gnu                  # Example gnu sample project
│   │   └── ...
│   └── ...        
├── ports_modules                # Architecture and compiler specific files for threadX modules
├── ports_smp                    # Architecture and compiler specific files for threadX SMP
├── samples                      # demo_threadx.c
└── utility                      # Test cases and utilities

移植只需要用到两个文件夹 common,port

以 cortex-m3/gnu 为例,文件夹为

├─example_build  # 移植好的例子,其中tx_initialize_low_level.S已经移植好了直接拿来使用
├─inc            # tx_port.h kernal基本数据结构,定义等等
└─src            # 底层汇编代码

系统移植

移植只需要修改这几个文件

  1. tx_initialize_low_level.S
  2. stm32f1xx_it.c
  3. STM32xxx_FLASH.ld
// tx_initialize_low_level.S

// 1. 这部分根据实际修改,作用于 tx_thread_sleep
SYSTEM_CLOCK      =   72000000	// 系统时钟主频
SYSTICK_CYCLES    =   ((SYSTEM_CLOCK / 1000) -1) // 1000代表1000Hz

// 2. 将系统向量表加入到启动中,所有需要修改一个地方,原本提供的向量为 _vectors
// 只需要将 _vectors 全部替换为 startup_stm32xxx.s 中的向量 g_pfnVectors
// stm32f1xx_it.c

// 需要注释掉两个中断
/**
  * @brief This function handles Pendable request for system service.
  */
void PendSV_Handler(void)
    
/**
  * @brief This function handles System tick timer.
  */
void SysTick_Handler(void)
// STM32xxx_FLASH.ld

// 需要修改一处,将 tx_initialize_low_level.S 中的 __RAM_segment_used_end__ 加入进来

  /* User_heap_stack section, used to check that there is enough "RAM" Ram  type memory left */
  ._user_heap_stack :
  {
    . = ALIGN(8);
    PROVIDE ( end = . );
    PROVIDE ( _end = . );
    . = . + _Min_Heap_Size;
    . = . + _Min_Stack_Size;
    . = ALIGN(8);
    __RAM_segment_used_end__ = .;	// this
  } >RAM

完成以上三个文件的修改,再将源代码加入编译系统中,即完成了移植。

移植后注意事项

由于禁用了系统的时钟节拍中断,所以 Hal_delay 延时函数时效,要想继续使用,需要重新实现时间基准。

可使用系统提供的延时函数,tx_thread_sleep

标签:files,__,tx,rtos,project,common,stm32f1,移植,Threadx
From: https://www.cnblogs.com/ZyArdu/p/18110042

相关文章

  • FreeRTOS 任务挂起和恢复API函数使用
    FreeRTOS任务挂起和恢复API函数使用挂起的作用就是当我们需要暂停某任务时候,等过一段时间在运行,这个时候要是使用删除和重建的方法就会当时任务进行时候的变量保存的值。当需要将这个任务停止运行一段时间的将这个任务挂起,当重新进行运行这个任务就恢复运行。vTaskSuspend()//......
  • RTOS--异常向量和中断向量
    目录1异常向量2中断向量3示例说明RTOS(实时操作系统)中的异常和中断向量是操作系统处理异常事件和中断请求的关键机制。这些向量是预定义的内存地址,当特定事件发生时,处理器会跳转到这些地址执行相应的处理程序。下面将详细介绍RTOS中的异常和中断向量,并通过示例来说明它......
  • RTOS—任务
    一RTOS任务RTOS(实时操作系统)中的任务是系统执行的基本单元,每个任务都代表了一个要完成的特定工作。RTOS通过任务调度算法来协调多个任务的执行,确保它们能够按照预定的要求和时间限制来运行。在RTOS中,任务通常具有以下特点:独立性:每个任务都有自己的执行流和上下文,它们之间相......
  • FreeRTOS系列补充2:重点API函数的应用代码范例(特特特详细)
    目录1、任务创建和删除API函数 动态创建任务函数原型 动态创建任务函数使用范例 静态创建函数原型静态创建任务函数使用范例任务删除函数原型任务删除函数使用范例2、任务挂起和恢复函数任务挂起函数原型任务恢复函数(任务中恢复)原型任务恢复函数(中断中恢复)原型......
  • FreeRTOS从代码层面进行原理分析(3 任务的切换)
    FreeRTOS分析三—任务的切换我们带着三个问题开始了对FreeRTOS代码的探究。1.FreeRTOS是如何建立任务的呢?2.FreeRTOS是调度和切换任务的呢?3.FreeRTOS是如何保证实时性呢?前两篇文章分别从代码的层面分析了FreeRTOS是如何建立任务以及建立的任务是怎么样被调......
  • stm32f103c8t6学习笔记(学习B站up江科大自化协)-DMA
    DMA简介    ·DMA主要用于协助CPU完成数据转运的工作    ·DMA,英文全称DirectMemoryAccess,DMA这个外设是可以直接访问STM32内部存储器的,包括运行内存SRAM,程序存储器flash和寄存器等等,DMA都有权限访问,所以DMA能完成数据转运的工作    ·第二行的外......
  • 12_FreeRTOS消息队列
    FreeRTOS消息队列队列简介队列操作基本过程队列结构体介绍队列结构体整体示意图:队列相关API函数介绍创建队列相关API函数介绍往队列写入消息API函数从队列读取消息API函数队列操作实验代码freertos_demo.c/*********************************......
  • 11_FreeRTOS时间管理
    FreeRTOS时间管理延时函数介绍延时函数演示实验代码freertos_demo.c/*******************************************************************************************************@filefreertos.c*@author正点原子团队(ALIENTEK)*@version......
  • Proteus8.0仿真应用设计(十七)基于FreeRTOS、STM32F103C8、HAL库、DHT11、LCD12864的温
    一、简介:        DHT11是一款湿、温度一体化的数字传感器。该传感器包括一个电阻式测湿元件和一个NTC测温元件。DHT11与单片机之间能采用简单的单总线进行通信,仅仅需要一个I/O口。通过单片机等微处理器简单的电路连接就能够实时的采集本地湿度和温度。传感器内部......
  • FreeRTOS从代码层面进行原理分析(2 任务的启动)
    FreeRTOS分析二—任务的启动上一篇文章我们带着三个问题开始了对FreeRTOS代码的探究。1.FreeRTOS是如何建立任务的呢?2.FreeRTOS是调度和切换任务的呢?3.FreeRTOS是如何保证实时性呢?并且在上一篇文章FreeRTOS从代码层面进行原理分析(1任务的建立)中对任务的创......