IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 【GCC-RT-Thread】gcc交叉编译 STM32 - RT-Thread -> 正文阅读

[嵌入式]【GCC-RT-Thread】gcc交叉编译 STM32 - RT-Thread

【GCC-RT-Thread】gcc交叉编译 STM32 - RT-Thread

最近在公司实习,公司想将原来在Windows keil上开发的项目移到Linux,并上RTT操作系统,最近就被安排做了这件事。

首先

下载
RT-Thread Nano内核

我使用的交叉编译器:gcc-arm-none-eabi-10.3-2021.10
编译器下载地址
gcc-arm-none-eabi 介绍及安装步骤
注:选择合适的gcc交叉编译器很重要,最早踩坑rtt不启动,就是因为gcc交叉编译器版本所致

正式移植开始

1.首先在工程目录下建立RT-Thread文件夹

2.在下载好的Nano内核文件中拷贝

include libcpu src components 四个文件 到工程RT-Thread下

3.删除掉libcpu中没用的文件

eg:我使用F429 所以只保留 arm 文件下 的 cortex-m4
注意:在移植contex-m4中 context_gcc.S文件时需要将此文件重命名为context_gcc.s。
启动文件一般是由汇编写成,此处需要注意的是,汇编文件的格式有.S和.s之分:
.S:表明文件中含有预处理指令(比如#define),需要先进行处理;
.s:表明文件不需要处理,可以直接编译;
之前我们添加的启动文件是小写.s,所以直接进行编译,
另外说一下,如果使用的是.S文件,那么需要带上-x assembler-with-cpp参数。

4.拷贝内核bsp文件夹下的 board.c rtconfig.h 文件 到工程RT-Thread下

如下图:
在这里插入图片描述

5.将文件添加到工程目录,添加头文件包含

gcc编译包含c文件:
RT-Thread/board.c \
RT-Thread/src/clock.c \
RT-Thread/src/components.c \
RT-Thread/src/cpu.c \
RT-Thread/src/idle.c \
RT-Thread/src/ipc.c \
RT-Thread/src/irq.c \
RT-Thread/src/kservice.c \
RT-Thread/src/mem.c \
RT-Thread/src/memheap.c \
RT-Thread/src/mempool.c \
RT-Thread/src/object.c \
RT-Thread/src/scheduler.c \
RT-Thread/src/slab.c \
RT-Thread/src/thread.c \
RT-Thread/src/timer.c \
RT-Thread/components/device/device.c \
RT-Thread/libcpu/arm/cortex-m4/cpuport.c   
include文件:
-IRT-Thread \
-IRT-Thread/include \
-IRT-Thread/include/libc \
-IRT-Thread/libcpu/arm/cortex-m4 
汇编文件:
RT-Thread/libcpu/arm/cortex-m4/context_gcc.s

6.Makefile中修改 FLOAT-ABI = -mfloat-abi=soft

在这里插入图片描述

7.编译 ----> 报错 重复定义

在 it.c 文件下注释掉 HardFault_Handler、PendSV_Handler和SysTick_Handler
在这里插入图片描述
在这里插入图片描述

8.startup()程序跳转:

芯片在 KEIL MDK 与 IAR 下的启动文件不用做修改,
会自动转到 RT-Thread 系统启动函数 rtthread_startup() 。
GCC 下的启动文件需要修改,
让其跳转到 RT-Thread 提供的 entry() 函数,
其中 entry() 函数调用了
RT-Thread 系统启动函数 rtthread_startup()。
/修改前:
bl SystemInit
bl main

//修改后:
bl SystemInit
bl entry /* 修改此处,由 main 改为 entry */
在这里插入图片描述

然后rtt 就可以正常的启动了,接下来需要做的就是在 board.c中初始化时钟 以及 system tick,并将硬件初始化移到 board.c中,在main.c中创建线程。

具体操作详见 rtt 官网手册 线程静态、动态创建

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 17:58:46  更:2022-04-18 17:59:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:50:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码