今度はソフトウェアがどんな風に展開されていくか確認してみた。
RGB2HSVのサンプルを参考に見てみよう。
元のソースコードはZYBO_Sample/src/top.cppにあたる。 SDxでコンパイルするとZYBO_Sample/Debug/_sds/swstubs/にソースが展開される。 このフォルダのtop.cppがSDxによって変更されたソースコードとなる。
SDxでどのように置き換えられるかというと、RgbToHsv関数が_p0_RgbToHsv_1_noasync関数に入れ替わります。
<<<中略>>>
void _p0_RgbToHsv_1_noasync(RGBcolor in[19], HSVcolor out[19]);
int main() {
<<<中略>>>
RgbToHsv(rgbColors,hsvColors);
↓
_p0_RgbToHsv_1_noasync(rgbColors,hsvColors);
<<<中略>>>
#include "cf_stub.h"
void _p0_RgbToHsv_1_noasync(RGBcolor in[19], HSVcolor out[19]);
void _p0_RgbToHsv_1_noasync(RGBcolor in[19], HSVcolor out[19])
{
switch_to_next_partition(0);
int start_seq[2];
start_seq[0] = 19 * 4;
start_seq[1] = 0;
cf_request_handle_t _p0_swinst_RgbToHsv_1_cmd;
cf_send_i(&(_p0_swinst_RgbToHsv_1.cmd_RgbToHsv), start_seq, 2 * sizeof(int), &_p0_swinst_RgbToHsv_1_cmd);
cf_wait(_p0_swinst_RgbToHsv_1_cmd);
cf_send_i(&(_p0_swinst_RgbToHsv_1.in_r_PORTA), in, 76, &_p0_request_0);
cf_receive_i(&(_p0_swinst_RgbToHsv_1.out_r_PORTA), out, 76, &_p0_RgbToHsv_1_noasync_num_out_r_PORTA, &_p0_request_1);
cf_wait(_p0_request_0);
cf_wait(_p0_request_1);
}
<<<中略>>>
その他に次のソースコードが生成される。
cf_stub.c、portinfo.c