当前位置: 首页 > news >正文

RT-Thread学习


文章目录

  • 前言
  • 一、rtt的启动流程
  • 二、移植工作
  • 总结


前言

RT-Thread学习,这里记录对bsp的移植


一、rtt的启动流程

RT-Thread 支持多种平台和多种编译器,而 rtthread_startup() 函数是 RT-Thread 规定的统一启动入口。一般执行顺序是:系统先从启动文件开始运行,然后进入 RT-Thread 的启动函数 rtthread_startup() ,最后进入用户入口函数 main(),如下图所示:

在这里插入图片描述
入口函数存放在该目录 rt-thread/src/components.c
在这里插入图片描述

…/src/klibc/ 目录存放内核库文件,跟标准c库相关的
…/src/ 目录存放着内核实现的源码

rt_hw_interrupt_disable(), rt_hw_board_init(), rt_system_schedular_star() 这三个函数是关键,决定板子的中断初始化,板级设置初始化,系统调度初始化。
rt_hw_interrupt_disable() 和 rt_system_schedular_star() 主要是跟架构相关的东西,rtt中在 /libcpu/ 下可以查看。对于riscv架构的在 rt-thread/libcpu/risc-v 这个目录下
在这里插入图片描述
cvitek 下 使用的 cv18xx 用的是 riscv c906 架构cpu,这是个64位的cpu,所以应该参考…/common64/
使用 SConscript.py 来控制编译(生成汇编文件),Kconfig 来控制板子配置信息,rtconfig 来填充Kconfig。

二、移植工作

移植流程

  1. 移植并处理启动文件
  2. 将芯片架构的几个文件编译进来,rtt实现了基本的调度和中断等
  3. 完成rt_hw_board_init函数,不同的芯片这个函数不同
    确保一个板子可以运行rtt,需要完成下列工作
    1. 配置定时器为系统提供心跳时钟,一般来说是Systick滴答定时器
    2. 配置时钟系统,保证系统的正常运行
    3. 根据板子的flash或者ram的情况来配置系统堆的空间
    4. 最基本的pin驱动和uart驱动,

在 rt-thread/bsp/cvitek/cv18xx_risc-v/board/board.h 这个目录下
在这里插入图片描述
堆空间在bss段末尾开始,堆空间的末尾是页的开始
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
需要修改 bsp/xxx/board/Kconfig 来适配芯片
bsp/xxx/board/ports 是xxx这个板子的端口的配置,可以修改删除

rtthread.py
在这里插入图片描述

在这里插入图片描述


总结


http://www.mrgr.cn/news/65731.html

相关文章:

  • 近期学习前端的心得
  • Aurora 64b/66bIP核学习
  • 如何使用 Python 控制 Android 设备的蓝牙和 WiFi
  • Java学习Day57:碧水金睛兽!(Spring Cloud微服务1.0)
  • 鸿蒙ArkTS中的布局容器组件(Column、Row、Flex、 Stack、Grid)
  • 创维E900-S_华为EC6108V9_v9u_海思hi3798mv100华为系统优盘刷机固件包
  • 【Linux探索学习】第十弹——Linux工具篇(五):详解Linux 中 Git 工具的使用与相关知识点
  • 【无标题】基于SpringBoot的母婴商城的设计与实现
  • Java flnalize垃圾回收
  • 如何安装 Vue.js:适合不同场景的方案
  • 企业CRM选型必看:2024年最佳CRM系统排行
  • 实体(Entity)详解
  • 再谈 TCP 连接的源端口选择
  • Machine Learning on the Edge
  • Uni商城-开源项目
  • 论文 | Evaluating the Robustness of Discrete Prompts
  • Leetcode328奇偶链表,Leetcode21合并两个有序链表,Leetcode206反转链表 三者综合题
  • 2024版最新kali linux手机版安装(非常详细)零基础入门到精通,收藏这篇就够了
  • 阿里云-部署CNI flannel集群网络
  • PyQt5实战——UTF-8编码器功能的实现(六)
  • 【018B】基于51单片机脉搏温度计
  • .Net Core Configuration用法
  • antdesignpro表单中高级的fieldProps属性
  • 【面试经典150】day 11
  • javaNIO核心知识.中
  • P11118 [ROI 2024 Day 2] 无人机比赛 题解