2013-12-10 3 views
0

У кого-нибудь есть сборка TMS320 c6000 только «привет мир», чтобы поделиться? Видел множество C с примерами рядный сборки ...TMS320 c6000 сборка «привет мир» пример?

рассматривает

AP

+1

Что именно будет " привет мир "быть? У вас есть ЖК-дисплей, подключенный к вашей доске разработки? Некоторые светодиоды? Спикер ..? – Michael

+0

Ядро C64X или C64X + core? У вас есть JTAG? В этом случае вы можете записать в буфер памяти и посмотреть на него с помощью JTAG (CodeComposerStudio)? У вас есть коммерческий совет (возможно, спектр Digital) или что-то более особенное? – turboscrew

+0

Я забыл: с DSP/BIOS или нет? – turboscrew

ответ

2

Не известный «привет мир», но строка копия. Может быть, это помогает?

; hello.asm 
; 
; Created on: 11.12.2013 
;  Author: turboscrew 
; 

     .global _main 

     .data 
hello_str: 
     .string "Hello world!" 
     .byte 0 

txt_buffer: 
     .space 16 

     .text 

_main: 
     mvkl hello_str, b0 
     mvkh hello_str, b0 ; string pointer to b0 
     mvkl txt_buffer, b1 
     mvkh txt_buffer, b1 


     ; copy to buffer 
c_loop: 
     ldb *b0++[1], a0 
     nop 4 
     stb a0, *b1++[1] 
|| [a0] bnop c_loop, 5 ; 

     ; idle loop - end of program 
i_loop: 
     bnop i_loop, 5 

для пуска (модифицированный из примера ТИ):

; From TI example 
; 
; ======== unused ======== 
; plug inifinite loop -- with nested branches to 
; disable interrupts -- for all undefined vectors 
; 
unused .macro id 

     .global unused:id: 
unused:id: 
     b unused:id: ; nested branches to block interrupts 
     nop 4 
     b unused:id: 
     nop 
     nop 
     nop 
     nop 
     nop 

     .endm 

     .sect ".vectors" 

     .ref _main    ; entry point 

     .align 32*8*4   ; must be aligned on 256 word boundary 

RESET:       ; reset vector 
     mvkl _main,b0  ; load destination function address to b0 
     mvkh _main,b0 
     b b0     ; start branch to destination function 
     mvc PCE1,b0    ; address of interrupt vectors 
     mvc b0,ISTP    ; set table to point here 
     nop 3     ; fill delay slot 
     nop 
     nop 

     ; 
     ; plug unused interrupts with infinite loops to 
     ; catch stray interrupts 
     ; 
     unused 1 
     unused 2 
     unused 3 
     unused 4 
     unused 5 
     unused 6 
     unused 7 
     unused 8 
     unused 9 
     unused 10 
     unused 11 
     unused 12 
     unused 13 
     unused 14 
     unused 15 

И управляющий файл линкера (CCS-генерироваться + немного отредактирован):

MEMORY 
{ 
    L2RAM:  o = 0x00800000 l = 0x00200000 /* 2MB L2 Internal SRAM */ 
    L1PRAM:  o = 0x00E00000 l = 0x00008000 /* 32kB L1 Program SRAM/CACHE */ 
    L1DRAM:  o = 0x00F00000 l = 0x00008000 /* 32kB L1 Data SRAM/CACHE */ 
    EMIFA_CE2: o = 0xA0000000 l = 0x00800000 /* 8MB EMIFA CE2 */ 
    EMIFA_CE3: o = 0xB0000000 l = 0x00800000 /* 8MB EMIFA CE2 */ 
    EMIFA_CE4: o = 0xC0000000 l = 0x00800000 /* 8MB EMIFA CE2 */ 
    EMIFA_CE5: o = 0xD0000000 l = 0x00800000 /* 8MB EMIFA CE2 */ 
    DDR2_CE0: o = 0xE0000000 l = 0x20000000 /* 512MB EMIFB CE0 */ 
} 

SECTIONS 
{ 
    .vectors  > L2RAM 
    .text   > L2RAM 
    .stack   > L2RAM 
    .bss   > L2RAM 
    .cio   > L2RAM 
    .const   > L2RAM 
    .data   > L2RAM 
    .switch  > L2RAM 
    .sysmem  > L2RAM 
    .far   > L2RAM 
    .args   > L2RAM 
    .ppinfo  > L2RAM 
    .ppdata  > L2RAM 

    /* COFF sections */ 
    .pinit   > L2RAM 
    .cinit   > L2RAM 

    /* EABI sections */ 
    .binit   > L2RAM 
    .init_array > L2RAM 
    .neardata  > L2RAM 
    .fardata  > L2RAM 
    .rodata  > L2RAM 
    .c6xabi.exidx > L2RAM 
    .c6xabi.extab > L2RAM 
} 
+0

Это что, C6455? :-) Это определенно C64 +. На самом деле, с 2MB L2, это будет продолжение для C6455, я считаю. Думаю, мы пронумеровали это C6457? –

+0

На самом деле это TCI6482. – turboscrew

+0

Ах. Я думаю, что они тесно связаны с устройствами. Я знаю только наши устройства по внутренним кодовым именам большую часть времени. Если вам интересно, я был одним из архитекторов систем памяти DSP в этом поколении. –

Смежные вопросы