怎么做装球的网站网站怎么分工做
文章目录
- 前言
 - 一、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。
二、移植工作
移植流程
- 移植并处理启动文件
 - 将芯片架构的几个文件编译进来,rtt实现了基本的调度和中断等
 - 完成rt_hw_board_init函数,不同的芯片这个函数不同
确保一个板子可以运行rtt,需要完成下列工作- 配置定时器为系统提供心跳时钟,一般来说是Systick滴答定时器
 - 配置时钟系统,保证系统的正常运行
 - 根据板子的flash或者ram的情况来配置系统堆的空间
 - 最基本的pin驱动和uart驱动,
 
 
在 rt-thread/bsp/cvitek/cv18xx_risc-v/board/board.h 这个目录下
 
 堆空间在bss段末尾开始,堆空间的末尾是页的开始
 
