У кого-нибудь есть сборка TMS320 c6000 только «привет мир», чтобы поделиться? Видел множество C с примерами рядный сборки ...TMS320 c6000 сборка «привет мир» пример?
рассматривает
AP
У кого-нибудь есть сборка TMS320 c6000 только «привет мир», чтобы поделиться? Видел множество C с примерами рядный сборки ...TMS320 c6000 сборка «привет мир» пример?
рассматривает
AP
Не известный «привет мир», но строка копия. Может быть, это помогает?
; 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
}
Это что, C6455? :-) Это определенно C64 +. На самом деле, с 2MB L2, это будет продолжение для C6455, я считаю. Думаю, мы пронумеровали это C6457? –
На самом деле это TCI6482. – turboscrew
Ах. Я думаю, что они тесно связаны с устройствами. Я знаю только наши устройства по внутренним кодовым именам большую часть времени. Если вам интересно, я был одним из архитекторов систем памяти DSP в этом поколении. –
Что именно будет " привет мир "быть? У вас есть ЖК-дисплей, подключенный к вашей доске разработки? Некоторые светодиоды? Спикер ..? – Michael
Ядро C64X или C64X + core? У вас есть JTAG? В этом случае вы можете записать в буфер памяти и посмотреть на него с помощью JTAG (CodeComposerStudio)? У вас есть коммерческий совет (возможно, спектр Digital) или что-то более особенное? – turboscrew
Я забыл: с DSP/BIOS или нет? – turboscrew