+++ /dev/null
-# Generic directory or leaf node makefile for OCERA make framework
-
-ifndef MAKERULES_DIR
-MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) )
-endif
-
-ifeq ($(MAKERULES_DIR),)
-all : default
-.DEFAULT::
- @echo -e "\nThe Makefile.rules has not been found in this or parent directory\n"
-else
-include $(MAKERULES_DIR)/Makefile.rules
-endif
-
+++ /dev/null
-# -*- makefile -*-
-
-SUBDIRS = defines libs
-
-lib_LDSCRIPTS = board.ld
+++ /dev/null
-/* Board specific objects linked with applications */
-/*INPUT(initarray.o hwinit.o)*/
+++ /dev/null
-# -*- makefile -*-
-
-ARCH=arm
-MACH=lpc23xx
-BOARD=lpc2364_addat
-
-CROSS_COMPILE = arm-elf-
-TARGET_ARCH = -mcpu=arm7tdmi
-
-
-CFLAGS += -DARCH_$(shell echo $(ARCH) | tr a-z A-Z)
-CFLAGS += -DMACH_$(shell echo $(MACH) | tr a-z A-Z)
-
-
-
-ifndef GCC_VERSION
- export GCC_VERSION:=$(shell $(CROSS_COMPILE)gcc -dumpversion)
-
- ifneq ($(GCC_VERSION),3.4.3)
- $(warning You are using a different compiler from gcc 3.4.3. This board is known not to work with some newver versions (4.3))
- endif
-endif
-
-# Set default C flags. If theese are set elsewhere (e.g. on a command
-# line), these default flags are not used.
-DEBUG ?= -g
-#OPTIMIZE ?= -O2
-OPTIMIZE ?= -O1
-
-LPC_BAUD = 38400
-LPC_TTY ?= /dev/ttyUSB0
-LPC_XTAL = 10000
-TOLPC = $(MAKERULES_DIR)/$(COMPILED_DIR_NAME)/bin-utils/tolpc --baud $(LPC_BAUD) --sdev $(LPC_TTY) -q $(LPC_XTAL) -v -L -f
-LOAD_CMD-ram = $(TOLPC)
-LOAD_CMD-flash = load() { HEX=$(LOCAL_BUILD_DIR)/$$(basename $$1).hex; $(CROSS_COMPILE)objcopy -O ihex $$1 $$HEX; $(MAKERULES_DIR)/$(COMPILED_DIR_NAME)/bin-utils/lpc21isp -control $$HEX $(LPC_TTY) $(LPC_BAUD) $(LPC_XTAL); }; load
-
-
-#LOAD_CMD-ramisp = $(TOLPC)
-LOAD_CMD-mpram = $(TOLPC)
-LOAD_CMD-mpflash = $(LOAD_CMD-flash)
-
-# $(CROSS_COMPILE)objcopy -O ihex in out
-# lpc21isp vstup.hex $(LPC_TTY) $(LPC_BAUD) $(LPC_XTAL)
-
-# This selects linker script
-LD_SCRIPT=lpc2364
-DEFAULT_LD_SCRIPT_VARIANT=ram flash
-
-#OUTPUT_FORMATS = bin hex srec
-
-###
-CONFIG_USB_BASE=
-CONFIG_USB_PDIUSB=
-CONFIG_USB_MORE=
-CONFIG_CMDPROC_TEST=n
-
-LN_HEADERS=y
+++ /dev/null
-# Generic directory or leaf node makefile for OCERA make framework
-
-ifndef MAKERULES_DIR
-MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) )
-endif
-
-ifeq ($(MAKERULES_DIR),)
-all : default
-.DEFAULT::
- @echo -e "\nThe Makefile.rules has not been found in this or parent directory\n"
-else
-include $(MAKERULES_DIR)/Makefile.rules
-endif
-
+++ /dev/null
-# -*- makefile -*-
-include_HEADERS = $(notdir $(wildcard $(SOURCES_DIR)/*.h))
+++ /dev/null
-/*******************************************************************
-
- system_def.h
-
- *******************************************************************/
-
-#ifndef _SYSTEM_DEF_H_
-#define _SYSTEM_DEF_H_
-
-#include <types.h>
-
-#define WITH_SFI_SEL
-
-#define VER_CODE(major,minor,patch) (major*0x10000+minor*0x100+patch)
-/* Software version */
-#define SW_VER_ID "LPCEUROBOT"
-#define SW_VER_MAJOR 0
-#define SW_VER_MINOR 1
-#define SW_VER_PATCH 0
-#define SW_VER_CODE VER_CODE(SW_VER_MAJOR,SW_VER_MINOR,SW_VER_PATCH)
-/* Hardware version */
-#define HW_VER_ID "LPCEUROBOT"
-#define HW_VER_MAJOR 1
-#define HW_VER_MINOR 0
-#define HW_VER_PATCH 0
-#define HW_VER_CODE VER_CODE(HW_VER_MAJOR,HW_VER_MINOR,HW_VER_PATCH)
-/* Version of mechanical */
-#define MECH_VER_ID "LPCEUROBOT"
-#define MECH_VER_MAJOR 0
-#define MECH_VER_MINOR 0
-#define MECH_VER_PATCH 0
-#define MECH_VER_CODE VER_CODE(MECH_VER_MAJOR,MECH_VER_MINOR,MECH_VER_PATCH)
-
-#define BOARD_LPCEUROBOT
-
-#define CPU_REF_HZ 10000000l /* reference clock */
-#define CPU_SYS_HZ 72000000l/* system clock */
-#define CPU_APB_HZ (CPU_SYS_HZ/4)/* APB clock */
-#define CPU_VPB_HZ CPU_APB_HZ /* VPB clock = APB clock, multiple definition */
-
-unsigned long cpu_ref_hz; /* actual external XTAL reference */
-unsigned long cpu_sys_hz; /* actual system clock frequency */
-
-volatile unsigned long msec_time;
-
-
-
-#endif /* _SYSTEM_DEF_H_ */
+++ /dev/null
-# Generic directory or leaf node makefile for OCERA make framework
-
-ifndef MAKERULES_DIR
-MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) )
-endif
-
-ifeq ($(MAKERULES_DIR),)
-all : default
-.DEFAULT::
- @echo -e "\nThe Makefile.rules has not been found in this or parent directory\n"
-else
-include $(MAKERULES_DIR)/Makefile.rules
-endif
-
+++ /dev/null
-# -*- makefile -*-
-
-include_HEADERS = deb_led_board.h
-
-#SUBDIRS = hwinit
+++ /dev/null
-#ifndef DEB_LED_BOARD_H
-#define DEB_LED_BOARD_H
-
-#include <lpc2xxx.h>
-
-#define __LED_SHIFT 25
-#define __LED_MASK 0x0f
-
-#define LEDG (1<<0) // LED R (1<<25)
-#define LEDR (1<<1) // LED G (1<<26)
-#define LEDY (1<<2) // LED B (1<<27)
-#define LEDB (1<<3) // LED Y (1<<28)
-
-#define DEB_LED_ERROR LEDR /* Error occured */
-#define DEB_LED_RUN LEDG /* Should blink when running */
-
-static inline unsigned
-__deb_led_get()
-{
- return (FIO1PIN >> __LED_SHIFT) & __LED_MASK;
-}
-
-static inline void
-__deb_led_on(unsigned leds)
-{
- FIO1CLR = (leds & __LED_MASK) << __LED_SHIFT;
-}
-
-static inline void
-__deb_led_off(unsigned leds)
-{
- FIO1SET = (leds & __LED_MASK) << __LED_SHIFT;
-}
-
-static inline void
-__deb_led_set(unsigned leds)
-{
- __deb_led_on(~leds);
- __deb_led_off(leds);
-}
-
-static inline void
-__deb_led_change(unsigned leds)
-{
- __deb_led_set(__deb_led_get() ^ leds);
-}
-
-static inline void
-__deb_led_init()
-{
- FIO1DIR |= (__LED_MASK << __LED_SHIFT);
- __deb_led_set(0xF);
-}
-
-#endif
+++ /dev/null
-# Generic directory or leaf node makefile for OCERA make framework
-
-ifndef MAKERULES_DIR
-MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) )
-endif
-
-ifeq ($(MAKERULES_DIR),)
-all : default
-.DEFAULT::
- @echo -e "\nThe Makefile.rules has not been found in this or parent directory\n"
-else
-include $(MAKERULES_DIR)/Makefile.rules
-endif
-
+++ /dev/null
-# -*- makefile -*-
-
-lib_LIBRARIES = addathw
-addathw_SOURCES = startcfg.c error.c
-
-include_HEADERS = error.h
-
-test_PROGRAMS = hwinit_test
-hwinit_test_SOURCES = test.c
-
-lib_obj_SOURCES = hwinit.c
-
-lib_LDSCRIPTS = board.ld
+++ /dev/null
-/* Board specific objects linked with applications */
-INPUT(initarray.o hwinit.o)
+++ /dev/null
-#include <deb_led.h>
-#include <error.h>
-
-static void
-waitblink(int len)
-{
- while (len--) {
- unsigned int i =2000000;
- while(--i);
- }
-}
-
-void error(enum error err)
-{
- if (err == SUCCESS)
- return;
- /* For case of unintetional rewrite of IO port setting. */
- deb_led_init();
- while (1) {
- int i;
- for (i=7; i>=0; i--) {
- deb_led_set(~0);
- if (err & (1<<i))
- waitblink(3); /* 1 */
- else
- waitblink(1); /* 0 */
- deb_led_set(DEB_LED_ERROR);
- waitblink(1);
-
- }
- waitblink(5);
- }
-}
+++ /dev/null
-#ifndef ERROR_H
-#define ERROR_H
-
-enum error {
- SUCCESS = 0,
- ERANGE = 11,
-};
-
-void error(enum error err);
-
-#endif
+++ /dev/null
-#include <lpc2xxx.h> /* LPC21xx definitions */\r
-#include <deb_led.h>\r
-#include "startcfg.h"\r
-#include <stdlib.h>\r
-#include <error.h>\r
-\r
-/* Called automatically from crt0.S before main() */\r
-/* void __hardware_init(void) __attribute__ ((used)); */\r
-void __hardware_init(void)\r
-{\r
- int err = SUCCESS;\r
-\r
- if ((void*)&__hardware_init > (void*)0x40000000) {\r
- /* We are running from RAM */\r
- MEMMAP = 0x2; /* Remap interrupt vectors */\r
- }\r
-\r
- deb_led_init();\r
- \r
- err = init_PLL(PLL_MUL_4 ,PLL_DIV_2 ,PLL_MODE_ENABLE); //58.98MHz\r
- if (err) error(err);\r
- \r
- err = init_MAM(MAM_FULL); //58.98MHz\r
- if (err) error(err);\r
-\r
- set_APB(APB_DIV_2);\r
-
-\r
-}\r
-\r
-/* Put a pointer to this function in .init_array section */\r
-void (*fp) (void) __attribute__ ((section (".init_array"))) = __hardware_init;\r
+++ /dev/null
-#include "startcfg.h"\r
-#include <errno.h> \r
-#include <lpc2xxx.h> /* LPC21xx definitions */\r
-\r
-\r
-// ----------------- PLL part ------------------------\r
-#define PLL_OFF 0 // fully disable PLL\r
-#define PLL_ACTIVE 1 // activate PLL \r
-#define PLL_CONNECT 3 // connect PLL to Cclk\r
-\r
-#define PLL_FEED_1 0xAA // PLL feed sequence 1\r
-#define PLL_FEED_2 0x55 // PLL feed sequence 3 \r
-#define PLL_LOCK_MASK 0x400 // PLL lock mask\r
-\r
-\r
-\r
-#define PLL_DIV_MASK_2 (0<<5)\r
-#define PLL_DIV_MASK_4 (1<<5)\r
-#define PLL_DIV_MASK_8 (2<<5)\r
-#define PLL_DIV_MASK_16 (3<<5)\r
-\r
-// ----------------- MAM part ------------------------\r
-\r
-#define MAM_1ST_BOUND 20000\r
-#define MAM_2ND_BOUND 40000\r
-#define MAM_TIM_1 1\r
-#define MAM_TIM_2 2\r
-#define MAM_TIM_3 3\r
-\r
-\r
-//------------------ code ----------------------------\r
-\r
-void wait(void)\r
-{\r
- unsigned int i =2000000;\r
- while(--i);\r
-}\r
-\r
-\r
-void deb_led(char leds)\r
-{\r
- IO0DIR |= ((1<<21) | (1<<22) | (1<<23) | (1<<24));\r
-\r
- if (leds & 0x1) IOSET0 |= (1<<21);\r
- else IOCLR0 |= (1<<21);\r
-\r
- if (leds & 0x2) IOSET0 |= (1<<22);\r
- else IOCLR0 |= (1<<22);\r
-\r
- if (leds & 0x4) IOSET0 |= (1<<23);\r
- else IOCLR0 |= (1<<23);\r
-\r
- if (leds & 0x8) IOSET0 |= (1<<24);\r
- else IOCLR0 |= (1<<24);\r
-}\r
-\r
-\r
-\r
-\r
-\r
-// setup procesor PLL\r
-unsigned char init_PLL(char mul,char div, char mode)\r
-{\r
- \r
- unsigned int fcco, cclk; \r
-\r
-\r
- PLLCON = PLL_OFF; // disable PLL \r
- PLLFEED = PLL_FEED_1; // PLL change sequence\r
- PLLFEED = PLL_FEED_2;\r
- \r
- if (mode == PLL_MODE_DISABLE)\r
- {\r
- return 0;\r
- }\r
-\r
- fcco = FOSC * 2 * (mul + 1) * div ; // count Fcco\r
- if (( FCCO_MIN > fcco)|(fcco > FCCO_MAX)) // check Fcco range\r
- {\r
- return ERANGE;\r
- }\r
-\r
- cclk = (mul + 1) * FOSC; // count cclk\r
- if (( CCLK_MIN > cclk)|(cclk > CCLK_MAX)) // check cclk range\r
- {\r
- return ERANGE;\r
- }\r
-\r
- switch(div)\r
- {\r
- case(PLL_DIV_2): div = PLL_DIV_MASK_2;\r
- break;\r
-\r
- case(PLL_DIV_4): div = PLL_DIV_MASK_4;\r
- break;\r
-\r
- case(PLL_DIV_8): div = PLL_DIV_MASK_8;\r
- break;\r
-\r
- case(PLL_DIV_16): div = PLL_DIV_MASK_16;\r
- break;\r
-\r
- default: return ERANGE;\r
- }\r
-\r
-\r
- PLLCFG = mul | div; // write multiplicator and dividet to PLL config\r
- PLLCON = PLL_ACTIVE; // enable PLL \r
- PLLFEED = PLL_FEED_1; // PLL change sequence\r
- PLLFEED = PLL_FEED_2;\r
-\r
- while( (PLLSTAT & PLL_LOCK_MASK) == 0); // wait for PLL LOCK\r
-\r
- PLLCON = PLL_CONNECT; // connect PLL to Cclk\r
- PLLFEED = PLL_FEED_1; // PLL change sequence\r
- PLLFEED = PLL_FEED_2;\r
-\r
- return 0;\r
-}\r
-\r
-\r
-// get procesor speed\r
-unsigned int get_sys_speed(void)\r
-{\r
- if( (PLLCON & PLL_CONNECT) == PLL_CONNECT) // if PLL is connected return PLL-Cclk speed\r
- {\r
- return( FOSC * ((PLLCFG & 0x1F) + 1));\r
- }\r
-\r
- return FOSC; // if PLL is disabled return native Fosc\r
-\r
-}\r
-\r
-\r
-// setup MAM module\r
-\r
-unsigned char init_MAM(char mode)\r
-{\r
- unsigned int clk;\r
-\r
- MAMCR = MAM_OFF;\r
-\r
- #ifdef MEM_RAM // FIXME udelat pomoci linker scriptu\r
- return 0;\r
- #endif\r
-\r
-\r
- if (mode == MAM_OFF) return 0;\r
- \r
-\r
- clk = get_sys_speed();\r
-\r
- if(clk > MAM_2ND_BOUND)\r
- {\r
- MAMTIM = MAM_TIM_3; \r
- } \r
- else if (clk > MAM_1ST_BOUND) \r
- {\r
- MAMTIM = MAM_TIM_2;\r
- }\r
- else MAMTIM = MAM_TIM_1;\r
-\r
- MAMCR = mode;\r
-\r
- return 0;\r
-}\r
-\r
-// setup APB module\r
-unsigned char set_APB(char div)\r
-{\r
- VPBDIV = div;\r
- return 0;\r
-}\r
-\r
-\r
-unsigned int get_apb_speed(void)\r
-{\r
- int sysClk,div;\r
-\r
- switch( VPBDIV & 0x03)\r
- {\r
- case APB_DIV_1: div = 1;\r
- break;\r
-\r
- case APB_DIV_2: div = 2;\r
- break;\r
-\r
- case APB_DIV_4: div = 4;\r
- break;\r
-\r
- default: return ERANGE;\r
- }\r
-\r
-\r
- sysClk = get_sys_speed();\r
-\r
- return (sysClk / div);\r
-\r
-\r
-}\r
-\r
-\r
+++ /dev/null
-\r
-\r
-\r
-/** Fosc is crystal oscilator / resonator\r
- * If is not defined, is used 14,745MHz nominal oscilator (CTU DRAGONS LPC BOARD )\r
- */\r
-#ifndef FOSC // FIXME: rename to CPU_REF_HZ\r
- #define FOSC 14745\r
-#endif\r
-\r
-\r
-/** If memory is in RAM, it must be defined! Otherwise is defined MEM_FLASH\r
- * This is important for MAM module.\r
- */\r
-#ifndef MEM_RAM\r
- #define MEM_FLASH \r
-#endif\r
-\r
-\r
-/// Absolute minimum and maximum ratings\r
-#define FCCO_MIN 156000 // internal minimal clock\r
-#define FCCO_MAX 320000 // internal maximal clock\r
-#define CCLK_MIN 10000 // processor minimal clock\r
-#define CCLK_MAX 60000 // processor maximal clock\r
-\r
-\r
-/// PLL Available multiplicators \r
-#define PLL_MUL_1 0\r
-#define PLL_MUL_2 1\r
-#define PLL_MUL_3 2\r
-#define PLL_MUL_4 3\r
-#define PLL_MUL_5 4\r
-#define PLL_MUL_6 5\r
-#define PLL_MUL_7 6\r
-\r
-/// PLL Available divisors\r
-#define PLL_DIV_2 2\r
-#define PLL_DIV_4 4\r
-#define PLL_DIV_8 8\r
-#define PLL_DIV_16 16\r
-\r
-/// PLL mode\r
-#define PLL_MODE_DISABLE 1\r
-#define PLL_MODE_ENABLE 0\r
-\r
-/// MAM definitions\r
-#define MAM_OFF 0 // MAM functions disabled\r
-#define MAM_PARTIAL 1 // MAM functions partially enabled\r
-#define MAM_FULL 2 // MAM functions fully enabled\r
-\r
-\r
-/// APB divider\r
-///@{\r
-#define APB_DIV_1 1\r
-#define APB_DIV_2 2\r
-#define APB_DIV_4 0\r
-///@}\r
-\r
-\r
-\r
-\r
-\r
-void wait(void); // in future this should be deleted\r
-\r
-\r
-\r
-/** deb_led controls system debug leds\r
- * @param leds LED value\r
- */\r
-void deb_led(char leds);\r
-\r
-/** Enables PLL for higher Fosc values\r
- * @return 0 or #ERANGE\r
- * @param mul PLL multiplicator\r
- * @param div PLL divider\r
- * @param disable disables PLL\r
- */\r
-unsigned char init_PLL(char mul,char div, char mode);\r
-\r
-/** get_sys_speed returns actual speed of Cclk (proc. frequency) in kHz\r
- */\r
-unsigned int get_sys_speed(void);\r
-\r
-\r
-/** Setup MAM module\r
- * @return 0 or ERANGE\r
- * @param mode MAM mode\r
- */\r
-unsigned char init_MAM(char mode);\r
-\r
-/** Sets APB divisor\r
- * @return 0 \r
- * @note VPB = APB - name conflict FIXME\r
- * @param div divisor of APB\r
- */\r
-unsigned char set_APB(char div);\r
-\r
-/** Returns actual speed of APB (peripheral frequency) in kHz\r
- * @note VPB = APB - name conflict FIXME\r
- */\r
-unsigned int get_apb_speed(void);\r
-\r
+++ /dev/null
-#include <lpc2xxx.h> /* LPC21xx definitions */
-#include <errno.h>
-#include "startcfg.h"
-#include <deb_led.h>
-
-extern unsigned int adc_val[4];
-
-#define LEDS 4
-
-int main (void)
-{
- unsigned leds[] = {LEDR, LEDG, LEDB, LEDY};
- int i=0;
- while(1)
- {
- deb_led_set(leds[i]);
- if (++i == LEDS) i=0;
- wait();
-
- }
- return 0;
-}