Führen Sie mruby / c auf PSoC 5 aus

Dieser Artikel zeigt die Vorgehensweise zum Ausführen der α-Version von mruby / c mit dem PSoC 5 Prototyping Kit (CY8CKIT-059).

Das PSoC4-Prototyping-Kit (CY8CKIT-049) kann auf die gleiche Weise verwendet werden.

mruby / c ist eine Implementierung von mruby, die zur Laufzeit weniger Ressourcen benötigt. Es wird angenommen, dass es mit 64 KB oder weniger arbeitet. Derzeit wird die α-Version verteilt.

Informationen zum Erhalt der mruby / c α-Version finden Sie unter [Mruby / c-Initiativen](http: //www.s) des Shimane Software Development Center (ITOC). -Bitte siehe itoc.jp/news/10).

Dinge notwendig

Gesamtdurchfluss

  1. Erstellen Sie ein einfaches C-Programmprojekt
  2. Fügen Sie mruby / c zu 1 Projekt hinzu
  3. Kompilieren Sie das mruby-Programm und integrieren Sie es in 2.

Projekterstellung

Erstellen Sie ein leeres Projekt.

img01.png

Wenn "CY8CKIT-059" nicht in "Zielhardware" angezeigt wird, wählen Sie "CY8C5888LTI-LP097" unter "Zielgerät".

Bei PSoC4 ist dies "CY8CKIT-049" oder "CY8C4247AZI-M485".

Wählen Sie im nächsten Bildschirm "Schema leeren". Geben Sie als Nächstes den Projektnamen usw. ein. Hier lautet der Projektname "mrubyc_sample".

img02.png

Blink die LED

Fügen Sie dem Schaltplan den digitalen Ausgangspin hinzu.

img03.png

Doppelklicken Sie auf diesen Pin, um ihn festzulegen.

img04.png

Setzen Sie den Stift

Öffnen Sie die .cydwr-Datei und setzen Sie den LED-Port auf "P2 [1]".

img05.png

Bei PSoC4 lautet der LED-Anschluss "P1 [6]".

Bauen

Erstellen Sie das Projekt hier.

Beim Erstellen wird der Code für den zuvor eingestellten LED-Ausgang automatisch generiert.

Erstellen eines C-Programms

Erstellen Sie die Hauptfunktion von main.c wie folgt.

Hauptfunktion


int main()
{
    CyGlobalIntEnable; /* Enable global interrupts. */

    /* Place your initialization/startup code here (e.g. MyInst_Start()) */

    for(;;)
    {
        /* Place your application code here. */
        LED_Write(1);
        CyDelay(200);
        LED_Write(0);
        CyDelay(200);
    }
}

Lauf

Erstellen Sie und schreiben Sie in das Board, indem Sie [Debug] - [Programm] auswählen. Es ist in Ordnung, wenn die LED auf der Platine blinkt.


Kopieren Sie die mruby / c-Datei

Alle folgenden Dateien (xxx.c und xxx.h) im Ordner src, die durch Dekomprimieren der Version mruby / c α erhalten wurden, werden in den PSoC Creator-Projektordner (den Ordner mit main.c) kopiert.

Fügen Sie Ihrem Projekt Dateien hinzu

Wählen Sie [Projekt] - [Vorhandenes Element ...], um die Versionsdatei mruby / c α (xxx.c) hinzuzufügen. Sie können mehrere Dateien auswählen und gleichzeitig hinzufügen.

Methode hinzufügen

Stellen Sie die im C-Programm verwendete Funktion LED_Write und CyDelay von mruby zur Verfügung. Fügen Sie jede Methode zur Object-Klasse hinzu.

Öffnen Sie die Datei class.c und fügen Sie Folgendes hinzu oder ändern Sie es.

Header-Datei zum Hinzufügen


#include "LED.h"
#include "CyLib.h"

Funktion zum Hinzufügen


mrb_value c_led(struct VM *vm, mrb_value v)
{
  LED_Write( v.value.i );
  return v;
}

mrb_value c_delay(struct VM *vm, mrb_value v)
{
  CyDelay(v.value.i);
  return v;
}

mrb_init_class_Schreiben Sie die Objektfunktion neu


static void mrb_init_class_object(void)
{
  // Class
  static_class_object = mrb_class_alloc("Object", -1);
  // Methods
  mrb_define_method(static_class_object, "led", c_led);
  mrb_define_method(static_class_object, "delay", c_delay);
}

Die Funktion mrb_define_method in der Funktion mrb_init_class_object ordnet die Funktion C der Methode mrubi zu.


Erstellen eines mruby-Programms

Erstellen Sie das folgende mruby-Programm als sample.rb. Die LED blinkt zu einem anderen Zeitpunkt als das in C erstellte Programm.

sample.rb


led 1
delay 100
led 0
delay 900

Kompilieren mit mrbc

Kompilieren Sie sample.rb mit mruby (OSS-Version), um sample.c zu erstellen. Kopieren Sie sample.c in denselben Ordner wie main.c im PSoC-Projekt.

  mrbc -E -Bary sample.rb 

Schreiben Sie main.c neu und rufen Sie das mruby-Programm von C aus auf

Fügen Sie Folgendes zu main.c. hinzu.

Header-Datei hinzufügen


#include "vm.h" 
#include "load.h" 
#include "errorcode.h" 
#include "static.h" 
#include "sample.c"

Fügen Sie die mrubyc-Funktion hinzu.

mrubyc Funktion


int mrubyc(void)
{
  struct VM *vm;

  init_static();

  vm = vm_open();
  if( vm == 0 ){
    printf("VM open Error\n");
    return -1;
  }

  int ret = loca_mrb_array(vm, ary);
  if( ret != NO_ERROR ){
    printf("MRB Load Error (%04x_%04x)\n", ret>>16, ret&0xffff);
    return -1;
  }

  vm_boot( vm );

  int keep_execute = 1;
  while( keep_execute ){
    if( vm_run_step(vm) < 0 ){
      keep_execute = 0;
    }
  }

  vm_close( vm );

  return 0;
}

Hauptfunktion


int main()
{
    CyGlobalIntEnable; /* Enable global interrupts. */

    /* Place your initialization/startup code here (e.g. MyInst_Start()) */

    for(;;)
    {
        /* Place your application code here. */
        mrubyc();
    }
}

Bauen und ausführen

Erstellen Sie und schreiben Sie in das Board, indem Sie [Debug] - [Programm] auswählen. Es ist in Ordnung, wenn die LED auf der Platine blinkt.


Es war eine etwas lange Erklärung, aber jetzt können Sie die mruby / c α-Version auf PSoC5 ausführen.

Recommended Posts

Führen Sie mruby / c auf PSoC 5 aus
Führen Sie C-Binärdateien auf AWS Lambda aus
Führen Sie STS4 auf dem Mac aus
Führen Sie die Verarbeitung auf Ant aus
Führen Sie tiscamera unter Ubuntu 18.04 aus
Führen Sie openvpn unter Docker aus (Windows)
Führen Sie das Java-Applet auf Ubuntu aus
Führen Sie die Java EE-Anwendung unter CICS aus
Führen Sie das SSE-Beispiel (Server-Sent-Event) auf Docker aus
Schritte zum Ausführen von Docker auf einem Mac
Führen Sie Puppeteer-Core auf Heroku aus (Docker Edition)
Führen Sie die AWS CLI in Docker aus
So führen Sie JavaFX unter Docker aus
Führen Sie PureScript auf einem Docker-Container aus
Führen Sie das Shell-Skript von tomcat auf java8 aus
Probieren Sie einfach C # 9 (.NET 5) in Docker aus