README.mediawiki 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. == About ==
  2. This project is used to develop applications for stm32 - ST's ARM Cortex-M3 MCUs, using cmake, GCC, newlib (libc) and STM32F10x Standard Peripherals Library.
  3. Requirements:
  4. * cmake >= 2.6
  5. * GCC toolchain with newlib.
  6. * STM32F10x Standard Peripherals Library
  7. Project contains:
  8. * CMake toolchain file, that configures cmake to use arm toolchain.
  9. * CMake projects that builds CMSIS and STM32F10x Standard Peripherals Library into static libraries.
  10. * CMake modules to find and configure CMSIS ans StdPeriphLib libraries.
  11. * CMake project template.
  12. * Example projects
  13. ** blinky - blink LED using timers and PWM.
  14. ** newlib - show date from RTC using uart and libc functions from newlib
  15. == Building & Installing ==
  16. First of all you need to configure toolchain and libraries, you can do this by editing gcc_stm32.cmake or pass it throught command line.
  17. Variables for toolchain:
  18. * TOOLCHAIN_PREFIX - where toolchain is located, '''default''': /usr
  19. * TARGET_TRIPLET - toolchain target triplet, '''default''': arm-none-eabi
  20. Variables for CMSIS and StdPeriphLib:
  21. * STM32_StdPeriphLib_DIR - path to STM32F10x Standard Peripherals Library '''default''': /opt/STM32F10x_StdPeriph_Lib_V3.5.0
  22. * USE_ASSERT - Use internal asserts in Standard Peripherals Library.
  23. === Build CMSIS and Standard Peripherals Library ===
  24. In cmsis folder:
  25. cmake -DCMAKE_TOOLCHAIN_FILE=../gcc_stm32.cmake -DCMAKE_INSTALL_PREFIX=<path_to_toolchain>/arm-none-eabi/ -DCMAKE_BUILD_TYPE=Release
  26. make && make install
  27. In stdperiph folder
  28. cmake -DCMAKE_TOOLCHAIN_FILE=../gcc_stm32.cmake -DCMAKE_INSTALL_PREFIX=<path_to_toolchain>/arm-none-eabi/ -DCMAKE_BUILD_TYPE=Release
  29. make && make install
  30. '''Note:''' You can use different CMAKE_INSTALL_PREFIX, but than you'll have to configure cmake search paths when using cmake modules.
  31. '''Note:''' To prevent header collision file "misc.h" from Standard Peripherals Library will be installed as stm32f10x_misc.h
  32. == Usage ==
  33. After building you need to copy cmake modules in cmake's modules path, or just set CMAKE_MODULE_PATH in project.
  34. Than you need to adjust some variables in CMakeLists.txt (example for stm32f103ve):
  35. * PROJECT(stm32-template) - Set the project name.
  36. * FIND_PACKAGE(StdPeriphLib REQUIRED) - comment/remove this if you don't need StdPeriphLib. CMSIS package are always required.
  37. * STM32_SET_PARAMS("512K" "64K" "0x20010000") - Set chip's flash size, ram size, and stack bottom address. Also, you can change min heap size, stack size, etc. - look into FindCMSIS.cmake
  38. * All projects sources should be listed in PROJECT_SOURCES variable.
  39. Also, if you using StdPeriphLib you need to adjust modules in stm32f10x_conf.h.
  40. === Build ===
  41. Generate Makefile:
  42. cmake -DSTM32_CHIP_TYPE=<chip type> -DCMAKE_TOOLCHAIN_FILE=<path_to_gcc_stm32.cmake> -DCMAKE_BUILD_TYPE=Debug <path_to_source_dir>
  43. Where <chip type>:
  44. * HD - High Density MCUs
  45. * HD_VL - High Density Value Line MCUs
  46. * MD - Medium Density MCUs
  47. * MD_VL - Medium Density Value Line MCUs
  48. * LD - Low Density MCUs
  49. * LD_VL - Low Density Value Line MCUs
  50. * CL - Connectivity Line MCUs
  51. * XL - XL Density MCUs
  52. Build:
  53. make
  54. The result is a .elf file, to build .hex:
  55. make <project name>.hex
  56. or .bin:
  57. make <project name>.bin
  58. For using with Eclipse CDT:
  59. cmake -DSTM32_CHIP_TYPE=<chip type> -DCMAKE_TOOLCHAIN_FILE=<path_to_stm32.cmake> -DCMAKE_BUILD_TYPE=Debug -G "Eclipse CDT4 - Unix Makefiles" <path_to_source_dir>
  60. For release build:
  61. cmake -DSTM32_CHIP_TYPE=<chip type> -DCMAKE_TOOLCHAIN_FILE=<path_to_stm32.cmake> -DCMAKE_BUILD_TYPE=Release <path_to_source_dir>