Перейти к содержанию
    

skyfoxss

Новичок
  • Постов

    3
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Зависит от проца. v6: Аппаратное профилирование находится в Tools->HW trace analyzer->Function profiling и Statistical function profiling. Но поддерживается не всегда. Программное профилирование можно сделать самим используя возможности компиллятора. Например в компиляторах C5000 и C6000 есть хуки (--entry_hook и --exit_hook), можно в качестве параметра прокинуть имя либо адрес функции (--entry_param и --exit_param). В теле этих хуков замеряете время по счетчику циклов процессора и выводите в логгер/ОЗУ.
  2. Есть ли возможность перекидывать данные из UPP в DDR по DMA напрямую? Читал спеку на UPP, ограничений на буфера DMA кроме выравнивания на 128 не нашел. Исходники UPP драйвера взял отсюда: http://processors.wiki.ti.com/images/b/bd/...Install_v10.zip Оно в принципе работает только когда данные из UPP перекидываются в IRAM. Как только указываю windowAddr в область DDR данные не идут. TCF файл следующий: /* Configuration script for UPP mini driver test */ utils.loadPlatform("ti.platforms.evmOMAPL138"); /* The following DSP/BIOS Features are enabled. */ bios.enableRealTimeAnalysis(prog); bios.enableRtdx(prog); bios.enableTskManager(prog); bios.MEM.NOMEMORYHEAPS = 0; bios.MEM.instance("IRAM").createHeap = 1; bios.MEM.BIOSOBJSEG = prog.get("IRAM"); bios.MEM.MALLOCSEG = prog.get("IRAM"); bios.TSK.STACKSEG = prog.get("IRAM"); bios.UDEV.create("UPP"); bios.UDEV.instance("UPP").fxnTableType = "IOM_Fxns"; bios.UDEV.instance("UPP").comment = "uPP IOM mini driver"; bios.UDEV.instance("UPP").initFxn = prog.extern("UPP_INIT"); bios.UDEV.instance("UPP").fxnTable = prog.extern("UPP_FXN_TABLE"); bios.UDEV.instance("UPP").params = prog.extern("UPP_DEV_CONFIG"); bios.LOG.create("trace"); bios.LOG.instance("trace").bufLen = 1024; bios.ECM.ENABLE = 1; bios.HWI.instance("HWI_INT7").interruptSelectNumber = 2; bios.MEM.ARGSSIZE = 0x0032; bios.MEM.BIOSOBJSEG = prog.get("IRAM"); bios.MEM.ARGSSEG = prog.get("IRAM"); bios.MEM.ARGSSIZE = 0x0032; bios.MEM.create("RESET_VECTOR"); bios.MEM.instance("RESET_VECTOR").comment = "RESET VECTOR"; bios.MEM.instance("RESET_VECTOR").base = 0xc3000000; bios.MEM.instance("RESET_VECTOR").len = 0x00000080; bios.MEM.instance("RESET_VECTOR").createHeap = 0; bios.MEM.instance("RESET_VECTOR").space = "code/data"; bios.MEM.instance("DDR").base = 0xc3000080; bios.MEM.instance("DDR").len = 0x00efff80; bios.MEM.instance("DDR").createHeap = 1; bios.MEM.instance("DDR").heapSize = 0x00010000; bios.MEM.instance("DDR").comment = "DDR"; bios.POOL.ENABLEPOOL = 1; bios.MEM.create("DSPLINKMEM"); bios.MEM.instance("DSPLINKMEM").comment = "DSPLINKMEM"; bios.MEM.instance("DSPLINKMEM").base = 0xc3f00000; bios.MEM.instance("DSPLINKMEM").len = 0x00030000; bios.MEM.instance("DSPLINKMEM").createHeap = 0; bios.MEM.STACKSIZE = 0x1000; bios.MEM.instance("RESET_VECTOR").comment = "RESET_VECTOR"; bios.POOL.ENABLEPOOL = 0; // !GRAPHICAL_CONFIG_TOOL_SCRIPT_INSERT_POINT! prog.gen(); На DSP работает Bios 5_42_01_09.
  3. Можно без CCS скачать и распаковать библиотеку dsplib для конкретной версии C6X и посмотреть, подходит оно вам или нет: http://www.ti.com/tool/sprc265 Там в основном оптимизированный код на C и ассемблерный код, надо также учесть ограничения на выравнивание данных и размер массивов. Для компилляции также понадобится библиотека mathlib: http://www.ti.com/tool/mathlib
×
×
  • Создать...