Das TI Code Composer Studio gibt es in verschiedenen Ausführungen:
Für die Programmierung des TMS320C6748 auf dem eXperimenters Board benutzen wir den C6000 Compiler.
C6000 Optimizing Compiler v7.0 User's Guide
DSP/BIOS ist ein auf den C6000-Kern abgestimmtes Betriebssystem.
DSP/BIOS v5.41 User's Guide (Rev. H)
Die C674x DSPLIB ist eine Floating Point Bibliothek mit optimierten Algorithmen für rechenintensive Aufgaben.
C674x_DSPLIB
Beispiel eines Programs:
#include <evmc6748.h> #include <evmc6748_timer.h> #include <evmc6748_i2c.h> #include <evmc6748_led.h> int main(void) { USTIMER_init(); I2C_init(I2C0, I2C_CLK_400K); LED_init(); LED_turnOn(LED_1); LED_turnOff(LED_2); while(1) { LED_toggle(LED_1); LED_toggle(LED_2); USTIMER_delay(DELAY_10TH_SEC); } }
Beispiel der CMakeLists.txt eines Programs:
cmake_minimum_required(VERSION 2.8) project(test C) add_executable(test test.c)
Toolchain-File:
include(CMakeForceCompiler) set(CMAKE_SYSTEM_NAME Generic) set(C6000_BASE "C:/Program Files/Texas Instruments/ccsv4/tools/compiler/C6000") set(BSP_BASE "${CMAKE_CURRENT_LIST_DIR}/../../") set(LINK_CMD_FILE "${CMAKE_CURRENT_LIST_DIR}/linker_dsp.cmd") CMAKE_FORCE_C_COMPILER(${C6000_BASE}/bin/cl6x.exe TI) CMAKE_FORCE_CXX_COMPILER(${C6000_BASE}/bin/cl6x.exe TI) set(CMAKE_C_FLAGS_DEBUG "-g") set(CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG") set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG") set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g") set(CMAKE_FIND_ROOT_PATH ${C6000_BASE}) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) include_directories(${BSP_BASE}/inc) link_directories(${BSP_BASE}/lib)
Konfiguration von CMake unter Windows:
"D:\programs\CMake 2.8\bin\cmake.exe" .. -DCMAKE_TOOLCHAIN_FILE="D:\work\BSP\share\dsp\c6000.cmake" -G"MinGW Makefiles"
Kompilieren mit Make:
"c:\Program Files\mingw\bin\mingw32-make.exe"
Wegen einem Bug in den CMake Scripts für den C6000 Compiler ist es nicht möglich das Link-Command-File dem Compiler zu übergeben. Das Link-Command-File muss als letzter Parameter dem C6000 Compiler übergeben werden. In der aktuellen CMake Version sind die Object Files die letzten Parameter. (Weil CMake die Reihenfolge der Object-Files selber bestimmt, kann man das Linker-Command-File nicht als Object-File übergeben. Dieser Workaround funktioniert also nicht.)
Die Programmierung des C6748 mit Hilfe von MATLAB/Simulink geschieht über ein xMakefile. Achtung! Pfadangaben können je nach Installation abweichen
Diese Komponenten müssen vorgängig heruntergeladen installiert bzw. entpackt werden:
Um ein xMakefile erstellen zu können, muss zuerst MATLAB konfiguriert werden. Dazu tippt man in der MATLAB Konsole zuerst den Befehl: setDspbiosFolder('C:\Program Files\Texas Instruments\bios_5_41_07_24','C:\Program Files\Texas Instruments\xdctools_3_20_03_63') ein. Danach gibt man den Befehl importDspbiosConfig('proc','all') ein. Es öffnet sich ein Fenster bei dem man einen Ordner für die importierten Dateien angeben muss. Zuletzt noch xmakefilesetup eingeben. Darauf hin öffnet sich ein Fenster. Zuerst muss man das Häkchen bei Display operational configurations only entfernen. Danach wählt man unter Configuration ticcs_c6000_dspbios_ccsv4 aus und clickt auf Apply. Es öffnet sich ein weiteres Fenster bei dem man den Installationspfad von Code Composer Studio 4 angeben muss . Auf den NTB Rechnern ist das: C:\Program Files\Texas Instruments\ccsv4. Weiter muss man in einem neuen Fenster den Pfad der Chip Support Library (CSL) angeben (C:\Program Files\Texas Instruments). Das ist der Ordner in dem sich der Ordner pspdrivers_01_30_01 befindet. Unter dem Writer Tool Directories kann kontrolliert werden ob alles geklappt hat bzw. können nachträglich Änderungen vorgenommen werden.
Durch einen Fehler im Linker vom DSP/BIOS müssen zusätzliche Konfigurationen vorgenommen werden. Dazu drückt man auf New…. Es erscheint ein Feld bei dem man einen Namen für die neue Konfiguration eingeben muss z.B ticcs_c6000_dspbios_ccsv4_clone. Unter dem Writer Linker müssen folgende Zeilen bei Arguments hinzugefügt werden:
-l „C:\Program Files\Texas Instruments\bios_5_41_07_24\packages\ti\pmi\lib\pmi.a674“
-l „C:\Program Files\Texas Instruments\bios_5_41_07_24\packages\ti\pmi\lib\pmi_ctl_null.a674“
-l „C:\Program Files\Texas Instruments\bios_5_41_07_24\packages\ti\bios\lib\pwrm.a674“
-l „C:\Program Files\Texas Instruments\bios_5_41_07_24\packages\ti\pscl\lib\pscl.a674“
-l „C:\Program Files\Texas Instruments\bios_5_41_07_24\packages\ti\pscl\lib\pscl_cfg_null.a674“
Unter File extensions for library files muss die Zeile mit: ,.a674 ergänzt werden.
Mit einem Klick auf ok ist die xMakefile Konfiguration abgeschlossen.
Danach müssen in MATLAB noch ein paar Pathvariable gesetzt werden. Dies geschieht mit dem Befehl setenv('PSP_EVMC6748_INSTALLDIR', pspdriversinstallPath) zum Beispiel: setenv('PSP_EVMC6748_INSTALLDIR','C:\Program Files\Texas Instruments\pspdrivers_01_30_01'). Mit getenv('PSP_EVMC6748_INSTALLDIR') kann man überprüfen ob der Pfad richtig gesetzt wurde. Mit setenv('EDMA3LLD_BIOS5_INSTALLDIR','EDMA3Low-levelDriverPath') wird eine weitere Pfadvariable gesetzt (z.B. setenv('EDMA3LLD_BIOS5_INSTALLDIR',D:\edma3_lld_01_10_00_01)). Mit getenv('EDMA3LLD_BIOS5_INSTALLDIR') kann wieder überprüft werden ob der Pfad richtig gesetzt wurde.
Nun kann ein neues Simulink Model erstellt werden. Die DSP spezifischen Blöcke findet man unter: Embedded Coder\Embedded Targets\Processors Texas Instruments C6000\OMAP_138 /C6748 EVM.
Dazu muss noch ein Target Preferences Block eingefügt werden. Er kann unter Embedded Coder\Embedded Targets gefunden werden. Wird der Block ins Model gezogen öffnet sich ein Fenster. Unter DIE/Tool Chain wählt man Texas Instruments Code Composer Studio v4 (makefile generation only) aus. Unter Board wählt man OMAP-L138/C6748 EVM der Processor wird automatisch ausgewählt. Danach mit Yes bestätigen.
Sobald das Model fertig ist kann mit Ctr+B oder Tools > Code Generation > Build Model das xMakefile erstellt werden. Dabei wird ein .out File im Working Directory erstellt zum Beispiel ExampleModel.out.
Um das Model runterladen zu können muss als nächstes mit Code Composer Studio ein Target Configuration File erstellt werden. Dazu werden GEL und BSL Files benötigt. Nach dem entpacken der Files startet man CCSv4 und erstellt ein neues Target Configuration File mit CCSv4 File>New>Target Configuration File. Man gibt einen Namen ein und drückt Finish. Danach öffnet man das File und wählt unter Connection: Texas Instruments XDS100v1 USB Emulator und unter Board or Device: TMS320C6748. Danach unter Advanced Setup auf Target Configuration klicken. Unter All Connections alle Untergruppen aufklappen und den C674X_0 anklicken. Auf der rechten Seite im erschienenen Feld muss man den Pfad des C6748.gel Files angegeben z.B: D:\1017293B_TMS320C6748_GEL_BSL_Files_v2.3\c6748\gel\C6748.gel. Nach dem Speichern befindet sich im Projektordner ein .ccxml File zum Beispiel omapl138.ccxml.
Um den DSP programmieren zu können müssen die DIP-Switch S7 die folgende Schalterstellung haben:
Das Board muss kurz vor dem Runterladen unbedingt neu gestartet werden. Damit ist alles für das Runterladen des Models bereit.
Um das File runterzuladen wechselt man in der Windowskonsole in den Ordner: …\Texas Instruments\ccsv4\scripting\examples\loadti . Dann kann man mit: loadti -a -c=omapl138.ccxml ExampleModule.out das Model auf die Hardware runtergeladen werden. Die Files ExampleModule.out und omapl138.ccxml müssen sich im Ordner …\Texas Instruments\ccsv4\scripting\examples\loadti befinden. Alternativ kann der Pfad von loadti den Windows Path Variablen hinzugefügt werden. Danach wechselt man in den Ordner in dem sich die beiden Dateien befinden. Mit: loadti -a -c=omapl138.ccxml ExampleModule.out wird dann das Model auf die Hardware runtergeladen.