ひでみのアイデア帳

くだらないことなんだけど、忘れないために・・・

SDxで遊んでみる

今度はソフトウェアがどんな風に展開されていくか確認してみた。

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