README.mediawiki 4.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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.8
  5. * GCC toolchain with newlib.
  6. * STM32F10x Standard Peripherals Library for STM32F1 family
  7. Project contains:
  8. * CMake common toolchain file, that configures cmake to use arm toolchain.
  9. * CMake family-specific toolchain file, that configures family-specific parameters.
  10. * CMake projects that builds CMSIS and STM32F10x Standard Peripherals Library into static libraries.
  11. * CMake modules to find and configure CMSIS ans StdPeriphLib libraries.
  12. * CMake project template.
  13. * Example projects
  14. ** blinky - blink LED using timers and PWM.
  15. ** newlib - show date from RTC using uart and libc functions from newlib
  16. == Building & Installing ==
  17. First of all you need to configure toolchain and libraries, you can do this by editing gcc_stm32.cmake or (better way) pass it throught command line.
  18. Variables for toolchain:
  19. * TOOLCHAIN_PREFIX - where toolchain is located, '''default''': /usr
  20. * TARGET_TRIPLET - toolchain target triplet, '''default''': arm-none-eabi
  21. * STM32_FAMILY - STM32 family (F0, F1, F4, etc.) currently only F1 family supported.
  22. '''Note:''' If STM32_CHIP variable is set, STM32_FAMILY is optional.
  23. Variables for CMSIS and StdPeriphLib:
  24. * STM32_StdPeriphLib_DIR - path to STM32F10x Standard Peripherals Library '''default''': /opt/STM32F10x_StdPeriph_Lib_V3.5.0
  25. * USE_ASSERT - Use internal asserts in Standard Peripherals Library.
  26. === Build CMSIS and Standard Peripherals Library ===
  27. In cmsis folder:
  28. cmake -DCMAKE_TOOLCHAIN_FILE=../gcc_stm32.cmake -DSTM32_FAMILY=F1 -DCMAKE_INSTALL_PREFIX=<path_to_toolchain>/arm-none-eabi/ -DCMAKE_BUILD_TYPE=Release
  29. make && make install
  30. In stdperiph folder
  31. cmake -DCMAKE_TOOLCHAIN_FILE=../gcc_stm32.cmake -DCMAKE_MODULE_PATH=<path_to_cmake_folder_of_this_project>/Modules -DSTM32_FAMILY=F1 -DCMAKE_INSTALL_PREFIX=<path_to_toolchain>/arm-none-eabi/ -DCMAKE_BUILD_TYPE=Release
  32. make && make install
  33. '''Note:''' You can use different CMAKE_INSTALL_PREFIX, but than you'll have to configure cmake search paths when using cmake modules.
  34. '''Note:''' To prevent header collision file "misc.h" from Standard Peripherals Library will be installed as stm32f10x_misc.h
  35. == Usage ==
  36. After building you need to copy cmake modules in cmake's modules path, or just set CMAKE_MODULE_PATH in project.
  37. Template project can be found in stm32-template folder.
  38. === Configure ===
  39. Common usage:
  40. cmake -DSTM32_CHIP=<chip> -DCMAKE_TOOLCHAIN_FILE=<path_to_gcc_stm32.cmake> -DCMAKE_BUILD_TYPE=Debug <path_to_source_dir>
  41. Where <nowiki><chip></nowiki> - stm32 chip name (e.g. STM32F100C8).
  42. This command will generate Makefile for project.
  43. Scripts will try to detected chip parameters (type, flash/ram size) from chip name.
  44. You can set this parameters directly using following cmake variables:
  45. * STM32_CHIP_TYPE - family-depended chip type. Global variable STM32_CHIP_TYPES contains list of valid types for current family (e.g. for F1 family: HD, HD_VL, MD, MD_VL, LD, LD_VL, CL, XL)
  46. * STM32_FLASH_SIZE - chip flash size (e.g. 64K)
  47. * STM32_RAM_SIZE - chip RAM size (e.g. 4K)
  48. For using with Eclipse CDT:
  49. cmake -DSTM32_CHIP=<chip> -DCMAKE_TOOLCHAIN_FILE=<path_to_gcc_stm32.cmake> -DCMAKE_BUILD_TYPE=Debug -G "Eclipse CDT4 - Unix Makefiles" <path_to_source_dir>
  50. For release build:
  51. cmake -DSTM32_CHIP=<chip> -DCMAKE_TOOLCHAIN_FILE=<path_to_gcc_stm32.cmake> -DCMAKE_BUILD_TYPE=Release <path_to_source_dir>
  52. === Build ===
  53. make
  54. To build .hex:
  55. make <project name>.hex
  56. or .bin:
  57. make <project name>.bin
  58. === Linker script variables ===
  59. Next cmake variables are useful for linker tuning:
  60. * STM32_FLASH_ORIGIN - Start address of flash (default: 0x08000000)
  61. * STM32_RAM_ORIGIN - Start address of RAM (default: 0x20000000)
  62. * STM32_EXT_RAM_ORIGIN - Start address of external RAM (default: 0x60000000)
  63. * STM32_STACK_ADDRESS - Address of stack bottom (default: RAM_ORIGIN + RAM_SIZE)
  64. * STM32_FLASH_SIZE - Flash size (default: from chip name)
  65. * STM32_RAM_SIZE - RAM size (default: from chip name)
  66. * STM32_EXT_RAM_SIZE - External RAM size (default: 0 bytes)
  67. * STM32_MIN_STACK_SIZE - Minimum stack size for error detection at link-time (default: 512 bytes)
  68. * STM32_MIN_HEAP_SIZE - Minimum heap size for error detection at link-time (default: 0 bytes)