Cet article présente la procédure d'exécution de la version α de mruby / c avec le kit de prototypage PSoC 5 (CY8CKIT-059).
Le kit de prototypage PSoC4 (CY8CKIT-049) peut être utilisé dans la même procédure.
mruby / c est une implémentation de mruby qui nécessite moins de ressources à l'exécution. Il est supposé fonctionner à 64 Ko ou moins. Actuellement, la version α est en cours de distribution.
Pour plus d'informations sur l'obtention de la version mruby / c α, voir [Mruby / c Initiatives](http: //www.s) du Shimane Software Development Center (ITOC). -Veuillez voir itoc.jp/news/10).
Créez un projet vide.
Si "CY8CKIT-059" n'apparaît pas dans "Matériel cible", sélectionnez "CY8C5888LTI-LP097" dans "Appareil cible".
Pour PSoC4, ce sera "CY8CKIT-049" ou "CY8C4247AZI-M485".
Sur l'écran suivant, sélectionnez "Schéma vide". Ensuite, entrez le nom du projet et ainsi de suite. Ici, le nom du projet est "mrubyc_sample".
Ajoutez la broche de sortie numérique au schéma de circuit.
Double-cliquez sur cette épingle pour la définir.
--Définissez "Nom" sur "LED" --Décochez "Connexion matérielle"
Ouvrez le fichier
Dans le cas du PSoC4, le port LED est "P1 [6]".
Construisez le projet ici.
En construisant, le code lié à la sortie LED définie précédemment sera automatiquement généré.
Créez la fonction principale de main.c comme suit.
fonction principale
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);
}
}
Construisez et écrivez sur la carte en sélectionnant [Déboguer] - [Programme]. Ce n'est pas grave si le voyant de la carte clignote.
Tous les fichiers suivants (xxx.c et xxx.h) du dossier src obtenu en décompressant la version mruby / c α sont copiés dans le dossier du projet PSoC Creator (le dossier contenant main.c).
Sélectionnez [Projet] - [Élément existant ...] pour ajouter le fichier de version mruby / c α (xxx.c). Vous pouvez sélectionner plusieurs fichiers et les ajouter à la fois.
Rendez la fonction LED_Write et la fonction CyDelay utilisées dans le programme C disponibles auprès de mruby. Ajoutez chaque méthode à la classe Object.
Ouvrez le fichier class.c et ajoutez ou modifiez ce qui suit.
Fichier d'en-tête à ajouter
#include "LED.h"
#include "CyLib.h"
Fonction à ajouter
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_Réécrire la fonction objet
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);
}
La fonction mrb_define_method de la fonction mrb_init_class_object associe la fonction C à la méthode mrubi.
Créez le programme mruby suivant en tant que sample.rb. La LED clignote à un moment différent de celui du programme créé en C.
sample.rb
led 1
delay 100
led 0
delay 900
Compilez sample.rb avec mruby (version OSS) pour créer sample.c. Copiez sample.c dans le même dossier que main.c dans le projet PSoC.
mrbc -E -Bary sample.rb
Ajoutez ce qui suit à main.c.
Ajouter un fichier d'en-tête
#include "vm.h"
#include "load.h"
#include "errorcode.h"
#include "static.h"
#include "sample.c"
Ajoutez la fonction mrubyc.
fonction mrubyc
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;
}
fonction principale
int main()
{
CyGlobalIntEnable; /* Enable global interrupts. */
/* Place your initialization/startup code here (e.g. MyInst_Start()) */
for(;;)
{
/* Place your application code here. */
mrubyc();
}
}
Construisez et écrivez sur la carte en sélectionnant [Déboguer] - [Programme]. Ce n'est pas grave si le voyant de la carte clignote.
Cela a été une explication un peu longue, mais maintenant vous pouvez exécuter la version mruby / c α sur PSoC5.
Recommended Posts