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).
Erstellen Sie ein leeres Projekt.
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".
Fügen Sie dem Schaltplan den digitalen Ausgangspin hinzu.
Doppelklicken Sie auf diesen Pin, um ihn festzulegen.
Öffnen Sie die .cydwr-Datei
Bei PSoC4 lautet der LED-Anschluss "P1 [6]".
Erstellen Sie das Projekt hier.
Beim Erstellen wird der Code für den zuvor eingestellten LED-Ausgang automatisch generiert.
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);
}
}
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.
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.
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.
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 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 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
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();
}
}
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