This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6455 从CPU复位地址 到 main()之间的过程问题

Other Parts Discussed in Thread: TMS320C6455

CCSv5.4, simulator

新建一个测试项目,

main()起始地址在0x800bc0.
Reset CPU ,PC = 0x800000 ;
Restart , PC = 0x800bc0;main()

对于 从 0x80000 到 main()的这个过程,

1、这个过程的代码,是CCS对一个隐含文件的汇编形成的,还是CCS某个库中包含的?
2、如果是文件汇编的,文件在什么位置可以找到?
3、如果是包含在库中,是否可以自己写来替换?
4、TMS320C6455 的寄存器名字和地址,在程序中是否可以直接使用?是否需要自己写一个 头文件来定义(有模板吗?),还是说是CCS系统中已经嵌入且固定了?

5、编译器 ,把 0x800000 开始的 0x800空间作为堆栈了,请问这个堆栈的大小编译器是如何确定的?是否可以调整?

  • 1,2,3 在no boot模式下,reset CPU是直接从L2 0x0080 0000处开始执行。这里放_c_int00程序入口地址,_c_int00初始化堆栈等一系列C语言运行环境,源码在RTS库里,_c_int00执行完后跳转到main()函数。

    4. 需要自己定义的,可以参考csl库。官网上的csl下载链接失效了,请下载下面的例程,里面有csl库。
    http://c6000.spectrumdigital.com/dsk6455/v2/

    5. 可以调整,在ccs 编译选项里可以设置-heap, -stack大小。

  • @Shine Zhang

    0x0080 0000处 是 0,没有代码。

    .stack 0 00800000 00000800 UNINITIALIZED
    00800000 00000008 rts64plus.lib : boot.obj (.stack)
    00800008 000007f8 --HOLE--

    .text 0 00800800 000004e0
    00800800 00000100 main.obj (.text)
    00800900 000000c0 rts64plus.lib : autoinit.obj (.text:__auto_init)
    008009c0 000000c0 : exit.obj (.text:_exit)
    00800a80 000000a0 : cpy_tbl.obj (.text:_copy_in)
    00800b20 000000a0 : memcpy64.obj (.text:_memcpy)
    00800bc0 00000060 : cpp_init.obj (.text:___TI_cpp_init)
    00800c20 00000060 : boot.obj (.text:_c_int00)
    00800c80 00000040 : args_main.obj (.text:__args_main)
    00800cc0 00000020 : exit.obj (.text:_abort)