Switch branches/tags
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
.gitignore
README.md
blink.c
layout.ld

README.md

C on the teensy 3.1

An example of writing pure c on the teensy 3.1.

Prerequisites

You will need the C compiler, linker and objcopy from the arm-none-eabi toolkit:

  • arm-none-eabi-gcc
  • arm-none-eabi-ld
  • arm-none-eabi-objcopy

You can get them from packge arm-none-eabi-gcc on archlinux or gcc-arm-none-eabi on ubuntu. Otherwise you can get it from CodeSourcery or from your arduino install at $ARDUINO_SDK/hardware/tools/arm/bin.

You will also need the teensy-loader or teensy-loader-cli which you can get here

Linker script: layout.ld

The linker script tells the linker where to place the various bits of code. For more details see this tutorial

C code: blink.c

A minimal example of the C code needed to drive the led on a teensy 3.1. It only initlises parts of the arm chip that are needed to blink the led in order to make it easier to understand. For a more complete example see the the example by karl lunt.

Compile and upload

To compile and upload to the teensy run:

arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -nostdlib -c -o blink.o blink.c
arm-none-eabi-ld -T layout.ld -o blink.elf blink.o
arm-none-eabi-objcopy -O ihex -R .eeprom blink.elf blink.hex
echo "Reset teensy now"
teensy-loader-cli -w --mcu=mk20dx256 blink.hex

References

  1. Embedded Programming with the GNU Toolchain
  2. Bare-metal Teensy 3.x Development
  3. STM32/ARM Cortex-M3 HOWTO
  4. Teensy3 core code