Registered User m (→Code) |
Registered User mNo edit summary |
||
(14 intermediate revisions by 4 users not shown) | |||
Line 4: | Line 4: | ||
==Code== | ==Code== | ||
* Create a directory that will host your source codes | * Create a directory that will host your source codes | ||
{{PC$}} mkdir $HOME/STM32MPU_workspace/STM32MP15-Ecosystem- | '''For {{EcosystemRelease | revision=3.1.0}}''': | ||
{{PC$}} mkdir $HOME/STM32MPU_workspace/STM32MP15-Ecosystem- | {{PC$}} mkdir $HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package/stm32mp1-openstlinux-21-11-17 | ||
{{PC$}} mkdir $HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package/stm32mp1-openstlinux-21-11-17/sources | |||
* Create a directory for your user space example | * Create a directory for your user space example | ||
{{PC$}} mkdir $HOME/STM32MPU_workspace/STM32MP15-Ecosystem- | {{PC$}} mkdir $HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package/stm32mp1-openstlinux-21-11-17/sources/gtk_hello_world_example | ||
{{PC$}} cd $HOME/STM32MPU_workspace/STM32MP15-Ecosystem- | {{PC$}} cd $HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package/stm32mp1-openstlinux-21-11-17/sources/gtk_hello_world_example | ||
* Create the source code file for your user space example: ''gtk_hello_world.c'' | * Create the source code file for your user space example: ''gtk_hello_world.c'' | ||
Line 64: | Line 63: | ||
} | } | ||
</pre> | </pre> | ||
'''For {{EcosystemRelease | revision=3.0.0}}''': <div class="mw-collapsible mw-collapsed"> | |||
{{PC$}} mkdir $HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.0.0/Developer-Package/stm32mp1-openstlinux-21-03-31 | |||
{{PC$}} mkdir $HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.0.0/Developer-Package/stm32mp1-openstlinux-21-03-31/sources | |||
* Create a directory for your user space example | |||
{{PC$}} mkdir $HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.0.0/Developer-Package/stm32mp1-openstlinux-21-03-31/sources/gtk_hello_world_example | |||
{{PC$}} cd $HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.0.0/Developer-Package/stm32mp1-openstlinux-21-03-31/sources/gtk_hello_world_example | |||
* Create the source code file for your user space example: ''gtk_hello_world.c'' | |||
<pre> | |||
#include <gtk/gtk.h> | |||
static void | |||
print_hello (GtkWidget *widget, | |||
gpointer data) | |||
{ | |||
g_print ("Hello World\n"); | |||
} | |||
static void | |||
activate (GtkApplication *app, | |||
gpointer user_data) | |||
{ | |||
GtkWidget *window; | |||
GtkWidget *button; | |||
GtkWidget *button_box; | |||
window = gtk_application_window_new (app); | |||
gtk_window_set_title (GTK_WINDOW (window), "Window"); | |||
gtk_window_set_default_size (GTK_WINDOW (window), 200, 200); | |||
button_box = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL); | |||
gtk_container_add (GTK_CONTAINER (window), button_box); | |||
button = gtk_button_new_with_label ("Hello World"); | |||
g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL); | |||
g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); | |||
gtk_container_add (GTK_CONTAINER (button_box), button); | |||
gtk_widget_show_all (window); | |||
} | |||
int | |||
main (int argc, | |||
char **argv) | |||
{ | |||
GtkApplication *app; | |||
int status; | |||
app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE); | |||
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL); | |||
status = g_application_run (G_APPLICATION (app), argc, argv); | |||
g_object_unref (app); | |||
return status; | |||
} | |||
</pre> | |||
</div> | |||
==Build== | ==Build== | ||
Line 91: | Line 150: | ||
==Deploy and execute== | ==Deploy and execute== | ||
* Push this binary | * Push this binary onto the board (Ethernet connection needed) | ||
{{PC$}} scp gtk_hello_world root@<board ip address>:/usr/local | {{PC$}} scp gtk_hello_world root@<board ip address>:/usr/local | ||
Line 100: | Line 159: | ||
(gtk_hello_world:6370): dbind-WARNING **: 18:17:49.914: Error retrieving accessibility bus address: org.a11y.Bus.Error: Failed to execute chi) | (gtk_hello_world:6370): dbind-WARNING **: 18:17:49.914: Error retrieving accessibility bus address: org.a11y.Bus.Error: Failed to execute chi) | ||
* A GTK | * A GTK window is displayed | ||
[[File: STM32MP1_gtk_hello_world.png|thumb|upright=2|center|link=|GTK Hello world window]] | [[File: STM32MP1_gtk_hello_world.png|thumb|upright=2|center|link=|GTK Hello world window]] | ||
* Click | * Click the "Hello world" button to close the window. ''Hello world'' is displayed on the console: | ||
Hello world | Hello world | ||
Line 109: | Line 168: | ||
__NOTOC__ | __NOTOC__ | ||
[[Category:Sub-articles]] | [[Category:Sub-articles]] | ||
{{PublicationRequestId | | {{PublicationRequestId | 19654 |2021-04-19}} | ||
</noinclude> | </noinclude> |
Latest revision as of 09:58, 17 November 2021
1. Overview[edit source]
This stage explains how to create, build and execute a simple C code application using the freshly installed SDK.
2. Code[edit source]
- Create a directory that will host your source codes
For ecosystem release unknown revision 3.1.0 :
PC $> mkdir $HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package/stm32mp1-openstlinux-21-11-17
PC $> mkdir $HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package/stm32mp1-openstlinux-21-11-17/sources
- Create a directory for your user space example
PC $> mkdir $HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package/stm32mp1-openstlinux-21-11-17/sources/gtk_hello_world_example
PC $> cd $HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package/stm32mp1-openstlinux-21-11-17/sources/gtk_hello_world_example
- Create the source code file for your user space example: gtk_hello_world.c
#include <gtk/gtk.h>
static void
print_hello (GtkWidget *widget,
gpointer data)
{
g_print ("Hello World\n");
}
static void
activate (GtkApplication *app,
gpointer user_data)
{
GtkWidget *window;
GtkWidget *button;
GtkWidget *button_box;
window = gtk_application_window_new (app);
gtk_window_set_title (GTK_WINDOW (window), "Window");
gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
button_box = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
gtk_container_add (GTK_CONTAINER (window), button_box);
button = gtk_button_new_with_label ("Hello World");
g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window);
gtk_container_add (GTK_CONTAINER (button_box), button);
gtk_widget_show_all (window);
}
int
main (int argc,
char **argv)
{
GtkApplication *app;
int status;
app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
status = g_application_run (G_APPLICATION (app), argc, argv);
g_object_unref (app);
return status;
}
For ecosystem release unknown revision 3.0.0 :
3. Build[edit source]
- Create the makefile for your user space example: Makefile
![]() |
All the indentations in a makefile are tabulations |
PROG = gtk_hello_world
SRCS = gtk_hello_world.c
CLEANFILES = $(PROG)
# Add / change option in CFLAGS and LDFLAGS
CFLAGS += -Wall $(shell pkg-config --cflags gtk+-3.0)
LDFLAGS += $(shell pkg-config --libs gtk+-3.0)
all: $(PROG)
$(PROG): $(SRCS)
$(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS)
clean:
rm -f $(CLEANFILES) $(patsubst %.c,%.o, $(SRCS))
- Cross-compile the project
PC $> make
4. Deploy and execute[edit source]
- Push this binary onto the board (Ethernet connection needed)
PC $> scp gtk_hello_world root@<board ip address>:/usr/local
- Execute your user space example
Board $> cd /usr/local/
Board $> ./gtk_hello_world
(gtk_hello_world:6370): dbind-WARNING **: 18:17:49.914: Error retrieving accessibility bus address: org.a11y.Bus.Error: Failed to execute chi)
- A GTK window is displayed
- Click the "Hello world" button to close the window. Hello world is displayed on the console:
Hello world