EclipseArmebs4/DemoProjects

(Difference between revisions)
Jump to: navigation, search
(Created page with "{{public}} {{TOC right}} Some sample code is available in the subversion repository, please have a look at the First steps page. The sample pr...")
 
Line 70: Line 70:
 
|-
 
|-
 
|}
 
|}
 +
 +
== newlib's <code>iprintf/iscanf</code> ==
 +
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 <code>vf'''i'''printf</code> can be used instead of <code>vfprintf</code> where floating point is not required.
 +
 +
== The <code>heivs_bus_t</code> abstraction ==
 +
FIXME
 +
 +
  
 
== Sample projects ==
 
== Sample projects ==
Line 82: Line 91:
 
=== _MODEL ===
 
=== _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.
 
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
 +
 +
=== ===
 +
 +
Peripherals used :
 +
 +
=== ===
 +
 +
Peripherals used :
 +
 +
=== ===
 +
 +
Peripherals used :

Revision as of 15:51, 3 December 2014

Contents

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


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

Peripherals used :

Peripherals used :

Peripherals used :

Personal tools
Namespaces
Variants
Actions
Navigation
Browse
Toolbox