mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-03-27 01:10:20 +08:00
[bsp] Add MB9BF618 porting.
This commit is contained in:
BIN
bsp/mb9bf618s/CMSIS/CMSIS END USER LICENCE AGREEMENT.pdf
Normal file
BIN
bsp/mb9bf618s/CMSIS/CMSIS END USER LICENCE AGREEMENT.pdf
Normal file
Binary file not shown.
29269
bsp/mb9bf618s/CMSIS/DeviceSupport/fujitsu/mb9bf61x/mb9b610s.h
Normal file
29269
bsp/mb9bf618s/CMSIS/DeviceSupport/fujitsu/mb9bf61x/mb9b610s.h
Normal file
File diff suppressed because it is too large
Load Diff
29338
bsp/mb9bf618s/CMSIS/DeviceSupport/fujitsu/mb9bf61x/mb9b610t.h
Normal file
29338
bsp/mb9bf618s/CMSIS/DeviceSupport/fujitsu/mb9bf61x/mb9b610t.h
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,333 @@
|
||||
;/************************************************************************/
|
||||
;/* (C) Fujitsu Semiconductor Europe GmbH */
|
||||
;/* */
|
||||
;/* The following software deliverable is intended for and must only be */
|
||||
;/* used for reference and in an evaluation laboratory environment. */
|
||||
;/* It is provided on an as-is basis without charge and is subject to */
|
||||
;/* alterations. */
|
||||
;/* It is the user’s obligation to fully test the software in its */
|
||||
;/* environment and to ensure proper functionality, qualification and */
|
||||
;/* compliance with component specifications. */
|
||||
;/* */
|
||||
;/* In the event the software deliverable includes the use of open */
|
||||
;/* source components, the provisions of the governing open source */
|
||||
;/* license agreement shall apply with respect to such software */
|
||||
;/* deliverable. */
|
||||
;/* FSEU does not warrant that the deliverables do not infringe any */
|
||||
;/* third party intellectual property right (IPR). In the event that */
|
||||
;/* the deliverables infringe a third party IPR it is the sole */
|
||||
;/* responsibility of the customer to obtain necessary licenses to */
|
||||
;/* continue the usage of the deliverable. */
|
||||
;/* */
|
||||
;/* To the maximum extent permitted by applicable law FSEU disclaims all */
|
||||
;/* warranties, whether express or implied, in particular, but not */
|
||||
;/* limited to, warranties of merchantability and fitness for a */
|
||||
;/* particular purpose for which the deliverable is not designated. */
|
||||
;/* */
|
||||
;/* To the maximum extent permitted by applicable law, FSEU's liability */
|
||||
;/* is restricted to intention and gross negligence. */
|
||||
;/* FSEU is not liable for consequential damages. */
|
||||
;/* */
|
||||
;/* (V1.4) */
|
||||
;/************************************************************************/
|
||||
;/* Startup for ARM */
|
||||
;/* Version V1.02 */
|
||||
;/* Date 2011-07-25 */
|
||||
;/* Target-mcu MB9B61x */
|
||||
;/************************************************************************/
|
||||
|
||||
; Stack Configuration
|
||||
; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||
|
||||
Stack_Size EQU 0x00000400
|
||||
|
||||
AREA STACK, NOINIT, READWRITE, ALIGN=3
|
||||
Stack_Mem SPACE Stack_Size
|
||||
__initial_sp
|
||||
|
||||
|
||||
; Heap Configuration
|
||||
; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||
|
||||
Heap_Size EQU 0x00000000
|
||||
|
||||
AREA HEAP, NOINIT, READWRITE, ALIGN=3
|
||||
__heap_base
|
||||
Heap_Mem SPACE Heap_Size
|
||||
__heap_limit
|
||||
|
||||
|
||||
PRESERVE8
|
||||
THUMB
|
||||
|
||||
|
||||
; Vector Table Mapped to Address 0 at Reset
|
||||
|
||||
AREA RESET, DATA, READONLY
|
||||
EXPORT __Vectors
|
||||
EXPORT __Vectors_End
|
||||
EXPORT __Vectors_Size
|
||||
|
||||
__Vectors DCD __initial_sp ; Top of Stack
|
||||
DCD Reset_Handler ; Reset Handler
|
||||
DCD NMI_Handler ; NMI Handler
|
||||
DCD HardFault_Handler ; Hard Fault Handler
|
||||
DCD MemManage_Handler ; MPU Fault Handler
|
||||
DCD BusFault_Handler ; Bus Fault Handler
|
||||
DCD UsageFault_Handler ; Usage Fault Handler
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD SVC_Handler ; SVCall Handler
|
||||
DCD DebugMon_Handler ; Debug Monitor Handler
|
||||
DCD 0 ; Reserved
|
||||
DCD PendSV_Handler ; PendSV Handler
|
||||
DCD SysTick_Handler ; SysTick Handler
|
||||
|
||||
DCD CSV_Handler ; 0: Clock Super Visor
|
||||
DCD SWDT_Handler ; 1: Software Watchdog Timer
|
||||
DCD LVD_Handler ; 2: Low Voltage Detector
|
||||
DCD MFT_WG_IRQHandler ; 3: Wave Form Generator / DTIF
|
||||
DCD INT0_7_Handler ; 4: External Interrupt Request ch.0 to ch.7
|
||||
DCD INT8_31_Handler ; 5: External Interrupt Request ch.8 to ch.31
|
||||
DCD DT_Handler ; 6: Dual Timer / Quad Decoder
|
||||
DCD MFS0RX_IRQHandler ; 7: MultiFunction Serial ch.0
|
||||
DCD MFS0TX_IRQHandler ; 8: MultiFunction Serial ch.0
|
||||
DCD MFS1RX_IRQHandler ; 9: MultiFunction Serial ch.1
|
||||
DCD MFS1TX_IRQHandler ; 10: MultiFunction Serial ch.1
|
||||
DCD MFS2RX_IRQHandler ; 11: MultiFunction Serial ch.2
|
||||
DCD MFS2TX_IRQHandler ; 12: MultiFunction Serial ch.2
|
||||
DCD MFS3RX_IRQHandler ; 13: MultiFunction Serial ch.3
|
||||
DCD MFS3TX_IRQHandler ; 14: MultiFunction Serial ch.3
|
||||
DCD MFS4RX_IRQHandler ; 15: MultiFunction Serial ch.4
|
||||
DCD MFS4TX_IRQHandler ; 16: MultiFunction Serial ch.4
|
||||
DCD MFS5RX_IRQHandler ; 17: MultiFunction Serial ch.5
|
||||
DCD MFS5TX_IRQHandler ; 18: MultiFunction Serial ch.5
|
||||
DCD MFS6RX_IRQHandler ; 19: MultiFunction Serial ch.6
|
||||
DCD MFS6TX_IRQHandler ; 20: MultiFunction Serial ch.6
|
||||
DCD MFS7RX_IRQHandler ; 21: MultiFunction Serial ch.7
|
||||
DCD MFS7TX_IRQHandler ; 22: MultiFunction Serial ch.7
|
||||
DCD PPG_Handler ; 23: PPG
|
||||
DCD TIM_IRQHandler ; 24: OSC / PLL / Watch Counter
|
||||
DCD ADC0_IRQHandler ; 25: ADC0
|
||||
DCD ADC1_IRQHandler ; 26: ADC1
|
||||
DCD ADC2_IRQHandler ; 27: ADC2
|
||||
DCD MFT_FRT_IRQHandler ; 28: Free-run Timer
|
||||
DCD MFT_IPC_IRQHandler ; 29: Input Capture
|
||||
DCD MFT_OPC_IRQHandler ; 30: Output Compare
|
||||
DCD BT0_7_IRQHandler ; 31: Base Timer ch.0 to ch.7
|
||||
DCD ETHER_MAC0_IRQHandler ; 32: Ethernet MAC ch.0
|
||||
DCD ETHER_MAC1_IRQHandler ; 33: Ethernet MAC ch.1
|
||||
DCD USB0F_Handler ; 34: USB0 Function
|
||||
DCD USB0_Handler ; 35: USB0 Function / USB0 HOST
|
||||
DCD USB1F_Handler ; 36: USB1 Function
|
||||
DCD USB1_Handler ; 37: USB1 Function / USB1 HOST
|
||||
DCD DMAC0_Handler ; 38: DMAC ch.0
|
||||
DCD DMAC1_Handler ; 39: DMAC ch.1
|
||||
DCD DMAC2_Handler ; 40: DMAC ch.2
|
||||
DCD DMAC3_Handler ; 41: DMAC ch.3
|
||||
DCD DMAC4_Handler ; 42: DMAC ch.4
|
||||
DCD DMAC5_Handler ; 43: DMAC ch.5
|
||||
DCD DMAC6_Handler ; 44: DMAC ch.6
|
||||
DCD DMAC7_Handler ; 45: DMAC ch.7
|
||||
DCD BT8_15_IRQHandler ; 46: Base Timer ch.8 to ch.15
|
||||
DCD DummyHandler ; 47: Reserved
|
||||
__Vectors_End
|
||||
|
||||
__Vectors_Size EQU __Vectors_End - __Vectors
|
||||
|
||||
AREA |.text|, CODE, READONLY
|
||||
|
||||
|
||||
; Reset Handler
|
||||
|
||||
Reset_Handler PROC
|
||||
EXPORT Reset_Handler [WEAK]
|
||||
IMPORT SystemInit
|
||||
IMPORT __main
|
||||
LDR R0, =SystemInit
|
||||
BLX R0
|
||||
LDR R0, =__main
|
||||
BX R0
|
||||
ENDP
|
||||
|
||||
|
||||
; Dummy Exception Handlers (infinite loops which can be modified)
|
||||
|
||||
NMI_Handler PROC
|
||||
EXPORT NMI_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
HardFault_Handler\
|
||||
PROC
|
||||
EXPORT HardFault_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
MemManage_Handler\
|
||||
PROC
|
||||
EXPORT MemManage_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
BusFault_Handler\
|
||||
PROC
|
||||
EXPORT BusFault_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
UsageFault_Handler\
|
||||
PROC
|
||||
EXPORT UsageFault_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
SVC_Handler PROC
|
||||
EXPORT SVC_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
DebugMon_Handler\
|
||||
PROC
|
||||
EXPORT DebugMon_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
PendSV_Handler PROC
|
||||
EXPORT PendSV_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
SysTick_Handler PROC
|
||||
EXPORT SysTick_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
|
||||
Default_Handler PROC
|
||||
|
||||
EXPORT CSV_Handler [WEAK]
|
||||
EXPORT SWDT_Handler [WEAK]
|
||||
EXPORT LVD_Handler [WEAK]
|
||||
EXPORT MFT_WG_IRQHandler [WEAK]
|
||||
EXPORT INT0_7_Handler [WEAK]
|
||||
EXPORT INT8_31_Handler [WEAK]
|
||||
EXPORT DT_Handler [WEAK]
|
||||
EXPORT MFS0RX_IRQHandler [WEAK]
|
||||
EXPORT MFS0TX_IRQHandler [WEAK]
|
||||
EXPORT MFS1RX_IRQHandler [WEAK]
|
||||
EXPORT MFS1TX_IRQHandler [WEAK]
|
||||
EXPORT MFS2RX_IRQHandler [WEAK]
|
||||
EXPORT MFS2TX_IRQHandler [WEAK]
|
||||
EXPORT MFS3RX_IRQHandler [WEAK]
|
||||
EXPORT MFS3TX_IRQHandler [WEAK]
|
||||
EXPORT MFS4RX_IRQHandler [WEAK]
|
||||
EXPORT MFS4TX_IRQHandler [WEAK]
|
||||
EXPORT MFS5RX_IRQHandler [WEAK]
|
||||
EXPORT MFS5TX_IRQHandler [WEAK]
|
||||
EXPORT MFS6RX_IRQHandler [WEAK]
|
||||
EXPORT MFS6TX_IRQHandler [WEAK]
|
||||
EXPORT MFS7RX_IRQHandler [WEAK]
|
||||
EXPORT MFS7TX_IRQHandler [WEAK]
|
||||
EXPORT PPG_Handler [WEAK]
|
||||
EXPORT TIM_IRQHandler [WEAK]
|
||||
EXPORT ADC0_IRQHandler [WEAK]
|
||||
EXPORT ADC1_IRQHandler [WEAK]
|
||||
EXPORT ADC2_IRQHandler [WEAK]
|
||||
EXPORT MFT_FRT_IRQHandler [WEAK]
|
||||
EXPORT MFT_IPC_IRQHandler [WEAK]
|
||||
EXPORT MFT_OPC_IRQHandler [WEAK]
|
||||
EXPORT BT0_7_IRQHandler [WEAK]
|
||||
EXPORT ETHER_MAC0_IRQHandler [WEAK]
|
||||
EXPORT ETHER_MAC1_IRQHandler [WEAK]
|
||||
EXPORT USB0F_Handler [WEAK]
|
||||
EXPORT USB0_Handler [WEAK]
|
||||
EXPORT USB1F_Handler [WEAK]
|
||||
EXPORT USB1_Handler [WEAK]
|
||||
EXPORT DMAC0_Handler [WEAK]
|
||||
EXPORT DMAC1_Handler [WEAK]
|
||||
EXPORT DMAC2_Handler [WEAK]
|
||||
EXPORT DMAC3_Handler [WEAK]
|
||||
EXPORT DMAC4_Handler [WEAK]
|
||||
EXPORT DMAC5_Handler [WEAK]
|
||||
EXPORT DMAC6_Handler [WEAK]
|
||||
EXPORT DMAC7_Handler [WEAK]
|
||||
EXPORT BT8_15_IRQHandler [WEAK]
|
||||
EXPORT DummyHandler [WEAK]
|
||||
|
||||
CSV_Handler
|
||||
SWDT_Handler
|
||||
LVD_Handler
|
||||
MFT_WG_IRQHandler
|
||||
INT0_7_Handler
|
||||
INT8_31_Handler
|
||||
DT_Handler
|
||||
MFS0RX_IRQHandler
|
||||
MFS0TX_IRQHandler
|
||||
MFS1RX_IRQHandler
|
||||
MFS1TX_IRQHandler
|
||||
MFS2RX_IRQHandler
|
||||
MFS2TX_IRQHandler
|
||||
MFS3RX_IRQHandler
|
||||
MFS3TX_IRQHandler
|
||||
MFS4RX_IRQHandler
|
||||
MFS4TX_IRQHandler
|
||||
MFS5RX_IRQHandler
|
||||
MFS5TX_IRQHandler
|
||||
MFS6RX_IRQHandler
|
||||
MFS6TX_IRQHandler
|
||||
MFS7RX_IRQHandler
|
||||
MFS7TX_IRQHandler
|
||||
PPG_Handler
|
||||
TIM_IRQHandler
|
||||
ADC0_IRQHandler
|
||||
ADC1_IRQHandler
|
||||
ADC2_IRQHandler
|
||||
MFT_FRT_IRQHandler
|
||||
MFT_IPC_IRQHandler
|
||||
MFT_OPC_IRQHandler
|
||||
BT0_7_IRQHandler
|
||||
DMAC0_Handler
|
||||
DMAC1_Handler
|
||||
DMAC2_Handler
|
||||
DMAC3_Handler
|
||||
DMAC4_Handler
|
||||
DMAC5_Handler
|
||||
DMAC6_Handler
|
||||
DMAC7_Handler
|
||||
ETHER_MAC0_IRQHandler
|
||||
ETHER_MAC1_IRQHandler
|
||||
USB0F_Handler
|
||||
USB0_Handler
|
||||
USB1F_Handler
|
||||
USB1_Handler
|
||||
BT8_15_IRQHandler
|
||||
DummyHandler
|
||||
|
||||
B .
|
||||
|
||||
ENDP
|
||||
|
||||
|
||||
ALIGN
|
||||
|
||||
|
||||
; User Initial Stack & Heap
|
||||
|
||||
IF :DEF:__MICROLIB
|
||||
|
||||
EXPORT __initial_sp
|
||||
EXPORT __heap_base
|
||||
EXPORT __heap_limit
|
||||
|
||||
ELSE
|
||||
|
||||
IMPORT __use_two_region_memory
|
||||
EXPORT __user_initial_stackheap
|
||||
__user_initial_stackheap
|
||||
|
||||
LDR R0, = Heap_Mem
|
||||
LDR R1, =(Stack_Mem + Stack_Size)
|
||||
LDR R2, = (Heap_Mem + Heap_Size)
|
||||
LDR R3, = Stack_Mem
|
||||
BX LR
|
||||
|
||||
ALIGN
|
||||
|
||||
ENDIF
|
||||
|
||||
|
||||
END
|
||||
@@ -0,0 +1,244 @@
|
||||
/*
|
||||
****************************************************************************
|
||||
**
|
||||
** File : startup_mb9bf61x.c
|
||||
**
|
||||
** Abstract : This file contains interrupt vector and startup code.
|
||||
**
|
||||
** Functions : Reset_Handler
|
||||
**
|
||||
** Target : Fujitsu FM3 microcontrollers
|
||||
**
|
||||
** Environment : Atollic TrueSTUDIO(R)
|
||||
**
|
||||
** Distribution: The file is distributed “as is,” without any warranty
|
||||
** of any kind.
|
||||
**
|
||||
** (c)Copyright Atollic AB.
|
||||
** You may use this file as-is or modify it according to the needs of your
|
||||
** project. Distribution of this file (unmodified or modified) is not
|
||||
** permitted. Atollic AB permit registered Atollic TrueSTUDIO(R) users the
|
||||
** rights to distribute the assembled, compiled & linked contents of this
|
||||
** file as part of an application binary file, provided that it is built
|
||||
** using the Atollic TrueSTUDIO(R) toolchain.
|
||||
**
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
**===========================================================================
|
||||
** Revisions
|
||||
**===========================================================================
|
||||
** Date Modification
|
||||
** 2011-08-18 First issue.
|
||||
**===========================================================================
|
||||
*/
|
||||
|
||||
/**
|
||||
**===========================================================================
|
||||
** External declarations
|
||||
**===========================================================================
|
||||
*/
|
||||
extern unsigned long _sdata, _edata, _sidata, _sbss, _ebss, _isr_vector;
|
||||
extern unsigned long _estack;
|
||||
extern void __libc_init_array();
|
||||
extern void SystemInit();
|
||||
extern void main();
|
||||
|
||||
/**
|
||||
**===========================================================================
|
||||
** Default interrupt handler
|
||||
**===========================================================================
|
||||
*/
|
||||
void Default_Handler()
|
||||
{
|
||||
/* Hang here */
|
||||
while(1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
**===========================================================================
|
||||
** Reset handler
|
||||
**===========================================================================
|
||||
*/
|
||||
__attribute__((naked)) void Reset_Handler()
|
||||
{
|
||||
/* Data and BSS variables */
|
||||
unsigned long *srcdata, *dstdata, *sbss;
|
||||
|
||||
/* Set up the stack pointer */
|
||||
asm("ldr sp,=_estack\n\t");
|
||||
|
||||
/* Set up vector table offset register */
|
||||
dstdata = (unsigned long *)0xe000ed08;
|
||||
*dstdata = (unsigned long)&_isr_vector;
|
||||
|
||||
srcdata = &_sidata;
|
||||
dstdata = &_sdata;
|
||||
sbss = &_sbss;
|
||||
|
||||
/* Copy data */
|
||||
while(dstdata != &_edata)
|
||||
{
|
||||
*(dstdata++) = *(srcdata++);
|
||||
}
|
||||
|
||||
/* Clear BSS */
|
||||
while(sbss != &_ebss)
|
||||
{
|
||||
*(sbss++) = '\0';
|
||||
}
|
||||
|
||||
/* Run static constructors */
|
||||
//__libc_init_array();
|
||||
|
||||
/* Call the clock system initialization function.*/
|
||||
SystemInit();
|
||||
|
||||
/* Jump to main */
|
||||
main();
|
||||
|
||||
/* In case main returns, use default handler */
|
||||
Default_Handler();
|
||||
}
|
||||
|
||||
/**
|
||||
**===========================================================================
|
||||
** Weak definitions of handlers point to Default_Handler if not implemented
|
||||
**===========================================================================
|
||||
*/
|
||||
void NMI_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void HardFault_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MemManage_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void BusFault_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void UsageFault_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void SVC_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void DebugMonitor_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void PendSV_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void SysTick_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
|
||||
void CSV_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void SWDT_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void LVD_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFT_WG_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void INT0_7_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void INT8_31_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void DT_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFS0RX_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFS0TX_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFS1RX_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFS1TX_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFS2RX_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFS2TX_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFS3RX_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFS3TX_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFS4RX_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFS4TX_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFS5RX_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFS5TX_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFS6RX_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFS6TX_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFS7RX_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFS7TX_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void PPG_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void TIM_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void ADC0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void ADC1_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void ADC2_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFT_FRT_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFT_IPC_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void MFT_OPC_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void BT0_7_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void ETHER_MAC0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void ETHER_MAC1_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void USB0F_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void USB0_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void USB1F_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void USB1_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void DMAC0_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void DMAC1_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void DMAC2_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void DMAC3_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void DMAC4_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void DMAC5_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void DMAC6_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void DMAC7_Handler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
void BT8_15_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
|
||||
|
||||
|
||||
/**
|
||||
**===========================================================================
|
||||
** Interrupt Vector Table
|
||||
**===========================================================================
|
||||
*/
|
||||
void (* const InterruptVector[])() __attribute__ ((section(".isr_vector"))) = {
|
||||
/* Processor exceptions */
|
||||
(void (*)(void))&_estack, /* 0 - Stack pointer */
|
||||
Reset_Handler, /* 1 - Reset */
|
||||
NMI_Handler, /* 2 - NMI */
|
||||
HardFault_Handler, /* 3 - Hard fault */
|
||||
MemManage_Handler, /* 4 - Memory management fault */
|
||||
BusFault_Handler, /* 5 - Bus fault */
|
||||
UsageFault_Handler, /* 6 - Usage fault */
|
||||
0, /* 7 - Reserved */
|
||||
0, /* 8 - Reserved */
|
||||
0, /* 9 - Reserved */
|
||||
0, /* 10 - Reserved */
|
||||
SVC_Handler, /* 11 - SVCall */
|
||||
DebugMonitor_Handler, /* 12 - Reserved for Debug */
|
||||
0, /* 13 - Reserved */
|
||||
PendSV_Handler, /* 14 - PendSV */
|
||||
SysTick_Handler, /* 15 - Systick */
|
||||
|
||||
/* External Interrupts */
|
||||
CSV_Handler, /* 0: Clock Super Visor */
|
||||
SWDT_Handler, /* 1: Software Watchdog Timer */
|
||||
LVD_Handler, /* 2: Low Voltage Detector */
|
||||
MFT_WG_IRQHandler, /* 3: Wave Form Generator / DTIF */
|
||||
INT0_7_Handler, /* 4: External Interrupt Request ch.0 to ch.7 */
|
||||
INT8_31_Handler, /* 5: External Interrupt Request ch.8 to ch.31 */
|
||||
DT_Handler, /* 6: Dual Timer / Quad Decoder */
|
||||
MFS0RX_IRQHandler, /* 7: MultiFunction Serial ch.0 */
|
||||
MFS0TX_IRQHandler, /* 8: MultiFunction Serial ch.0 */
|
||||
MFS1RX_IRQHandler, /* 9: MultiFunction Serial ch.1 */
|
||||
MFS1TX_IRQHandler, /* 10: MultiFunction Serial ch.1 */
|
||||
MFS2RX_IRQHandler, /* 11: MultiFunction Serial ch.2 */
|
||||
MFS2TX_IRQHandler, /* 12: MultiFunction Serial ch.2 */
|
||||
MFS3RX_IRQHandler, /* 13: MultiFunction Serial ch.3 */
|
||||
MFS3TX_IRQHandler, /* 14: MultiFunction Serial ch.3 */
|
||||
MFS4RX_IRQHandler, /* 15: MultiFunction Serial ch.4 */
|
||||
MFS4TX_IRQHandler, /* 16: MultiFunction Serial ch.4 */
|
||||
MFS5RX_IRQHandler, /* 17: MultiFunction Serial ch.5 */
|
||||
MFS5TX_IRQHandler, /* 18: MultiFunction Serial ch.5 */
|
||||
MFS6RX_IRQHandler, /* 19: MultiFunction Serial ch.6 */
|
||||
MFS6TX_IRQHandler, /* 20: MultiFunction Serial ch.6 */
|
||||
MFS7RX_IRQHandler, /* 21: MultiFunction Serial ch.7 */
|
||||
MFS7TX_IRQHandler, /* 22: MultiFunction Serial ch.7 */
|
||||
PPG_Handler, /* 23: PPG */
|
||||
TIM_IRQHandler, /* 24: OSC / PLL / Watch Counter */
|
||||
ADC0_IRQHandler, /* 25: ADC0 */
|
||||
ADC1_IRQHandler, /* 26: ADC1 */
|
||||
ADC2_IRQHandler, /* 27: ADC2 */
|
||||
MFT_FRT_IRQHandler, /* 28: Free-run Timer */
|
||||
MFT_IPC_IRQHandler, /* 29: Input Capture */
|
||||
MFT_OPC_IRQHandler, /* 30: Output Compare */
|
||||
BT0_7_IRQHandler, /* 31: Base Timer ch.0 to ch.7 */
|
||||
ETHER_MAC0_IRQHandler, /* 32: Ethernet MAC ch.0 */
|
||||
ETHER_MAC1_IRQHandler, /* 33: Ethernet MAC ch.1 */
|
||||
USB0F_Handler, /* 34: USB0 Function */
|
||||
USB0_Handler, /* 35: USB0 Function / USB0 HOST */
|
||||
USB1F_Handler, /* 36: USB1 Function */
|
||||
USB1_Handler, /* 37: USB1 Function / USB1 HOST */
|
||||
DMAC0_Handler, /* 38: DMAC ch.0 */
|
||||
DMAC1_Handler, /* 39: DMAC ch.1 */
|
||||
DMAC2_Handler, /* 40: DMAC ch.2 */
|
||||
DMAC3_Handler, /* 41: DMAC ch.3 */
|
||||
DMAC4_Handler, /* 42: DMAC ch.4 */
|
||||
DMAC5_Handler, /* 43: DMAC ch.5 */
|
||||
DMAC6_Handler, /* 44: DMAC ch.6 */
|
||||
DMAC7_Handler, /* 45: DMAC ch.7 */
|
||||
BT8_15_IRQHandler, /* 46: Base Timer ch.8 to ch.15 */
|
||||
Default_Handler /* 47: Reserved */
|
||||
};
|
||||
@@ -0,0 +1,417 @@
|
||||
;/************************************************************************/
|
||||
;/* (C) Fujitsu Semiconductor Europe GmbH (FSEU) */
|
||||
;/* */
|
||||
;/* The following software deliverable is intended for and must only be */
|
||||
;/* used for reference and in an evaluation laboratory environment. */
|
||||
;/* It is provided on an as-is basis without charge and is subject to */
|
||||
;/* alterations. */
|
||||
;/* It is the user's obligation to fully test the software in its */
|
||||
;/* environment and to ensure proper functionality, qualification and */
|
||||
;/* compliance with component specifications. */
|
||||
;/* */
|
||||
;/* In the event the software deliverable includes the use of open */
|
||||
;/* source components, the provisions of the governing open source */
|
||||
;/* license agreement shall apply with respect to such software */
|
||||
;/* deliverable. */
|
||||
;/* FSEU does not warrant that the deliverables do not infringe any */
|
||||
;/* third party intellectual property right (IPR). In the event that */
|
||||
;/* the deliverables infringe a third party IPR it is the sole */
|
||||
;/* responsibility of the customer to obtain necessary licenses to */
|
||||
;/* continue the usage of the deliverable. */
|
||||
;/* */
|
||||
;/* To the maximum extent permitted by applicable law FSEU disclaims all */
|
||||
;/* warranties, whether express or implied, in particular, but not */
|
||||
;/* limited to, warranties of merchantability and fitness for a */
|
||||
;/* particular purpose for which the deliverable is not designated. */
|
||||
;/* */
|
||||
;/* To the maximum extent permitted by applicable law, FSEU's liability */
|
||||
;/* is restricted to intentional misconduct and gross negligence. */
|
||||
;/* FSEU is not liable for consequential damages. */
|
||||
;/* */
|
||||
;/* (V1.5) */
|
||||
;/************************************************************************/
|
||||
;/* Startup for IAR */
|
||||
;/* Version V1.00 */
|
||||
;/* Date 2011-07-25 */
|
||||
;/* Target-mcu MB9B610 */
|
||||
;/************************************************************************/
|
||||
|
||||
|
||||
MODULE ?cstartup
|
||||
|
||||
;; Forward declaration of sections.
|
||||
SECTION CSTACK:DATA:NOROOT(3)
|
||||
|
||||
SECTION .intvec:CODE:NOROOT(2)
|
||||
|
||||
EXTERN __iar_program_start
|
||||
EXTERN SystemInit
|
||||
PUBLIC __vector_table
|
||||
|
||||
DATA
|
||||
__vector_table DCD sfe(CSTACK) ; Top of Stack
|
||||
DCD Reset_Handler ; Reset
|
||||
DCD NMI_Handler ; NMI
|
||||
DCD HardFault_Handler ; Hard Fault
|
||||
DCD MemManage_Handler ; MPU Fault
|
||||
DCD BusFault_Handler ; Bus Fault
|
||||
DCD UsageFault_Handler ; Usage Fault
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD SVC_Handler ; SVCall
|
||||
DCD DebugMon_Handler ; Debug Monitor
|
||||
DCD 0 ; Reserved
|
||||
DCD PendSV_Handler ; PendSV
|
||||
DCD SysTick_Handler ; SysTick
|
||||
|
||||
DCD CSV_Handler ; 0: Clock Super Visor
|
||||
DCD SWDT_Handler ; 1: Software Watchdog Timer
|
||||
DCD LVD_Handler ; 2: Low Voltage Detector
|
||||
DCD MFT_WG_IRQHandler ; 3: Wave Form Generator / DTIF
|
||||
DCD INT0_7_Handler ; 4: External Interrupt Request ch.0 to ch.7
|
||||
DCD INT8_31_Handler ; 5: External Interrupt Request ch.8 to ch.31
|
||||
DCD DT_Handler ; 6: Dual Timer / Quad Decoder
|
||||
DCD MFS0RX_IRQHandler ; 7: MultiFunction Serial ch.0
|
||||
DCD MFS0TX_IRQHandler ; 8: MultiFunction Serial ch.0
|
||||
DCD MFS1RX_IRQHandler ; 9: MultiFunction Serial ch.1
|
||||
DCD MFS1TX_IRQHandler ; 10: MultiFunction Serial ch.1
|
||||
DCD MFS2RX_IRQHandler ; 11: MultiFunction Serial ch.2
|
||||
DCD MFS2TX_IRQHandler ; 12: MultiFunction Serial ch.2
|
||||
DCD MFS3RX_IRQHandler ; 13: MultiFunction Serial ch.3
|
||||
DCD MFS3TX_IRQHandler ; 14: MultiFunction Serial ch.3
|
||||
DCD MFS4RX_IRQHandler ; 15: MultiFunction Serial ch.4
|
||||
DCD MFS4TX_IRQHandler ; 16: MultiFunction Serial ch.4
|
||||
DCD MFS5RX_IRQHandler ; 17: MultiFunction Serial ch.5
|
||||
DCD MFS5TX_IRQHandler ; 18: MultiFunction Serial ch.5
|
||||
DCD MFS6RX_IRQHandler ; 19: MultiFunction Serial ch.6
|
||||
DCD MFS6TX_IRQHandler ; 20: MultiFunction Serial ch.6
|
||||
DCD MFS7RX_IRQHandler ; 21: MultiFunction Serial ch.7
|
||||
DCD MFS7TX_IRQHandler ; 22: MultiFunction Serial ch.7
|
||||
DCD PPG_Handler ; 23: PPG
|
||||
DCD TIM_IRQHandler ; 24: OSC / PLL / Watch Counter
|
||||
DCD ADC0_IRQHandler ; 25: ADC0
|
||||
DCD ADC1_IRQHandler ; 26: ADC1
|
||||
DCD ADC2_IRQHandler ; 27: ADC2
|
||||
DCD MFT_FRT_IRQHandler ; 28: Free-run Timer
|
||||
DCD MFT_IPC_IRQHandler ; 29: Input Capture
|
||||
DCD MFT_OPC_IRQHandler ; 30: Output Compare
|
||||
DCD BT0_7_IRQHandler ; 31: Base Timer ch.0 to ch.7
|
||||
DCD ETHER_MAC0_IRQHandler ; 32: Ethernet MAC ch.0
|
||||
DCD ETHER_MAC1_IRQHandler ; 33: Ethernet MAC ch.1
|
||||
DCD USB0F_Handler ; 34: USB0 Function
|
||||
DCD USB0_Handler ; 35: USB0 Function / USB0 HOST
|
||||
DCD USB1F_Handler ; 36: USB1 Function
|
||||
DCD USB1_Handler ; 37: USB1 Function / USB1 HOST
|
||||
DCD DMAC0_Handler ; 38: DMAC ch.0
|
||||
DCD DMAC1_Handler ; 39: DMAC ch.1
|
||||
DCD DMAC2_Handler ; 40: DMAC ch.2
|
||||
DCD DMAC3_Handler ; 41: DMAC ch.3
|
||||
DCD DMAC4_Handler ; 42: DMAC ch.4
|
||||
DCD DMAC5_Handler ; 43: DMAC ch.5
|
||||
DCD DMAC6_Handler ; 44: DMAC ch.6
|
||||
DCD DMAC7_Handler ; 45: DMAC ch.7
|
||||
DCD BT8_15_IRQHandler ; 46: Base Timer ch.8 to ch.15
|
||||
DCD DummyHandler ; 47: Reserved
|
||||
|
||||
THUMB
|
||||
; Dummy Exception Handlers (infinite loops which can be modified)
|
||||
|
||||
PUBWEAK Reset_Handler
|
||||
SECTION .text:CODE:REORDER(2)
|
||||
Reset_Handler
|
||||
LDR R0, =SystemInit
|
||||
BLX R0
|
||||
LDR R0, =__iar_program_start
|
||||
BX R0
|
||||
|
||||
PUBWEAK NMI_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
NMI_Handler
|
||||
B NMI_Handler
|
||||
|
||||
PUBWEAK HardFault_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
HardFault_Handler
|
||||
B HardFault_Handler
|
||||
|
||||
PUBWEAK MemManage_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MemManage_Handler
|
||||
B MemManage_Handler
|
||||
|
||||
PUBWEAK BusFault_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
BusFault_Handler
|
||||
B BusFault_Handler
|
||||
|
||||
PUBWEAK UsageFault_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
UsageFault_Handler
|
||||
B UsageFault_Handler
|
||||
|
||||
PUBWEAK SVC_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
SVC_Handler
|
||||
B SVC_Handler
|
||||
|
||||
PUBWEAK DebugMon_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
DebugMon_Handler
|
||||
B DebugMon_Handler
|
||||
|
||||
PUBWEAK PendSV_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
PendSV_Handler
|
||||
B PendSV_Handler
|
||||
|
||||
PUBWEAK SysTick_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
SysTick_Handler
|
||||
B SysTick_Handler
|
||||
|
||||
|
||||
|
||||
PUBWEAK CSV_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
CSV_Handler
|
||||
B CSV_Handler
|
||||
|
||||
PUBWEAK SWDT_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
SWDT_Handler
|
||||
B SWDT_Handler
|
||||
|
||||
PUBWEAK LVD_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
LVD_Handler
|
||||
B LVD_Handler
|
||||
|
||||
PUBWEAK MFT_WG_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFT_WG_IRQHandler
|
||||
B MFT_WG_IRQHandler
|
||||
|
||||
PUBWEAK INT0_7_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
INT0_7_Handler
|
||||
B INT0_7_Handler
|
||||
|
||||
PUBWEAK INT8_31_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
INT8_31_Handler
|
||||
B INT8_31_Handler
|
||||
|
||||
PUBWEAK DT_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
DT_Handler
|
||||
B DT_Handler
|
||||
|
||||
PUBWEAK MFS0RX_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFS0RX_IRQHandler
|
||||
B MFS0RX_IRQHandler
|
||||
|
||||
PUBWEAK MFS0TX_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFS0TX_IRQHandler
|
||||
B MFS0TX_IRQHandler
|
||||
|
||||
PUBWEAK MFS1RX_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFS1RX_IRQHandler
|
||||
B MFS1RX_IRQHandler
|
||||
|
||||
PUBWEAK MFS1TX_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFS1TX_IRQHandler
|
||||
B MFS1TX_IRQHandler
|
||||
|
||||
PUBWEAK MFS2RX_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFS2RX_IRQHandler
|
||||
B MFS2RX_IRQHandler
|
||||
|
||||
PUBWEAK MFS2TX_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFS2TX_IRQHandler
|
||||
B MFS2TX_IRQHandler
|
||||
|
||||
PUBWEAK MFS3RX_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFS3RX_IRQHandler
|
||||
B MFS3RX_IRQHandler
|
||||
|
||||
PUBWEAK MFS3TX_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFS3TX_IRQHandler
|
||||
B MFS3TX_IRQHandler
|
||||
|
||||
PUBWEAK MFS4RX_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFS4RX_IRQHandler
|
||||
B MFS4RX_IRQHandler
|
||||
|
||||
PUBWEAK MFS4TX_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFS4TX_IRQHandler
|
||||
B MFS4TX_IRQHandler
|
||||
|
||||
PUBWEAK MFS5RX_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFS5RX_IRQHandler
|
||||
B MFS5RX_IRQHandler
|
||||
|
||||
PUBWEAK MFS5TX_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFS5TX_IRQHandler
|
||||
B MFS5TX_IRQHandler
|
||||
|
||||
PUBWEAK MFS6RX_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFS6RX_IRQHandler
|
||||
B MFS6RX_IRQHandler
|
||||
|
||||
PUBWEAK MFS6TX_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFS6TX_IRQHandler
|
||||
B MFS6TX_IRQHandler
|
||||
|
||||
PUBWEAK MFS7RX_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFS7RX_IRQHandler
|
||||
B MFS7RX_IRQHandler
|
||||
|
||||
PUBWEAK MFS7TX_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFS7TX_IRQHandler
|
||||
B MFS7TX_IRQHandler
|
||||
|
||||
PUBWEAK PPG_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
PPG_Handler
|
||||
B PPG_Handler
|
||||
|
||||
PUBWEAK TIM_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
TIM_IRQHandler
|
||||
B TIM_IRQHandler
|
||||
|
||||
PUBWEAK ADC0_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
ADC0_IRQHandler
|
||||
B ADC0_IRQHandler
|
||||
|
||||
PUBWEAK ADC1_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
ADC1_IRQHandler
|
||||
B ADC1_IRQHandler
|
||||
|
||||
PUBWEAK ADC2_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
ADC2_IRQHandler
|
||||
B ADC2_IRQHandler
|
||||
|
||||
PUBWEAK MFT_FRT_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFT_FRT_IRQHandler
|
||||
B MFT_FRT_IRQHandler
|
||||
|
||||
PUBWEAK MFT_IPC_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFT_IPC_IRQHandler
|
||||
B MFT_IPC_IRQHandler
|
||||
|
||||
PUBWEAK MFT_OPC_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
MFT_OPC_IRQHandler
|
||||
B MFT_OPC_IRQHandler
|
||||
|
||||
PUBWEAK BT0_7_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
BT0_7_IRQHandler
|
||||
B BT0_7_IRQHandler
|
||||
|
||||
PUBWEAK ETHER_MAC0_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
ETHER_MAC0_IRQHandler
|
||||
B ETHER_MAC0_IRQHandler
|
||||
|
||||
PUBWEAK ETHER_MAC1_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
ETHER_MAC1_IRQHandler
|
||||
B ETHER_MAC1_IRQHandler
|
||||
|
||||
PUBWEAK USB0F_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
USB0F_Handler
|
||||
B USB0F_Handler
|
||||
|
||||
PUBWEAK USB0_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
USB0_Handler
|
||||
B USB0_Handler
|
||||
|
||||
PUBWEAK USB1F_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
USB1F_Handler
|
||||
B USB1F_Handler
|
||||
|
||||
PUBWEAK USB1_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
USB1_Handler
|
||||
B USB1_Handler
|
||||
|
||||
PUBWEAK DMAC0_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
DMAC0_Handler
|
||||
B DMAC0_Handler
|
||||
|
||||
|
||||
PUBWEAK DMAC1_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
DMAC1_Handler
|
||||
B DMAC1_Handler
|
||||
|
||||
PUBWEAK DMAC2_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
DMAC2_Handler
|
||||
B DMAC2_Handler
|
||||
|
||||
PUBWEAK DMAC3_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
DMAC3_Handler
|
||||
B DMAC3_Handler
|
||||
|
||||
PUBWEAK DMAC4_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
DMAC4_Handler
|
||||
B DMAC4_Handler
|
||||
|
||||
PUBWEAK DMAC5_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
DMAC5_Handler
|
||||
B DMAC5_Handler
|
||||
|
||||
PUBWEAK DMAC6_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
DMAC6_Handler
|
||||
B DMAC6_Handler
|
||||
|
||||
PUBWEAK DMAC7_Handler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
DMAC7_Handler
|
||||
B DMAC7_Handler
|
||||
|
||||
PUBWEAK BT8_15_IRQHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
BT8_15_IRQHandler
|
||||
B BT8_15_IRQHandler
|
||||
|
||||
PUBWEAK DummyHandler
|
||||
SECTION .text:CODE:REORDER(1)
|
||||
DummyHandler
|
||||
B DummyHandler
|
||||
|
||||
END
|
||||
@@ -0,0 +1,206 @@
|
||||
/************************************************************************/
|
||||
/* (C) Fujitsu Semiconductor Europe GmbH (FSEU) */
|
||||
/* */
|
||||
/* The following software deliverable is intended for and must only be */
|
||||
/* used for reference and in an evaluation laboratory environment. */
|
||||
/* It is provided on an as-is basis without charge and is subject to */
|
||||
/* alterations. */
|
||||
/* It is the user's obligation to fully test the software in its */
|
||||
/* environment and to ensure proper functionality, qualification and */
|
||||
/* compliance with component specifications. */
|
||||
/* */
|
||||
/* In the event the software deliverable includes the use of open */
|
||||
/* source components, the provisions of the governing open source */
|
||||
/* license agreement shall apply with respect to such software */
|
||||
/* deliverable. */
|
||||
/* FSEU does not warrant that the deliverables do not infringe any */
|
||||
/* third party intellectual property right (IPR). In the event that */
|
||||
/* the deliverables infringe a third party IPR it is the sole */
|
||||
/* responsibility of the customer to obtain necessary licenses to */
|
||||
/* continue the usage of the deliverable. */
|
||||
/* */
|
||||
/* To the maximum extent permitted by applicable law FSEU disclaims all */
|
||||
/* warranties, whether express or implied, in particular, but not */
|
||||
/* limited to, warranties of merchantability and fitness for a */
|
||||
/* particular purpose for which the deliverable is not designated. */
|
||||
/* */
|
||||
/* To the maximum extent permitted by applicable law, FSEU's liability */
|
||||
/* is restricted to intentional misconduct and gross negligence. */
|
||||
/* FSEU is not liable for consequential damages. */
|
||||
/* */
|
||||
/* (V1.5) */
|
||||
/************************************************************************/
|
||||
|
||||
#include "board.h"
|
||||
|
||||
/** \file system_mb9bf61x.c
|
||||
**
|
||||
** FM3 system initialization functions
|
||||
** All adjustments can be done in belonging header file.
|
||||
**
|
||||
** History:
|
||||
** 2011-07-07 V1.0 MWi original version
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** System Clock Frequency (Core Clock) Variable according CMSIS
|
||||
******************************************************************************/
|
||||
uint32_t SystemCoreClock = __HCLK;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief Update the System Core Clock with current core Clock retrieved from
|
||||
** cpu registers.
|
||||
** \param none
|
||||
** \return none
|
||||
******************************************************************************/
|
||||
void SystemCoreClockUpdate (void) {
|
||||
uint32_t masterClk;
|
||||
uint32_t u32RegisterRead; // Workaround variable for MISRA C rule conformance
|
||||
|
||||
switch ((FM3_CRG->SCM_CTL >> 5) & 0x07) {
|
||||
case 0: /* internal High-speed Cr osc. */
|
||||
masterClk = __CLKHC;
|
||||
break;
|
||||
|
||||
case 1: /* external main osc. */
|
||||
masterClk = __CLKMO;
|
||||
break;
|
||||
|
||||
case 2: /* PLL clock */
|
||||
// Workaround for preventing MISRA C:1998 Rule 46 (MISRA C:2004 Rule 12.2)
|
||||
// violation:
|
||||
// "Unordered accesses to a volatile location"
|
||||
u32RegisterRead = (__CLKMO * (((FM3_CRG->PLL_CTL2) & 0x1F) + 1));
|
||||
masterClk = (u32RegisterRead / (((FM3_CRG->PLL_CTL1 >> 4) & 0x0F) + 1));
|
||||
break;
|
||||
|
||||
case 4: /* internal Low-speed CR osc. */
|
||||
masterClk = __CLKLC;
|
||||
break;
|
||||
|
||||
case 5: /* external Sub osc. */
|
||||
masterClk = __CLKSO;
|
||||
break;
|
||||
|
||||
default:
|
||||
masterClk = 0Ul;
|
||||
break;
|
||||
}
|
||||
|
||||
switch (FM3_CRG->BSC_PSR & 0x07) {
|
||||
case 0:
|
||||
SystemCoreClock = masterClk;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
SystemCoreClock = masterClk / 2;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
SystemCoreClock = masterClk / 3;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
SystemCoreClock = masterClk / 4;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
SystemCoreClock = masterClk / 6;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
SystemCoreClock = masterClk /8;
|
||||
break;
|
||||
|
||||
case 6:
|
||||
SystemCoreClock = masterClk /16;
|
||||
break;
|
||||
|
||||
default:
|
||||
SystemCoreClock = 0Ul;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief Setup the microcontroller system. Initialize the System and update
|
||||
** the SystemCoreClock variable.
|
||||
**
|
||||
** \param none
|
||||
** \return none
|
||||
******************************************************************************/
|
||||
void SystemInit (void) {
|
||||
|
||||
static uint32_t u32IoRegisterRead; // Workaround variable for MISRA C rule conformance
|
||||
|
||||
#if (HWWD_DISABLE) /* HW Watchdog Disable */
|
||||
FM3_HWWDT->WDG_LCK = 0x1ACCE551; /* HW Watchdog Unlock */
|
||||
FM3_HWWDT->WDG_LCK = 0xE5331AAE;
|
||||
FM3_HWWDT->WDG_CTL = 0; /* HW Watchdog stop */
|
||||
#endif
|
||||
|
||||
#if (CLOCK_SETUP) /* Clock Setup */
|
||||
FM3_CRG->BSC_PSR = BSC_PSR_Val; /* set System Clock presacaler */
|
||||
FM3_CRG->APBC0_PSR = APBC0_PSR_Val; /* set APB0 presacaler */
|
||||
FM3_CRG->APBC1_PSR = APBC1_PSR_Val; /* set APB1 presacaler */
|
||||
FM3_CRG->APBC2_PSR = APBC2_PSR_Val; /* set APB2 presacaler */
|
||||
FM3_CRG->SWC_PSR = SWC_PSR_Val | (1UL << 7); /* set SW Watchdog presacaler */
|
||||
FM3_CRG->TTC_PSR = TTC_PSR_Val; /* set Trace Clock presacaler */
|
||||
|
||||
FM3_CRG->CSW_TMR = CSW_TMR_Val; /* set oscillation stabilization wait time */
|
||||
|
||||
if (SCM_CTL_Val & (1UL << 1)) { /* Main clock oscillator enabled ? */
|
||||
FM3_CRG->SCM_CTL |= (1UL << 1); /* enable main oscillator */
|
||||
while (!(FM3_CRG->SCM_STR & (1UL << 1))); /* wait for Main clock oscillation stable */
|
||||
}
|
||||
|
||||
if (SCM_CTL_Val & (1UL << 3)) { /* Sub clock oscillator enabled ? */
|
||||
FM3_CRG->SCM_CTL |= (1UL << 3); /* enable sub oscillator */
|
||||
while (!(FM3_CRG->SCM_STR & (1UL << 3))); /* wait for Sub clock oscillation stable */
|
||||
}
|
||||
|
||||
FM3_CRG->PSW_TMR = PSW_TMR_Val; /* set PLL stabilization wait time */
|
||||
FM3_CRG->PLL_CTL1 = PLL_CTL1_Val; /* set PLLM and PLLK */
|
||||
FM3_CRG->PLL_CTL2 = PLL_CTL2_Val; /* set PLLN */
|
||||
|
||||
if (SCM_CTL_Val & (1UL << 4)) { /* PLL enabled ? */
|
||||
FM3_CRG->SCM_CTL |= (1UL << 4); /* enable PLL */
|
||||
while (!(FM3_CRG->SCM_STR & (1UL << 4))); /* wait for PLL stable */
|
||||
}
|
||||
|
||||
FM3_CRG->SCM_CTL |= (SCM_CTL_Val & 0xE0); /* Set Master Clock switch */
|
||||
|
||||
{
|
||||
volatile unsigned int i;
|
||||
for(i=0;i<200000;i++);
|
||||
}
|
||||
// Workaround for preventing MISRA C:1998 Rule 46 (MISRA C:2004 Rule 12.2)
|
||||
// violations:
|
||||
// "Unordered reads and writes to or from same location" and
|
||||
// "Unordered accesses to a volatile location"
|
||||
do
|
||||
{
|
||||
u32IoRegisterRead = (FM3_CRG->SCM_CTL & 0xE0);
|
||||
}while ((FM3_CRG->SCM_STR & 0xE0) != u32IoRegisterRead);
|
||||
#endif // (CLOCK_SETUP)
|
||||
|
||||
#if (CR_TRIM_SETUP)
|
||||
/* CR Trimming Data */
|
||||
if( 0x000003FF != (FM3_FLASH_IF->CRTRMM & 0x000003FF) )
|
||||
{
|
||||
/* UnLock (MCR_FTRM) */
|
||||
FM3_CRTRIM->MCR_RLR = 0x1ACCE554;
|
||||
/* Set MCR_FTRM */
|
||||
FM3_CRTRIM->MCR_FTRM = FM3_FLASH_IF->CRTRMM;
|
||||
/* Lock (MCR_FTRM) */
|
||||
FM3_CRTRIM->MCR_RLR = 0x00000000;
|
||||
}
|
||||
#endif // (CR_TRIM_SETUP)
|
||||
}
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
93
bsp/mb9bf618s/CMSIS/Include/arm_common_tables.h
Normal file
93
bsp/mb9bf618s/CMSIS/Include/arm_common_tables.h
Normal file
@@ -0,0 +1,93 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
|
||||
*
|
||||
* $Date: 17. January 2013
|
||||
* $Revision: V1.4.1
|
||||
*
|
||||
* Project: CMSIS DSP Library
|
||||
* Title: arm_common_tables.h
|
||||
*
|
||||
* Description: This file has extern declaration for common tables like Bitreverse, reciprocal etc which are used across different functions
|
||||
*
|
||||
* Target Processor: Cortex-M4/Cortex-M3
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* - Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* - Neither the name of ARM LIMITED nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#ifndef _ARM_COMMON_TABLES_H
|
||||
#define _ARM_COMMON_TABLES_H
|
||||
|
||||
#include "arm_math.h"
|
||||
|
||||
extern const uint16_t armBitRevTable[1024];
|
||||
extern const q15_t armRecipTableQ15[64];
|
||||
extern const q31_t armRecipTableQ31[64];
|
||||
extern const q31_t realCoefAQ31[1024];
|
||||
extern const q31_t realCoefBQ31[1024];
|
||||
extern const float32_t twiddleCoef_16[32];
|
||||
extern const float32_t twiddleCoef_32[64];
|
||||
extern const float32_t twiddleCoef_64[128];
|
||||
extern const float32_t twiddleCoef_128[256];
|
||||
extern const float32_t twiddleCoef_256[512];
|
||||
extern const float32_t twiddleCoef_512[1024];
|
||||
extern const float32_t twiddleCoef_1024[2048];
|
||||
extern const float32_t twiddleCoef_2048[4096];
|
||||
extern const float32_t twiddleCoef_4096[8192];
|
||||
#define twiddleCoef twiddleCoef_4096
|
||||
extern const q31_t twiddleCoefQ31[6144];
|
||||
extern const q15_t twiddleCoefQ15[6144];
|
||||
extern const float32_t twiddleCoef_rfft_32[32];
|
||||
extern const float32_t twiddleCoef_rfft_64[64];
|
||||
extern const float32_t twiddleCoef_rfft_128[128];
|
||||
extern const float32_t twiddleCoef_rfft_256[256];
|
||||
extern const float32_t twiddleCoef_rfft_512[512];
|
||||
extern const float32_t twiddleCoef_rfft_1024[1024];
|
||||
extern const float32_t twiddleCoef_rfft_2048[2048];
|
||||
extern const float32_t twiddleCoef_rfft_4096[4096];
|
||||
|
||||
|
||||
#define ARMBITREVINDEXTABLE__16_TABLE_LENGTH ((uint16_t)20 )
|
||||
#define ARMBITREVINDEXTABLE__32_TABLE_LENGTH ((uint16_t)48 )
|
||||
#define ARMBITREVINDEXTABLE__64_TABLE_LENGTH ((uint16_t)56 )
|
||||
#define ARMBITREVINDEXTABLE_128_TABLE_LENGTH ((uint16_t)208 )
|
||||
#define ARMBITREVINDEXTABLE_256_TABLE_LENGTH ((uint16_t)440 )
|
||||
#define ARMBITREVINDEXTABLE_512_TABLE_LENGTH ((uint16_t)448 )
|
||||
#define ARMBITREVINDEXTABLE1024_TABLE_LENGTH ((uint16_t)1800)
|
||||
#define ARMBITREVINDEXTABLE2048_TABLE_LENGTH ((uint16_t)3808)
|
||||
#define ARMBITREVINDEXTABLE4096_TABLE_LENGTH ((uint16_t)4032)
|
||||
|
||||
extern const uint16_t armBitRevIndexTable16[ARMBITREVINDEXTABLE__16_TABLE_LENGTH];
|
||||
extern const uint16_t armBitRevIndexTable32[ARMBITREVINDEXTABLE__32_TABLE_LENGTH];
|
||||
extern const uint16_t armBitRevIndexTable64[ARMBITREVINDEXTABLE__64_TABLE_LENGTH];
|
||||
extern const uint16_t armBitRevIndexTable128[ARMBITREVINDEXTABLE_128_TABLE_LENGTH];
|
||||
extern const uint16_t armBitRevIndexTable256[ARMBITREVINDEXTABLE_256_TABLE_LENGTH];
|
||||
extern const uint16_t armBitRevIndexTable512[ARMBITREVINDEXTABLE_512_TABLE_LENGTH];
|
||||
extern const uint16_t armBitRevIndexTable1024[ARMBITREVINDEXTABLE1024_TABLE_LENGTH];
|
||||
extern const uint16_t armBitRevIndexTable2048[ARMBITREVINDEXTABLE2048_TABLE_LENGTH];
|
||||
extern const uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE4096_TABLE_LENGTH];
|
||||
|
||||
#endif /* ARM_COMMON_TABLES_H */
|
||||
85
bsp/mb9bf618s/CMSIS/Include/arm_const_structs.h
Normal file
85
bsp/mb9bf618s/CMSIS/Include/arm_const_structs.h
Normal file
@@ -0,0 +1,85 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
* Copyright (C) 2010-2013 ARM Limited. All rights reserved.
|
||||
*
|
||||
* $Date: 17. January 2013
|
||||
* $Revision: V1.4.1
|
||||
*
|
||||
* Project: CMSIS DSP Library
|
||||
* Title: arm_const_structs.h
|
||||
*
|
||||
* Description: This file has constant structs that are initialized for
|
||||
* user convenience. For example, some can be given as
|
||||
* arguments to the arm_cfft_f32() function.
|
||||
*
|
||||
* Target Processor: Cortex-M4/Cortex-M3
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* - Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* - Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* - Neither the name of ARM LIMITED nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#ifndef _ARM_CONST_STRUCTS_H
|
||||
#define _ARM_CONST_STRUCTS_H
|
||||
|
||||
#include "arm_math.h"
|
||||
#include "arm_common_tables.h"
|
||||
|
||||
const arm_cfft_instance_f32 arm_cfft_sR_f32_len16 = {
|
||||
16, twiddleCoef_16, armBitRevIndexTable16, ARMBITREVINDEXTABLE__16_TABLE_LENGTH
|
||||
};
|
||||
|
||||
const arm_cfft_instance_f32 arm_cfft_sR_f32_len32 = {
|
||||
32, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE__32_TABLE_LENGTH
|
||||
};
|
||||
|
||||
const arm_cfft_instance_f32 arm_cfft_sR_f32_len64 = {
|
||||
64, twiddleCoef_64, armBitRevIndexTable64, ARMBITREVINDEXTABLE__64_TABLE_LENGTH
|
||||
};
|
||||
|
||||
const arm_cfft_instance_f32 arm_cfft_sR_f32_len128 = {
|
||||
128, twiddleCoef_128, armBitRevIndexTable128, ARMBITREVINDEXTABLE_128_TABLE_LENGTH
|
||||
};
|
||||
|
||||
const arm_cfft_instance_f32 arm_cfft_sR_f32_len256 = {
|
||||
256, twiddleCoef_256, armBitRevIndexTable256, ARMBITREVINDEXTABLE_256_TABLE_LENGTH
|
||||
};
|
||||
|
||||
const arm_cfft_instance_f32 arm_cfft_sR_f32_len512 = {
|
||||
512, twiddleCoef_512, armBitRevIndexTable512, ARMBITREVINDEXTABLE_512_TABLE_LENGTH
|
||||
};
|
||||
|
||||
const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024 = {
|
||||
1024, twiddleCoef_1024, armBitRevIndexTable1024, ARMBITREVINDEXTABLE1024_TABLE_LENGTH
|
||||
};
|
||||
|
||||
const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048 = {
|
||||
2048, twiddleCoef_2048, armBitRevIndexTable2048, ARMBITREVINDEXTABLE2048_TABLE_LENGTH
|
||||
};
|
||||
|
||||
const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096 = {
|
||||
4096, twiddleCoef_4096, armBitRevIndexTable4096, ARMBITREVINDEXTABLE4096_TABLE_LENGTH
|
||||
};
|
||||
|
||||
#endif
|
||||
7306
bsp/mb9bf618s/CMSIS/Include/arm_math.h
Normal file
7306
bsp/mb9bf618s/CMSIS/Include/arm_math.h
Normal file
File diff suppressed because it is too large
Load Diff
682
bsp/mb9bf618s/CMSIS/Include/core_cm0.h
Normal file
682
bsp/mb9bf618s/CMSIS/Include/core_cm0.h
Normal file
File diff suppressed because it is too large
Load Diff
793
bsp/mb9bf618s/CMSIS/Include/core_cm0plus.h
Normal file
793
bsp/mb9bf618s/CMSIS/Include/core_cm0plus.h
Normal file
File diff suppressed because it is too large
Load Diff
1627
bsp/mb9bf618s/CMSIS/Include/core_cm3.h
Normal file
1627
bsp/mb9bf618s/CMSIS/Include/core_cm3.h
Normal file
File diff suppressed because it is too large
Load Diff
1772
bsp/mb9bf618s/CMSIS/Include/core_cm4.h
Normal file
1772
bsp/mb9bf618s/CMSIS/Include/core_cm4.h
Normal file
File diff suppressed because it is too large
Load Diff
673
bsp/mb9bf618s/CMSIS/Include/core_cm4_simd.h
Normal file
673
bsp/mb9bf618s/CMSIS/Include/core_cm4_simd.h
Normal file
File diff suppressed because it is too large
Load Diff
636
bsp/mb9bf618s/CMSIS/Include/core_cmFunc.h
Normal file
636
bsp/mb9bf618s/CMSIS/Include/core_cmFunc.h
Normal file
File diff suppressed because it is too large
Load Diff
688
bsp/mb9bf618s/CMSIS/Include/core_cmInstr.h
Normal file
688
bsp/mb9bf618s/CMSIS/Include/core_cmInstr.h
Normal file
File diff suppressed because it is too large
Load Diff
813
bsp/mb9bf618s/CMSIS/Include/core_sc000.h
Normal file
813
bsp/mb9bf618s/CMSIS/Include/core_sc000.h
Normal file
File diff suppressed because it is too large
Load Diff
1598
bsp/mb9bf618s/CMSIS/Include/core_sc300.h
Normal file
1598
bsp/mb9bf618s/CMSIS/Include/core_sc300.h
Normal file
File diff suppressed because it is too large
Load Diff
37
bsp/mb9bf618s/CMSIS/README.txt
Normal file
37
bsp/mb9bf618s/CMSIS/README.txt
Normal file
@@ -0,0 +1,37 @@
|
||||
* -------------------------------------------------------------------
|
||||
* Copyright (C) 2011-2013 ARM Limited. All rights reserved.
|
||||
*
|
||||
* Date: 18 March 2013
|
||||
* Revision: V3.20
|
||||
*
|
||||
* Project: Cortex Microcontroller Software Interface Standard (CMSIS)
|
||||
* Title: Release Note for CMSIS
|
||||
*
|
||||
* -------------------------------------------------------------------
|
||||
|
||||
|
||||
NOTE - Open the index.html file to access CMSIS documentation
|
||||
|
||||
|
||||
The Cortex Microcontroller Software Interface Standard (CMSIS) provides a single standard across all
|
||||
Cortex-Mx processor series vendors. It enables code re-use and code sharing across software projects
|
||||
and reduces time-to-market for new embedded applications.
|
||||
|
||||
CMSIS is released under the terms of the end user license agreement ("CMSIS END USER LICENCE AGREEMENT.pdf").
|
||||
Any user of the software package is bound to the terms and conditions of the end user license agreement.
|
||||
|
||||
|
||||
You will find the following sub-directories:
|
||||
|
||||
Documentation - Contains CMSIS documentation.
|
||||
|
||||
DSP_Lib - MDK project files, Examples and source files etc.. to build the
|
||||
CMSIS DSP Software Library for Cortex-M0, Cortex-M3, Cortex-M4 processors.
|
||||
|
||||
Include - CMSIS Core Support and CMSIS DSP Include Files.
|
||||
|
||||
Lib - CMSIS DSP Libraries.
|
||||
|
||||
RTOS - CMSIS RTOS API template header file.
|
||||
|
||||
SVD - CMSIS SVD Schema files and Conversion Utility.
|
||||
21
bsp/mb9bf618s/CMSIS/SConscript
Normal file
21
bsp/mb9bf618s/CMSIS/SConscript
Normal file
@@ -0,0 +1,21 @@
|
||||
Import('RTT_ROOT')
|
||||
Import('rtconfig')
|
||||
from building import *
|
||||
|
||||
cwd = GetCurrentDir()
|
||||
src = Glob('DeviceSupport/fujitsu/mb9bf61x/*.c')
|
||||
|
||||
CPPPATH = [cwd + '/Include', cwd + '/DeviceSupport/fujitsu/mb9bf61x/']
|
||||
|
||||
# add for startup script
|
||||
if rtconfig.CROSS_TOOL == 'gcc':
|
||||
src += ['DeviceSupport/fujitsu/mb9bf61x/startup/gcc/startup_mb9bf61x.c']
|
||||
elif rtconfig.CROSS_TOOL == 'keil':
|
||||
src += ['DeviceSupport/fujitsu/mb9bf61x/startup/arm/startup_mb9bf61x.S']
|
||||
elif rtconfig.CROSS_TOOL == 'iar':
|
||||
src += ['DeviceSupport/fujitsu/mb9bf61x/startup/iar/startup_mb9bf61x.S']
|
||||
|
||||
CPPDEFINES = [rtconfig.FM3_TYPE]
|
||||
group = DefineGroup('CMSIS', src, depend = [''], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES)
|
||||
|
||||
Return('group')
|
||||
14
bsp/mb9bf618s/SConscript
Normal file
14
bsp/mb9bf618s/SConscript
Normal file
@@ -0,0 +1,14 @@
|
||||
# for module compiling
|
||||
import os
|
||||
Import('RTT_ROOT')
|
||||
|
||||
cwd = str(Dir('#'))
|
||||
objs = []
|
||||
list = os.listdir(cwd)
|
||||
|
||||
for d in list:
|
||||
path = os.path.join(cwd, d)
|
||||
if os.path.isfile(os.path.join(path, 'SConscript')):
|
||||
objs = objs + SConscript(os.path.join(d, 'SConscript'))
|
||||
|
||||
Return('objs')
|
||||
34
bsp/mb9bf618s/SConstruct
Normal file
34
bsp/mb9bf618s/SConstruct
Normal file
@@ -0,0 +1,34 @@
|
||||
import os
|
||||
import sys
|
||||
import rtconfig
|
||||
|
||||
if os.getenv('RTT_ROOT'):
|
||||
RTT_ROOT = os.getenv('RTT_ROOT')
|
||||
else:
|
||||
RTT_ROOT = os.path.normpath(os.getcwd() + '/../..')
|
||||
|
||||
sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
|
||||
from building import *
|
||||
|
||||
TARGET = 'rtthread.' + rtconfig.TARGET_EXT
|
||||
|
||||
env = Environment(tools = ['mingw'],
|
||||
AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
|
||||
CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS,
|
||||
AR = rtconfig.AR, ARFLAGS = '-rc',
|
||||
LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS)
|
||||
env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
|
||||
|
||||
if rtconfig.PLATFORM == 'iar':
|
||||
env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
|
||||
env.Replace(LINKCOM = ['$LINK $SOURCES $LINKFLAGS -o $TARGET --map project.map'])
|
||||
env.Replace(ARFLAGS = '')
|
||||
|
||||
Export('RTT_ROOT')
|
||||
Export('rtconfig')
|
||||
|
||||
# prepare building environment
|
||||
objs = PrepareBuilding(env, RTT_ROOT)
|
||||
|
||||
# make a building
|
||||
DoBuilding(TARGET, objs)
|
||||
11
bsp/mb9bf618s/applications/SConscript
Normal file
11
bsp/mb9bf618s/applications/SConscript
Normal file
@@ -0,0 +1,11 @@
|
||||
Import('RTT_ROOT')
|
||||
Import('rtconfig')
|
||||
from building import *
|
||||
|
||||
cwd = os.path.join(str(Dir('#')), 'applications')
|
||||
src = Glob('*.c')
|
||||
CPPPATH = [cwd, str(Dir('#'))]
|
||||
|
||||
group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH)
|
||||
|
||||
Return('group')
|
||||
58
bsp/mb9bf618s/applications/application.c
Normal file
58
bsp/mb9bf618s/applications/application.c
Normal file
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* File : application.c
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2009 - 2011, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2011-05-24 Bernard the first version
|
||||
*/
|
||||
|
||||
/**
|
||||
* @addtogroup FM3
|
||||
*/
|
||||
/*@{*/
|
||||
|
||||
#include <rtthread.h>
|
||||
#include "board.h"
|
||||
|
||||
#ifdef RT_USING_COMPONENTS_INIT
|
||||
#include <components.h>
|
||||
#endif /* RT_USING_COMPONENTS_INIT */
|
||||
|
||||
void rt_init_thread_entry(void *parameter)
|
||||
{
|
||||
#ifdef RT_USING_COMPONENTS_INIT
|
||||
/* initialization RT-Thread Components */
|
||||
rt_components_init();
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_FINSH
|
||||
finsh_set_device(RT_CONSOLE_DEVICE_NAME);
|
||||
#endif /* RT_USING_FINSH */
|
||||
|
||||
/**< init led device */
|
||||
{
|
||||
extern void rt_led_hw_init(void);
|
||||
rt_led_hw_init();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int rt_application_init()
|
||||
{
|
||||
rt_thread_t tid;
|
||||
|
||||
tid = rt_thread_create("init",
|
||||
rt_init_thread_entry, RT_NULL,
|
||||
2048, 8, 20);
|
||||
if (tid != RT_NULL) rt_thread_startup(tid);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*@}*/
|
||||
88
bsp/mb9bf618s/applications/startup.c
Normal file
88
bsp/mb9bf618s/applications/startup.c
Normal file
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
* File : startup.c
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2009 - 2011, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2011-02-24 Bernard first implementation
|
||||
*/
|
||||
|
||||
#include <rthw.h>
|
||||
#include <rtthread.h>
|
||||
|
||||
#include "board.h"
|
||||
|
||||
/**
|
||||
* @addtogroup FM3
|
||||
*/
|
||||
|
||||
/*@{*/
|
||||
|
||||
extern int rt_application_init(void);
|
||||
|
||||
#ifdef __CC_ARM
|
||||
extern int Image$$RW_IRAM1$$ZI$$Limit;
|
||||
#elif __ICCARM__
|
||||
#pragma section="HEAP"
|
||||
#else
|
||||
extern int __bss_end;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* This function will startup RT-Thread RTOS.
|
||||
*/
|
||||
void rtthread_startup(void)
|
||||
{
|
||||
/* init board */
|
||||
rt_hw_board_init();
|
||||
|
||||
/* show version */
|
||||
rt_show_version();
|
||||
|
||||
#ifdef RT_USING_HEAP
|
||||
#ifdef __CC_ARM
|
||||
rt_system_heap_init((void*)&Image$$RW_IRAM1$$ZI$$Limit, (void*)FM3_SRAM_END);
|
||||
#elif __ICCARM__
|
||||
rt_system_heap_init(__segment_end("HEAP"), (void*)FM3_SRAM_END);
|
||||
#else
|
||||
/* init memory system */
|
||||
rt_system_heap_init((void*)&__bss_end, (void*)FM3_SRAM_END);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* init scheduler system */
|
||||
rt_system_scheduler_init();
|
||||
|
||||
/* init timer thread */
|
||||
rt_system_timer_thread_init();
|
||||
|
||||
/* init application */
|
||||
rt_application_init();
|
||||
|
||||
/* init idle thread */
|
||||
rt_thread_idle_init();
|
||||
|
||||
/* start scheduler */
|
||||
rt_system_scheduler_start();
|
||||
|
||||
/* never reach here */
|
||||
return ;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
/* disable interrupt first */
|
||||
rt_hw_interrupt_disable();
|
||||
|
||||
/* startup RT-Thread RTOS */
|
||||
rtthread_startup();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*@}*/
|
||||
11
bsp/mb9bf618s/drivers/SConscript
Normal file
11
bsp/mb9bf618s/drivers/SConscript
Normal file
@@ -0,0 +1,11 @@
|
||||
Import('RTT_ROOT')
|
||||
Import('rtconfig')
|
||||
from building import *
|
||||
|
||||
cwd = os.path.join(str(Dir('#')), 'drivers')
|
||||
src = Glob('*.c')
|
||||
CPPPATH = [cwd]
|
||||
|
||||
group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)
|
||||
|
||||
Return('group')
|
||||
100
bsp/mb9bf618s/drivers/board.c
Normal file
100
bsp/mb9bf618s/drivers/board.c
Normal file
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
* File : board.c
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2009 - 2011 RT-Thread Develop Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2011-02-24 Bernard first implementation
|
||||
*/
|
||||
|
||||
#include <rthw.h>
|
||||
#include <rtthread.h>
|
||||
|
||||
#include "board.h"
|
||||
|
||||
#include "serial.h"
|
||||
|
||||
#ifdef RT_USING_COMPONENTS_INIT
|
||||
#include <components.h>
|
||||
#endif /* RT_USING_COMPONENTS_INIT */
|
||||
|
||||
/**
|
||||
* @addtogroup FM3
|
||||
*/
|
||||
|
||||
/*@{*/
|
||||
|
||||
/**
|
||||
* This is the timer interrupt service routine.
|
||||
*
|
||||
*/
|
||||
void SysTick_Handler(void)
|
||||
{
|
||||
/* enter interrupt */
|
||||
rt_interrupt_enter();
|
||||
|
||||
rt_tick_increase();
|
||||
|
||||
/* leave interrupt */
|
||||
rt_interrupt_leave();
|
||||
}
|
||||
|
||||
/**
|
||||
* This fucntion returns milliseconds since system passed
|
||||
*/
|
||||
rt_uint32_t rt_hw_tick_get_millisecond(void)
|
||||
{
|
||||
rt_tick_t tick;
|
||||
rt_uint32_t value;
|
||||
|
||||
#define TICK_MS (1000/RT_TICK_PER_SECOND)
|
||||
|
||||
tick = rt_tick_get();
|
||||
value = tick * TICK_MS + (SysTick->LOAD - SysTick->VAL) * TICK_MS / SysTick->LOAD;
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* This fucntion returns microseconds since system passed
|
||||
*/
|
||||
rt_uint32_t rt_hw_tick_get_microsecond(void)
|
||||
{
|
||||
rt_tick_t tick;
|
||||
rt_uint32_t value;
|
||||
|
||||
#define TICK_US (1000000/RT_TICK_PER_SECOND)
|
||||
|
||||
tick = rt_tick_get();
|
||||
value = tick * TICK_US + (SysTick->LOAD - SysTick->VAL) * TICK_US / SysTick->LOAD;
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function will initial FM3 Easy Kit board.
|
||||
*/
|
||||
void rt_hw_board_init(void)
|
||||
{
|
||||
/* disable all analog input. */
|
||||
FM3_GPIO->ADE = 0;
|
||||
|
||||
/* init systick */
|
||||
SysTick_Config(SystemCoreClock/RT_TICK_PER_SECOND);
|
||||
|
||||
/* initialize UART device */
|
||||
rt_hw_serial_init();
|
||||
/* set console as UART device */
|
||||
rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
|
||||
|
||||
#ifdef RT_USING_COMPONENTS_INIT
|
||||
rt_components_board_init();
|
||||
#endif
|
||||
}
|
||||
|
||||
/*@}*/
|
||||
50
bsp/mb9bf618s/drivers/board.h
Normal file
50
bsp/mb9bf618s/drivers/board.h
Normal file
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* File : board.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-09-22 Bernard add board.h to this bsp
|
||||
* 2011-03-04 lgnq add board.h to FM3 bsp
|
||||
*/
|
||||
|
||||
#ifndef __BOARD_H__
|
||||
#define __BOARD_H__
|
||||
|
||||
#if defined MB9B610S
|
||||
# include <mb9b610s.h>
|
||||
#elif defined MB9B610T
|
||||
# include <mb9b610t.h>
|
||||
#else
|
||||
# warning "you must define CPU type. e.g: MB9B610S or MB9B610T"
|
||||
# warning "define MB9B610S default"
|
||||
# define MB9B610S /* default: MB9B610S */
|
||||
# include <mb9b610s.h>
|
||||
#endif
|
||||
|
||||
#include "serial.h"
|
||||
|
||||
//Internal SRAM memory size[Kbytes] <8-64>
|
||||
//product MB9BFx16S/T MB9BFx17S/T MB9BFx18S/T
|
||||
//FLASH : 512 768 1024
|
||||
//SRAM0 : 32 48 64
|
||||
//SRAM1 : 32 48 64
|
||||
#define FM3_SRAM_SIZE 128
|
||||
#define FM3_SRAM_END (0x1FFF0000 + FM3_SRAM_SIZE * 1024)
|
||||
|
||||
/* RT_USING_UART */
|
||||
#define RT_USING_UART0
|
||||
//#define RT_USING_UART2
|
||||
//#define RT_USING_UART4
|
||||
#define RT_UART_RX_BUFFER_SIZE 64
|
||||
|
||||
void rt_hw_board_init(void);
|
||||
rt_uint32_t rt_hw_tick_get_millisecond(void);
|
||||
rt_uint32_t rt_hw_tick_get_microsecond(void);
|
||||
|
||||
#endif
|
||||
157
bsp/mb9bf618s/drivers/led.c
Normal file
157
bsp/mb9bf618s/drivers/led.c
Normal file
@@ -0,0 +1,157 @@
|
||||
#include <rtthread.h>
|
||||
#include "board.h"
|
||||
|
||||
#define RT_DEVICE_CTRL_RTC_GET_COUNT 0x81 /**< get count */
|
||||
|
||||
#define LED_NUM 4
|
||||
struct fm3_gpio_ctrl
|
||||
{
|
||||
uint32_t led_num;
|
||||
volatile uint32_t * PDOR;
|
||||
volatile uint32_t * PDIR;
|
||||
};
|
||||
|
||||
struct fm3_led
|
||||
{
|
||||
/* inherit from rt_device */
|
||||
struct rt_device parent;
|
||||
|
||||
struct fm3_gpio_ctrl fm3_gpio_ctrl[LED_NUM];
|
||||
};
|
||||
|
||||
static struct fm3_led fm3_led;
|
||||
|
||||
static rt_err_t rt_led_init (rt_device_t dev)
|
||||
{
|
||||
uint32_t i;
|
||||
|
||||
/* led0 : P54 */
|
||||
FM3_GPIO->PFR5 &= ~((1<<7) | (1<<6) | (1<<5) |(1<<4)); /* set P54 fuction is GPIO. */
|
||||
FM3_GPIO->DDR5 |= (1<<7) | (1<<6) | (1<<5) |(1<<4); /* set P54 output. */
|
||||
|
||||
/* LED0 */
|
||||
i = 0;
|
||||
fm3_led.fm3_gpio_ctrl[i].led_num = 4;
|
||||
fm3_led.fm3_gpio_ctrl[i].PDOR = &FM3_GPIO->PDOR5;
|
||||
fm3_led.fm3_gpio_ctrl[i].PDIR = &FM3_GPIO->PDIR5;
|
||||
|
||||
/* LED1 */
|
||||
i++;
|
||||
fm3_led.fm3_gpio_ctrl[i].led_num = 5;
|
||||
fm3_led.fm3_gpio_ctrl[i].PDOR = &FM3_GPIO->PDOR5;
|
||||
fm3_led.fm3_gpio_ctrl[i].PDIR = &FM3_GPIO->PDIR5;
|
||||
|
||||
/* LED2 */
|
||||
i++;
|
||||
fm3_led.fm3_gpio_ctrl[i].led_num = 6;
|
||||
fm3_led.fm3_gpio_ctrl[i].PDOR = &FM3_GPIO->PDOR5;
|
||||
fm3_led.fm3_gpio_ctrl[i].PDIR = &FM3_GPIO->PDIR5;
|
||||
|
||||
/* LED3 */
|
||||
i++;
|
||||
fm3_led.fm3_gpio_ctrl[i].led_num = 7;
|
||||
fm3_led.fm3_gpio_ctrl[i].PDOR = &FM3_GPIO->PDOR5;
|
||||
fm3_led.fm3_gpio_ctrl[i].PDIR = &FM3_GPIO->PDIR5;
|
||||
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
static rt_err_t rt_led_open(rt_device_t dev, rt_uint16_t oflag)
|
||||
{
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
static rt_err_t rt_led_close(rt_device_t dev)
|
||||
{
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
static rt_size_t rt_led_read (rt_device_t dev, rt_off_t pos, void* buffer,
|
||||
rt_size_t size)
|
||||
{
|
||||
rt_ubase_t index = 0;
|
||||
rt_ubase_t nr = size;
|
||||
rt_uint8_t * value = buffer;
|
||||
|
||||
RT_ASSERT(dev == &fm3_led.parent);
|
||||
RT_ASSERT((pos+size) <= LED_NUM );
|
||||
|
||||
for(index=0; index<nr; index++)
|
||||
{
|
||||
if(*fm3_led.fm3_gpio_ctrl[pos+index].PDIR & 1<<fm3_led.fm3_gpio_ctrl[pos+index].led_num)
|
||||
{
|
||||
*value = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
*value = 1;
|
||||
}
|
||||
value++;
|
||||
}
|
||||
return index;
|
||||
}
|
||||
|
||||
static rt_size_t rt_led_write (rt_device_t dev, rt_off_t pos,
|
||||
const void* buffer, rt_size_t size)
|
||||
{
|
||||
rt_ubase_t index = 0;
|
||||
rt_ubase_t nw = size;
|
||||
const rt_uint8_t * value = buffer;
|
||||
|
||||
RT_ASSERT(dev == &fm3_led.parent);
|
||||
RT_ASSERT((pos+size) <= LED_NUM );
|
||||
|
||||
for(index=0; index<nw; index++)
|
||||
{
|
||||
if(*value++)
|
||||
{
|
||||
*fm3_led.fm3_gpio_ctrl[pos+index].PDOR &= ~(1<<fm3_led.fm3_gpio_ctrl[pos+index].led_num);
|
||||
}
|
||||
else
|
||||
{
|
||||
*fm3_led.fm3_gpio_ctrl[pos+index].PDOR |= (1<<fm3_led.fm3_gpio_ctrl[pos+index].led_num);
|
||||
}
|
||||
}
|
||||
return index;
|
||||
}
|
||||
|
||||
static rt_err_t rt_led_control (rt_device_t dev, rt_uint8_t cmd, void *args)
|
||||
{
|
||||
RT_ASSERT(dev == &fm3_led.parent);
|
||||
|
||||
if(cmd == RT_DEVICE_CTRL_RTC_GET_COUNT)
|
||||
{
|
||||
rt_uint32_t * led_num = args;
|
||||
*led_num = LED_NUM;
|
||||
}
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
void rt_led_hw_init(void)
|
||||
{
|
||||
fm3_led.parent.type = RT_Device_Class_Char;
|
||||
fm3_led.parent.rx_indicate = RT_NULL;
|
||||
fm3_led.parent.tx_complete = RT_NULL;
|
||||
fm3_led.parent.init = rt_led_init;
|
||||
fm3_led.parent.open = rt_led_open;
|
||||
fm3_led.parent.close = rt_led_close;
|
||||
fm3_led.parent.read = rt_led_read;
|
||||
fm3_led.parent.write = rt_led_write;
|
||||
fm3_led.parent.control = rt_led_control;
|
||||
fm3_led.parent.user_data = RT_NULL;
|
||||
|
||||
/* register a character device */
|
||||
rt_device_register(&fm3_led.parent, "led", RT_DEVICE_FLAG_RDWR);
|
||||
/* init led device */
|
||||
rt_led_init(&fm3_led.parent);
|
||||
}
|
||||
|
||||
#ifdef RT_USING_FINSH
|
||||
#include <finsh.h>
|
||||
void led(rt_uint32_t led, rt_uint32_t value)
|
||||
{
|
||||
rt_uint8_t led_value = value;
|
||||
rt_led_write(&fm3_led.parent, led, &led_value, 1);
|
||||
}
|
||||
FINSH_FUNCTION_EXPORT(led, e.g:led(0,100).)
|
||||
#endif
|
||||
437
bsp/mb9bf618s/drivers/serial.c
Normal file
437
bsp/mb9bf618s/drivers/serial.c
Normal file
@@ -0,0 +1,437 @@
|
||||
/*
|
||||
* File : serial.c
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2006-03-13 Bernard first version
|
||||
* 2011-05-15 lgnq modified according bernard's implementaion.
|
||||
*/
|
||||
|
||||
#include <rtthread.h>
|
||||
|
||||
#include "serial.h"
|
||||
|
||||
/**
|
||||
* @addtogroup FM3 MB9B610
|
||||
*/
|
||||
/*@{*/
|
||||
|
||||
/* RT-Thread Device Interface */
|
||||
/**
|
||||
* This function initializes serial
|
||||
*/
|
||||
static rt_err_t rt_serial_init (rt_device_t dev)
|
||||
{
|
||||
struct serial_device* uart = (struct serial_device*) dev->user_data;
|
||||
|
||||
if (!(dev->flag & RT_DEVICE_FLAG_ACTIVATED))
|
||||
{
|
||||
if (dev->flag & RT_DEVICE_FLAG_INT_RX)
|
||||
{
|
||||
rt_memset(uart->int_rx->rx_buffer, 0,
|
||||
sizeof(uart->int_rx->rx_buffer));
|
||||
uart->int_rx->read_index = uart->int_rx->save_index = 0;
|
||||
}
|
||||
|
||||
if (dev->flag & RT_DEVICE_FLAG_INT_TX)
|
||||
{
|
||||
rt_memset(uart->int_tx->tx_buffer, 0,
|
||||
sizeof(uart->int_tx->tx_buffer));
|
||||
uart->int_tx->write_index = uart->int_tx->save_index = 0;
|
||||
}
|
||||
|
||||
dev->flag |= RT_DEVICE_FLAG_ACTIVATED;
|
||||
}
|
||||
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
/* save a char to serial buffer */
|
||||
static void rt_serial_savechar(struct serial_device* uart, char ch)
|
||||
{
|
||||
rt_base_t level;
|
||||
|
||||
/* disable interrupt */
|
||||
level = rt_hw_interrupt_disable();
|
||||
|
||||
uart->int_rx->rx_buffer[uart->int_rx->save_index] = ch;
|
||||
uart->int_rx->save_index ++;
|
||||
if (uart->int_rx->save_index >= UART_RX_BUFFER_SIZE)
|
||||
uart->int_rx->save_index = 0;
|
||||
|
||||
/* if the next position is read index, discard this 'read char' */
|
||||
if (uart->int_rx->save_index == uart->int_rx->read_index)
|
||||
{
|
||||
uart->int_rx->read_index ++;
|
||||
if (uart->int_rx->read_index >= UART_RX_BUFFER_SIZE)
|
||||
uart->int_rx->read_index = 0;
|
||||
}
|
||||
|
||||
/* enable interrupt */
|
||||
rt_hw_interrupt_enable(level);
|
||||
}
|
||||
|
||||
static rt_err_t rt_serial_open(rt_device_t dev, rt_uint16_t oflag)
|
||||
{
|
||||
struct serial_device* uart;
|
||||
|
||||
RT_ASSERT(dev != RT_NULL);
|
||||
uart = (struct serial_device*) dev->user_data;
|
||||
|
||||
if (dev->flag & RT_DEVICE_FLAG_INT_RX)
|
||||
{
|
||||
/* enable interrupt */
|
||||
UART_ENABLE_IRQ(uart->rx_irq);
|
||||
}
|
||||
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
static rt_err_t rt_serial_close(rt_device_t dev)
|
||||
{
|
||||
struct serial_device* uart;
|
||||
|
||||
RT_ASSERT(dev != RT_NULL);
|
||||
uart = (struct serial_device*) dev->user_data;
|
||||
|
||||
if (dev->flag & RT_DEVICE_FLAG_INT_RX)
|
||||
{
|
||||
/* disable interrupt */
|
||||
UART_DISABLE_IRQ(uart->rx_irq);
|
||||
}
|
||||
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
static rt_size_t rt_serial_read (rt_device_t dev, rt_off_t pos, void* buffer,
|
||||
rt_size_t size)
|
||||
{
|
||||
rt_uint8_t* ptr;
|
||||
rt_err_t err_code;
|
||||
struct serial_device* uart;
|
||||
|
||||
ptr = buffer;
|
||||
err_code = RT_EOK;
|
||||
uart = (struct serial_device*)dev->user_data;
|
||||
|
||||
if (dev->flag & RT_DEVICE_FLAG_INT_RX)
|
||||
{
|
||||
rt_base_t level;
|
||||
|
||||
/* interrupt mode Rx */
|
||||
while (size)
|
||||
{
|
||||
if (uart->int_rx->read_index != uart->int_rx->save_index)
|
||||
{
|
||||
*ptr++ = uart->int_rx->rx_buffer[uart->int_rx->read_index];
|
||||
size --;
|
||||
|
||||
/* disable interrupt */
|
||||
level = rt_hw_interrupt_disable();
|
||||
|
||||
uart->int_rx->read_index ++;
|
||||
if (uart->int_rx->read_index >= UART_RX_BUFFER_SIZE)
|
||||
uart->int_rx->read_index = 0;
|
||||
|
||||
/* enable interrupt */
|
||||
rt_hw_interrupt_enable(level);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* set error code */
|
||||
err_code = -RT_EEMPTY;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* polling mode */
|
||||
while ((rt_uint32_t)ptr - (rt_uint32_t)buffer < size)
|
||||
{
|
||||
while (uart->uart_device->SSR & SSR_RDRF)
|
||||
{
|
||||
*ptr = uart->uart_device->RDR & 0xff;
|
||||
ptr ++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* set error code */
|
||||
rt_set_errno(err_code);
|
||||
return (rt_uint32_t)ptr - (rt_uint32_t)buffer;
|
||||
}
|
||||
|
||||
static rt_size_t rt_serial_write (rt_device_t dev, rt_off_t pos,
|
||||
const void* buffer, rt_size_t size)
|
||||
{
|
||||
rt_uint8_t* ptr;
|
||||
rt_err_t err_code;
|
||||
struct serial_device* uart;
|
||||
|
||||
err_code = RT_EOK;
|
||||
ptr = (rt_uint8_t*)buffer;
|
||||
uart = (struct serial_device*)dev->user_data;
|
||||
|
||||
if (dev->flag & RT_DEVICE_FLAG_INT_TX)
|
||||
{
|
||||
/* interrupt mode Tx */
|
||||
while (uart->int_tx->save_index != uart->int_tx->write_index)
|
||||
{
|
||||
/* save on tx buffer */
|
||||
uart->int_tx->tx_buffer[uart->int_tx->save_index] = *ptr++;
|
||||
|
||||
-- size;
|
||||
|
||||
/* move to next position */
|
||||
uart->int_tx->save_index ++;
|
||||
|
||||
/* wrap save index */
|
||||
if (uart->int_tx->save_index >= UART_TX_BUFFER_SIZE)
|
||||
uart->int_tx->save_index = 0;
|
||||
}
|
||||
|
||||
/* set error code */
|
||||
if (size > 0)
|
||||
err_code = -RT_EFULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* polling mode */
|
||||
while (size)
|
||||
{
|
||||
/*
|
||||
* to be polite with serial console add a line feed
|
||||
* to the carriage return character
|
||||
*/
|
||||
if (*ptr == '\n' && (dev->flag & RT_DEVICE_FLAG_STREAM))
|
||||
{
|
||||
while (!(uart->uart_device->SSR & SSR_TDRE));
|
||||
uart->uart_device->TDR = '\r';
|
||||
}
|
||||
|
||||
while (!(uart->uart_device->SSR & SSR_TDRE));
|
||||
uart->uart_device->TDR = (*ptr & 0x1FF);
|
||||
|
||||
++ptr;
|
||||
--size;
|
||||
}
|
||||
}
|
||||
|
||||
/* set error code */
|
||||
rt_set_errno(err_code);
|
||||
|
||||
return (rt_uint32_t)ptr - (rt_uint32_t)buffer;
|
||||
}
|
||||
|
||||
static rt_err_t rt_serial_control (rt_device_t dev, rt_uint8_t cmd, void *args)
|
||||
{
|
||||
RT_ASSERT(dev != RT_NULL);
|
||||
|
||||
switch (cmd)
|
||||
{
|
||||
case RT_DEVICE_CTRL_SUSPEND:
|
||||
/* suspend device */
|
||||
dev->flag |= RT_DEVICE_FLAG_SUSPENDED;
|
||||
break;
|
||||
|
||||
case RT_DEVICE_CTRL_RESUME:
|
||||
/* resume device */
|
||||
dev->flag &= ~RT_DEVICE_FLAG_SUSPENDED;
|
||||
break;
|
||||
}
|
||||
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
/*
|
||||
* serial register
|
||||
*/
|
||||
rt_err_t rt_hw_serial_register(rt_device_t device, const char* name,
|
||||
rt_uint32_t flag, struct serial_device *serial)
|
||||
{
|
||||
RT_ASSERT(device != RT_NULL);
|
||||
|
||||
device->type = RT_Device_Class_Char;
|
||||
device->rx_indicate = RT_NULL;
|
||||
device->tx_complete = RT_NULL;
|
||||
device->init = rt_serial_init;
|
||||
device->open = rt_serial_open;
|
||||
device->close = rt_serial_close;
|
||||
device->read = rt_serial_read;
|
||||
device->write = rt_serial_write;
|
||||
device->control = rt_serial_control;
|
||||
device->user_data = serial;
|
||||
|
||||
/* register a character device */
|
||||
return rt_device_register(device, name, RT_DEVICE_FLAG_RDWR | flag);
|
||||
}
|
||||
|
||||
/* ISR for serial interrupt */
|
||||
void rt_hw_serial_isr(rt_device_t device)
|
||||
{
|
||||
struct serial_device* uart = (struct serial_device*) device->user_data;
|
||||
|
||||
/* interrupt mode receive */
|
||||
RT_ASSERT(device->flag & RT_DEVICE_FLAG_INT_RX);
|
||||
|
||||
/* save on rx buffer */
|
||||
while (uart->uart_device->SSR & SSR_RDRF)
|
||||
{
|
||||
rt_serial_savechar(uart, uart->uart_device->RDR & 0xff);
|
||||
}
|
||||
|
||||
/* invoke callback */
|
||||
if (device->rx_indicate != RT_NULL)
|
||||
{
|
||||
rt_size_t rx_length;
|
||||
|
||||
/* get rx length */
|
||||
rx_length = uart->int_rx->read_index > uart->int_rx->save_index ?
|
||||
UART_RX_BUFFER_SIZE - uart->int_rx->read_index + uart->int_rx->save_index :
|
||||
uart->int_rx->save_index - uart->int_rx->read_index;
|
||||
|
||||
device->rx_indicate(device, rx_length);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef RT_USING_UART0
|
||||
/* UART0 device driver structure */
|
||||
#define UART0 FM3_MFS0_UART
|
||||
struct serial_int_rx uart0_int_rx;
|
||||
struct serial_device uart0 =
|
||||
{
|
||||
UART0,
|
||||
MFS0RX_IRQn,
|
||||
MFS0TX_IRQn,
|
||||
&uart0_int_rx,
|
||||
RT_NULL
|
||||
};
|
||||
struct rt_device uart0_device;
|
||||
|
||||
void MFS0RX_IRQHandler(void)
|
||||
{
|
||||
/* enter interrupt */
|
||||
rt_interrupt_enter();
|
||||
rt_hw_serial_isr(&uart0_device);
|
||||
/* leave interrupt */
|
||||
rt_interrupt_leave();
|
||||
}
|
||||
#endif /**< #ifdef RT_USING_UART0 */
|
||||
|
||||
#ifdef RT_USING_UART2
|
||||
/* UART2 device driver structure */
|
||||
#define UART2 FM3_MFS2_UART
|
||||
struct serial_int_rx uart2_int_rx;
|
||||
struct serial_device uart2 =
|
||||
{
|
||||
UART2,
|
||||
MFS2RX_IRQn,
|
||||
MFS2TX_IRQn,
|
||||
&uart2_int_rx,
|
||||
RT_NULL
|
||||
};
|
||||
struct rt_device uart2_device;
|
||||
|
||||
void MFS2RX_IRQHandler(void)
|
||||
{
|
||||
/* enter interrupt */
|
||||
rt_interrupt_enter();
|
||||
rt_hw_serial_isr(&uart2_device);
|
||||
/* leave interrupt */
|
||||
rt_interrupt_leave();
|
||||
}
|
||||
#endif /**< #ifdef RT_USING_UART2 */
|
||||
|
||||
#ifdef RT_USING_UART4
|
||||
/* UART4 device driver structure */
|
||||
#define UART4 FM3_MFS4_UART
|
||||
struct serial_int_rx uart4_int_rx;
|
||||
struct serial_device uart4 =
|
||||
{
|
||||
(FM3_MFS03_UART_TypeDef*)UART4,
|
||||
MFS4RX_IRQn,
|
||||
MFS4TX_IRQn,
|
||||
&uart4_int_rx,
|
||||
RT_NULL
|
||||
};
|
||||
struct rt_device uart4_device;
|
||||
|
||||
void MFS4RX_IRQHandler(void)
|
||||
{
|
||||
/* enter interrupt */
|
||||
rt_interrupt_enter();
|
||||
rt_hw_serial_isr(&uart4_device);
|
||||
/* leave interrupt */
|
||||
rt_interrupt_leave();
|
||||
}
|
||||
#endif /**< #ifdef RT_USING_UART4 */
|
||||
|
||||
void rt_hw_serial_init(void)
|
||||
{
|
||||
uint32_t APB2_clock = (SystemCoreClock >> (APBC2_PSR_Val & 0x03));
|
||||
|
||||
#ifdef RT_USING_UART0
|
||||
/* initialize UART0 */
|
||||
/* Set Uart Ch0 Port, SIN0_0:P21, SOT0_0:P22 */
|
||||
FM3_GPIO->ADE &= ~(1UL<<31); /* disable P22 AN31 function */
|
||||
FM3_GPIO->PFR2 = FM3_GPIO->PFR2 | (1<<1) | (1<<2);
|
||||
FM3_GPIO->EPFR07 = FM3_GPIO->EPFR07 & ~(3<<4 | 3<<6) | (1<<4) | (1<<6);
|
||||
|
||||
uart0.uart_device->SMR = SMR_MD_UART | SMR_SOE;;
|
||||
uart0.uart_device->BGR = (APB2_clock + (BPS/2))/BPS - 1; /* round */
|
||||
uart0.uart_device->ESCR = ESCR_DATABITS_8;
|
||||
uart0.uart_device->SCR = SCR_RXE | SCR_TXE | SCR_RIE;
|
||||
|
||||
/* register UART0 device */
|
||||
rt_hw_serial_register(&uart0_device,
|
||||
"uart0",
|
||||
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM,
|
||||
&uart0);
|
||||
#endif /**< #ifdef RT_USING_UART0 */
|
||||
|
||||
#ifdef RT_USING_UART2
|
||||
/* initialize UART2 */
|
||||
/* Set Uart Ch2 Port, SIN2_2:P17, SOT2_2:P18 */
|
||||
FM3_GPIO->ADE &= ~(1<<7 | 1<<8); /* disable P17 AN07 and P18 AN08 function */
|
||||
FM3_GPIO->PFR1 = FM3_GPIO->PFR1 | (1<<7) | (1<<8) ;
|
||||
FM3_GPIO->EPFR07 = FM3_GPIO->EPFR07 | (3<<16) | (3<<18) ;
|
||||
|
||||
uart2.uart_device->SMR = SMR_MD_UART | SMR_SOE;;
|
||||
uart2.uart_device->BGR = (APB2_clock + (BPS/2))/BPS - 1; /* round */
|
||||
uart2.uart_device->ESCR = ESCR_DATABITS_8;
|
||||
uart2.uart_device->SCR = SCR_RXE | SCR_TXE | SCR_RIE;
|
||||
|
||||
/* register UART2 device */
|
||||
rt_hw_serial_register(&uart2_device,
|
||||
"uart2",
|
||||
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM,
|
||||
&uart2);
|
||||
#endif /**< #ifdef RT_USING_UART2 */
|
||||
|
||||
#ifdef RT_USING_UART4
|
||||
/* initialize UART4 */
|
||||
/* Set Uart Ch4 Port, SIN4_2:P05, SOT4_2:P06 */
|
||||
FM3_GPIO->PFR0 = FM3_GPIO->PFR0 | (1<<5) | (1<<6);
|
||||
FM3_GPIO->EPFR08 = FM3_GPIO->EPFR08 | (3<<4) | (3<<6);
|
||||
|
||||
uart4.uart_device->SMR = SMR_MD_UART | SMR_SOE;;
|
||||
uart4.uart_device->BGR = (APB2_clock + (BPS/2))/BPS - 1; /* round */
|
||||
uart4.uart_device->ESCR = ESCR_DATABITS_8;
|
||||
uart4.uart_device->SCR = SCR_RXE | SCR_TXE | SCR_RIE;
|
||||
|
||||
/* register UART4 device */
|
||||
rt_hw_serial_register(&uart4_device,
|
||||
"uart4",
|
||||
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM,
|
||||
&uart4);
|
||||
#endif /**< #ifdef RT_USING_UART4 */
|
||||
}
|
||||
|
||||
/*@}*/
|
||||
99
bsp/mb9bf618s/drivers/serial.h
Normal file
99
bsp/mb9bf618s/drivers/serial.h
Normal file
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
* File : serial.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2006-03-13 Bernard first version
|
||||
* 2011-05-15 lgnq modified according bernard's implementaion.
|
||||
*/
|
||||
|
||||
#ifndef __RT_HW_SERIAL_H__
|
||||
#define __RT_HW_SERIAL_H__
|
||||
|
||||
#include <rthw.h>
|
||||
#include <rtthread.h>
|
||||
|
||||
#include "board.h"
|
||||
|
||||
#define SMR_SOE 0x01U
|
||||
#define SMR_BDS 0x04U
|
||||
#define SMR_SBL 0x08U
|
||||
#define SMR_WUCR 0x10U
|
||||
#define SMR_MD_UART 0x00U
|
||||
#define SMR_MD_UART_MP 0x20U
|
||||
#define SMR_MD_SIO 0x40U
|
||||
#define SMR_MD_LIN 0x60U
|
||||
#define SMR_MD_I2C 0x80U
|
||||
|
||||
#define SCR_TXE 0x01U
|
||||
#define SCR_RXE 0x02U
|
||||
#define SCR_TBIE 0x04U
|
||||
#define SCR_TIE 0x08U
|
||||
#define SCR_RIE 0x10U
|
||||
#define SCR_UPGL 0x80U
|
||||
|
||||
#define SSR_TBI 0x01U
|
||||
#define SSR_TDRE 0x02U
|
||||
#define SSR_RDRF 0x04U
|
||||
#define SSR_ORE 0x08U
|
||||
#define SSR_FRE 0x10U
|
||||
#define SSR_PE 0x20U
|
||||
#define SSR_REC 0x80U
|
||||
|
||||
#define ESCR_P 0x08U
|
||||
#define ESCR_PEN 0x10U
|
||||
#define ESCR_INV 0x20U
|
||||
#define ESCR_ESBL 0x40U
|
||||
#define ESCR_FLWEN 0x80U
|
||||
#define ESCR_DATABITS_8 0x00U
|
||||
#define ESCR_DATABITS_5 0x01U
|
||||
#define ESCR_DATABITS_6 0x02U
|
||||
#define ESCR_DATABITS_7 0x03U
|
||||
#define ESCR_DATABITS_9 0x04U
|
||||
|
||||
#define BPS 115200 /* serial baudrate */
|
||||
|
||||
#define UART_RX_BUFFER_SIZE 64
|
||||
#define UART_TX_BUFFER_SIZE 64
|
||||
|
||||
struct serial_int_rx
|
||||
{
|
||||
rt_uint8_t rx_buffer[UART_RX_BUFFER_SIZE];
|
||||
rt_uint32_t read_index, save_index;
|
||||
};
|
||||
|
||||
struct serial_int_tx
|
||||
{
|
||||
rt_uint8_t tx_buffer[UART_TX_BUFFER_SIZE];
|
||||
rt_uint32_t write_index, save_index;
|
||||
};
|
||||
|
||||
/*
|
||||
* Enable/DISABLE Interrupt Controller
|
||||
*/
|
||||
/* deviation from MISRA-C:2004 Rule 19.7 */
|
||||
#define UART_ENABLE_IRQ(n) NVIC_EnableIRQ((n))
|
||||
#define UART_DISABLE_IRQ(n) NVIC_DisableIRQ((n))
|
||||
|
||||
struct serial_device
|
||||
{
|
||||
FM3_MFS03_UART_TypeDef* uart_device;
|
||||
/* irq number */
|
||||
IRQn_Type rx_irq, tx_irq;
|
||||
|
||||
/* rx structure */
|
||||
struct serial_int_rx* int_rx;
|
||||
/* tx structure */
|
||||
struct serial_int_tx* int_tx;
|
||||
};
|
||||
|
||||
void rt_hw_serial_isr(rt_device_t device);
|
||||
void rt_hw_serial_init(void);
|
||||
|
||||
#endif
|
||||
74
bsp/mb9bf618s/rtconfig.h
Normal file
74
bsp/mb9bf618s/rtconfig.h
Normal file
@@ -0,0 +1,74 @@
|
||||
/* RT-Thread config file */
|
||||
#ifndef __RTTHREAD_CFG_H__
|
||||
#define __RTTHREAD_CFG_H__
|
||||
|
||||
/* RT_NAME_MAX*/
|
||||
#define RT_NAME_MAX 8
|
||||
|
||||
/* RT_ALIGN_SIZE*/
|
||||
#define RT_ALIGN_SIZE 4
|
||||
|
||||
/* PRIORITY_MAX */
|
||||
#define RT_THREAD_PRIORITY_MAX 32
|
||||
|
||||
/* Tick per Second */
|
||||
#define RT_TICK_PER_SECOND 100
|
||||
|
||||
/* SECTION: RT_DEBUG */
|
||||
/* Thread Debug */
|
||||
#define RT_DEBUG
|
||||
#define RT_USING_OVERFLOW_CHECK
|
||||
|
||||
/* Using Hook */
|
||||
#define RT_USING_HOOK
|
||||
|
||||
/* SECTION: IPC */
|
||||
/* Using Semaphore */
|
||||
#define RT_USING_SEMAPHORE
|
||||
|
||||
/* Using Mutex */
|
||||
#define RT_USING_MUTEX
|
||||
|
||||
/* Using Event */
|
||||
#define RT_USING_EVENT
|
||||
|
||||
/* Using MailBox */
|
||||
#define RT_USING_MAILBOX
|
||||
|
||||
/* Using Message Queue */
|
||||
#define RT_USING_MESSAGEQUEUE
|
||||
|
||||
/* SECTION: Memory Management */
|
||||
/* Using Memory Pool Management*/
|
||||
#define RT_USING_MEMPOOL
|
||||
|
||||
/* Using Dynamic Heap Management */
|
||||
#define RT_USING_HEAP
|
||||
|
||||
/* Using Small MM */
|
||||
#define RT_USING_SMALL_MEM
|
||||
|
||||
// <bool name="RT_USING_COMPONENTS_INIT" description="Using RT-Thread components initialization" default="true" />
|
||||
#define RT_USING_COMPONENTS_INIT
|
||||
|
||||
/* SECTION: Device System */
|
||||
/* Using Device System */
|
||||
#define RT_USING_DEVICE
|
||||
|
||||
/* SECTION: Console options */
|
||||
/* #define RT_TINY_SIZE */
|
||||
#define RT_USING_CONSOLE
|
||||
/* the buffer size of console */
|
||||
#define RT_CONSOLEBUF_SIZE 128
|
||||
// <string name="RT_CONSOLE_DEVICE_NAME" description="The device name for console" default="uart1" />
|
||||
#define RT_CONSOLE_DEVICE_NAME "uart0"
|
||||
|
||||
/* SECTION: finsh, a C-Express shell */
|
||||
/* Using FinSH as Shell*/
|
||||
#define RT_USING_FINSH
|
||||
/* Using symbol table */
|
||||
#define FINSH_USING_SYMTAB
|
||||
#define FINSH_USING_DESCRIPTION
|
||||
#define FINSH_THREAD_STACK_SIZE 1024
|
||||
|
||||
#endif
|
||||
118
bsp/mb9bf618s/rtconfig.py
Normal file
118
bsp/mb9bf618s/rtconfig.py
Normal file
@@ -0,0 +1,118 @@
|
||||
# toolchains options
|
||||
ARCH='arm'
|
||||
CPU='cortex-m3'
|
||||
CROSS_TOOL='keil'
|
||||
|
||||
#device options
|
||||
# FM3_TYPE =
|
||||
# 'MB9B610S','MB9B610T',
|
||||
FM3_TYPE = 'MB9B610S'
|
||||
|
||||
# cross_tool provides the cross compiler
|
||||
# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR
|
||||
|
||||
if CROSS_TOOL == 'gcc':
|
||||
PLATFORM = 'gcc'
|
||||
EXEC_PATH = r'F:\Program Files\CodeSourcery\Sourcery_CodeBench_Lite_for_ARM_EABI_2013.05.23\bin'
|
||||
elif CROSS_TOOL == 'keil':
|
||||
PLATFORM = 'armcc'
|
||||
EXEC_PATH = r'E:/Keil'
|
||||
elif CROSS_TOOL == 'iar':
|
||||
PLATFORM = 'iar'
|
||||
IAR_PATH = r'C:\Program Files\IAR Systems\Embedded Workbench 6.0 Evaluation'
|
||||
|
||||
BUILD = 'debug'
|
||||
|
||||
if PLATFORM == 'gcc':
|
||||
# toolchains
|
||||
PREFIX = 'arm-none-eabi-'
|
||||
CC = PREFIX + 'gcc'
|
||||
AS = PREFIX + 'gcc'
|
||||
AR = PREFIX + 'ar'
|
||||
LINK = PREFIX + 'gcc'
|
||||
TARGET_EXT = 'axf'
|
||||
SIZE = PREFIX + 'size'
|
||||
OBJDUMP = PREFIX + 'objdump'
|
||||
OBJCPY = PREFIX + 'objcopy'
|
||||
|
||||
DEVICE = ' -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections'
|
||||
CFLAGS = DEVICE
|
||||
AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp'
|
||||
LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-fm3.map,-cref,-u,Reset_Handler -T rtthread-fm3.ld'
|
||||
|
||||
CPATH = ''
|
||||
LPATH = ''
|
||||
|
||||
if BUILD == 'debug':
|
||||
CFLAGS += ' -O0 -gdwarf-2'
|
||||
AFLAGS += ' -gdwarf-2'
|
||||
else:
|
||||
CFLAGS += ' -O2'
|
||||
|
||||
POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n'
|
||||
elif PLATFORM == 'armcc':
|
||||
# toolchains
|
||||
CC = 'armcc'
|
||||
AS = 'armasm'
|
||||
AR = 'armar'
|
||||
LINK = 'armlink'
|
||||
TARGET_EXT = 'axf'
|
||||
|
||||
DEVICE = ' --device DARMSTM'
|
||||
CFLAGS = DEVICE + ' --apcs=interwork'
|
||||
AFLAGS = DEVICE
|
||||
LFLAGS = DEVICE + ' --info sizes --info totals --info unused --info veneers --list rtthread.map --scatter rtthread-fm3.sct'
|
||||
|
||||
CFLAGS += ' -I' + EXEC_PATH + '/ARM/RV31/INC'
|
||||
LFLAGS += ' --libpath ' + EXEC_PATH + '/ARM/RV31/LIB'
|
||||
|
||||
EXEC_PATH += '/arm/bin40/'
|
||||
|
||||
if BUILD == 'debug':
|
||||
CFLAGS += ' -g -O0'
|
||||
AFLAGS += ' -g'
|
||||
else:
|
||||
CFLAGS += ' -O2'
|
||||
|
||||
POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET'
|
||||
|
||||
elif PLATFORM == 'iar':
|
||||
# toolchains
|
||||
CC = 'iccarm'
|
||||
AS = 'iasmarm'
|
||||
AR = 'iarchive'
|
||||
LINK = 'ilinkarm'
|
||||
TARGET_EXT = 'out'
|
||||
|
||||
CFLAGS = ''
|
||||
CFLAGS += ' --diag_suppress Pa050'
|
||||
CFLAGS += ' --no_cse'
|
||||
CFLAGS += ' --no_unroll'
|
||||
CFLAGS += ' --no_inline'
|
||||
CFLAGS += ' --no_code_motion'
|
||||
CFLAGS += ' --no_tbaa'
|
||||
CFLAGS += ' --no_clustering'
|
||||
CFLAGS += ' --no_scheduling'
|
||||
CFLAGS += ' --debug'
|
||||
CFLAGS += ' --endian=little'
|
||||
CFLAGS += ' --cpu=Cortex-M3'
|
||||
CFLAGS += ' -e'
|
||||
CFLAGS += ' --fpu=None'
|
||||
CFLAGS += ' --dlib_config "' + IAR_PATH + '/arm/INC/c/DLib_Config_Normal.h"'
|
||||
CFLAGS += ' -Ol'
|
||||
CFLAGS += ' --use_c++_inline'
|
||||
|
||||
AFLAGS = ''
|
||||
AFLAGS += ' -s+'
|
||||
AFLAGS += ' -w+'
|
||||
AFLAGS += ' -r'
|
||||
AFLAGS += ' --cpu Cortex-M3'
|
||||
AFLAGS += ' --fpu None'
|
||||
AFLAGS += ' -I"' + IAR_PATH + '/arm/INC"'
|
||||
|
||||
LFLAGS = ' --config mb9bf506.icf'
|
||||
LFLAGS += ' --semihosting'
|
||||
LFLAGS += ' --entry __iar_program_start'
|
||||
|
||||
EXEC_PATH = IAR_PATH + '/arm/bin/'
|
||||
POST_ACTION = 'ielftool.exe --srec --verbose $TARGET rtthread.srec'
|
||||
33
bsp/mb9bf618s/rtthread-fm3.icf
Normal file
33
bsp/mb9bf618s/rtthread-fm3.icf
Normal file
@@ -0,0 +1,33 @@
|
||||
/*###ICF### Section handled by ICF editor, don't touch! ****/
|
||||
/*-Editor annotation file-*/
|
||||
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
|
||||
/*-Specials-*/
|
||||
define symbol __ICFEDIT_intvec_start__ = 0x0;
|
||||
/*-Memory Regions-*/
|
||||
define symbol __ICFEDIT_region_ROM_start__ = 0x0;
|
||||
define symbol __ICFEDIT_region_ROM_end__ = 0x000FFFFF;
|
||||
define symbol __ICFEDIT_region_RAM_start__ = 0x1FFF0000;
|
||||
define symbol __ICFEDIT_region_RAM_end__ = 0x2000FFFF;
|
||||
/*-Sizes-*/
|
||||
define symbol __ICFEDIT_size_cstack__ = 0x400;
|
||||
define symbol __ICFEDIT_size_heap__ = 0x000;
|
||||
/**** End of ICF editor section. ###ICF###*/
|
||||
|
||||
|
||||
define memory mem with size = 4G;
|
||||
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
|
||||
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
|
||||
|
||||
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
|
||||
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
|
||||
|
||||
initialize by copy { readwrite };
|
||||
do not initialize { section .noinit };
|
||||
|
||||
keep { section FSymTab };
|
||||
keep { section VSymTab };
|
||||
keep { section .rti_fn* };
|
||||
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
|
||||
|
||||
place in ROM_region { readonly };
|
||||
place in RAM_region { readwrite, block CSTACK, last block HEAP };
|
||||
143
bsp/mb9bf618s/rtthread-fm3.ld
Normal file
143
bsp/mb9bf618s/rtthread-fm3.ld
Normal file
@@ -0,0 +1,143 @@
|
||||
/*
|
||||
* linker script for Fujitsu with GNU ld
|
||||
* aozima 2013-07-13
|
||||
*/
|
||||
|
||||
/* Program Entry, set to mark it as "used" and avoid gc */
|
||||
MEMORY
|
||||
{
|
||||
CODE (rx) : ORIGIN = 0x00000000, LENGTH = 1M /* 1MB flash */
|
||||
DATA (rw) : ORIGIN = 0x20000000, LENGTH = 128k /* 128KB sram, 64KB SRAM0 + 64KB SRAM1 */
|
||||
}
|
||||
ENTRY(Reset_Handler)
|
||||
_system_stack_size = 0x400;
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text :
|
||||
{
|
||||
. = ALIGN(4);
|
||||
_isr_vector = .; /* define isr_vector start address */
|
||||
_stext = .;
|
||||
KEEP(*(.isr_vector)) /* Startup code */
|
||||
. = ALIGN(4);
|
||||
*(.text) /* remaining code */
|
||||
*(.text.*) /* remaining code */
|
||||
*(.rodata) /* read-only data (constants) */
|
||||
*(.rodata*)
|
||||
*(.glue_7)
|
||||
*(.glue_7t)
|
||||
*(.gnu.linkonce.t*)
|
||||
|
||||
/* section information for finsh shell */
|
||||
. = ALIGN(4);
|
||||
__fsymtab_start = .;
|
||||
KEEP(*(FSymTab))
|
||||
__fsymtab_end = .;
|
||||
. = ALIGN(4);
|
||||
__vsymtab_start = .;
|
||||
KEEP(*(VSymTab))
|
||||
__vsymtab_end = .;
|
||||
. = ALIGN(4);
|
||||
|
||||
/* section information for initial. */
|
||||
. = ALIGN(4);
|
||||
__rt_init_start = .;
|
||||
KEEP(*(SORT(.rti_fn*)))
|
||||
__rt_init_end = .;
|
||||
. = ALIGN(4);
|
||||
|
||||
. = ALIGN(4);
|
||||
_etext = .;
|
||||
} > CODE = 0
|
||||
|
||||
/* .ARM.exidx is sorted, so has to go in its own output section. */
|
||||
__exidx_start = .;
|
||||
.ARM.exidx :
|
||||
{
|
||||
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
|
||||
|
||||
/* This is used by the startup in order to initialize the .data secion */
|
||||
_sidata = .;
|
||||
} > CODE
|
||||
__exidx_end = .;
|
||||
|
||||
/* .data section which is used for initialized data */
|
||||
|
||||
.data : AT (_sidata)
|
||||
{
|
||||
. = ALIGN(4);
|
||||
/* This is used by the startup in order to initialize the .data secion */
|
||||
_sdata = . ;
|
||||
|
||||
*(.data)
|
||||
*(.data.*)
|
||||
*(.gnu.linkonce.d*)
|
||||
|
||||
. = ALIGN(4);
|
||||
/* This is used by the startup in order to initialize the .data secion */
|
||||
_edata = . ;
|
||||
} >DATA
|
||||
|
||||
.stack :
|
||||
{
|
||||
. = . + _system_stack_size;
|
||||
. = ALIGN(4);
|
||||
_estack = .;
|
||||
} >DATA
|
||||
|
||||
__bss_start = .;
|
||||
.bss :
|
||||
{
|
||||
. = ALIGN(4);
|
||||
/* This is used by the startup in order to initialize the .bss secion */
|
||||
_sbss = .;
|
||||
|
||||
*(.bss)
|
||||
*(.bss.*)
|
||||
*(COMMON)
|
||||
|
||||
. = ALIGN(4);
|
||||
/* This is used by the startup in order to initialize the .bss secion */
|
||||
_ebss = . ;
|
||||
|
||||
*(.bss.init)
|
||||
} > DATA
|
||||
__bss_end = .;
|
||||
|
||||
_end = .;
|
||||
|
||||
/* Stabs debugging sections. */
|
||||
.stab 0 : { *(.stab) }
|
||||
.stabstr 0 : { *(.stabstr) }
|
||||
.stab.excl 0 : { *(.stab.excl) }
|
||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
||||
.stab.index 0 : { *(.stab.index) }
|
||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
||||
.comment 0 : { *(.comment) }
|
||||
/* DWARF debug sections.
|
||||
* Symbols in the DWARF debugging sections are relative to the beginning
|
||||
* of the section so we begin them at 0. */
|
||||
/* DWARF 1 */
|
||||
.debug 0 : { *(.debug) }
|
||||
.line 0 : { *(.line) }
|
||||
/* GNU DWARF 1 extensions */
|
||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
||||
/* DWARF 1.1 and DWARF 2 */
|
||||
.debug_aranges 0 : { *(.debug_aranges) }
|
||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
||||
/* DWARF 2 */
|
||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
||||
.debug_line 0 : { *(.debug_line) }
|
||||
.debug_frame 0 : { *(.debug_frame) }
|
||||
.debug_str 0 : { *(.debug_str) }
|
||||
.debug_loc 0 : { *(.debug_loc) }
|
||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
||||
/* SGI/MIPS DWARF 2 extensions */
|
||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
||||
.debug_typenames 0 : { *(.debug_typenames) }
|
||||
.debug_varnames 0 : { *(.debug_varnames) }
|
||||
}
|
||||
15
bsp/mb9bf618s/rtthread-fm3.sct
Normal file
15
bsp/mb9bf618s/rtthread-fm3.sct
Normal file
@@ -0,0 +1,15 @@
|
||||
; *************************************************************
|
||||
; *** Scatter-Loading Description File generated by uVision ***
|
||||
; *************************************************************
|
||||
|
||||
LR_IROM1 0x00000000 0x00100000 { ; load region size_region
|
||||
ER_IROM1 0x00000000 0x00100000 { ; load address = execution address
|
||||
*.o (RESET, +First)
|
||||
*(InRoot$$Sections)
|
||||
.ANY (+RO)
|
||||
}
|
||||
RW_IRAM1 0x1FFF0000 0x00020000 { ; RW data
|
||||
.ANY (+RW +ZI)
|
||||
}
|
||||
}
|
||||
|
||||
1839
bsp/mb9bf618s/template.ewp
Normal file
1839
bsp/mb9bf618s/template.ewp
Normal file
File diff suppressed because it is too large
Load Diff
394
bsp/mb9bf618s/template.uvproj
Normal file
394
bsp/mb9bf618s/template.uvproj
Normal file
@@ -0,0 +1,394 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
|
||||
|
||||
<SchemaVersion>1.1</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Targets>
|
||||
<Target>
|
||||
<TargetName>rtthread</TargetName>
|
||||
<ToolsetNumber>0x4</ToolsetNumber>
|
||||
<ToolsetName>ARM-ADS</ToolsetName>
|
||||
<TargetOption>
|
||||
<TargetCommonOption>
|
||||
<Device>MB9BF618S</Device>
|
||||
<Vendor>Fujitsu Semiconductors</Vendor>
|
||||
<Cpu>IRAM(0x20000000-0x2000FFFF) IRAM2(0x1FFF0000-0x1FFFFFFF) IROM(0x00000000-0x000FFFFF) CLOCK(4000000) CPUTYPE("Cortex-M3")</Cpu>
|
||||
<FlashUtilSpec></FlashUtilSpec>
|
||||
<StartupFile>"Startup\Fujitsu\MB9BF610\startup_mb9bf61x.s" ("Fujitsu MB9BF610 Startup Code")</StartupFile>
|
||||
<FlashDriverDll>UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0MB9BFx08_1024 -FS00 -FL0100000)</FlashDriverDll>
|
||||
<DeviceId>6149</DeviceId>
|
||||
<RegisterFile>mb9bf618s.h</RegisterFile>
|
||||
<MemoryEnv></MemoryEnv>
|
||||
<Cmp></Cmp>
|
||||
<Asm></Asm>
|
||||
<Linker></Linker>
|
||||
<OHString></OHString>
|
||||
<InfinionOptionDll></InfinionOptionDll>
|
||||
<SLE66CMisc></SLE66CMisc>
|
||||
<SLE66AMisc></SLE66AMisc>
|
||||
<SLE66LinkerMisc></SLE66LinkerMisc>
|
||||
<SFDFile>SFD\Fujitsu\MB9BF610\MB9BF618S.SFR</SFDFile>
|
||||
<UseEnv>0</UseEnv>
|
||||
<BinPath></BinPath>
|
||||
<IncludePath></IncludePath>
|
||||
<LibPath></LibPath>
|
||||
<RegisterFilePath>Fujitsu\MB9BF610\</RegisterFilePath>
|
||||
<DBRegisterFilePath>Fujitsu\MB9BF610\</DBRegisterFilePath>
|
||||
<TargetStatus>
|
||||
<Error>0</Error>
|
||||
<ExitCodeStop>0</ExitCodeStop>
|
||||
<ButtonStop>0</ButtonStop>
|
||||
<NotGenerated>0</NotGenerated>
|
||||
<InvalidFlash>1</InvalidFlash>
|
||||
</TargetStatus>
|
||||
<OutputDirectory>.\build\</OutputDirectory>
|
||||
<OutputName>rtthread-fm3</OutputName>
|
||||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>0</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>0</BrowseInformation>
|
||||
<ListingPath>.\build\</ListingPath>
|
||||
<HexFormatSelection>1</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
<CreateBatchFile>0</CreateBatchFile>
|
||||
<BeforeCompile>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopU1X>0</nStopU1X>
|
||||
<nStopU2X>0</nStopU2X>
|
||||
</BeforeCompile>
|
||||
<BeforeMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
</BeforeMake>
|
||||
<AfterMake>
|
||||
<RunUserProg1>1</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name>fromelf --bin !L --output rtthread.bin</UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
</AfterMake>
|
||||
<SelectedForBatchBuild>0</SelectedForBatchBuild>
|
||||
<SVCSIdString></SVCSIdString>
|
||||
</TargetCommonOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>0</UseCPPCompiler>
|
||||
<RVCTCodeConst>0</RVCTCodeConst>
|
||||
<RVCTZI>0</RVCTZI>
|
||||
<RVCTOtherData>0</RVCTOtherData>
|
||||
<ModuleSelection>0</ModuleSelection>
|
||||
<IncludeInBuild>1</IncludeInBuild>
|
||||
<AlwaysBuild>0</AlwaysBuild>
|
||||
<GenerateAssemblyFile>0</GenerateAssemblyFile>
|
||||
<AssembleAssemblyFile>0</AssembleAssemblyFile>
|
||||
<PublicsOnly>0</PublicsOnly>
|
||||
<StopOnExitCode>3</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
</CommonProperty>
|
||||
<DllOption>
|
||||
<SimDllName>SARMCM3.DLL</SimDllName>
|
||||
<SimDllArguments>-MPU</SimDllArguments>
|
||||
<SimDlgDll>DCM.DLL</SimDlgDll>
|
||||
<SimDlgDllArguments>-pCM3</SimDlgDllArguments>
|
||||
<TargetDllName>SARMCM3.DLL</TargetDllName>
|
||||
<TargetDllArguments>-MPU</TargetDllArguments>
|
||||
<TargetDlgDll>TCM.DLL</TargetDlgDll>
|
||||
<TargetDlgDllArguments>-pCM3</TargetDlgDllArguments>
|
||||
</DllOption>
|
||||
<DebugOption>
|
||||
<OPTHX>
|
||||
<HexSelection>1</HexSelection>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
<Oh166RecLen>16</Oh166RecLen>
|
||||
</OPTHX>
|
||||
<Simulator>
|
||||
<UseSimulator>0</UseSimulator>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>1</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>1</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<LimitSpeedToRealTime>0</LimitSpeedToRealTime>
|
||||
</Simulator>
|
||||
<Target>
|
||||
<UseTarget>1</UseTarget>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>0</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>0</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<RestoreTracepoints>0</RestoreTracepoints>
|
||||
</Target>
|
||||
<RunDebugAfterBuild>0</RunDebugAfterBuild>
|
||||
<TargetSelection>7</TargetSelection>
|
||||
<SimDlls>
|
||||
<CpuDll></CpuDll>
|
||||
<CpuDllArguments></CpuDllArguments>
|
||||
<PeripheralDll></PeripheralDll>
|
||||
<PeripheralDllArguments></PeripheralDllArguments>
|
||||
<InitializationFile></InitializationFile>
|
||||
</SimDlls>
|
||||
<TargetDlls>
|
||||
<CpuDll></CpuDll>
|
||||
<CpuDllArguments></CpuDllArguments>
|
||||
<PeripheralDll></PeripheralDll>
|
||||
<PeripheralDllArguments></PeripheralDllArguments>
|
||||
<InitializationFile></InitializationFile>
|
||||
<Driver>Segger\JL2CM3.dll</Driver>
|
||||
</TargetDlls>
|
||||
</DebugOption>
|
||||
<Utilities>
|
||||
<Flash1>
|
||||
<UseTargetDll>1</UseTargetDll>
|
||||
<UseExternalTool>0</UseExternalTool>
|
||||
<RunIndependent>0</RunIndependent>
|
||||
<UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
|
||||
<Capability>1</Capability>
|
||||
<DriverSelection>4099</DriverSelection>
|
||||
</Flash1>
|
||||
<bUseTDR>0</bUseTDR>
|
||||
<Flash2>Segger\JL2CM3.dll</Flash2>
|
||||
<Flash3>"" ()</Flash3>
|
||||
<Flash4></Flash4>
|
||||
</Utilities>
|
||||
<TargetArmAds>
|
||||
<ArmAdsMisc>
|
||||
<GenerateListings>0</GenerateListings>
|
||||
<asHll>1</asHll>
|
||||
<asAsm>1</asAsm>
|
||||
<asMacX>1</asMacX>
|
||||
<asSyms>1</asSyms>
|
||||
<asFals>1</asFals>
|
||||
<asDbgD>1</asDbgD>
|
||||
<asForm>1</asForm>
|
||||
<ldLst>0</ldLst>
|
||||
<ldmm>1</ldmm>
|
||||
<ldXref>1</ldXref>
|
||||
<BigEnd>0</BigEnd>
|
||||
<AdsALst>1</AdsALst>
|
||||
<AdsACrf>1</AdsACrf>
|
||||
<AdsANop>0</AdsANop>
|
||||
<AdsANot>0</AdsANot>
|
||||
<AdsLLst>1</AdsLLst>
|
||||
<AdsLmap>1</AdsLmap>
|
||||
<AdsLcgr>1</AdsLcgr>
|
||||
<AdsLsym>1</AdsLsym>
|
||||
<AdsLszi>1</AdsLszi>
|
||||
<AdsLtoi>1</AdsLtoi>
|
||||
<AdsLsun>1</AdsLsun>
|
||||
<AdsLven>1</AdsLven>
|
||||
<AdsLsxf>1</AdsLsxf>
|
||||
<RvctClst>0</RvctClst>
|
||||
<GenPPlst>0</GenPPlst>
|
||||
<AdsCpuType>"Cortex-M3"</AdsCpuType>
|
||||
<RvctDeviceName></RvctDeviceName>
|
||||
<mOS>0</mOS>
|
||||
<uocRom>0</uocRom>
|
||||
<uocRam>0</uocRam>
|
||||
<hadIROM>1</hadIROM>
|
||||
<hadIRAM>1</hadIRAM>
|
||||
<hadXRAM>0</hadXRAM>
|
||||
<uocXRam>0</uocXRam>
|
||||
<RvdsVP>0</RvdsVP>
|
||||
<hadIRAM2>1</hadIRAM2>
|
||||
<hadIROM2>0</hadIROM2>
|
||||
<StupSel>8</StupSel>
|
||||
<useUlib>0</useUlib>
|
||||
<EndSel>0</EndSel>
|
||||
<uLtcg>0</uLtcg>
|
||||
<RoSelD>3</RoSelD>
|
||||
<RwSelD>3</RwSelD>
|
||||
<CodeSel>0</CodeSel>
|
||||
<OptFeed>0</OptFeed>
|
||||
<NoZi1>0</NoZi1>
|
||||
<NoZi2>0</NoZi2>
|
||||
<NoZi3>0</NoZi3>
|
||||
<NoZi4>0</NoZi4>
|
||||
<NoZi5>0</NoZi5>
|
||||
<Ro1Chk>0</Ro1Chk>
|
||||
<Ro2Chk>0</Ro2Chk>
|
||||
<Ro3Chk>0</Ro3Chk>
|
||||
<Ir1Chk>1</Ir1Chk>
|
||||
<Ir2Chk>0</Ir2Chk>
|
||||
<Ra1Chk>0</Ra1Chk>
|
||||
<Ra2Chk>0</Ra2Chk>
|
||||
<Ra3Chk>0</Ra3Chk>
|
||||
<Im1Chk>1</Im1Chk>
|
||||
<Im2Chk>0</Im2Chk>
|
||||
<OnChipMemories>
|
||||
<Ocm1>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm1>
|
||||
<Ocm2>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm2>
|
||||
<Ocm3>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm3>
|
||||
<Ocm4>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm4>
|
||||
<Ocm5>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm5>
|
||||
<Ocm6>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm6>
|
||||
<IRAM>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x20000000</StartAddress>
|
||||
<Size>0x10000</Size>
|
||||
</IRAM>
|
||||
<IROM>
|
||||
<Type>1</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x100000</Size>
|
||||
</IROM>
|
||||
<XRAM>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRAM>
|
||||
<OCR_RVCT1>
|
||||
<Type>1</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</OCR_RVCT1>
|
||||
<OCR_RVCT2>
|
||||
<Type>1</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</OCR_RVCT2>
|
||||
<OCR_RVCT3>
|
||||
<Type>1</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</OCR_RVCT3>
|
||||
<OCR_RVCT4>
|
||||
<Type>1</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x100000</Size>
|
||||
</OCR_RVCT4>
|
||||
<OCR_RVCT5>
|
||||
<Type>1</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</OCR_RVCT5>
|
||||
<OCR_RVCT6>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</OCR_RVCT6>
|
||||
<OCR_RVCT7>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</OCR_RVCT7>
|
||||
<OCR_RVCT8>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</OCR_RVCT8>
|
||||
<OCR_RVCT9>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x1fff0000</StartAddress>
|
||||
<Size>0x20000</Size>
|
||||
</OCR_RVCT9>
|
||||
<OCR_RVCT10>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</OCR_RVCT10>
|
||||
</OnChipMemories>
|
||||
<RvctStartVector></RvctStartVector>
|
||||
</ArmAdsMisc>
|
||||
<Cads>
|
||||
<interw>1</interw>
|
||||
<Optim>1</Optim>
|
||||
<oTime>0</oTime>
|
||||
<SplitLS>0</SplitLS>
|
||||
<OneElfS>1</OneElfS>
|
||||
<Strict>0</Strict>
|
||||
<EnumInt>0</EnumInt>
|
||||
<PlainCh>0</PlainCh>
|
||||
<Ropi>0</Ropi>
|
||||
<Rwpi>0</Rwpi>
|
||||
<wLevel>0</wLevel>
|
||||
<uThumb>0</uThumb>
|
||||
<uSurpInc>0</uSurpInc>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
<Aads>
|
||||
<interw>1</interw>
|
||||
<Ropi>0</Ropi>
|
||||
<Rwpi>0</Rwpi>
|
||||
<thumb>0</thumb>
|
||||
<SplitLS>0</SplitLS>
|
||||
<SwStkChk>0</SwStkChk>
|
||||
<NoWarn>0</NoWarn>
|
||||
<uSurpInc>0</uSurpInc>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Aads>
|
||||
<LDads>
|
||||
<umfTarg>0</umfTarg>
|
||||
<Ropi>0</Ropi>
|
||||
<Rwpi>0</Rwpi>
|
||||
<noStLib>0</noStLib>
|
||||
<RepFail>1</RepFail>
|
||||
<useFile>0</useFile>
|
||||
<TextAddressRange>0x08000000</TextAddressRange>
|
||||
<DataAddressRange>0x20000000</DataAddressRange>
|
||||
<ScatterFile>rtthread-fm3.sct</ScatterFile>
|
||||
<IncludeLibs></IncludeLibs>
|
||||
<IncludeLibsPath></IncludeLibsPath>
|
||||
<Misc></Misc>
|
||||
<LinkerInputFile></LinkerInputFile>
|
||||
<DisabledWarnings></DisabledWarnings>
|
||||
</LDads>
|
||||
</TargetArmAds>
|
||||
</TargetOption>
|
||||
</Target>
|
||||
</Targets>
|
||||
|
||||
</Project>
|
||||
Reference in New Issue
Block a user