From fe76cc4a6bcef49ffa893762ced5ea9d7d420b82 Mon Sep 17 00:00:00 2001 From: texane Date: Fri, 14 Jan 2011 09:54:01 -0600 Subject: [PATCH] [add] dirty example --- example/build.sh | 19 +++++++++++++++++++ example/main.c | 27 +++++++++++++++++++++++++++ example/o.bin | Bin 0 -> 64 bytes 3 files changed, 46 insertions(+) create mode 100755 example/build.sh create mode 100644 example/main.c create mode 100755 example/o.bin diff --git a/example/build.sh b/example/build.sh new file mode 100755 index 0000000..39e8fb4 --- /dev/null +++ b/example/build.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env sh + +CHAIN=$HOME/sat/bin/arm-none-eabi +PATH=$HOME/sat/arm-none-eabi/bin:$PATH + +$CHAIN-gcc \ + -O2 \ + -mlittle-endian \ + -mthumb \ + -mcpu=cortex-m3 \ + -ffreestanding \ + -nostdlib \ + -nostdinc \ + main.c + +$CHAIN-objcopy \ + -O binary \ + a.out \ + /tmp/foobar \ No newline at end of file diff --git a/example/main.c b/example/main.c new file mode 100644 index 0000000..7b96605 --- /dev/null +++ b/example/main.c @@ -0,0 +1,27 @@ +typedef unsigned int uint32_t; + +#define GPIOC 0x40011000 // port C +#define GPIOC_CRH (GPIOC + 0x04) // port configuration register high +#define GPIOC_ODR (GPIOC + 0x0c) // port output data register +#define LED_BLUE (1<<8) // pin 8 +#define LED_GREEN (1<<9) // pin 9 + +#define delay() \ +do { \ + register unsigned int i; \ + for (i = 0; i < 1000000; ++i) \ + __asm__ __volatile__ ("nop\n\t":::"memory"); \ +} while (0) + +static void __attribute__((naked)) __attribute__((used)) main(void) +{ + *(volatile uint32_t*)GPIOC_CRH = 0x44444411; + + while (1) + { + *(volatile uint32_t*)GPIOC_ODR = LED_BLUE | LED_GREEN; + delay(); + *(volatile uint32_t*)GPIOC_ODR = 0; + delay(); + } +} diff --git a/example/o.bin b/example/o.bin new file mode 100755 index 0000000000000000000000000000000000000000..76324f796a6523d1acb35940d4d351466dd7773e GIT binary patch literal 64 zcmZ?##KP?INzm!YCr0KYpIn?AKk+b1B>;Jh{$CslTs}D{b0i%2#LvvIpV9iyMIc{^ P8^mV<@~!?{eD@pxMXwtU literal 0 HcmV?d00001 -- 2.30.2