MikroElektronika Quail¶
The Quail device is an STM32-powered development solution for building hardware prototypes with MikroElektronika Click Boards.
Hardware-wise, Quail has 4 mikroBUS sockets for click board connectivity, along with 24 screw terminals for connecting additional electronics and two USB ports (one for programming, the other for external mass storage).
The device needs a 5V power supply and features a STM32F427 MCU running at 168MHz with 192Kb of RAM, 2Mb of flash and additional 8Mb of spi flash.
Note
Quail is produced by MikroElektronika, but the idea and design of the device was done by MikroBUS.NET, a team of software and hardware professionals from France
Pin Mapping¶
MikroElektronika Quail official manual is available here
Flash Layout¶
The internal flash of the MikroElektronika Quail is organized into two banks of 1Mb each. Each bank has sectors of different size according to the following table:
Bank 1 | Bank 2 | ||||
---|---|---|---|---|---|
Start address | Size | Content | Start address | Size | Content |
0x8000000 | 16Kb | Virtual Machine | 0x8100000 | 16Kb | Bytecode Bank 7 |
0x8004000 | 16Kb | Virtual Machine | 0x8104000 | 16Kb | Bytecode Bank 8 |
0x8008000 | 16Kb | Virtual Machine | 0x8108000 | 16Kb | Bytecode Bank 9 |
0x800C000 | 16Kb | Virtual Machine | 0x810C000 | 16Kb | Bytecode Bank 10 |
0x8010000 | 64Kb | Virtual Machine | 0x8110000 | 64Kb | Bytecode Bank 11 |
0x8020000 | 128kb | Bytecode Bank 0 | 0x8120000 | 128kb | Bytecode Bank 12 |
0x8040000 | 128kb | Bytecode Bank 1 | 0x8140000 | 128kb | Bytecode Bank 13 |
0x8060000 | 128kb | Bytecode Bank 2 | 0x8160000 | 128kb | Bytecode Bank 14 |
0x8080000 | 128kb | Bytecode Bank 3 | 0x8180000 | 128kb | Bytecode Bank 15 |
0x80A0000 | 128kb | Bytecode Bank 4 | 0x81A0000 | 128kb | Bytecode Bank 16 |
0x80C0000 | 128kb | Bytecode Bank 5 | 0x81C0000 | 128kb | Bytecode Bank 17 |
0x80E0000 | 128kb | Bytecode Bank 6 | 0x81E0000 | 128kb | Bytecode Bank 18 |
Device Summary¶
- Microcontroller: ARM 32-bit Cortex™-M4 CPU Core
- Operating Voltage: 3.3V
- Input Voltage: 7-12V
- Digital I/O Pins (DIO): 66
- Analog Input Pins (ADC): 10
- UARTs: 5
- SPIs: 2
- I2Cs: 2
- Flash Memory: 2Mb
- SRAM: 192 KB + 64Kb CCM
- Clock Speed: 168Mhz
- Size (LxW mm): 97 x 72
Power¶
The MikroElektronika Quail can be powered via the on-board USB Mini-B connector or with an external power supply. The power source is selected automatically. External (non-USB) power can be inserted in the “Gnd” and “+20v” pin terminals of the device.
The device can operate on an external supply of 6 to 20 volts. If supplied with less than 7V, however, the 5V pin may supply less than five volts and the device may be unstable. If more than 12V are used, the voltage regulator may overheat and damage the device. The recommended range is 7 to 12 volts.
Connect, Register, Virtualize and Program¶
On Windows machines two set of drivers must be installed: the DFU drivers and the USB serial drivers. This can be done by using the Zadig utility version 2.2 or greater. Use the Zadig utility once with the Quail in DFU mode (see below) and once after the device has been virtualized.
Note
Remember to select “Options > List all devices” to search for the Quail device. * In DFU mode, the VID:PID you should see is 0483:DF11 and the Quail si recognized as “STM32 BOOTLOADER”. * For the virtualized Quail the VID:PID is 0483:DF12.
Warning
In DFU mode any driver is ok, except Usb CDC; for the virtualized Quail the only valid driver is Usb CDC.
Note
It could be necessary to temporarily disable the digitally signed driver enforcement policy of Windows to allow the driver installation. There are good instructions on how to do that in this guide.
On MAC OSX and Linux USB drivers are not required.
Note
For Linux Platform: to allow the access to serial ports the user needs read/write access to the serial device file. Adding the user to the group, that owns this file, gives the required read/write access: Ubuntu distribution –> dialout group; Arch Linux distribution –> uucp group
If the device is still not recognized or not working, the following udev rules may need to be added:
#MikroElektronica Quail Device
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="0666", GROUP="users", ENV{ID_MM_DEVICE_IGNORE}="1"
SUBSYSTEMS=="tty", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df12", MODE="0666", GROUP="users", ENV{ID_MM_DEVICE_IGNORE}="1"
Once connected to a USB port the Quail device can be seen as a Virtual Serial port or as a DFU device depending on its virtualized/virtualizable status and it is automatically recognized by Zerynth Studio. The next steps are:
- Put the Quail in DFU Mode (Device Firmware Upgrade):
- Hold down BOTH on-board buttons (reset and boot);
- Release only the reset button, while holding down the boot button;
- After a second, release the boot button; the Quail is now in DFU mode;
- Select the Quail on the Device Management Toolbar;
- Register the device by clicking the “Z” button from the Zerynth Studio;
- Creaet a Virtual Machine for the device by clicking the “Z” button for the second time;
- Virtualize the device by clicking the “Z” button for the third time.
Note
During these operations the Quail device must be in DFU mode. if the device returns in standard mode, it is necessary to put it in DFU Mode again.
After virtualization, the MikroElektronika Quail is ready to be programmed and the Zerynth scripts uploaded. Just Select the virtualized device from the “Device Management Toolbar” and click the dedicated “upload” button of Zerynth Studio and reset the device by pressing the Reset on-board button when asked.
Firmware Over the Air update (FOTA)¶
The Firmware Over the Air feature allows to update the device firmware at runtime. Zerynth FOTA in the MikroElektronika Quail device is available for bytecode and VM.
Flash Layout is shown in table below:
Start address | Size | Content |
---|---|---|
0x08000000 | 128Kb | VM Slot 0 |
0x08020000 | 384kb | Bytecode Slot 0 |
0x08080000 | 128kb | VM Slot 1 |
0x080A0000 | 384kb | Bytecode Slot 1 |
Important
FOTA Record (small segment of memory where the current and desired state of the firmware is store) for the MikroElektronika Quail device is allocated in 16kb sector inside the VM Slot 0 at 0x08004000 address.
Power Management and Secure Firmware¶
Power Management feature allows to optimize power consumption by putting the device in low consumption state.
Secure Firmware feature allows to detect and recover from malfunctions and, when supported, to protect the running firmware (e.g. disabling the external access to flash or assigning protected RAM memory to critical parts of the system).
Both these features are strongly platform dependent; more information at Power Management - STM32F section and Secure Firmware - STM32F section.