C6000 DSP程序入口与C语言的运行环境启动流程

DSP程序入口与启动流程

调试代码

​ 本文通过分析在CCS集成开发环境下调试一个C程序,来分析C语言的启动流程。在CCS集成开发环境新建一个简单的helloworld工程,输出格式选择为ELF格式,链接脚本选择OMAPL138.cmd。配置完的工程属性如下,
在这里插入图片描述

​ 对工程进行编译后,查看Debug目录下的helloworld.map文件最开始的几行内容

******************************************************************************
               TMS320C6x Linker PC v8.2.2                      
******************************************************************************
>> Linked Thu Mar 13 15:49:47 2025

OUTPUT FILE NAME:   <helloworld.out>
ENTRY POINT SYMBOL: "_c_int00"  address: 800069c0

​ 可以看到DSP的入口函数为_c_int00,地址为800005a0,每一个程序都需要从入口地址开始执行,在调试时CCS集成开发环境会将程序数据导入到DSP的内存中,并且会跳转到 _c_int00这个函数对应的地址执行,然后运行到main函数断点。从调试界面也可以看出在main函数的下面有一个 _c_int00的标签,正是main函数的调用者。

在这里插入图片描述

可以通过修改配置让其启动时暂停到_c_int00位置,在调试汇编程序时也可以通过这个操作进行调试。具体操作如下

1、在Debug界面打开Tools菜单栏,选择GEL Files菜单,然后会弹出GEL Files窗口
在这里插入图片描述

2、在GEL Files窗口选择Auto Run and Launch Options,窗口右侧会显示配置界面
在这里插入图片描述

3、在On a program load or restart左侧的方框取消勾选,勾选Halt the target before any debugger access (will impact servicing of interrupts)

在这里插入图片描述

4、重新加载程序,程序会停在 _c_int00

在这里插入图片描述

​ 此时就可以通过单步调试观察程序从_c_int00入口地址执行到main函数之前的步骤了,如下图所示程序单步调试暂停在_args_main函数调用main的过程。

在这里插入图片描述

​ 在上面的调试中可以看到哪些是在条件编译内有效的代码。

在这里插入图片描述

_c_int00源码分析

​ 在C6000的8.2.2版本的编译器目录ti-cgt-c6000_8.2.2\lib\src文件夹下的boot.c文件可以找到_c_int00函数源码实现,由于该编译器已经不在支持输出COFF格式,所以只需要关注 __TI_EABI__ 这个条件的流程

/*****************************************************************************/
/* BOOT.C   v8.2.2 - Initialize the C60 C runtime environment                */
/*                                                                           */
/* Copyright (c) 1993-2017 Texas Instruments Incorporated                    */
/* http://www.ti.com/                                                        */
/*                                                                           */
/*  Redistribution and  use in source  and binary forms, with  or without    */
/*  modification,  are permitted provided  that the  following c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值