EclipseArmebs4/DemoProjects
Marc.pignat (Talk | contribs) |
Marc.pignat (Talk | contribs) |
||
Line 154: | Line 154: | ||
=== sd_card === | === sd_card === | ||
Test the micro SD/SDHC card, low-level access and filesystem (fat32) access | Test the micro SD/SDHC card, low-level access and filesystem (fat32) access | ||
+ | |||
Peripherals used : SD, serial port | Peripherals used : SD, serial port | ||
+ | |||
+ | === audio === | ||
+ | Testing audio play and recording | ||
+ | Peripherals used : buttons, audio interface | ||
=== sections === | === sections === | ||
Show how to force the compiler to use non-default section (using external RAM, ...) | Show how to force the compiler to use non-default section (using external RAM, ...) | ||
+ | |||
Peripherals used : external RAM, serial port | Peripherals used : external RAM, serial port | ||
− | === === | + | === spi_discovery === |
+ | 2d level for the STM32F4Discovery board (see BOARD_XXX). | ||
+ | |||
+ | Peripherals used : SPI, leds | ||
+ | |||
+ | === stm32_camera === | ||
+ | Using FreeRTOS, copy images from the camera to the display, jpeg images can be recorded over the USB CDC connection, PC side software in trunk/qsimplecam subversion directory. | ||
− | Peripherals used : | + | Peripherals used : USB slave, camera, display |
− | === === | + | === tcp_ip_freertos === |
+ | FreeRTOS + lwip sample code, not well tested. | ||
− | Peripherals used : | + | Peripherals used : Ethernet |
− | === === | + | === test_cmsis_dsp === |
+ | Test from the cmsis dsp library | ||
− | Peripherals used : | + | Peripherals used : serial port |
− | === === | + | === can === |
+ | Testing the CAN bus. | ||
− | Peripherals used : | + | Peripherals used : CAN, serial port |
− | === === | + | === mp3_player_gpl (work in progress) === |
+ | A webradio project licensed under the GPL. At this time it plays the "Couleur 3" swiss radio on the earphone output. | ||
− | Peripherals used : | + | Peripherals used : Ethernet, lcd, touchscreen, audio |
− | === === | + | === cyassl_test_gpl === |
+ | Project licensed under the GPL, curently only testing DSA and ECDSA signature algorithms. | ||
− | Peripherals used : | + | Peripherals used : serial port |
Revision as of 16:50, 3 December 2014
Some sample code is available in the subversion repository, please have a look at the First steps page.
The sample projects are located in the trunk/demos/PROJECT_NAME
directory.
libheivs_stm32
All our sample (and labs) code use the libheivs_stm32
library, it source can be found at svn+https://repos.hevs.ch/svn/armebs4/trunk/libheivs_stm32.
This is an eclipse project that must be checked out into the eclipse workspace. This project can't be build, it is linked into other projects and compiled directly into
them.
Configurable modules
Several libraries have integrated into our library. The heivs
and stm32
parts mostly contain drivers and support code and are therefore mandatory. Each project can configure optional modules by modifying the project's config/config.h
file.
Name | Version | Brief | Provider | License | config/config.h
|
---|---|---|---|---|---|
heivs | r640 | Board support package and more | ARMEBS4 team | FIXME | (mandatory) |
stm32 | 1.1.0 + custom changes | STM32 support | ST | unkown | (mandatory) |
ugfx | ? + custom changes | µGFX graphics library | µGFX | GFX License version 1.2 | USE_UGFX |
freertos | 8.0.0 + custom changes | FreeRTOS real time kernel | FreeRTOS | GPLv2 modified license | USE_FREERTOS |
cmsis | 1.4.3 + custom changes | CMSIS MCU Software Standard | ARM | CMSIS license | (automatic) |
fatfs | 0.10a + custom changes | Board support package | ChaN | custom - free software | USE_FATFS |
lwip | 1.4.1 + custom changes | A Lightweight TCP/IP stack | lwip | Modified BSD License | USE_LWIP |
jpeg | 9a + custom changes | libjpeg | ijg | custom - free software | USE_LIBJPEG |
cyassl | 3.2.0 + custom changes | Cryptographic and SSL library | yassl | GPLv2 | USE_CYASSL |
BOARD_XXX
Several boards are supported (see libheivs/include/heivs/bsp.h). For the ARMEBS4, the BOARD_ARMEBS4
symbol MUST be define in "project properties/C/C++ Build/Cross GCC Compiler/Symbols".
current_project/
config/config.h
Each project MUST contain the config/config.h
file which can define some compilation options. A complete and commented sample file can be found in libheivs_stm32/include/heivs/samples/config.h.txt
Define | Brief | Default |
---|---|---|
USE_UGFX, USE_FREERTOS, USE_FATFS, USE_LWIP, USE_FATFS, USE_LWIP, USE_LIBJPEG, USE_CYASSL | See Configurable modules | 0 (== desactivated) |
USE_STDIO_USART | Which serial port will be used for stdio | 0 (== use bus_usart[0] for stdio) |
USE_SEMIHOSTING | stdio using semihosting (over JTAG) | 0 (don't use semihosting) |
USE_STDIO_NOBUF | Disable stdio buffers | 1 (buffers disabled) |
USE_STDIO_ECHO | Echo every char received on stdin to stdout | 0 (no echo) |
USE_STDIO_AUTO_CR_BEFORE_LF | Fix stio line endings for Windows | 1 (add CR before LF) |
USE_STM32_LIB_ASSERT | Check most parameters of stm32 library functions | 0 (disabled) |
USE_STM32_USB_USE_DEVICE_MODE, USE_STM32_USB_HOST_MODE, USE_STM32_USB_OTG_MODE | stm32 USB stack configuration | 0 (disabled) |
newlib's iprintf/iscanf
newlib implements some lightweight versions of *printf and *scanf fuctions named *iprintf and *iscanf. These functions does not support floating point numbers.
for instance the vfiprintf
can be used instead of vfprintf
where floating point is not required.
The heivs_bus_t
abstraction
FIXME
Exclude from build
FIXME
Sample projects
Every project contains:
- The basic configuration
- working settings for the compiler/linker
- BOARD_XXX is defined in properties/C/C++ Build/Cross GCC Compiler/Symbols
- config/config.h file : the configuration of the project
- project_name.lauch
- libheivs_stm32 -> an eclipse link to the libheivs_stm32 library
_MODEL
Sample project, mainly used for storing the default compile and debug configuration. This project is always up to date with the latest and best recommended settings.
Peripherals used : leds, buttons (polling)
mems
Display accelerometer and gyroscope values on the LCD.
Peripherals used : accelerometer, gyroscope, LCD
stdio
stdin/stdout example.
Peripherals used : serial port
buttons_interrupts
Copy the button values on the led and display the button's state on the serial port. This software use the BSP abstraction for buttons.
Peripherals used : buttons, serial port
gpio_interrupts
Same as buttons_interrupts, but using gpio_interrupts (not the BSP abstraction for buttons).
Peripherals used : gpio, serial port
hashes
Comparison of software and hardware MD5 implementation.
Peripherals used : hash engine
hello_cpp
Minimal project using C++
Peripherals used : serial port
hello_cpp_nano
Minimal project using C++ and newlib-nano. The newlib-nano library is smaller but some features are not available (C++ exception, no floating point printf, ...)
Peripherals used : serial port
hello_freertos
Simple FreeRTOS sample code, creates 3 task printing on the serial port and one task for each led.
Peripherals used : serial port
hello_lcd_freertos
Simple FreeRTOS + uGFX sample code. Print on the serial port when a graphical button is clicked and put chars from the keyboard on the screen.
Peripherals used : LCD, touchscreen, serial port, keyboard
leds_usb_serial_cdc
USB CDC echo. This sample code will create a pseudo serial over the USB and will echo back every character received.
Peripherals used : leds, USB slave
random
Test the random number generator from the stm32f4 family.
Peripherals used : RNG, serial port
sd_card
Test the micro SD/SDHC card, low-level access and filesystem (fat32) access
Peripherals used : SD, serial port
audio
Testing audio play and recording Peripherals used : buttons, audio interface
sections
Show how to force the compiler to use non-default section (using external RAM, ...)
Peripherals used : external RAM, serial port
spi_discovery
2d level for the STM32F4Discovery board (see BOARD_XXX).
Peripherals used : SPI, leds
stm32_camera
Using FreeRTOS, copy images from the camera to the display, jpeg images can be recorded over the USB CDC connection, PC side software in trunk/qsimplecam subversion directory.
Peripherals used : USB slave, camera, display
tcp_ip_freertos
FreeRTOS + lwip sample code, not well tested.
Peripherals used : Ethernet
test_cmsis_dsp
Test from the cmsis dsp library
Peripherals used : serial port
can
Testing the CAN bus.
Peripherals used : CAN, serial port
mp3_player_gpl (work in progress)
A webradio project licensed under the GPL. At this time it plays the "Couleur 3" swiss radio on the earphone output.
Peripherals used : Ethernet, lcd, touchscreen, audio
cyassl_test_gpl
Project licensed under the GPL, curently only testing DSA and ECDSA signature algorithms.
Peripherals used : serial port