Hello Shell
This is a derived work from the original Zephyr “Hello World” example! Most of the stuff in this README file needs to be redesigned and changed!
Overview
A simple Hello World example that can be used with any supported board and prints ‘Hello World! I’m THE SHELL’ to the console. This application can be built into modes:
basic command set
fancy command set, with default enabled
CONFIG_BRIDLE_CMD_HELLO
Requirements
One of the following development boards:
ARM Cortex-A9 Emulation (
qemu_cortex_a9
)ST Nucleo F303RE (NUCLEO-F303RE)
ST Nucleo F401RE (NUCLEO-F401RE)
ST Nucleo F413ZH (NUCLEO-F413ZH)
ST Nucleo F746ZG (NUCLEO-F746ZG)
ST Nucleo F767ZI (NUCLEO-F767ZI)
Arduino/Genuino Zero or Bridle’s Arduino/Genuino Zero
Seeeduino XIAO or Bridle’s XIAO SAMD21 (Seeeduino XIAO)
Building and Running
This project outputs ‘Hello World! I’m THE SHELL’ to the console. It can be built and executed as emulation in X86 Emulation (QEMU) as follows:
west build -b qemu_x86 -p -d build/helloshell-qemu_x86 bridle/samples/helloshell
west build -t run -d build/helloshell-qemu_x86
Also it can be built and executed on following targets:
As Native POSIX execution (native_posix), fancy command set mode:
west build -b native_posix -p -d build/helloshell-native_posix bridle/samples/helloshell west build -t run -d build/helloshell-native_posix
Hint
Connect a terminal emulator to the given pseudotty or start the application directly with the autoconnect argument:
./build/helloshell-native_posix/zephyr/zephyr.exe -attach_uart
As emulation in ARM Cortex-M3 Emulation (QEMU), fancy command set mode:
west build -b qemu_cortex_m3 -p -d build/helloshell-qemu_cortex_m3 bridle/samples/helloshell west build -t run -d build/helloshell-qemu_cortex_m3
Hint
Exit QEMU by pressing CTRL+A x.
On ST Nucleo F746ZG board, fancy command set mode:
west build -b nucleo_f746zg -p -d build/helloshell-nucleo_f746zg bridle/samples/helloshell west flash -d build/helloshell-nucleo_f746zg
Further you can deside either to run in a basic or fancy command set mode:
On ST Nucleo F746ZG board, basic command set mode:
west build -b nucleo_f746zg -p -d build/helloshell-nucleo_f746zg bridle/samples/helloshell -- -DCONF_FILE=prj-minimal.conf west flash -d build/helloshell-nucleo_f746zg
On ST Nucleo F746ZG board, fancy command set mode:
west build -b nucleo_f746zg -p -d build/helloshell-nucleo_f746zg bridle/samples/helloshell -- -DCONF_FILE=prj.conf west flash -d build/helloshell-nucleo_f746zg
Sample Output
(text in bold is a command input, text in angle brackets are keys to press)
Hello World! I'm THE SHELL from nucleo_f746zg uart:~$ <Tab> adc bridle clear dac device devmem eeprom flash gpio hello help history hwinfo i2c kernel led log pwm regulator rem resize retval rtc sensor shell timer uart:~$ help Please press the <Tab> button to see all available commands. You can also use the <Tab> button to prompt or auto-complete all commands or its subcommands. You can try to call commands with <-h> or <--help> parameter for more information. Shell supports following meta-keys: Ctrl + (a key from: abcdefklnpuw) Alt + (a key from: bf) Please refer to shell documentation for more details. Available commands: adc : ADC commands bridle : Bridle commands. clear : Clear screen. dac : DAC shell commands device : Device commands devmem : Read/write physical memory Usage: Read memory at address with optional width: devmem address [width] Write memory at address with mandatory width and value: devmem address <width> <value> eeprom : EEPROM shell commands flash : Flash shell commands gpio : GPIO commands hello : say hello help : Prints the help message. history : Command history. hwinfo : HWINFO commands i2c : I2C commands kernel : Kernel commands led : LED commands log : Commands for controlling logger pwm : PWM shell commands regulator : Regulator playground rem : Ignore lines beginning with 'rem ' resize : Console gets terminal screen size or assumes default in case the readout fails. It must be executed after each terminal width change to ensure correct text display. retval : Print return value of most recent command sensor : Sensor commands shell : Useful, not Unix-like shell commands. timer : Timer commands uart:~$ hello -h hello - say hello uart:~$ hello Hello from shell. uart:~$ kernel version Zephyr version 3.7.0 uart:~$ bridle version Bridle version 3.7.0 uart:~$ bridle version long Bridle version 3.7.0.0 uart:~$ bridle info Zephyr: 3.7.0 Bridle: 3.7.0 uart:~$ kernel uptime Uptime: 327750 ms uart:~$ kernel cycles cycles: 3586181929 hw cycles uart:~$ kernel threads Scheduler: 498 since last call Threads: 0x20010e58 options: 0x0, priority: -16 timeout: 0 state: pending, entry: 0x8002339 stack size 2048, unused 1920, usage 128 / 2048 (6 %) *0x20010ac0 shell_uart options: 0x0, priority: 14 timeout: 0 state: queued, entry: 0x8004c59 stack size 2048, unused 1016, usage 1032 / 2048 (50 %) 0x20011728 sysworkq options: 0x1, priority: -1 timeout: 0 state: pending, entry: 0x800ebfd stack size 1024, unused 848, usage 176 / 1024 (17 %) 0x200105c0 logging options: 0x0, priority: 14 timeout: 0 state: pending, entry: 0x8002a21 stack size 768, unused 584, usage 184 / 768 (23 %) 0x200114c8 idle options: 0x1, priority: 15 timeout: 0 state: , entry: 0x8014571 stack size 320, unused 256, usage 64 / 320 (20 %) uart:~$ kernel stacks 0x20010e58 (real size 2048): unused 1920 usage 128 / 2048 ( 6 %) 0x20010ac0 shell_uart (real size 2048): unused 944 usage 1104 / 2048 (53 %) 0x20011728 sysworkq (real size 1024): unused 848 usage 176 / 1024 (17 %) 0x200105c0 logging (real size 768): unused 584 usage 184 / 768 (23 %) 0x200114c8 idle (real size 320): unused 256 usage 64 / 320 (20 %) 0x20015e80 IRQ 00 (real size 2048): unused 1816 usage 232 / 2048 (11 %) uart:~$ _