]> rtime.felk.cvut.cz Git - pes-rpp/rpp-simulink.git/blob - rpp/rpp/rpp_download.m
Make error messages more clear
[pes-rpp/rpp-simulink.git] / rpp / rpp / rpp_download.m
1 % Copyright (C) 2013-2014 Czech Technical University in Prague
2 %
3 % Authors:
4 %     - Carlos Jenkins <carlos@jenkins.co.cr>
5 %
6 % This document contains proprietary information belonging to Czech
7 % Technical University in Prague. Passing on and copying of this
8 % document, and communication of its contents is not permitted
9 % without prior written authorization.
10 %
11 % File : rpp_download.m
12 % Abstract:
13 %     Code download utility for Simulink RPP Target.
14 %
15 %     This function is optionally executed at the end of the build process
16 %     if it is successful and the user selected "Download compiled binary to
17 %     RPP" option on the build configuration panel. This function calls
18 %     loadti.sh script with the generated binary and using configuration for
19 %     the XDS100v2 JTAG Emulators.
20 %
21 % References:
22 %     loadti utility wiki at http://processors.wiki.ti.com/index.php/Loadti
23 %     Readme file in <cssroot>/ccs_base/scripting/examples/loadti/readme.txt
24
25
26 function rpp_download(modelName, buildDirectory, use_openocd, use_sdram)
27         RppLibRoot = getpref('rpp', 'RppLibRoot');
28         CCSRoot    = getpref('rpp', 'CCSRoot');
29         
30         %TODO: parse the EXE_FILE_EXT from target_tools.mk
31         outfile     = fullfile(buildDirectory, [modelName, '.out']);
32         downloadLog = fullfile(buildDirectory, 'download.log');
33
34         if use_openocd
35                 if use_sdram
36                         command = [...
37                                 RppLibRoot '/../loadopenocd/loadopenocd.sh -d flash -b -s ' ...
38                                 , outfile, ' 2> ' , downloadLog ];
39                         disp('### Running downloader script:');
40                         disp(command);
41                         status = system(command);
42                         if status ~= 0,
43                                 throw(MException('rpp:targetDlErr', ['Failed to download ' modelName ' to the target']))
44                         end
45                         disp(['Done. <a href="matlab:open(''', downloadLog, ''')">Open download log.</a>']);                    
46                 else
47                         if isunix
48                                 command = [...
49                                         RppLibRoot '/../loadopenocd/loadopenocd.sh -d flash -b -s ' ...
50                                         , outfile, ' 2> ' , downloadLog ];
51                                 disp('### Running downloader script:');
52                                 disp(command);
53                                 status = system(command);
54                                 if status ~= 0,
55                                         throw(MException('rpp:targetDlErr', ['Failed to download ' modelName ' to the target']))
56                                 end
57                                 disp(['Done. <a href="matlab:open(''', downloadLog, ''')">Open download log.</a>']);                    
58                         else
59                                 disp(['### Sorry code download via OpenOCD is available for UNIX systems only. Uncheck the option']);
60                                 disp(['###     -> Uncheck the option "Use OpenOCD to download the compiled binary" to use Ti downloader, which is functional under Windows.']);                 end
61                 end
62         else
63                 if use_sdram
64                         disp(['### Sorry, Downloading to the SDRAM is not yet implemented.'])
65                         disp(['###     -> Uncheck the option "Download compiled binary to SDRAM" to download the code to the Flash memory.'])
66                 else
67                         if isunix
68
69                                 disp(['### Downloading ', modelName, ' to RPP board...']);
70
71                                 % -r,   --reset                 Reset target before run
72                                 % -c,   --cfg-file=CONFIG_FILE  Target setup config file
73                                 command = [...
74                                         'CCS_SCRIPTING="' CCSRoot '/ccs_base/scripting/" ' ...
75                                         '"' RppLibRoot '/../loadti/loadti.sh" -r ' ...
76                                         '-c "', RppLibRoot, '/rpp/TMS570LS3137.ccxml" ', ...
77                                         '"', outfile, ...
78                                         '" 2> "', downloadLog, '"'];
79                                 disp('### Running downloader script:');
80                                 disp(command);
81                                 status = system(command);
82                                 if status ~= 0,
83                                         throw(MException('rpp:targetDlErr', ['Failed to download ' modelName ' to the target']))
84                                 end
85
86                                 disp(['Done. <a href="matlab:open(''', downloadLog, ''')">Open download log.</a>']);
87
88                         else
89                                 disp(['### Sorry code download for Windows is not yet implemented.']);
90                                 disp(['###     -> Add support for non UNIX systems in <targetroot>/rpp/rpp_download.m file.']);
91                         end     
92                 end
93         end
94
95 end