TI实时内核SYSBIOS启动流程
2018-01-13 18:42
323 查看
1 内容简介
对操作系统与非操作系统下TI芯片启动后的C语言初始环境配置流程进行整理介绍。包含:第二章:运行支持库,介绍TI芯片运行支持库作用,非操作系统下程序起始位置,运行环境初始化流程。
第三章:SYSBIOS启动流程,介绍使用SYSBIOS实时内核时,芯片对应的启动过程。
2 运行支持库
2.1 ABI
应用程序二进制接口(ABI-Application Binary Interface)定义了一组在系统软件上编译应用程序所需要遵循的一套规则,一个通俗的理解:ABI定义了compiler该产生什么样的obj。ABI涵盖了各种细节,如: 数据类型的大小、布局和对齐;
调用约定(控制着函数的参数如何传送以及如何接受返回值),例如,是所有的参数都通过栈传递,还是部分参数通过寄存器传递;哪个寄存器用于哪个函数参数;通过栈传递的第一个函数参数是最先push到栈上还是最后;
系统调用的编码和一个应用如何向操作系统进行系统调用;
以及在一个完整的操作系统ABI中,目标文件的二进制格式、程序库等等;
ABI不同于应用程序接口(API),API定义了源代码和库之间的接口,因此同样的代码可以在支持这个API的任何系统中编译(注意这里是说可以重新编译,而编译时是符合该平台ABI规约的),然而ABI允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行。
TI平台编译环境现阶段支持COFF与EABI两类ABI标准,其中前者主要存在与老版本编译器中,而近期的新版本逐步转换为仅支持EABI标准。两者不兼容。
2.2 RTS
TI官方提供了运行时支持库RTS,用于替代旗下各系列产品上的C语言标准库功能,具体实现以下几点,本文档主要关注其中的“_c_int00”部分。图 TI运行时支持库基本功能
在使用CCS编译代码后生成的MAP文件中我们可以看到“entry point”一栏信息,如下图:
图 map文件entry point图示
“entry point”表示整个程序的启始执行位置,位于平时理解的“main”函数之前,其负责系统在运行程序之前对整个软硬件环境的基本初始化工作。“entry point”实际是函数“_c_int00”的入口地址,函数“_c_int00”具体实现在芯片对应RST库内文件“boot.c”或“boot.asm”中,用户还可根据实际应用需求对函数“_c_int00”进行修改,重编译生成新的RST库。“entry point”一般会映射到系统复位的中断向量中。
从图3中我们可出,在非操作系统应用环境下,系统启动的软件过程就是由函数“_c_int00”为起点,完成环境初始化后,则跳转到main函数,开始执行应用程序。
图 函数“_c_int00”基本功能与操作流程
3 SYSBIOS启动流程
在SYSBIOS环境下,系统启动流程以main函数为中线,可分为main前与main后两部分。3.1 Main前
图 sysbios启动流程
3.2 Main后
图 sysbios启动流程 main函数后
3.3 应用结束后操作
有两类接口用于结束应用进程:图 应用程序结束执行
4 参考文献
[1] 《TMS320C6000 Assembly Language Tools v 7.4 User’s Guide》[2] 《TMS320C6000 Optimizing Compiler v 7.4 User’s Guide》
[3] 《SYS_BIOS (TI-RTOS Kernel) v6.46 User’s Guide》
[4] http://rtsc.eclipse.org/docs-tip/Using_xdc.runtime_Startup
相关文章推荐
- uboot启动内核的流程分析
- 嵌入式Linux启动流程之启动内核(基于Arm)
- linux、内核源码、内核编译与配置、内核模块开发、内核启动流程
- Linux 内核启动流程
- linux启动流程分析-内核解压缩过程
- 学习笔记:内核启动流程
- 内核启动流程分析
- 嵌入式linux内核启动流程
- ARM Linux启动流程分析——内核自解压阶段
- ElasticSearch57:内核原理探秘_优化写入流程实现NRT近实时(filesystem cache,refresh)
- 嵌入式内核制作、根文件系统及内核启动流程
- 【转】wince5.0内核的启动流程
- Linux内核启动流程笔记
- linux系统启动流程与两层加密技术,grub加密,bios加密
- Linux系统启动流程与内核管理(上)
- 内核:Linux2.6内核启动流程学习
- 没有代码空谈流程(U-boot如何启动内核)
- IMX6Solo启动流程-Linux 内核启动 三
- 内核启动动流程之配置
- Wince5内核启动流程