Refs #139. Updated Rowley Crossworks projects to version 3.7.6 of the tool.
git-svn-id: https://svn.code.sf.net/p/openblt/code/trunk@224 5dc33758-31d5-4daf-9ae8-b24bf3d40d73
This commit is contained in:
parent
34030310d1
commit
4562bc4280
Binary file not shown.
|
@ -1,887 +0,0 @@
|
|||
Archive member included because of file (symbol)
|
||||
|
||||
C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
ARM Flash Debug/../../obj/can.o (__divsi3)
|
||||
|
||||
Discarded input sections
|
||||
|
||||
.text 0x00000000 0x0 ARM Flash Debug/../../obj/hooks.o
|
||||
.data 0x00000000 0x0 ARM Flash Debug/../../obj/hooks.o
|
||||
.bss 0x00000000 0x0 ARM Flash Debug/../../obj/hooks.o
|
||||
.text 0x00000000 0x0 ARM Flash Debug/../../obj/main.o
|
||||
.data 0x00000000 0x0 ARM Flash Debug/../../obj/main.o
|
||||
.bss 0x00000000 0x0 ARM Flash Debug/../../obj/main.o
|
||||
.text 0x00000000 0x0 ARM Flash Debug/../../obj/extflash.o
|
||||
.data 0x00000000 0x0 ARM Flash Debug/../../obj/extflash.o
|
||||
.bss 0x00000000 0x0 ARM Flash Debug/../../obj/extflash.o
|
||||
.text 0x00000000 0x0 ARM Flash Debug/../../obj/cstart.o
|
||||
.data 0x00000000 0x0 ARM Flash Debug/../../obj/cstart.o
|
||||
.bss 0x00000000 0x0 ARM Flash Debug/../../obj/cstart.o
|
||||
.stack 0x00000000 0x0 ARM Flash Debug/../../obj/cstart.o
|
||||
.stack_abt 0x00000000 0x0 ARM Flash Debug/../../obj/cstart.o
|
||||
.stack_irq 0x00000000 0x0 ARM Flash Debug/../../obj/cstart.o
|
||||
.stack_fiq 0x00000000 0x0 ARM Flash Debug/../../obj/cstart.o
|
||||
.stack_svc 0x00000000 0x0 ARM Flash Debug/../../obj/cstart.o
|
||||
.stack_und 0x00000000 0x0 ARM Flash Debug/../../obj/cstart.o
|
||||
.heap 0x00000000 0x0 ARM Flash Debug/../../obj/cstart.o
|
||||
.text 0x00000000 0x0 ARM Flash Debug/../../obj/flash.o
|
||||
.data 0x00000000 0x0 ARM Flash Debug/../../obj/flash.o
|
||||
.bss 0x00000000 0x0 ARM Flash Debug/../../obj/flash.o
|
||||
.text 0x00000000 0x0 ARM Flash Debug/../../obj/cpu_comp.o
|
||||
.data 0x00000000 0x0 ARM Flash Debug/../../obj/cpu_comp.o
|
||||
.bss 0x00000000 0x0 ARM Flash Debug/../../obj/cpu_comp.o
|
||||
.text.CpuIrqEnable
|
||||
0x00000000 0x18 ARM Flash Debug/../../obj/cpu_comp.o
|
||||
.text 0x00000000 0x0 ARM Flash Debug/../../obj/can.o
|
||||
.data 0x00000000 0x0 ARM Flash Debug/../../obj/can.o
|
||||
.bss 0x00000000 0x0 ARM Flash Debug/../../obj/can.o
|
||||
.text 0x00000000 0x0 ARM Flash Debug/../../obj/cpu.o
|
||||
.data 0x00000000 0x0 ARM Flash Debug/../../obj/cpu.o
|
||||
.bss 0x00000000 0x0 ARM Flash Debug/../../obj/cpu.o
|
||||
.text.CpuReset
|
||||
0x00000000 0x10 ARM Flash Debug/../../obj/cpu.o
|
||||
.text 0x00000000 0x0 ARM Flash Debug/../../obj/nvm.o
|
||||
.data 0x00000000 0x0 ARM Flash Debug/../../obj/nvm.o
|
||||
.bss 0x00000000 0x0 ARM Flash Debug/../../obj/nvm.o
|
||||
.text 0x00000000 0x0 ARM Flash Debug/../../obj/timer.o
|
||||
.data 0x00000000 0x0 ARM Flash Debug/../../obj/timer.o
|
||||
.bss 0x00000000 0x0 ARM Flash Debug/../../obj/timer.o
|
||||
.text 0x00000000 0x0 ARM Flash Debug/../../obj/uart.o
|
||||
.data 0x00000000 0x0 ARM Flash Debug/../../obj/uart.o
|
||||
.bss 0x00000000 0x0 ARM Flash Debug/../../obj/uart.o
|
||||
.text 0x00000000 0x0 ARM Flash Debug/../../obj/assert.o
|
||||
.data 0x00000000 0x0 ARM Flash Debug/../../obj/assert.o
|
||||
.bss 0x00000000 0x0 ARM Flash Debug/../../obj/assert.o
|
||||
.text 0x00000000 0x0 ARM Flash Debug/../../obj/backdoor.o
|
||||
.data 0x00000000 0x0 ARM Flash Debug/../../obj/backdoor.o
|
||||
.bss 0x00000000 0x0 ARM Flash Debug/../../obj/backdoor.o
|
||||
.text 0x00000000 0x0 ARM Flash Debug/../../obj/boot.o
|
||||
.data 0x00000000 0x0 ARM Flash Debug/../../obj/boot.o
|
||||
.bss 0x00000000 0x0 ARM Flash Debug/../../obj/boot.o
|
||||
.text 0x00000000 0x0 ARM Flash Debug/../../obj/com.o
|
||||
.data 0x00000000 0x0 ARM Flash Debug/../../obj/com.o
|
||||
.bss 0x00000000 0x0 ARM Flash Debug/../../obj/com.o
|
||||
.text 0x00000000 0x0 ARM Flash Debug/../../obj/cop.o
|
||||
.data 0x00000000 0x0 ARM Flash Debug/../../obj/cop.o
|
||||
.bss 0x00000000 0x0 ARM Flash Debug/../../obj/cop.o
|
||||
.text 0x00000000 0x0 ARM Flash Debug/../../obj/xcp.o
|
||||
.data 0x00000000 0x0 ARM Flash Debug/../../obj/xcp.o
|
||||
.bss 0x00000000 0x0 ARM Flash Debug/../../obj/xcp.o
|
||||
.text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc._call_via_r4
|
||||
0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc._call_via_r1
|
||||
0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc._call_via_r2
|
||||
0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc._call_via_r3
|
||||
0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc._call_via_r0
|
||||
0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc._call_via_r5
|
||||
0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc._call_via_sp
|
||||
0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc._call_via_r7
|
||||
0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc._call_via_r8
|
||||
0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc._call_via_r9
|
||||
0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc._call_via_sl
|
||||
0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc._call_via_r6
|
||||
0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc._call_via_lr
|
||||
0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc._call_via_ip
|
||||
0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc._call_via_fp
|
||||
0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.__int64_umod
|
||||
0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.__int64_asr
|
||||
0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.__int64_div
|
||||
0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.__int64_lsl
|
||||
0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.__int64_lsr
|
||||
0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.__int64_mod
|
||||
0x00000000 0x70 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.__int64_udivmod
|
||||
0x00000000 0x90 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.__aeabi_ldivmod
|
||||
0x00000000 0x80 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.__int64_cmp
|
||||
0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.__int64_ucmp
|
||||
0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.muldi3
|
||||
0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.__int32_umod
|
||||
0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.__aeabi_uidivmod
|
||||
0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.ctl_count_leading_zeros_32
|
||||
0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.ctl_count_leading_zeros_16
|
||||
0x00000000 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.__gnu_thumb1_case_shi
|
||||
0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.__gnu_thumb1_case_si
|
||||
0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.__gnu_thumb1_case_sqi
|
||||
0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.__gnu_thumb1_case_uhi
|
||||
0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
.text.libc.__gnu_thumb1_case_uqi
|
||||
0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
|
||||
Memory Configuration
|
||||
|
||||
Name Origin Length Attributes
|
||||
UNPLACED_SECTIONS 0xffffffff 0x00000000 xw
|
||||
AHB_Peripherals 0xffe00000 0x00200000 xw
|
||||
VPB_Peripherals 0xe0000000 0x00200000 xw
|
||||
BANK3 0x83000000 0x01000000 xw
|
||||
BANK2 0x82000000 0x01000000 xw
|
||||
External_SRAM 0x81000000 0x00100000 xw
|
||||
External_FLASH 0x80000000 0x00400000 xr
|
||||
SRAM 0x40000200 0x00001ce0 xw
|
||||
FLASH 0x00000000 0x00002000 xr
|
||||
*default* 0x00000000 0xffffffff
|
||||
|
||||
Linker script and memory map
|
||||
|
||||
0xffe00000 __AHB_Peripherals_segment_start__ = 0xffe00000
|
||||
0x00000000 __AHB_Peripherals_segment_end__ = 0x0
|
||||
0xe0000000 __VPB_Peripherals_segment_start__ = 0xe0000000
|
||||
0xe0200000 __VPB_Peripherals_segment_end__ = 0xe0200000
|
||||
0x83000000 __BANK3_segment_start__ = 0x83000000
|
||||
0x84000000 __BANK3_segment_end__ = 0x84000000
|
||||
0x82000000 __BANK2_segment_start__ = 0x82000000
|
||||
0x83000000 __BANK2_segment_end__ = 0x83000000
|
||||
0x81000000 __External_SRAM_segment_start__ = 0x81000000
|
||||
0x81100000 __External_SRAM_segment_end__ = 0x81100000
|
||||
0x80000000 __External_FLASH_segment_start__ = 0x80000000
|
||||
0x80400000 __External_FLASH_segment_end__ = 0x80400000
|
||||
0x40000200 __SRAM_segment_start__ = 0x40000200
|
||||
0x40001ee0 __SRAM_segment_end__ = 0x40001ee0
|
||||
0x00000000 __FLASH_segment_start__ = 0x0
|
||||
0x00002000 __FLASH_segment_end__ = 0x2000
|
||||
0x00000400 __STACKSIZE__ = 0x400
|
||||
0x00000100 __STACKSIZE_IRQ__ = 0x100
|
||||
0x00000100 __STACKSIZE_FIQ__ = 0x100
|
||||
0x00000000 __STACKSIZE_SVC__ = 0x0
|
||||
0x00000000 __STACKSIZE_ABT__ = 0x0
|
||||
0x00000000 __STACKSIZE_UND__ = 0x0
|
||||
0x00000400 __HEAPSIZE__ = 0x400
|
||||
0x80000000 __text2_load_start__ = ALIGN (__External_FLASH_segment_start__, 0x4)
|
||||
|
||||
.text2 0x80000000 0x0
|
||||
0x80000000 __text2_start__ = .
|
||||
*(.text2 .text2.*)
|
||||
0x80000000 __text2_end__ = (__text2_start__ + SIZEOF (.text2))
|
||||
0x80000000 __text2_load_end__ = __text2_end__
|
||||
0x00000001 . = ASSERT (((__text2_end__ >= __External_FLASH_segment_start__) && (__text2_end__ <= (__External_FLASH_segment_start__ + 0x400000))), error: .text2 is too large to fit in External_FLASH memory segment)
|
||||
0x80000000 __rodata2_load_start__ = ALIGN (__text2_end__, 0x4)
|
||||
|
||||
.rodata2 0x80000000 0x0
|
||||
0x80000000 __rodata2_start__ = .
|
||||
*(.rodata2 .rodata2.*)
|
||||
0x80000000 __rodata2_end__ = (__rodata2_start__ + SIZEOF (.rodata2))
|
||||
0x80000000 __rodata2_load_end__ = __rodata2_end__
|
||||
0x00000001 . = ASSERT (((__rodata2_end__ >= __External_FLASH_segment_start__) && (__rodata2_end__ <= (__External_FLASH_segment_start__ + 0x400000))), error: .rodata2 is too large to fit in External_FLASH memory segment)
|
||||
0x80000000 __data2_load_start__ = ALIGN (__rodata2_end__, 0x4)
|
||||
|
||||
.data2 0x81000000 0x0 load address 0x80000000
|
||||
0x81000000 __data2_start__ = .
|
||||
*(.data2 .data2.*)
|
||||
0x81000000 __data2_end__ = (__data2_start__ + SIZEOF (.data2))
|
||||
0x80000000 __data2_load_end__ = (__data2_load_start__ + SIZEOF (.data2))
|
||||
0x80000000 __External_FLASH_segment_used_end__ = (ALIGN (__rodata2_end__, 0x4) + SIZEOF (.data2))
|
||||
0x00000001 . = ASSERT ((((__data2_load_start__ + SIZEOF (.data2)) >= __External_FLASH_segment_start__) && ((__data2_load_start__ + SIZEOF (.data2)) <= (__External_FLASH_segment_start__ + 0x400000))), error: .data2 is too large to fit in External_FLASH memory segment)
|
||||
|
||||
.data2_run 0x81000000 0x0
|
||||
0x81000000 __data2_run_start__ = .
|
||||
0x81000000 . = MAX ((__data2_run_start__ + SIZEOF (.data2)), .)
|
||||
0x81000000 __data2_run_end__ = (__data2_run_start__ + SIZEOF (.data2_run))
|
||||
0x81000000 __data2_run_load_end__ = __data2_run_end__
|
||||
0x00000001 . = ASSERT (((__data2_run_end__ >= __External_SRAM_segment_start__) && (__data2_run_end__ <= (__External_SRAM_segment_start__ + 0x100000))), error: .data2_run is too large to fit in External_SRAM memory segment)
|
||||
0x81000000 __bss2_load_start__ = ALIGN (__data2_run_end__, 0x4)
|
||||
|
||||
.bss2 0x81000000 0x0
|
||||
0x81000000 __bss2_start__ = .
|
||||
*(.bss2 .bss2.*)
|
||||
0x81000000 __bss2_end__ = (__bss2_start__ + SIZEOF (.bss2))
|
||||
0x81000000 __bss2_load_end__ = __bss2_end__
|
||||
0x81000000 __External_SRAM_segment_used_end__ = (ALIGN (__data2_run_end__, 0x4) + SIZEOF (.bss2))
|
||||
0x00000001 . = ASSERT (((__bss2_end__ >= __External_SRAM_segment_start__) && (__bss2_end__ <= (__External_SRAM_segment_start__ + 0x100000))), error: .bss2 is too large to fit in External_SRAM memory segment)
|
||||
0x40000200 __vectors_ram_load_start__ = __SRAM_segment_start__
|
||||
|
||||
.vectors_ram 0x40000200 0x3c
|
||||
0x40000200 __vectors_ram_start__ = .
|
||||
*(.vectors_ram .vectors_ram.*)
|
||||
0x4000023c . = MAX ((__vectors_ram_start__ + 0x3c), .)
|
||||
*fill* 0x40000200 0x3c 00
|
||||
0x4000023c __vectors_ram_end__ = (__vectors_ram_start__ + SIZEOF (.vectors_ram))
|
||||
0x4000023c __vectors_ram_load_end__ = __vectors_ram_end__
|
||||
0x00000001 . = ASSERT (((__vectors_ram_end__ >= __SRAM_segment_start__) && (__vectors_ram_end__ <= (__SRAM_segment_start__ + 0x4000))), error: .vectors_ram is too large to fit in SRAM memory segment)
|
||||
0x00000000 __vectors_load_start__ = __FLASH_segment_start__
|
||||
|
||||
.vectors 0x00000000 0x34
|
||||
0x00000000 __vectors_start__ = .
|
||||
*(.vectors .vectors.*)
|
||||
.vectors 0x00000000 0x34 ARM Flash Debug/../../obj/cstart.o
|
||||
0x00000000 _vectors
|
||||
0x00000034 __vectors_end__ = (__vectors_start__ + SIZEOF (.vectors))
|
||||
0x00000034 __vectors_load_end__ = __vectors_end__
|
||||
0x00000001 . = ASSERT (((__vectors_end__ >= __FLASH_segment_start__) && (__vectors_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .vectors is too large to fit in FLASH memory segment)
|
||||
0x00000034 __init_load_start__ = ALIGN (__vectors_end__, 0x4)
|
||||
|
||||
.init 0x00000034 0x20c
|
||||
0x00000034 __init_start__ = .
|
||||
*(.init .init.*)
|
||||
*fill* 0x00000034 0xc 00
|
||||
.init 0x00000040 0x200 ARM Flash Debug/../../obj/cstart.o
|
||||
0x00000040 __start
|
||||
0x00000040 Reset_Handler
|
||||
0x00000158 exit
|
||||
0x000001b4 undef_handler
|
||||
0x000001b8 pabort_handler
|
||||
0x000001bc dabort_handler
|
||||
0x000001c0 fiq_handler
|
||||
0x000001c4 irq_handler
|
||||
0x00000240 __init_end__ = (__init_start__ + SIZEOF (.init))
|
||||
0x00000240 __init_load_end__ = __init_end__
|
||||
0x00000001 . = ASSERT (((__init_end__ >= __FLASH_segment_start__) && (__init_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .init is too large to fit in FLASH memory segment)
|
||||
0x00000240 __text_load_start__ = ALIGN (__init_end__, 0x4)
|
||||
|
||||
.text 0x00000240 0x19f0
|
||||
0x00000240 __text_start__ = .
|
||||
*(.text .text.* .glue_7t .glue_7 .gnu.linkonce.t.* .gcc_except_table)
|
||||
.glue_7 0x00000000 0x0 linker stubs
|
||||
.glue_7t 0x00000000 0x0 linker stubs
|
||||
.text.main 0x00000240 0xa4 ARM Flash Debug/../../obj/main.o
|
||||
0x00000240 main
|
||||
.text.FlashGetSector
|
||||
0x000002e4 0x64 ARM Flash Debug/../../obj/flash.o
|
||||
.text.FlashWriteBlock
|
||||
0x00000348 0x110 ARM Flash Debug/../../obj/flash.o
|
||||
.text.FlashInitBlock
|
||||
0x00000458 0x38 ARM Flash Debug/../../obj/flash.o
|
||||
.text.FlashSwitchBlock
|
||||
0x00000490 0x6c ARM Flash Debug/../../obj/flash.o
|
||||
.text.FlashAddToBlock
|
||||
0x000004fc 0xcc ARM Flash Debug/../../obj/flash.o
|
||||
.text.FlashInit
|
||||
0x000005c8 0x20 ARM Flash Debug/../../obj/flash.o
|
||||
0x000005c8 FlashInit
|
||||
.text.FlashWrite
|
||||
0x000005e8 0x68 ARM Flash Debug/../../obj/flash.o
|
||||
0x000005e8 FlashWrite
|
||||
.text.FlashErase
|
||||
0x00000650 0x130 ARM Flash Debug/../../obj/flash.o
|
||||
0x00000650 FlashErase
|
||||
.text.FlashWriteChecksum
|
||||
0x00000780 0x80 ARM Flash Debug/../../obj/flash.o
|
||||
0x00000780 FlashWriteChecksum
|
||||
.text.FlashVerifyChecksum
|
||||
0x00000800 0x48 ARM Flash Debug/../../obj/flash.o
|
||||
0x00000800 FlashVerifyChecksum
|
||||
.text.FlashDone
|
||||
0x00000848 0x5c ARM Flash Debug/../../obj/flash.o
|
||||
0x00000848 FlashDone
|
||||
.text.FlashGetUserProgBaseAddress
|
||||
0x000008a4 0x8 ARM Flash Debug/../../obj/flash.o
|
||||
0x000008a4 FlashGetUserProgBaseAddress
|
||||
.text.IrqGetCPSR
|
||||
0x000008ac 0x8 ARM Flash Debug/../../obj/cpu_comp.o
|
||||
.text.IrqSetCPSR
|
||||
0x000008b4 0x8 ARM Flash Debug/../../obj/cpu_comp.o
|
||||
.text.CpuIrqDisable
|
||||
0x000008bc 0x18 ARM Flash Debug/../../obj/cpu_comp.o
|
||||
0x000008bc CpuIrqDisable
|
||||
.text.CanInit 0x000008d4 0xf8 ARM Flash Debug/../../obj/can.o
|
||||
0x000008d4 CanInit
|
||||
.text.CanTransmitPacket
|
||||
0x000009cc 0xbc ARM Flash Debug/../../obj/can.o
|
||||
0x000009cc CanTransmitPacket
|
||||
.text.CanReceivePacket
|
||||
0x00000a88 0xa4 ARM Flash Debug/../../obj/can.o
|
||||
0x00000a88 CanReceivePacket
|
||||
.text.CpuInit 0x00000b2c 0x10 ARM Flash Debug/../../obj/cpu.o
|
||||
0x00000b2c CpuInit
|
||||
.text.CpuMemCopy
|
||||
0x00000b3c 0x44 ARM Flash Debug/../../obj/cpu.o
|
||||
0x00000b3c CpuMemCopy
|
||||
.text.CpuStartUserProgram
|
||||
0x00000b80 0x50 ARM Flash Debug/../../obj/cpu.o
|
||||
0x00000b80 CpuStartUserProgram
|
||||
.text.NvmInit 0x00000bd0 0x10 ARM Flash Debug/../../obj/nvm.o
|
||||
0x00000bd0 NvmInit
|
||||
.text.NvmWrite
|
||||
0x00000be0 0x10 ARM Flash Debug/../../obj/nvm.o
|
||||
0x00000be0 NvmWrite
|
||||
.text.NvmErase
|
||||
0x00000bf0 0x10 ARM Flash Debug/../../obj/nvm.o
|
||||
0x00000bf0 NvmErase
|
||||
.text.NvmVerifyChecksum
|
||||
0x00000c00 0x10 ARM Flash Debug/../../obj/nvm.o
|
||||
0x00000c00 NvmVerifyChecksum
|
||||
.text.NvmGetUserProgBaseAddress
|
||||
0x00000c10 0x10 ARM Flash Debug/../../obj/nvm.o
|
||||
0x00000c10 NvmGetUserProgBaseAddress
|
||||
.text.NvmDone 0x00000c20 0x1c ARM Flash Debug/../../obj/nvm.o
|
||||
0x00000c20 NvmDone
|
||||
.text.TimerInit
|
||||
0x00000c3c 0x48 ARM Flash Debug/../../obj/timer.o
|
||||
0x00000c3c TimerInit
|
||||
.text.TimerReset
|
||||
0x00000c84 0x20 ARM Flash Debug/../../obj/timer.o
|
||||
0x00000c84 TimerReset
|
||||
.text.TimerUpdate
|
||||
0x00000ca4 0x38 ARM Flash Debug/../../obj/timer.o
|
||||
0x00000ca4 TimerUpdate
|
||||
.text.TimerGet
|
||||
0x00000cdc 0x1c ARM Flash Debug/../../obj/timer.o
|
||||
0x00000cdc TimerGet
|
||||
.text.UartReceiveByte
|
||||
0x00000cf8 0x28 ARM Flash Debug/../../obj/uart.o
|
||||
.text.UartTransmitByte
|
||||
0x00000d20 0x54 ARM Flash Debug/../../obj/uart.o
|
||||
.text.UartInit
|
||||
0x00000d74 0x40 ARM Flash Debug/../../obj/uart.o
|
||||
0x00000d74 UartInit
|
||||
.text.UartTransmitPacket
|
||||
0x00000db4 0x84 ARM Flash Debug/../../obj/uart.o
|
||||
0x00000db4 UartTransmitPacket
|
||||
.text.UartReceivePacket
|
||||
0x00000e38 0x108 ARM Flash Debug/../../obj/uart.o
|
||||
0x00000e38 UartReceivePacket
|
||||
.text.AssertFailure
|
||||
0x00000f40 0xc ARM Flash Debug/../../obj/assert.o
|
||||
0x00000f40 AssertFailure
|
||||
.text.BackDoorCheck
|
||||
0x00000f4c 0x54 ARM Flash Debug/../../obj/backdoor.o
|
||||
0x00000f4c BackDoorCheck
|
||||
.text.BackDoorInit
|
||||
0x00000fa0 0x30 ARM Flash Debug/../../obj/backdoor.o
|
||||
0x00000fa0 BackDoorInit
|
||||
.text.BootInit
|
||||
0x00000fd0 0x24 ARM Flash Debug/../../obj/boot.o
|
||||
0x00000fd0 BootInit
|
||||
.text.BootTask
|
||||
0x00000ff4 0x1c ARM Flash Debug/../../obj/boot.o
|
||||
0x00000ff4 BootTask
|
||||
.text.ComInit 0x00001010 0x30 ARM Flash Debug/../../obj/com.o
|
||||
0x00001010 ComInit
|
||||
.text.ComTask 0x00001040 0x5c ARM Flash Debug/../../obj/com.o
|
||||
0x00001040 ComTask
|
||||
.text.ComFree 0x0000109c 0x4 ARM Flash Debug/../../obj/com.o
|
||||
0x0000109c ComFree
|
||||
.text.ComTransmitPacket
|
||||
0x000010a0 0x4c ARM Flash Debug/../../obj/com.o
|
||||
0x000010a0 ComTransmitPacket
|
||||
.text.ComGetActiveInterfaceMaxRxLen
|
||||
0x000010ec 0x38 ARM Flash Debug/../../obj/com.o
|
||||
0x000010ec ComGetActiveInterfaceMaxRxLen
|
||||
.text.ComGetActiveInterfaceMaxTxLen
|
||||
0x00001124 0x38 ARM Flash Debug/../../obj/com.o
|
||||
0x00001124 ComGetActiveInterfaceMaxTxLen
|
||||
.text.ComIsConnected
|
||||
0x0000115c 0x10 ARM Flash Debug/../../obj/com.o
|
||||
0x0000115c ComIsConnected
|
||||
.text.CopInit 0x0000116c 0x4 ARM Flash Debug/../../obj/cop.o
|
||||
0x0000116c CopInit
|
||||
.text.CopService
|
||||
0x00001170 0x4 ARM Flash Debug/../../obj/cop.o
|
||||
0x00001170 CopService
|
||||
.text.XcpProtectResources
|
||||
0x00001174 0x14 ARM Flash Debug/../../obj/xcp.o
|
||||
.text.XcpSetCtoError
|
||||
0x00001188 0x20 ARM Flash Debug/../../obj/xcp.o
|
||||
.text.XcpInit 0x000011a8 0x28 ARM Flash Debug/../../obj/xcp.o
|
||||
0x000011a8 XcpInit
|
||||
.text.XcpIsConnected
|
||||
0x000011d0 0x18 ARM Flash Debug/../../obj/xcp.o
|
||||
0x000011d0 XcpIsConnected
|
||||
.text.XcpPacketTransmitted
|
||||
0x000011e8 0x14 ARM Flash Debug/../../obj/xcp.o
|
||||
0x000011e8 XcpPacketTransmitted
|
||||
.text.XcpPacketReceived
|
||||
0x000011fc 0x538 ARM Flash Debug/../../obj/xcp.o
|
||||
0x000011fc XcpPacketReceived
|
||||
*fill* 0x00001734 0xc 00
|
||||
.text.libc.__int32_div
|
||||
0x00001740 0x470 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
0x00001740 __int32_div
|
||||
0x00001740 __aeabi_idiv
|
||||
0x00001740 __divsi3
|
||||
0x00001a40 __aeabi_uidiv
|
||||
0x00001a40 __uint32_div
|
||||
0x00001a40 __udivsi3
|
||||
.text.libc.__int32_mod
|
||||
0x00001bb0 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
0x00001bb0 __modsi3
|
||||
0x00001bb0 __int32_mod
|
||||
.text.libc.__aeabi_idivmod
|
||||
0x00001bd0 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
0x00001bd0 __aeabi_idivmod
|
||||
0x00001c30 __text_end__ = (__text_start__ + SIZEOF (.text))
|
||||
0x00001c30 __text_load_end__ = __text_end__
|
||||
|
||||
.vfp11_veneer 0x00000000 0x0
|
||||
.vfp11_veneer 0x00000000 0x0 linker stubs
|
||||
|
||||
.v4_bx 0x00000000 0x0
|
||||
.v4_bx 0x00000000 0x0 linker stubs
|
||||
0x00000001 . = ASSERT (((__text_end__ >= __FLASH_segment_start__) && (__text_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .text is too large to fit in FLASH memory segment)
|
||||
0x00001c30 __dtors_load_start__ = ALIGN (__text_end__, 0x4)
|
||||
|
||||
.dtors 0x00001c30 0x0
|
||||
0x00001c30 __dtors_start__ = .
|
||||
*(SORT(.dtors.*))
|
||||
*(.dtors)
|
||||
0x00001c30 __dtors_end__ = (__dtors_start__ + SIZEOF (.dtors))
|
||||
0x00001c30 __dtors_load_end__ = __dtors_end__
|
||||
0x00000001 . = ASSERT (((__dtors_end__ >= __FLASH_segment_start__) && (__dtors_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .dtors is too large to fit in FLASH memory segment)
|
||||
0x00001c30 __ctors_load_start__ = ALIGN (__dtors_end__, 0x4)
|
||||
|
||||
.ctors 0x00001c30 0x0
|
||||
0x00001c30 __ctors_start__ = .
|
||||
*(SORT(.ctors.*))
|
||||
*(.ctors)
|
||||
0x00001c30 __ctors_end__ = (__ctors_start__ + SIZEOF (.ctors))
|
||||
0x00001c30 __ctors_load_end__ = __ctors_end__
|
||||
0x00000001 . = ASSERT (((__ctors_end__ >= __FLASH_segment_start__) && (__ctors_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .ctors is too large to fit in FLASH memory segment)
|
||||
0x00001c30 __rodata_load_start__ = ALIGN (__ctors_end__, 0x4)
|
||||
|
||||
.rodata 0x00001c30 0x250
|
||||
0x00001c30 __rodata_start__ = .
|
||||
*(.rodata .rodata.* .gnu.linkonce.r.*)
|
||||
.rodata.flashLayout
|
||||
0x00001c30 0xc0 ARM Flash Debug/../../obj/flash.o
|
||||
.rodata.str1.4
|
||||
0x00001cf0 0x7d ARM Flash Debug/../../obj/can.o
|
||||
0x80 (size before relaxing)
|
||||
*fill* 0x00001d6d 0x3 00
|
||||
.rodata.canTiming
|
||||
0x00001d70 0x48 ARM Flash Debug/../../obj/can.o
|
||||
.rodata.str1.4
|
||||
0x00001db8 0x80 ARM Flash Debug/../../obj/uart.o
|
||||
.rodata.xcpStationId
|
||||
0x00001e38 0x8 ARM Flash Debug/../../obj/xcp.o
|
||||
.rodata.libc.__aeabi_uidiv
|
||||
0x00001e40 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
0x00001e40 __RAL_uidiv_inverse_lut
|
||||
0x00001e80 __rodata_end__ = (__rodata_start__ + SIZEOF (.rodata))
|
||||
0x00001e80 __rodata_load_end__ = __rodata_end__
|
||||
0x00000001 . = ASSERT (((__rodata_end__ >= __FLASH_segment_start__) && (__rodata_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .rodata is too large to fit in FLASH memory segment)
|
||||
0x00001e80 __data_load_start__ = ALIGN (__rodata_end__, 0x4)
|
||||
|
||||
.data 0x4000023c 0x4 load address 0x00001e80
|
||||
0x4000023c __data_start__ = .
|
||||
*(.data .data.* .gnu.linkonce.d.*)
|
||||
.data.comActiveInterface
|
||||
0x4000023c 0x4 ARM Flash Debug/../../obj/com.o
|
||||
0x40000240 __data_end__ = (__data_start__ + SIZEOF (.data))
|
||||
0x00001e84 __data_load_end__ = (__data_load_start__ + SIZEOF (.data))
|
||||
0x00000001 . = ASSERT ((((__data_load_start__ + SIZEOF (.data)) >= __FLASH_segment_start__) && ((__data_load_start__ + SIZEOF (.data)) <= (__FLASH_segment_start__ + 0x40000))), error: .data is too large to fit in FLASH memory segment)
|
||||
|
||||
.data_run 0x4000023c 0x4 load address 0x00001e80
|
||||
0x4000023c __data_run_start__ = .
|
||||
0x40000240 . = MAX ((__data_run_start__ + SIZEOF (.data)), .)
|
||||
*fill* 0x4000023c 0x4 00
|
||||
0x40000240 __data_run_end__ = (__data_run_start__ + SIZEOF (.data_run))
|
||||
0x40000240 __data_run_load_end__ = __data_run_end__
|
||||
0x00000001 . = ASSERT (((__data_run_end__ >= __SRAM_segment_start__) && (__data_run_end__ <= (__SRAM_segment_start__ + 0x4000))), error: .data_run is too large to fit in SRAM memory segment)
|
||||
0x40000240 __bss_load_start__ = ALIGN (__data_run_end__, 0x4)
|
||||
|
||||
.bss 0x40000240 0x4f4
|
||||
0x40000240 __bss_start__ = .
|
||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
||||
.bss.bootBlockInfo
|
||||
0x40000240 0x204 ARM Flash Debug/../../obj/flash.o
|
||||
.bss.blockInfo
|
||||
0x40000444 0x204 ARM Flash Debug/../../obj/flash.o
|
||||
.bss.millisecond_counter
|
||||
0x40000648 0x4 ARM Flash Debug/../../obj/timer.o
|
||||
.bss.free_running_counter_last
|
||||
0x4000064c 0x4 ARM Flash Debug/../../obj/timer.o
|
||||
.bss.xcpCtoRxLength.897
|
||||
0x40000650 0x1 ARM Flash Debug/../../obj/uart.o
|
||||
*fill* 0x40000651 0x3 00
|
||||
.bss.xcpCtoReqPacket.896
|
||||
0x40000654 0x44 ARM Flash Debug/../../obj/uart.o
|
||||
.bss.xcpCtoRxInProgress.898
|
||||
0x40000698 0x1 ARM Flash Debug/../../obj/uart.o
|
||||
*fill* 0x40000699 0x3 00
|
||||
.bss.xcpCtoRxStartTime.899
|
||||
0x4000069c 0x4 ARM Flash Debug/../../obj/uart.o
|
||||
.bss.backdoorOpen
|
||||
0x400006a0 0x1 ARM Flash Debug/../../obj/backdoor.o
|
||||
*fill* 0x400006a1 0x3 00
|
||||
.bss.backdoorOpenTime
|
||||
0x400006a4 0x4 ARM Flash Debug/../../obj/backdoor.o
|
||||
.bss.xcpCtoReqPacket.891
|
||||
0x400006a8 0x40 ARM Flash Debug/../../obj/com.o
|
||||
.bss.xcpInfo 0x400006e8 0x4c ARM Flash Debug/../../obj/xcp.o
|
||||
*(COMMON)
|
||||
0x40000734 __bss_end__ = (__bss_start__ + SIZEOF (.bss))
|
||||
0x40000734 __bss_load_end__ = __bss_end__
|
||||
0x00000001 . = ASSERT (((__bss_end__ >= __SRAM_segment_start__) && (__bss_end__ <= (__SRAM_segment_start__ + 0x4000))), error: .bss is too large to fit in SRAM memory segment)
|
||||
0x40000734 __non_init_load_start__ = ALIGN (__bss_end__, 0x4)
|
||||
|
||||
.non_init 0x40000734 0x0
|
||||
0x40000734 __non_init_start__ = .
|
||||
*(.non_init .non_init.*)
|
||||
0x40000734 __non_init_end__ = (__non_init_start__ + SIZEOF (.non_init))
|
||||
0x40000734 __non_init_load_end__ = __non_init_end__
|
||||
0x00000001 . = ASSERT (((__non_init_end__ >= __SRAM_segment_start__) && (__non_init_end__ <= (__SRAM_segment_start__ + 0x4000))), error: .non_init is too large to fit in SRAM memory segment)
|
||||
0x40000734 __heap_load_start__ = ALIGN (__non_init_end__, 0x4)
|
||||
|
||||
.heap 0x40000734 0x400
|
||||
0x40000734 __heap_start__ = .
|
||||
*(.heap .heap.*)
|
||||
0x40000b34 . = ALIGN (MAX ((__heap_start__ + __HEAPSIZE__), .), 0x4)
|
||||
*fill* 0x40000734 0x400 00
|
||||
0x40000b34 __heap_end__ = (__heap_start__ + SIZEOF (.heap))
|
||||
0x40000b34 __heap_load_end__ = __heap_end__
|
||||
0x00000001 . = ASSERT (((__heap_end__ >= __SRAM_segment_start__) && (__heap_end__ <= (__SRAM_segment_start__ + 0x4000))), error: .heap is too large to fit in SRAM memory segment)
|
||||
0x40000b34 __stack_load_start__ = ALIGN (__heap_end__, 0x4)
|
||||
|
||||
.stack 0x40000b34 0x400
|
||||
0x40000b34 __stack_start__ = .
|
||||
*(.stack .stack.*)
|
||||
0x40000f34 . = ALIGN (MAX ((__stack_start__ + __STACKSIZE__), .), 0x4)
|
||||
*fill* 0x40000b34 0x400 00
|
||||
0x40000f34 __stack_end__ = (__stack_start__ + SIZEOF (.stack))
|
||||
0x40000f34 __stack_load_end__ = __stack_end__
|
||||
0x00000001 . = ASSERT (((__stack_end__ >= __SRAM_segment_start__) && (__stack_end__ <= (__SRAM_segment_start__ + 0x4000))), error: .stack is too large to fit in SRAM memory segment)
|
||||
0x40000f34 __stack_irq_load_start__ = ALIGN (__stack_end__, 0x4)
|
||||
|
||||
.stack_irq 0x40000f34 0x100
|
||||
0x40000f34 __stack_irq_start__ = .
|
||||
*(.stack_irq .stack_irq.*)
|
||||
0x40001034 . = ALIGN (MAX ((__stack_irq_start__ + __STACKSIZE_IRQ__), .), 0x4)
|
||||
*fill* 0x40000f34 0x100 00
|
||||
0x40001034 __stack_irq_end__ = (__stack_irq_start__ + SIZEOF (.stack_irq))
|
||||
0x40001034 __stack_irq_load_end__ = __stack_irq_end__
|
||||
0x00000001 . = ASSERT (((__stack_irq_end__ >= __SRAM_segment_start__) && (__stack_irq_end__ <= (__SRAM_segment_start__ + 0x4000))), error: .stack_irq is too large to fit in SRAM memory segment)
|
||||
0x40001034 __stack_fiq_load_start__ = ALIGN (__stack_irq_end__, 0x4)
|
||||
|
||||
.stack_fiq 0x40001034 0x100
|
||||
0x40001034 __stack_fiq_start__ = .
|
||||
*(.stack_fiq .stack_fiq.*)
|
||||
0x40001134 . = ALIGN (MAX ((__stack_fiq_start__ + __STACKSIZE_FIQ__), .), 0x4)
|
||||
*fill* 0x40001034 0x100 00
|
||||
0x40001134 __stack_fiq_end__ = (__stack_fiq_start__ + SIZEOF (.stack_fiq))
|
||||
0x40001134 __stack_fiq_load_end__ = __stack_fiq_end__
|
||||
0x00000001 . = ASSERT (((__stack_fiq_end__ >= __SRAM_segment_start__) && (__stack_fiq_end__ <= (__SRAM_segment_start__ + 0x4000))), error: .stack_fiq is too large to fit in SRAM memory segment)
|
||||
0x40001134 __stack_svc_load_start__ = ALIGN (__stack_fiq_end__, 0x4)
|
||||
|
||||
.stack_svc 0x40001134 0x0
|
||||
0x40001134 __stack_svc_start__ = .
|
||||
*(.stack_svc .stack_svc.*)
|
||||
0x40001134 . = ALIGN (MAX ((__stack_svc_start__ + __STACKSIZE_SVC__), .), 0x4)
|
||||
0x40001134 __stack_svc_end__ = (__stack_svc_start__ + SIZEOF (.stack_svc))
|
||||
0x40001134 __stack_svc_load_end__ = __stack_svc_end__
|
||||
0x00000001 . = ASSERT (((__stack_svc_end__ >= __SRAM_segment_start__) && (__stack_svc_end__ <= (__SRAM_segment_start__ + 0x4000))), error: .stack_svc is too large to fit in SRAM memory segment)
|
||||
0x40001134 __stack_abt_load_start__ = ALIGN (__stack_svc_end__, 0x4)
|
||||
|
||||
.stack_abt 0x40001134 0x0
|
||||
0x40001134 __stack_abt_start__ = .
|
||||
*(.stack_abt .stack_abt.*)
|
||||
0x40001134 . = ALIGN (MAX ((__stack_abt_start__ + __STACKSIZE_ABT__), .), 0x4)
|
||||
0x40001134 __stack_abt_end__ = (__stack_abt_start__ + SIZEOF (.stack_abt))
|
||||
0x40001134 __stack_abt_load_end__ = __stack_abt_end__
|
||||
0x00000001 . = ASSERT (((__stack_abt_end__ >= __SRAM_segment_start__) && (__stack_abt_end__ <= (__SRAM_segment_start__ + 0x4000))), error: .stack_abt is too large to fit in SRAM memory segment)
|
||||
0x40001134 __stack_und_load_start__ = ALIGN (__stack_abt_end__, 0x4)
|
||||
|
||||
.stack_und 0x40001134 0x0
|
||||
0x40001134 __stack_und_start__ = .
|
||||
*(.stack_und .stack_und.*)
|
||||
0x40001134 . = ALIGN (MAX ((__stack_und_start__ + __STACKSIZE_UND__), .), 0x4)
|
||||
0x40001134 __stack_und_end__ = (__stack_und_start__ + SIZEOF (.stack_und))
|
||||
0x40001134 __stack_und_load_end__ = __stack_und_end__
|
||||
0x00000001 . = ASSERT (((__stack_und_end__ >= __SRAM_segment_start__) && (__stack_und_end__ <= (__SRAM_segment_start__ + 0x4000))), error: .stack_und is too large to fit in SRAM memory segment)
|
||||
0x00001e84 __fast_load_start__ = ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4)
|
||||
|
||||
.fast 0x40001134 0x0 load address 0x00001e84
|
||||
0x40001134 __fast_start__ = .
|
||||
*(.fast .fast.*)
|
||||
0x40001134 __fast_end__ = (__fast_start__ + SIZEOF (.fast))
|
||||
0x00001e84 __fast_load_end__ = (__fast_load_start__ + SIZEOF (.fast))
|
||||
0x00001e84 __FLASH_segment_used_end__ = (ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) + SIZEOF (.fast))
|
||||
0x00000001 . = ASSERT ((((__fast_load_start__ + SIZEOF (.fast)) >= __FLASH_segment_start__) && ((__fast_load_start__ + SIZEOF (.fast)) <= (__FLASH_segment_start__ + 0x40000))), error: .fast is too large to fit in FLASH memory segment)
|
||||
|
||||
.fast_run 0x40001134 0x0
|
||||
0x40001134 __fast_run_start__ = .
|
||||
0x40001134 . = MAX ((__fast_run_start__ + SIZEOF (.fast)), .)
|
||||
0x40001134 __fast_run_end__ = (__fast_run_start__ + SIZEOF (.fast_run))
|
||||
0x40001134 __fast_run_load_end__ = __fast_run_end__
|
||||
0x40001134 __SRAM_segment_used_end__ = (ALIGN (__stack_und_end__, 0x4) + SIZEOF (.fast_run))
|
||||
0x00000001 . = ASSERT (((__fast_run_end__ >= __SRAM_segment_start__) && (__fast_run_end__ <= (__SRAM_segment_start__ + 0x4000))), error: .fast_run is too large to fit in SRAM memory segment)
|
||||
START GROUP
|
||||
LOAD ARM Flash Debug/../../obj/hooks.o
|
||||
LOAD ARM Flash Debug/../../obj/main.o
|
||||
LOAD ARM Flash Debug/../../obj/extflash.o
|
||||
LOAD ARM Flash Debug/../../obj/cstart.o
|
||||
LOAD ARM Flash Debug/../../obj/flash.o
|
||||
LOAD ARM Flash Debug/../../obj/cpu_comp.o
|
||||
LOAD ARM Flash Debug/../../obj/can.o
|
||||
LOAD ARM Flash Debug/../../obj/cpu.o
|
||||
LOAD ARM Flash Debug/../../obj/nvm.o
|
||||
LOAD ARM Flash Debug/../../obj/timer.o
|
||||
LOAD ARM Flash Debug/../../obj/uart.o
|
||||
LOAD ARM Flash Debug/../../obj/assert.o
|
||||
LOAD ARM Flash Debug/../../obj/backdoor.o
|
||||
LOAD ARM Flash Debug/../../obj/boot.o
|
||||
LOAD ARM Flash Debug/../../obj/com.o
|
||||
LOAD ARM Flash Debug/../../obj/cop.o
|
||||
LOAD ARM Flash Debug/../../obj/xcp.o
|
||||
LOAD C:/Users/voorburg/AppData/Local/Rowley Associates Limited/CrossWorks for ARM/packages/lib/liblpc2000_v4t_a_le.a
|
||||
LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libarm_v4t_a_le.a
|
||||
LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v4t_a_le.a
|
||||
LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a
|
||||
LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libcpp_v4t_a_le.a
|
||||
LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v4t_a_le.a
|
||||
LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_targetio_impl_v4t_a_le.a
|
||||
LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v4t_a_le.a
|
||||
END GROUP
|
||||
OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_Crossworks/Boot/ide/../bin/openblt_olimex_lpc_l2294_20mhz.elf elf32-littlearm)
|
||||
|
||||
.debug_info 0x00000000 0x1b23
|
||||
.debug_info 0x00000000 0x5a ARM Flash Debug/../../obj/hooks.o
|
||||
.debug_info 0x0000005a 0x116 ARM Flash Debug/../../obj/main.o
|
||||
.debug_info 0x00000170 0x5a ARM Flash Debug/../../obj/extflash.o
|
||||
.debug_info 0x000001ca 0x106 ARM Flash Debug/../../obj/cstart.o
|
||||
.debug_info 0x000002d0 0x54c ARM Flash Debug/../../obj/flash.o
|
||||
.debug_info 0x0000081c 0x105 ARM Flash Debug/../../obj/cpu_comp.o
|
||||
.debug_info 0x00000921 0x201 ARM Flash Debug/../../obj/can.o
|
||||
.debug_info 0x00000b22 0x14f ARM Flash Debug/../../obj/cpu.o
|
||||
.debug_info 0x00000c71 0x177 ARM Flash Debug/../../obj/nvm.o
|
||||
.debug_info 0x00000de8 0xf2 ARM Flash Debug/../../obj/timer.o
|
||||
.debug_info 0x00000eda 0x1e1 ARM Flash Debug/../../obj/uart.o
|
||||
.debug_info 0x000010bb 0xb2 ARM Flash Debug/../../obj/assert.o
|
||||
.debug_info 0x0000116d 0xc0 ARM Flash Debug/../../obj/backdoor.o
|
||||
.debug_info 0x0000122d 0x88 ARM Flash Debug/../../obj/boot.o
|
||||
.debug_info 0x000012b5 0x1d6 ARM Flash Debug/../../obj/com.o
|
||||
.debug_info 0x0000148b 0x86 ARM Flash Debug/../../obj/cop.o
|
||||
.debug_info 0x00001511 0x612 ARM Flash Debug/../../obj/xcp.o
|
||||
|
||||
.debug_abbrev 0x00000000 0xc7a
|
||||
.debug_abbrev 0x00000000 0x28 ARM Flash Debug/../../obj/hooks.o
|
||||
.debug_abbrev 0x00000028 0xc5 ARM Flash Debug/../../obj/main.o
|
||||
.debug_abbrev 0x000000ed 0x28 ARM Flash Debug/../../obj/extflash.o
|
||||
.debug_abbrev 0x00000115 0x12 ARM Flash Debug/../../obj/cstart.o
|
||||
.debug_abbrev 0x00000127 0x227 ARM Flash Debug/../../obj/flash.o
|
||||
.debug_abbrev 0x0000034e 0xbc ARM Flash Debug/../../obj/cpu_comp.o
|
||||
.debug_abbrev 0x0000040a 0x164 ARM Flash Debug/../../obj/can.o
|
||||
.debug_abbrev 0x0000056e 0xaf ARM Flash Debug/../../obj/cpu.o
|
||||
.debug_abbrev 0x0000061d 0xa3 ARM Flash Debug/../../obj/nvm.o
|
||||
.debug_abbrev 0x000006c0 0x89 ARM Flash Debug/../../obj/timer.o
|
||||
.debug_abbrev 0x00000749 0x11f ARM Flash Debug/../../obj/uart.o
|
||||
.debug_abbrev 0x00000868 0x66 ARM Flash Debug/../../obj/assert.o
|
||||
.debug_abbrev 0x000008ce 0x5b ARM Flash Debug/../../obj/backdoor.o
|
||||
.debug_abbrev 0x00000929 0x3f ARM Flash Debug/../../obj/boot.o
|
||||
.debug_abbrev 0x00000968 0x115 ARM Flash Debug/../../obj/com.o
|
||||
.debug_abbrev 0x00000a7d 0x3f ARM Flash Debug/../../obj/cop.o
|
||||
.debug_abbrev 0x00000abc 0x1be ARM Flash Debug/../../obj/xcp.o
|
||||
|
||||
.debug_line 0x00000000 0x1463
|
||||
.debug_line 0x00000000 0x1d ARM Flash Debug/../../obj/hooks.o
|
||||
.debug_line 0x0000001d 0x12f ARM Flash Debug/../../obj/main.o
|
||||
.debug_line 0x0000014c 0x1d ARM Flash Debug/../../obj/extflash.o
|
||||
.debug_line 0x00000169 0x13f ARM Flash Debug/../../obj/cstart.o
|
||||
.debug_line 0x000002a8 0x2dd ARM Flash Debug/../../obj/flash.o
|
||||
.debug_line 0x00000585 0x177 ARM Flash Debug/../../obj/cpu_comp.o
|
||||
.debug_line 0x000006fc 0x11d ARM Flash Debug/../../obj/can.o
|
||||
.debug_line 0x00000819 0x106 ARM Flash Debug/../../obj/cpu.o
|
||||
.debug_line 0x0000091f 0x11e ARM Flash Debug/../../obj/nvm.o
|
||||
.debug_line 0x00000a3d 0xfc ARM Flash Debug/../../obj/timer.o
|
||||
.debug_line 0x00000b39 0x163 ARM Flash Debug/../../obj/uart.o
|
||||
.debug_line 0x00000c9c 0x129 ARM Flash Debug/../../obj/assert.o
|
||||
.debug_line 0x00000dc5 0x147 ARM Flash Debug/../../obj/backdoor.o
|
||||
.debug_line 0x00000f0c 0xbc ARM Flash Debug/../../obj/boot.o
|
||||
.debug_line 0x00000fc8 0x1c2 ARM Flash Debug/../../obj/com.o
|
||||
.debug_line 0x0000118a 0xb0 ARM Flash Debug/../../obj/cop.o
|
||||
.debug_line 0x0000123a 0x229 ARM Flash Debug/../../obj/xcp.o
|
||||
|
||||
.debug_str 0x00000000 0xfc6
|
||||
.debug_str 0x00000000 0xe8 ARM Flash Debug/../../obj/hooks.o
|
||||
0x106 (size before relaxing)
|
||||
.debug_str 0x000000e8 0x9e ARM Flash Debug/../../obj/main.o
|
||||
0x147 (size before relaxing)
|
||||
.debug_str 0x00000186 0x65 ARM Flash Debug/../../obj/extflash.o
|
||||
0x109 (size before relaxing)
|
||||
.debug_str 0x000001eb 0x258 ARM Flash Debug/../../obj/flash.o
|
||||
0x320 (size before relaxing)
|
||||
.debug_str 0x00000443 0xcb ARM Flash Debug/../../obj/cpu_comp.o
|
||||
0x17a (size before relaxing)
|
||||
.debug_str 0x0000050e 0x117 ARM Flash Debug/../../obj/can.o
|
||||
0x1e5 (size before relaxing)
|
||||
.debug_str 0x00000625 0xc9 ARM Flash Debug/../../obj/cpu.o
|
||||
0x196 (size before relaxing)
|
||||
.debug_str 0x000006ee 0xcb ARM Flash Debug/../../obj/nvm.o
|
||||
0x1a0 (size before relaxing)
|
||||
.debug_str 0x000007b9 0xf0 ARM Flash Debug/../../obj/timer.o
|
||||
0x19f (size before relaxing)
|
||||
.debug_str 0x000008a9 0x12b ARM Flash Debug/../../obj/uart.o
|
||||
0x204 (size before relaxing)
|
||||
.debug_str 0x000009d4 0x94 ARM Flash Debug/../../obj/assert.o
|
||||
0x143 (size before relaxing)
|
||||
.debug_str 0x00000a68 0xae ARM Flash Debug/../../obj/backdoor.o
|
||||
0x166 (size before relaxing)
|
||||
.debug_str 0x00000b16 0x83 ARM Flash Debug/../../obj/boot.o
|
||||
0x127 (size before relaxing)
|
||||
.debug_str 0x00000b99 0x142 ARM Flash Debug/../../obj/com.o
|
||||
0x220 (size before relaxing)
|
||||
.debug_str 0x00000cdb 0x83 ARM Flash Debug/../../obj/cop.o
|
||||
0x127 (size before relaxing)
|
||||
.debug_str 0x00000d5e 0x268 ARM Flash Debug/../../obj/xcp.o
|
||||
0x349 (size before relaxing)
|
||||
|
||||
.comment 0x00000000 0x4e
|
||||
.comment 0x00000000 0x4e ARM Flash Debug/../../obj/hooks.o
|
||||
0x4f (size before relaxing)
|
||||
.comment 0x00000000 0x4f ARM Flash Debug/../../obj/main.o
|
||||
.comment 0x00000000 0x4f ARM Flash Debug/../../obj/extflash.o
|
||||
.comment 0x00000000 0x4f ARM Flash Debug/../../obj/flash.o
|
||||
.comment 0x00000000 0x4f ARM Flash Debug/../../obj/cpu_comp.o
|
||||
.comment 0x00000000 0x4f ARM Flash Debug/../../obj/can.o
|
||||
.comment 0x00000000 0x4f ARM Flash Debug/../../obj/cpu.o
|
||||
.comment 0x00000000 0x4f ARM Flash Debug/../../obj/nvm.o
|
||||
.comment 0x00000000 0x4f ARM Flash Debug/../../obj/timer.o
|
||||
.comment 0x00000000 0x4f ARM Flash Debug/../../obj/uart.o
|
||||
.comment 0x00000000 0x4f ARM Flash Debug/../../obj/assert.o
|
||||
.comment 0x00000000 0x4f ARM Flash Debug/../../obj/backdoor.o
|
||||
.comment 0x00000000 0x4f ARM Flash Debug/../../obj/boot.o
|
||||
.comment 0x00000000 0x4f ARM Flash Debug/../../obj/com.o
|
||||
.comment 0x00000000 0x4f ARM Flash Debug/../../obj/cop.o
|
||||
.comment 0x00000000 0x4f ARM Flash Debug/../../obj/xcp.o
|
||||
|
||||
.ARM.attributes
|
||||
0x00000000 0x10
|
||||
.ARM.attributes
|
||||
0x00000000 0x10 ARM Flash Debug/../../obj/hooks.o
|
||||
.ARM.attributes
|
||||
0x00000010 0x10 ARM Flash Debug/../../obj/main.o
|
||||
.ARM.attributes
|
||||
0x00000020 0x10 ARM Flash Debug/../../obj/extflash.o
|
||||
.ARM.attributes
|
||||
0x00000030 0x10 ARM Flash Debug/../../obj/cstart.o
|
||||
.ARM.attributes
|
||||
0x00000040 0x10 ARM Flash Debug/../../obj/flash.o
|
||||
.ARM.attributes
|
||||
0x00000050 0x10 ARM Flash Debug/../../obj/cpu_comp.o
|
||||
.ARM.attributes
|
||||
0x00000060 0x10 ARM Flash Debug/../../obj/can.o
|
||||
.ARM.attributes
|
||||
0x00000070 0x10 ARM Flash Debug/../../obj/cpu.o
|
||||
.ARM.attributes
|
||||
0x00000080 0x10 ARM Flash Debug/../../obj/nvm.o
|
||||
.ARM.attributes
|
||||
0x00000090 0x10 ARM Flash Debug/../../obj/timer.o
|
||||
.ARM.attributes
|
||||
0x000000a0 0x10 ARM Flash Debug/../../obj/uart.o
|
||||
.ARM.attributes
|
||||
0x000000b0 0x10 ARM Flash Debug/../../obj/assert.o
|
||||
.ARM.attributes
|
||||
0x000000c0 0x10 ARM Flash Debug/../../obj/backdoor.o
|
||||
.ARM.attributes
|
||||
0x000000d0 0x10 ARM Flash Debug/../../obj/boot.o
|
||||
.ARM.attributes
|
||||
0x000000e0 0x10 ARM Flash Debug/../../obj/com.o
|
||||
.ARM.attributes
|
||||
0x000000f0 0x10 ARM Flash Debug/../../obj/cop.o
|
||||
.ARM.attributes
|
||||
0x00000100 0x10 ARM Flash Debug/../../obj/xcp.o
|
||||
.ARM.attributes
|
||||
0x00000110 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
|
||||
.debug_frame 0x00000000 0x910
|
||||
.debug_frame 0x00000000 0x2c ARM Flash Debug/../../obj/main.o
|
||||
.debug_frame 0x0000002c 0x16c ARM Flash Debug/../../obj/flash.o
|
||||
.debug_frame 0x00000198 0x68 ARM Flash Debug/../../obj/cpu_comp.o
|
||||
.debug_frame 0x00000200 0x68 ARM Flash Debug/../../obj/can.o
|
||||
.debug_frame 0x00000268 0x84 ARM Flash Debug/../../obj/cpu.o
|
||||
.debug_frame 0x000002ec 0xb8 ARM Flash Debug/../../obj/nvm.o
|
||||
.debug_frame 0x000003a4 0x5c ARM Flash Debug/../../obj/timer.o
|
||||
.debug_frame 0x00000400 0x90 ARM Flash Debug/../../obj/uart.o
|
||||
.debug_frame 0x00000490 0x2c ARM Flash Debug/../../obj/assert.o
|
||||
.debug_frame 0x000004bc 0x48 ARM Flash Debug/../../obj/backdoor.o
|
||||
.debug_frame 0x00000504 0x48 ARM Flash Debug/../../obj/boot.o
|
||||
.debug_frame 0x0000054c 0xb4 ARM Flash Debug/../../obj/com.o
|
||||
.debug_frame 0x00000600 0x30 ARM Flash Debug/../../obj/cop.o
|
||||
.debug_frame 0x00000630 0x80 ARM Flash Debug/../../obj/xcp.o
|
||||
.debug_frame 0x000006b0 0x260 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v4t_a_le.a(libc_asm.o)
|
||||
|
||||
.debug_loc 0x00000000 0xd40
|
||||
.debug_loc 0x00000000 0x20 ARM Flash Debug/../../obj/main.o
|
||||
.debug_loc 0x00000020 0x4b6 ARM Flash Debug/../../obj/flash.o
|
||||
.debug_loc 0x000004d6 0x66 ARM Flash Debug/../../obj/cpu_comp.o
|
||||
.debug_loc 0x0000053c 0xcf ARM Flash Debug/../../obj/can.o
|
||||
.debug_loc 0x0000060b 0x129 ARM Flash Debug/../../obj/cpu.o
|
||||
.debug_loc 0x00000734 0x11f ARM Flash Debug/../../obj/nvm.o
|
||||
.debug_loc 0x00000853 0x20 ARM Flash Debug/../../obj/timer.o
|
||||
.debug_loc 0x00000873 0x107 ARM Flash Debug/../../obj/uart.o
|
||||
.debug_loc 0x0000097a 0x46 ARM Flash Debug/../../obj/assert.o
|
||||
.debug_loc 0x000009c0 0x40 ARM Flash Debug/../../obj/backdoor.o
|
||||
.debug_loc 0x00000a00 0x40 ARM Flash Debug/../../obj/boot.o
|
||||
.debug_loc 0x00000a40 0xef ARM Flash Debug/../../obj/com.o
|
||||
.debug_loc 0x00000b2f 0x211 ARM Flash Debug/../../obj/xcp.o
|
||||
|
||||
.debug_aranges 0x00000000 0x350
|
||||
.debug_aranges
|
||||
0x00000000 0x20 ARM Flash Debug/../../obj/main.o
|
||||
.debug_aranges
|
||||
0x00000020 0x28 ARM Flash Debug/../../obj/cstart.o
|
||||
.debug_aranges
|
||||
0x00000048 0x78 ARM Flash Debug/../../obj/flash.o
|
||||
.debug_aranges
|
||||
0x000000c0 0x38 ARM Flash Debug/../../obj/cpu_comp.o
|
||||
.debug_aranges
|
||||
0x000000f8 0x30 ARM Flash Debug/../../obj/can.o
|
||||
.debug_aranges
|
||||
0x00000128 0x38 ARM Flash Debug/../../obj/cpu.o
|
||||
.debug_aranges
|
||||
0x00000160 0x48 ARM Flash Debug/../../obj/nvm.o
|
||||
.debug_aranges
|
||||
0x000001a8 0x38 ARM Flash Debug/../../obj/timer.o
|
||||
.debug_aranges
|
||||
0x000001e0 0x40 ARM Flash Debug/../../obj/uart.o
|
||||
.debug_aranges
|
||||
0x00000220 0x20 ARM Flash Debug/../../obj/assert.o
|
||||
.debug_aranges
|
||||
0x00000240 0x28 ARM Flash Debug/../../obj/backdoor.o
|
||||
.debug_aranges
|
||||
0x00000268 0x28 ARM Flash Debug/../../obj/boot.o
|
||||
.debug_aranges
|
||||
0x00000290 0x50 ARM Flash Debug/../../obj/com.o
|
||||
.debug_aranges
|
||||
0x000002e0 0x28 ARM Flash Debug/../../obj/cop.o
|
||||
.debug_aranges
|
||||
0x00000308 0x48 ARM Flash Debug/../../obj/xcp.o
|
||||
|
||||
.debug_ranges 0x00000000 0x268
|
||||
.debug_ranges 0x00000000 0x10 ARM Flash Debug/../../obj/main.o
|
||||
.debug_ranges 0x00000010 0x20 ARM Flash Debug/../../obj/cstart.o
|
||||
.debug_ranges 0x00000030 0x68 ARM Flash Debug/../../obj/flash.o
|
||||
.debug_ranges 0x00000098 0x28 ARM Flash Debug/../../obj/cpu_comp.o
|
||||
.debug_ranges 0x000000c0 0x20 ARM Flash Debug/../../obj/can.o
|
||||
.debug_ranges 0x000000e0 0x28 ARM Flash Debug/../../obj/cpu.o
|
||||
.debug_ranges 0x00000108 0x38 ARM Flash Debug/../../obj/nvm.o
|
||||
.debug_ranges 0x00000140 0x28 ARM Flash Debug/../../obj/timer.o
|
||||
.debug_ranges 0x00000168 0x30 ARM Flash Debug/../../obj/uart.o
|
||||
.debug_ranges 0x00000198 0x10 ARM Flash Debug/../../obj/assert.o
|
||||
.debug_ranges 0x000001a8 0x18 ARM Flash Debug/../../obj/backdoor.o
|
||||
.debug_ranges 0x000001c0 0x18 ARM Flash Debug/../../obj/boot.o
|
||||
.debug_ranges 0x000001d8 0x40 ARM Flash Debug/../../obj/com.o
|
||||
.debug_ranges 0x00000218 0x18 ARM Flash Debug/../../obj/cop.o
|
||||
.debug_ranges 0x00000230 0x38 ARM Flash Debug/../../obj/xcp.o
|
|
@ -1,492 +0,0 @@
|
|||
S02B0000433A2F576F726B2F736F6674776172652F4F70656E424C542F5461726765742F44656D6F2F41524DEF
|
||||
S113000018F09FE518F09FE514F09FE514F09FE5C4
|
||||
S113001014F09FE5885F20B9F0FF1FE50CF09FE521
|
||||
S113002040000000B4010000B8010000BC01000061
|
||||
S1070030C001000007
|
||||
S113003400000000000000000000000000000FE1C8
|
||||
S11300441F00C0E31B1080E301F02FE170D19FE592
|
||||
S1130054171080E301F02FE168D19FE5121080E3CB
|
||||
S113006401F02FE160D19FE5111080E301F02FE14D
|
||||
S113007458D19FE5131080E301F02FE150D19FE59F
|
||||
S11300841F1080E301F02FE148D19FE548019FE56B
|
||||
S113009448119FE548219FE52E0000EB44019FE5AC
|
||||
S11300A444119FE544219FE52A0000EB40019FE5AC
|
||||
S11300B440119FE540219FE5260000EB3C019FE5AC
|
||||
S11300C43C119FE53C219FE5220000EB38019FE5AC
|
||||
S11300D438119FE538219FE51E0000EB34019FE5AC
|
||||
S11300E434119FE534219FE51A0000EB30019FE5AC
|
||||
S11300F430119FE50020A0E3280000EB28019FE5D0
|
||||
S113010428119FE5001041E0080051E30020A0A35A
|
||||
S1130114042080A4001080A5E4009FE5E4109FE57A
|
||||
S1130124010050E10500000A042090E403002DE9D5
|
||||
S11301340FE0A0E112FF2FE10300BDE8F7FFFFEA9F
|
||||
S11301440000A0E30010A0E3E4209FE50FE0A0E199
|
||||
S113015412FF2FE1FEFFFFEA010050E10EF0A001BF
|
||||
S1130164012052E00EF0A001013080E1023083E16D
|
||||
S1130174030013E30400001A043090E4043081E41F
|
||||
S1130184042052E2FBFFFF1A0EF0A0E10130D0E498
|
||||
S11301940130C1E4012052E2FBFFFF1A0EF0A0E19A
|
||||
S11301A4010050E10EF0A0010120C0E4FBFFFFEACE
|
||||
S11301B4FEFFFFEAFEFFFFEAFEFFFFEAFEFFFFEA9F
|
||||
S11301C4FEFFFFEA341100403411004034100040B3
|
||||
S11301D43411004034110040340F0040801E0000EC
|
||||
S11301E43C02004040020040400200004002000083
|
||||
S11301F4301C0000841E00003411004034110040FF
|
||||
S1130204301C0000301C0000301C0000301C0000B6
|
||||
S1130214301C0000301C0000301C0000301C0000A6
|
||||
S1130224801E0000400200403407004034070040B0
|
||||
S10F0234340B0040400200000000A0E178
|
||||
S113024004E02DE594309FE52220A0E38420C3E55B
|
||||
S11302505510E0E38C10C3E55520A0E38C20C3E5E2
|
||||
S11302600100A0E38000C3E58C10C3E58C20C3E546
|
||||
S1130270B828D3E1010B12E3FCFFFF0A5C309FE5D1
|
||||
S11302800320A0E38020C3E55520E0E38C20C3E5F0
|
||||
S11302905520A0E38C20C3E50020A0E30020C3E5A3
|
||||
S11302A00420A0E30420C3E50220A0E30020C3E56A
|
||||
S11302B00120A0E30021C3E51D3843E2002093E5BB
|
||||
S11302C0052082E3002083E5042093E5012782E3EF
|
||||
S11302D0042083E53D0300EB450300EBFDFFFFEA4B
|
||||
S11302E000C01FE070402DE90060A0E150509FE580
|
||||
S11302F00040A0E39D0300EB003095E5060053E1C8
|
||||
S11303000800008A041095E5013083E0030056E1FB
|
||||
S11303100400002A842084E024309FE5022183E045
|
||||
S11303200800D2E5040000EA014084E20C5085E2B2
|
||||
S1130330100054E3EEFFFF1AFF00A0E37040BDE895
|
||||
S11303401EFF2FE1301C000030402DE920D04DE28B
|
||||
S11303500040A0E1000090E5E1FFFFEBFF0050E367
|
||||
S11303600000A0033700000A3230A0E30C308DE512
|
||||
S113037010008DE514008DE50130A0E300308DE51B
|
||||
S11303807A0300EB0C008DE20D10A0E13A31E0E3BA
|
||||
S11303900FE0A0E113FF2FE100309DE5000053E3DF
|
||||
S11303A00000A0132700001A3330A0E30C308DE5C1
|
||||
S11303B00450A0E1043095E410308DE514508DE52F
|
||||
S11303C0023CA0E318308DE584309FE51C308DE5B8
|
||||
S11303D00130A0E300308DE5640300EB0C008DE2F6
|
||||
S11303E00D10A0E13A31E0E30FE0A0E113FF2FE1AB
|
||||
S11303F000309DE5000053E30000A0131100001A33
|
||||
S11304003830A0E30C308DE5003094E510308DE5F4
|
||||
S113041014508DE5023CA0E318308DE50130A0E3D3
|
||||
S113042000308DE5510300EB0C008DE20D10A0E1CE
|
||||
S11304303A31E0E30FE0A0E113FF2FE100009DE576
|
||||
S1130440010070E20000A03320D08DE23040BDE80E
|
||||
S11304501EFF2FE160EA000004E02DE5813BB0E1DE
|
||||
S11304600000A0130700001A003090E5010053E1DA
|
||||
S11304700100A0030300000A041080E4022CA0E39E
|
||||
S1130480AD0100EB0100A0E304E09DE41EFF2FE1B9
|
||||
S113049030402DE90040A0E10150A0E150309FE53B
|
||||
S11304A0030050E10500000A020A51E30500000AB6
|
||||
S11304B0A4FFFFEB000050E30300001A080000EA69
|
||||
S11304C030409FE5000000EA24409FE50400A0E1DD
|
||||
S11304D00510A0E1DFFFFFEB000050E30040A003A4
|
||||
S11304E0000000EA0040A0E30400A0E13040BDE8C1
|
||||
S11304F01EFF2FE14002004044040040F0452DE976
|
||||
S11305000050A0E10140A0E10270A0E10360A0E17D
|
||||
S1130510A1A4A0E18AA4A0E1003090E5010073E366
|
||||
S11305200400001A0A10A0E1CAFFFFEB000050E328
|
||||
S11305300000A0032000000A003095E50A0053E102
|
||||
S11305400500000A0500A0E10A10A0E1CFFFFFEBBF
|
||||
S1130550005050E20000A0031700000A003095E5A7
|
||||
S1130560044063E0044084E2044085E050809FE559
|
||||
S113057002AC8AE2FD0200EB043085E2043063E061
|
||||
S1130580080053E10500009A0500A0E10A10A0E16B
|
||||
S1130590BEFFFFEB005050E20600000A044085E273
|
||||
S11305A00130D7E40130C4E4016056E2F0FFFF1AE1
|
||||
S11305B00100A0E3000000EA0000A0E3F045BDE86C
|
||||
S11305C01EFF2FE1FF0100000030E0E30C209FE557
|
||||
S11305D0003082E508209FE5003082E51EFF2FE110
|
||||
S11305E0440400404002004070402DE90040A0E176
|
||||
S11305F00150A0E10260A0E139FFFFEBFF0050E3EE
|
||||
S11306000000A0030D00000A010044E2050080E0A0
|
||||
S113061033FFFFEBFF0050E30000A0030700000AD4
|
||||
S1130620A434A0E1100053E318009F0518009F159F
|
||||
S11306300410A0E10620A0E10530A0E1AEFFFFEB2D
|
||||
S11306407040BDE81EFF2FE140020040440400401A
|
||||
S113065070402DE920D04DE20050A0E10160A0E1FE
|
||||
S11306601FFFFFEB0040A0E1010045E2060080E02F
|
||||
S11306701BFFFFEB0050A0E1FF0050E3FF00541309
|
||||
S11306800000A0033900000A050054E10000A08323
|
||||
S11306903600008A000054E30000A0033300000A7F
|
||||
S11306A0100055E30000A0833000008A3230A0E33C
|
||||
S11306B000308DE504408DE508508DE50130A0E360
|
||||
S11306C014308DE5A90200EB0D00A0E114108DE2B9
|
||||
S11306D03A31E0E30FE0A0E113FF2FE114309DE590
|
||||
S11306E0000053E30000A0132000001A3430A0E3FC
|
||||
S11306F000308DE504408DE508508DE578309FE5A8
|
||||
S11307000C308DE50130A0E314308DE5970200EB49
|
||||
S11307100D00A0E114108DE23A31E0E30FE0A0E116
|
||||
S113072013FF2FE114309DE5000053E30000A013F4
|
||||
S11307300E00001A3530A0E300308DE504408DE54D
|
||||
S113074008508DE50130A0E314308DE5870200EBFD
|
||||
S11307500D00A0E114108DE23A31E0E30FE0A0E1D6
|
||||
S113076013FF2FE114009DE5010070E20000A033A7
|
||||
S113077020D08DE27040BDE81EFF2FE160EA00004A
|
||||
S113078004E02DE504D04DE268309FE5003093E5A8
|
||||
S1130790010073E30100A0031300000A54309FE535
|
||||
S11307A0060093E9011082E00C2093E5021081E039
|
||||
S11307B0102093E5021081E0142093E5021081E0FB
|
||||
S11307C01C2093E5021081E0202093E5023081E0B3
|
||||
S11307D0003063E204208DE2043022E518009FE536
|
||||
S11307E00410A0E30D20A0E17EFFFFEB04D08DE216
|
||||
S11307F004E09DE41EFF2FE14002004014200000AD
|
||||
S1130800023AA0E3050093E8000082E0082093E5A3
|
||||
S1130810020080E00C2093E5020080E0102093E5C4
|
||||
S1130820020080E0142093E5020080E0182093E5A4
|
||||
S1130830020080E01C3093E5030080E0010070E2D8
|
||||
S11308400000A0331EFF2FE104E02DE548309FE5B2
|
||||
S1130850003093E5010073E30400000A38009FE5CB
|
||||
S1130860B8FEFFEB000050E30000A0030800000AFC
|
||||
S113087028309FE5003093E5010073E30100A003F5
|
||||
S11308800300000A14009FE5AEFEFFEB000090E2B7
|
||||
S11308900100A01304E09DE41EFF2FE1400200408C
|
||||
S11308A044040040020AA0E31EFF2FE100000FE110
|
||||
S11308B01EFF2FE100F029E11EFF2FE104E02DE5EA
|
||||
S11308C0F9FFFFEB800080E3F9FFFFEB04E09DE418
|
||||
S11308D01EFF2FE1F0472DE90220A0E3D0309FE571
|
||||
S11308E00020C3E5023983E20120A0E3002083E570
|
||||
S11308F00040A0E3104083E5084083E5B4A09FE5F1
|
||||
S1130900B4809FE5B4909FE50A30A0E10460F3E76A
|
||||
S11309100170D3E5075086E0015085E2853265E039
|
||||
S1130920035185E00551A0E10800A0E10510A0E114
|
||||
S11309309E0400EB000050E30E00001A0800A0E142
|
||||
S11309400510A0E17D0300EB0008A0E12038A0E140
|
||||
S1130950010840E2200859E10600003A013043E270
|
||||
S1130960016046E2017047E2077AA0E1066887E188
|
||||
S1130970033086E1030000EA044084E2480054E3C3
|
||||
S1130980E0FFFF1A050000EA34209FE5143082E5F9
|
||||
S11309900030A0E3003082E5F047BDE81EFF2FE100
|
||||
S11309A020009FE5C410A0E3640100EB0030A0E345
|
||||
S11309B0F4FFFFEA00C003E0701D000060EA0000DD
|
||||
S11309C0FF030000004004E0F01C000030402DE96B
|
||||
S11309D00040A0E1FF5001E29C309FE51C3093E50C
|
||||
S11309E0040013E394009F05D610A0035301000BE9
|
||||
S11309F00558A0E180309FE5305083E580209FE5D5
|
||||
S1130A00342083E50310D4E50220D4E50228A0E1D4
|
||||
S1130A10012C82E00110D4E5012482E00010D4E529
|
||||
S1130A20012082E0382083E50710D4E50620D4E5D0
|
||||
S1130A300228A0E1012C82E00510D4E5012482E023
|
||||
S1130A400410D4E5012082E03C2083E52120A0E3CA
|
||||
S1130A50042083E51C3093E5080013E30400001A26
|
||||
S1130A6014409FE5C10100EB1C3094E5080013E33A
|
||||
S1130A70FBFFFF0A3040BDE81EFF2FE1004004E009
|
||||
S1130A80F01C0000E107000094309FE51C3093E562
|
||||
S1130A90010013E30000A0031EFF2F0180309FE537
|
||||
S1130AA0242093E57C309FE5030052E11A00001AEC
|
||||
S1130AB06C309FE5282093E50020C0E5282093E5CD
|
||||
S1130AC02224A0E10120C0E5282093E52228A0E10A
|
||||
S1130AD00220C0E5282093E5222CA0E10320C0E5F4
|
||||
S1130AE02C2093E50420C0E52C2093E52224A0E1EA
|
||||
S1130AF00520C0E52C2093E52228A0E10620C0E5CE
|
||||
S1130B002C2093E5222CA0E10720C0E50420A0E3DB
|
||||
S1130B10042083E50100A0E31EFF2FE10000A0E311
|
||||
S1130B201EFF2FE1004004E06706000004E02DE50D
|
||||
S1130B3061FFFFEB04E09DE41EFF2FE170402DE90F
|
||||
S1130B400160A0E10228A0E12228B0E10900000A26
|
||||
S1130B500040A0E1010080E2012042E20258A0E14D
|
||||
S1130B60255880E00130D6E40130C4E47F0100EB75
|
||||
S1130B70050054E1FAFFFF1A7040BDE81EFF2FE1A3
|
||||
S1130B8004E02DE51D0000EB000050E30C00000A1A
|
||||
S1130B90410100EB3A0000EB1C0000EB0010A0E167
|
||||
S1130BA00101A0E34020A0E3E3FFFFEB0220A0E368
|
||||
S1130BB014309FE5402083E50131A0E30FE0A0E17C
|
||||
S1130BC013FF2FE104E09DE41EFF2FE100C01FE0AE
|
||||
S1130BD004E02DE57BFEFFEB04E09DE41EFF2FE126
|
||||
S1130BE004E02DE57FFEFFEB04E09DE41EFF2FE112
|
||||
S1130BF004E02DE595FEFFEB04E09DE41EFF2FE1EC
|
||||
S1130C0004E02DE5FDFEFFEB04E09DE41EFF2FE173
|
||||
S1130C1004E02DE522FFFFEB04E09DE41EFF2FE13D
|
||||
S1130C2004E02DE5D5FEFFEB000050E30000A00337
|
||||
S1130C3004FFFF1B04E09DE41EFF2FE130309FE51D
|
||||
S1130C400020A0E3142083E5282083E524109FE5F9
|
||||
S1130C500C1083E50110A0E3041083E5081093E56C
|
||||
S1130C6014309FE5001083E510309FE5002083E5F4
|
||||
S1130C701EFF2FE1004000E05FEA00004C06004048
|
||||
S1130C804806004014309FE50020A0E3042083E5DB
|
||||
S1130C900C2083E5082083E5102083E51EFF2FE167
|
||||
S1130CA0004000E024309FE5082093E520109FE5F4
|
||||
S1130CB0000091E5000082E018309FE500C093E554
|
||||
S1130CC000006CE0000081E5002083E51EFF2FE1B9
|
||||
S1130CD0004000E0480600404C06004004E02DE5DA
|
||||
S1130CE0EFFFFFEB08309FE5000093E504E09DE48F
|
||||
S1130CF01EFF2FE1480600401C309FE51430D3E569
|
||||
S1130D00010013E310309F150030D3150030C015D7
|
||||
S1130D100100A0130000A0031EFF2FE100C000E0AB
|
||||
S1130D2010402DE944309FE51430D3E5200013E34F
|
||||
S1130D300000A0030B00000A30309FE50000C3E56B
|
||||
S1130D401430D3E5200013E30100A0130500001ABA
|
||||
S1130D5018409FE5050100EB1430D4E5200013E3AF
|
||||
S1130D60FBFFFF0A0100A0E31040BDE81EFF2FE1D6
|
||||
S1130D7000C000E034309FE50020A0E30420C3E578
|
||||
S1130D800820C3E51420C3E57F10E0E30C10C3E59D
|
||||
S1130D904110A0E30010C3E50420C3E50320A0E351
|
||||
S1130DA00C20C3E50720A0E30820C3E51EFF2FE1C4
|
||||
S1130DB000C000E0F0412DE90050A0E1FF4001E255
|
||||
S1130DC0400054E368009F859310A0835B00008B70
|
||||
S1130DD00400A0E1D1FFFFEB010050E350009F1598
|
||||
S1130DE09710A0135500001B0460A0E1000054E319
|
||||
S1130DF00D00000A0040A0E334709FE5A080A0E34A
|
||||
S1130E00DA0000EB0400D5E7C4FFFFEB010050E378
|
||||
S1130E100700A0110810A0114800001B014084E243
|
||||
S1130E200438A0E1230856E1F4FFFF8AF041BDE84D
|
||||
S1130E301EFF2FE1B81D000030402DE90050A0E155
|
||||
S1130E40E4309FE50030D3E5000053E31300001ABB
|
||||
S1130E50D8009FE5A7FFFFEB010050E30000A013BB
|
||||
S1130E602F00001AC4309FE50030D3E5000053E39F
|
||||
S1130E700000A0032A00000A97FFFFEBB0309FE5B3
|
||||
S1130E80000083E50000A0E3A8309FE50000C3E56F
|
||||
S1130E900120A0E390309FE50020C3E5200000EA94
|
||||
S1130EA090309FE50040D3E58C009FE5000084E08E
|
||||
S1130EB090FFFFEB010050E31000001A014084E2B0
|
||||
S1130EC0FF2004E26C309FE50020C3E55C309FE521
|
||||
S1130ED00030D3E5020053E10000A0131000001A13
|
||||
S1130EE00500A0E150109FE513FFFFEB0020A0E3F5
|
||||
S1130EF034309FE50020C3E50100A0E3080000EAC8
|
||||
S1130F0075FFFFEB28309FE5003093E5643083E202
|
||||
S1130F10030050E10000A0930000A08308309F85E7
|
||||
S1130F200000C3853040BDE81EFF2FE19806004055
|
||||
S1130F30540600409C060040500600405506004000
|
||||
S1130F4004E02DE5890000EBFDFFFFEA04E02DE558
|
||||
S1130F50810000EB010050E30C00000A34309FE5EF
|
||||
S1130F600030D3E5010053E30800001A5AFFFFEBF9
|
||||
S1130F7024309FE5003093E57D3F83E2030050E198
|
||||
S1130F800020A0230C309F250020C325FBFEFF2B4F
|
||||
S1130F9004E09DE41EFF2FE1A0060040A4060040EB
|
||||
S1130FA004E02DE50120A0E318309FE50020C3E50F
|
||||
S1130FB049FFFFEB10309FE5000083E5E2FFFFEB04
|
||||
S1130FC004E09DE41EFF2FE1A0060040A4060040BB
|
||||
S1130FD004E02DE5D4FEFFEB630000EB16FFFFEB0E
|
||||
S1130FE0FAFEFFEB090000EBECFFFFEB04E09DE4ED
|
||||
S1130FF01EFF2FE104E02DE55C0000EB28FFFFEB72
|
||||
S11310000E0000EBD0FFFFEB04E09DE41EFF2FE198
|
||||
S113101010402DE9630000EB2DFEFFEB18409FE527
|
||||
S11310200130A0E3003084E551FFFFEB0030A0E382
|
||||
S1131030003084E51040BDE81EFF2FE13C02004073
|
||||
S113104004E02DE548009FE58EFEFFEB010050E330
|
||||
S11310500400001A0120A0E338309FE5002083E556
|
||||
S11310602C009FE5640000EB24009FE571FFFFEB7B
|
||||
S1131070010050E30400001A0020A0E314309FE5AF
|
||||
S1131080002083E508009FE55B0000EB04E09DE49D
|
||||
S11310901EFF2FE1A80600403C0200401EFF2FE186
|
||||
S11310A030402DE90040A0E10118A0E12158A0E161
|
||||
S11310B030309FE5003093E5010053E3FF10050253
|
||||
S11310C041FEFF0B1C309FE5003093E5000053E325
|
||||
S11310D0FF1005020400A00135FFFF0B410000EBE7
|
||||
S11310E03040BDE81EFF2FE13C0200402C309FE55C
|
||||
S11310F0000093E5020050E30000A0031EFF2F014F
|
||||
S1131100030050E30300000A010050E30800A003B9
|
||||
S11311104000A0131EFF2FE10000A0E31EFF2FE1FB
|
||||
S11311203C0200402C309FE5000093E5020050E3B0
|
||||
S11311300000A0031EFF2F01030050E30300000A78
|
||||
S1131140010050E30800A0034000A0131EFF2FE19C
|
||||
S11311500000A0E31EFF2FE13C02004004E02DE567
|
||||
S11311601A0000EB04E09DE41EFF2FE11EFF2FE1B7
|
||||
S11311701EFF2FE10020A0E304309FE50120C3E51A
|
||||
S11311801EFF2FE1E806004014309FE50120E0E354
|
||||
S11311900320C3E50400C3E50220A0E3B424C3E1B3
|
||||
S11311A01EFF2FE1E80600401C309FE50020A0E36D
|
||||
S11311B00020C3E5482083E54320C3E5B424C3E10C
|
||||
S11311C00220C3E50120C3E51EFF2FE1E80600402D
|
||||
S11311D00C309FE50000D3E5000090E20100A0136D
|
||||
S11311E01EFF2FE1E80600400020A0E304309FE545
|
||||
S11311F04320C3E51EFF2FE1E806004030402DE9FF
|
||||
S11312000040A0E10030D0E5FF0053E31500001AD0
|
||||
S1131210D7FFFFEB10459FE50150A0E30050C4E564
|
||||
S11312200030E0E30330C4E51030A0E30430C4E54B
|
||||
S11312300030A0E30530C4E5ABFFFFEB0600C4E5D6
|
||||
S1131240B7FFFFEB0700C4E5B5FFFFEB2004A0E107
|
||||
S11312500800C4E50950C4E50A50C4E50830A0E319
|
||||
S1131260B434C4E11F0100EABC249FE50020D2E5A8
|
||||
S1131270010052E32A01001AC93043E2350053E366
|
||||
S113128003F19F97150100EA54150000E0160000D1
|
||||
S1131290E0160000D4160000E0160000E01600007E
|
||||
S11312A0B8160000B01500007C16000044160000BB
|
||||
S11312B0E0160000E0160000E0160000E016000052
|
||||
S11312C0E0160000E0160000E0160000E016000042
|
||||
S11312D0E0160000E0160000E0160000E016000032
|
||||
S11312E0E0160000E0160000E0160000E016000022
|
||||
S11312F0E0160000E0160000E0160000E016000012
|
||||
S1131300E0160000E0160000E0160000E016000001
|
||||
S1131310E0160000E0160000E0160000E0160000F1
|
||||
S1131320E0160000E0160000E0160000E0160000E1
|
||||
S11313303C140000BC130000601300001C140000E7
|
||||
S1131340E0160000E0160000E0160000AC140000F7
|
||||
S1131350E0160000F0140000FC140000301500003A
|
||||
S11313600150D0E560FFFFEB010040E2000055E1D1
|
||||
S1131370020000DA2200A0E382FFFFEBD90000EABA
|
||||
S1131380A4539FE5040085E2481095E50120D4E5C7
|
||||
S1131390E9FDFFEB0030E0E30330C5E50120D4E5CF
|
||||
S11313A0483095E5033082E0483085E50130D4E5E6
|
||||
S11313B0013083E2B434C5E1CA0000EA0150D0E54B
|
||||
S11313C049FFFFEB010040E2000055E1020000DAB2
|
||||
S11313D02200A0E36BFFFFEBC20000EA041094E5D7
|
||||
S11313E044539FE5481085E5040085E20120D4E5D7
|
||||
S11313F0D1FDFFEB0030E0E30330C5E50120D4E587
|
||||
S1131400483095E5033082E0483085E50130D4E585
|
||||
S1131410013083E2B434C5E1B20000EA08339FE549
|
||||
S11314200020E0E30320C3E5042090E5482083E5A1
|
||||
S11314300120A0E3B424C3E1AA0000EAE8329FE556
|
||||
S11314400020E0E30320C3E5481093E5043090E571
|
||||
S1131450000053E30020A0030500000A0020A0E3DD
|
||||
S11314600100D1E4002082E0FF2002E2013053E2D7
|
||||
S1131470FAFFFF1AB0329FE50010A0E30720C3E58E
|
||||
S11314800810C3E50910C3E5222CA0E10A20C3E536
|
||||
S11314900120A0E30420C3E50510C3E50610C3E55D
|
||||
S11314A00820A0E3B424C3E18E0000EA78329FE56B
|
||||
S11314B00020E0E30320C3E570229FE5482083E594
|
||||
S11314C00020A0E30420C3E50520C3E50620C3E50E
|
||||
S11314D00710A0E30710C3E50820C3E50920C3E50E
|
||||
S11314E00A20C3E50820A0E3B424C3E17D0000EA98
|
||||
S11314F00000A0E323FFFFEB7A0000EA28329FE517
|
||||
S11315000020E0E30320C3E50020A0E30420C3E5BA
|
||||
S11315100110D3E50510C3E50620C3E50720C3E5A4
|
||||
S11315200820C3E50620A0E3B424C3E16D0000EA6B
|
||||
S1131530F4419FE50030A0E30030C4E50CFFFFEB6D
|
||||
S11315400030E0E30330C4E50130A0E3B434C4E187
|
||||
S1131550640000EAD0319FE5485093E5E2FEFFEBDA
|
||||
S1131560011040E20500A0E1012084E29BFDFFEBB5
|
||||
S1131570000050E30200001A3100A0E301FFFFEB7A
|
||||
S1131580580000EAA0419FE50030E0E30330C4E5E1
|
||||
S1131590485094E5D4FEFFEB015045E2000085E09D
|
||||
S11315A0480084E50130A0E3B434C4E14D0000EA0E
|
||||
S11315B00150D0E5CCFEFFEB020040E2000055E113
|
||||
S11315C0020000DA2200A0E3EEFEFFEB450000EA91
|
||||
S11315D054319FE50020E0E30320C3E50120A0E3AC
|
||||
S11315E0B424C3E10110D4E5000051E30500001A5E
|
||||
S11315F08AFDFFEB000050E33A00001A3100A0E33B
|
||||
S1131600E0FEFFEB370000EA1C319FE5480093E55C
|
||||
S1131610022084E271FDFFEB000050E30200001A97
|
||||
S11316203100A0E3D7FEFFEB2E0000EAF8309FE57F
|
||||
S11316300110D4E5482093E5022081E0482083E5A9
|
||||
S1131640280000EAE0409FE50030E0E30330C4E511
|
||||
S11316500050A0E30450C4E50550C4E5A2FEFFEB2E
|
||||
S11316600600C4E50750C4E50850C4E50950C4E5C4
|
||||
S11316700730A0E3B434C4E11A0000EAA8309FE5BF
|
||||
S1131680480093E5041094E558FDFFEB000050E397
|
||||
S11316900200001A3100A0E3BAFEFFEB110000EAD9
|
||||
S11316A084309FE50020E0E30320C3E50120A0E3AC
|
||||
S11316B0B424C3E10B0000EA30FDFFEB68309FE582
|
||||
S11316C00020E0E30320C3E50120A0E3B424C3E148
|
||||
S11316D0040000EA3100A0E3AAFEFFEB010000EAE7
|
||||
S11316E02000A0E3A7FEFFEB3C309FE54330D3E5A9
|
||||
S11316F0010053E31000A003A2FEFF0B28309FE576
|
||||
S1131700B414D3E10138A0E1000053E3040000DA8B
|
||||
S113171014009FE50130A0E34330C0E5030080E2FC
|
||||
S11317205EFEFFEB3040BDE81EFF2FE1E8060040FF
|
||||
S1131730381E00000000000000000000000000004F
|
||||
S1131740010030E15A00004A000010E1000060424C
|
||||
S113175000107142A00351E1052071922700008A14
|
||||
S11317600130B0E10020B0E3010853E310208232DD
|
||||
S11317700338A031010453E3082082320334A0313A
|
||||
S1131780010253E3042082320332A031030113E344
|
||||
S1131790022082020331B0018330A0510120925211
|
||||
S11317A0F8C39FE5A3CCDCE7072052E21CC2A0E10A
|
||||
S11317B09C0101E09C2080E0001071E20030B0E365
|
||||
S11317C09120A3E0030080E000C0B0E39123ACE0EB
|
||||
S11317D00C0080E00030B0E3912CA3E0030080E033
|
||||
S11317E000C0B0E39123ACE00C0080E00030B0E333
|
||||
S11317F0912CA3E0010072E10300A0E01EFF2FE1A1
|
||||
S1131800040051E31B00009A00C0A0E10000B0E313
|
||||
S11318102C0151E11100008AAC0351E181C34C90C9
|
||||
S1131820800080922C0351E101C34C9040008092CF
|
||||
S1131830AC0251E181C24C90200080922C0251E113
|
||||
S113184001C24C9010008092AC0151E181C14C90D6
|
||||
S1131850080080922C0151E101C14C900400809257
|
||||
S1131860AC0051E181C04C90020080920C0051E127
|
||||
S1131870010080921EFF2FE12001A0011EFF2F0115
|
||||
S1131880010051E30000A0331EFF2F91020051E339
|
||||
S1131890A000A0011EFF2F01AB20A0E3AA2C82E32D
|
||||
S11318A0AA2882E3AA2482E3923080E0A000B0E177
|
||||
S11318B01EFF2FE1010011E100007042001071428F
|
||||
S11318C0C00371E1052071922900008A0130B0E162
|
||||
S11318D00020B0E3010853E3102082320338A03122
|
||||
S11318E0010453E3082082320334A031010253E39C
|
||||
S11318F0042082320332A031030113E30220820266
|
||||
S11319000331B0018330A051012092528CC29FE573
|
||||
S1131910A3CCDCE7000070E2072052E21CC2A0E185
|
||||
S11319209C0101E09C2080E0001071E20030B0E3F3
|
||||
S11319309120A3E0030080E000C0B0E39123ACE079
|
||||
S11319400C0080E00030B0E3912CA3E0030080E0C1
|
||||
S113195000C0B0E39123ACE00C0080E00030B0E3C1
|
||||
S1131960912CA3E0010072E10300A0E0000070E20A
|
||||
S11319701EFF2FE1040051E31B00009A00C070E237
|
||||
S11319800000B0E32C0151E11100008AAC0351E1E5
|
||||
S113199081C34C90800040922C0351E101C34C90D0
|
||||
S11319A040004092AC0251E181C24C902000409230
|
||||
S11319B02C0251E101C24C9010004092AC0151E163
|
||||
S11319C081C14C90080040922C0151E101C14C901E
|
||||
S11319D004004092AC0051E181C04C90020040925E
|
||||
S11319E00C0051E1010040921EFF2FE10300800230
|
||||
S11319F04001A0011EFF2F01010051E30000A033AC
|
||||
S1131A001EFF2F91020051E301008002C000A001DB
|
||||
S1131A101EFF2F01AB20A0E3AA2C82E3AA2882E3B5
|
||||
S1131A20AA2482E3000070E2923080E0A000B0E1DA
|
||||
S1131A30000070E21EFF2FE10000A0E10000A0E121
|
||||
S1131A40A00351E1053071922700008A0130B0E112
|
||||
S1131A500020B0E3010853E3102082320338A031A0
|
||||
S1131A60010453E3082082320334A031010253E31A
|
||||
S1131A70042082320332A031030113E302208202E4
|
||||
S1131A800331B0018330A051012092520CC19FE573
|
||||
S1131A90A3CCDCE7072052E21CC2A0E19C0101E0D8
|
||||
S1131AA09C2080E0001071E20030B0E39120A3E0BC
|
||||
S1131AB0030080E000C0B0E39123ACE00C0080E0C0
|
||||
S1131AC00030B0E3912CA3E0030080E000C0B0E359
|
||||
S1131AD09123ACE00C0080E00030B0E3912CA3E053
|
||||
S1131AE0010072E10300A0E01EFF2FE1040051E3B6
|
||||
S1131AF01B00009A00C0A0E10000B0E32C0151E1FA
|
||||
S1131B001100008AAC0351E181C34C9080008092A3
|
||||
S1131B102C0351E101C34C9040008092AC0251E18E
|
||||
S1131B2081C24C90200080922C0251E101C24C9061
|
||||
S1131B3010008092AC0151E181C14C900800809268
|
||||
S1131B402C0151E101C14C9004008092AC0051E1A0
|
||||
S1131B5081C04C90020080920C0051E101008092FF
|
||||
S1131B601EFF2FE12001A0011EFF2F01010051E300
|
||||
S1131B700000A0331EFF2F91020051E3A000A0013A
|
||||
S1131B801EFF2F01AB20A0E3AA2C82E3AA2882E344
|
||||
S1131B90AA2482E3923080E0A000B0E11EFF2FE18E
|
||||
S1131BA0001E0000C046C046C046C046C046C046EF
|
||||
S1131BB000402DE9050000EB0100A0E10040BDE874
|
||||
S1131BC01EFF2FE10000A0E10000A0E10000A0E161
|
||||
S1131BD0023111E20010714240C033E00000602283
|
||||
S1131BE00120B0E10E00000AA00052E18220A09181
|
||||
S1131BF0FCFFFF3A020050E10330A3E00200402062
|
||||
S1131C00010032E1A220A011F9FFFF1A0010A0E1A7
|
||||
S1131C100300A0E18CC0B0E100006022001061422A
|
||||
S1131C201EFF2FE10000B0E31EFF2FE10000A0E142
|
||||
S1131C30002000000020000001000000004000001F
|
||||
S1131C4000200000020000000060000000200000EE
|
||||
S1131C5003000000008000000020000004000000D9
|
||||
S1131C6000A00000002000000500000000C00000EB
|
||||
S1131C70002000000600000000E00000002000003A
|
||||
S1131C80070000000000010000000100080000003F
|
||||
S1131C900000020000000100090000000000030031
|
||||
S1131CA0002000000A0000000020030000200000C3
|
||||
S1131CB00B00000000400300002000000C000000A6
|
||||
S1131CC000600300002000000D00000000800300FD
|
||||
S1131CD0002000000E00000000A00300002000000F
|
||||
S1131CE00F00000000C003000020000010000000EE
|
||||
S1131CF0433A2F576F726B2F736F667477617265F7
|
||||
S1131D002F4F70656E424C542F5461726765742F67
|
||||
S1131D1044656D6F2F41524D375F4C504332303024
|
||||
S1131D20305F4F6C696D65785F4C50435F4C323265
|
||||
S1131D3039345F43726F7373776F726B732F426FB3
|
||||
S1131D406F742F6964652F2E2E2F2E2E2F2E2E2F7B
|
||||
S1131D502E2E2F536F757263652F41524D375F4C92
|
||||
S1131D605043323030302F63616E2E630000000028
|
||||
S1131D70050200000602000006030000070300003D
|
||||
S1131D800803000009030000090400000A0400001D
|
||||
S1131D900B0400000C0400000C0500000D050000FD
|
||||
S1131DA00E0500000F0500000F06000010060000DD
|
||||
S1131DB01007000010080000433A2F576F726B2F72
|
||||
S1131DC0736F6674776172652F4F70656E424C5401
|
||||
S1131DD02F5461726765742F44656D6F2F41524DA6
|
||||
S1131DE0375F4C5043323030305F4F6C696D6578EB
|
||||
S1131DF05F4C50435F4C323239345F43726F7373BC
|
||||
S1131E00776F726B732F426F6F742F6964652F2E17
|
||||
S1131E102E2F2E2E2F2E2E2F2E2E2F536F757263B4
|
||||
S1131E20652F41524D375F4C5043323030302F755F
|
||||
S1131E306172742E630000004F70656E424C540052
|
||||
S1131E40FCF8F4F0EDEAE6E3E0DDDAD7D4D2CFCC67
|
||||
S1131E50CAC7C5C3C0BEBCBAB8B6B4B2B0AEACAAE9
|
||||
S1131E60A8A7A5A3A2A09F9D9C9A999796949392A4
|
||||
S1131E70908F8E8D8C8A89888786858483828180E1
|
||||
S1071E800400000056
|
||||
S9030040BC
|
|
@ -1,175 +0,0 @@
|
|||
/************************************************************************************//**
|
||||
* \file Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Boot\blt_conf.h
|
||||
* \brief Bootloader configuration header file.
|
||||
* \ingroup Boot_ARM7_LPC2000_Olimex_LPC_L2294_Crossworks
|
||||
* \internal
|
||||
*----------------------------------------------------------------------------------------
|
||||
* C O P Y R I G H T
|
||||
*----------------------------------------------------------------------------------------
|
||||
* Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved
|
||||
*
|
||||
*----------------------------------------------------------------------------------------
|
||||
* L I C E N S E
|
||||
*----------------------------------------------------------------------------------------
|
||||
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You have received a copy of the GNU General Public License along with OpenBLT. It
|
||||
* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
|
||||
*
|
||||
* \endinternal
|
||||
****************************************************************************************/
|
||||
#ifndef BLT_CONF_H
|
||||
#define BLT_CONF_H
|
||||
|
||||
/****************************************************************************************
|
||||
* C P U D R I V E R C O N F I G U R A T I O N
|
||||
****************************************************************************************/
|
||||
/* To properly initialize the baudrate clocks of the communication interface, typically
|
||||
* the speed of the crystal oscillator and/or the speed at which the system runs is
|
||||
* needed. Set these through configurables BOOT_CPU_XTAL_SPEED_KHZ and
|
||||
* BOOT_CPU_SYSTEM_SPEED_KHZ, respectively. To enable data exchange with the host that is
|
||||
* not dependent on the targets architecture, the byte ordering needs to be known.
|
||||
* Setting BOOT_CPU_BYTE_ORDER_MOTOROLA to 1 selects big endian mode and 0 selects
|
||||
* little endian mode.
|
||||
*
|
||||
* Set BOOT_CPU_USER_PROGRAM_START_HOOK to 1 if you would like a hook function to be
|
||||
* called the moment the user program is about to be started. This could be used to
|
||||
* de-initialize application specific parts, for example to stop blinking an LED, etc.
|
||||
*/
|
||||
/** \brief Frequency of the external crystal oscillator. */
|
||||
#define BOOT_CPU_XTAL_SPEED_KHZ (20000)
|
||||
/** \brief Desired system speed. */
|
||||
#define BOOT_CPU_SYSTEM_SPEED_KHZ (60000)
|
||||
/** \brief Motorola or Intel style byte ordering. */
|
||||
#define BOOT_CPU_BYTE_ORDER_MOTOROLA (0)
|
||||
/** \brief Enable/disable hook function call right before user program start. */
|
||||
#define BOOT_CPU_USER_PROGRAM_START_HOOK (0)
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* C O M M U N I C A T I O N I N T E R F A C E C O N F I G U R A T I O N
|
||||
****************************************************************************************/
|
||||
/* The CAN communication interface is selected by setting the BOOT_COM_CAN_ENABLE
|
||||
* configurable to 1. Configurable BOOT_COM_CAN_BAUDRATE selects the communication speed
|
||||
* in bits/second. Two CAN messages are reserved for communication with the host. The
|
||||
* message identifier for sending data from the target to the host is configured with
|
||||
* BOOT_COM_CAN_TXMSG_ID. The one for receiving data from the host is configured with
|
||||
* BOOT_COM_CAN_RXMSG_ID. The maximum amount of data bytes in a message for data
|
||||
* transmission and reception is set through BOOT_COM_CAN_TX_MAX_DATA and
|
||||
* BOOT_COM_CAN_RX_MAX_DATA, respectively. It is common for a microcontroller to have more
|
||||
* than 1 CAN controller on board. The zero-based BOOT_COM_CAN_CHANNEL_INDEX selects the
|
||||
* CAN controller channel.
|
||||
*
|
||||
*/
|
||||
/** \brief Enable/disable CAN transport layer. */
|
||||
#define BOOT_COM_CAN_ENABLE (1)
|
||||
/** \brief Configure the desired CAN baudrate. */
|
||||
#define BOOT_COM_CAN_BAUDRATE (500000)
|
||||
/** \brief Configure CAN message ID target->host. */
|
||||
#define BOOT_COM_CAN_TX_MSG_ID (0x7E1)
|
||||
/** \brief Configure number of bytes in the target->host CAN message. */
|
||||
#define BOOT_COM_CAN_TX_MAX_DATA (8)
|
||||
/** \brief Configure CAN message ID host->target. */
|
||||
#define BOOT_COM_CAN_RX_MSG_ID (0x667)
|
||||
/** \brief Configure number of bytes in the host->target CAN message. */
|
||||
#define BOOT_COM_CAN_RX_MAX_DATA (8)
|
||||
/** \brief Select the desired CAN peripheral as a zero based index. */
|
||||
#define BOOT_COM_CAN_CHANNEL_INDEX (0)
|
||||
|
||||
/* The UART communication interface is selected by setting the BOOT_COM_UART_ENABLE
|
||||
* configurable to 1. Configurable BOOT_COM_UART_BAUDRATE selects the communication speed
|
||||
* in bits/second. The maximum amount of data bytes in a message for data transmission
|
||||
* and reception is set through BOOT_COM_UART_TX_MAX_DATA and BOOT_COM_UART_RX_MAX_DATA,
|
||||
* respectively. It is common for a microcontroller to have more than 1 UART interface
|
||||
* on board. The zero-based BOOT_COM_UART_CHANNEL_INDEX selects the UART interface.
|
||||
*
|
||||
*/
|
||||
/** \brief Enable/disable UART transport layer. */
|
||||
#define BOOT_COM_UART_ENABLE (1)
|
||||
/** \brief Configure the desired communication speed. */
|
||||
#define BOOT_COM_UART_BAUDRATE (57600)
|
||||
/** \brief Configure number of bytes in the target->host data packet. */
|
||||
#define BOOT_COM_UART_TX_MAX_DATA (64)
|
||||
/** \brief Configure number of bytes in the host->target data packet. */
|
||||
#define BOOT_COM_UART_RX_MAX_DATA (64)
|
||||
/** \brief Select the desired UART peripheral as a zero based index. */
|
||||
#define BOOT_COM_UART_CHANNEL_INDEX (0)
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* B A C K D O O R E N T R Y C O N F I G U R A T I O N
|
||||
****************************************************************************************/
|
||||
/* It is possible to implement an application specific method to force the bootloader to
|
||||
* stay active after a reset. Such a backdoor entry into the bootloader is desired in
|
||||
* situations where the user program does not run properly and therefore cannot
|
||||
* reactivate the bootloader. By enabling these hook functions, the application can
|
||||
* implement the backdoor, which overrides the default backdoor entry that is programmed
|
||||
* into the bootloader. When desired for security purposes, these hook functions can
|
||||
* also be implemented in a way that disables the backdoor entry altogether.
|
||||
*/
|
||||
/** \brief Enable/disable the backdoor override hook functions. */
|
||||
#define BOOT_BACKDOOR_HOOKS_ENABLE (0)
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* N O N - V O L A T I L E M E M O R Y D R I V E R C O N F I G U R A T I O N
|
||||
****************************************************************************************/
|
||||
/* The NVM driver typically supports erase and program operations of the internal memory
|
||||
* present on the microcontroller. Through these hook functions the NVM driver can be
|
||||
* extended to support additional memory types such as external flash memory and serial
|
||||
* eeproms. The size of the internal memory in kilobytes is specified with configurable
|
||||
* BOOT_NVM_SIZE_KB. If desired the internal checksum writing and verification method can
|
||||
* be overridden with a application specific method by enabling configuration switch
|
||||
* BOOT_NVM_CHECKSUM_HOOKS_ENABLE.
|
||||
*/
|
||||
/** \brief Enable/disable the NVM hook function for supporting additional memory devices. */
|
||||
#define BOOT_NVM_HOOKS_ENABLE (0)
|
||||
/** \brief Configure the size of the default memory device (typically flash EEPROM). */
|
||||
#define BOOT_NVM_SIZE_KB (256)
|
||||
/** \brief Enable/disable hooks functions to override the user program checksum handling. */
|
||||
#define BOOT_NVM_CHECKSUM_HOOKS_ENABLE (0)
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* W A T C H D O G D R I V E R C O N F I G U R A T I O N
|
||||
****************************************************************************************/
|
||||
/* The COP driver cannot be configured internally in the bootloader, because its use
|
||||
* and configuration is application specific. The bootloader does need to service the
|
||||
* watchdog in case it is used. When the application requires the use of a watchdog,
|
||||
* set BOOT_COP_HOOKS_ENABLE to be able to initialize and service the watchdog through
|
||||
* hook functions.
|
||||
*/
|
||||
/** \brief Enable/disable the hook functions for controlling the watchdog. */
|
||||
#define BOOT_COP_HOOKS_ENABLE (0)
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* S E E D / K E Y S E C U R I T Y C O N F I G U R A T I O N
|
||||
****************************************************************************************/
|
||||
/* A security mechanism can be enabled in the bootloader's XCP module by setting configu-
|
||||
* rable BOOT_XCP_SEED_KEY_ENABLE to 1. Before any memory erase or programming
|
||||
* operations can be performed, access to this resource need to be unlocked.
|
||||
* In the Microboot settings on tab "XCP Protection" you need to specify a DLL that
|
||||
* implements the unlocking algorithm. The demo programs are configured for the (simple)
|
||||
* algorithm in "FeaserKey.dll". The source code for this DLL is available so it can be
|
||||
* customized to your needs.
|
||||
* During the unlock sequence, Microboot requests a seed from the bootloader, which is in
|
||||
* the format of a byte array. Using this seed the unlock algorithm in the DLL computes
|
||||
* a key, which is also a byte array, and sends this back to the bootloader. The
|
||||
* bootloader then verifies this key to determine if programming and erase operations are
|
||||
* permitted.
|
||||
* After enabling this feature the hook functions XcpGetSeedHook() and XcpVerifyKeyHook()
|
||||
* are called by the bootloader to obtain the seed and to verify the key, respectively.
|
||||
*/
|
||||
#define BOOT_XCP_SEED_KEY_ENABLE (0)
|
||||
|
||||
|
||||
#endif /* BLT_CONF_H */
|
||||
/*********************************** end of blt_conf.h *********************************/
|
|
@ -1,7 +0,0 @@
|
|||
/**
|
||||
\defgroup Boot_ARM7_LPC2000_Olimex_LPC_L2294_Crossworks Bootloader
|
||||
\brief Bootloader.
|
||||
\ingroup ARM7_LPC2000_Olimex_LPC_L2294_Crossworks
|
||||
*/
|
||||
|
||||
|
|
@ -1,653 +0,0 @@
|
|||
/************************************************************************************//**
|
||||
* \file Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Boot\extflash.c
|
||||
* \brief Bootloader external flash driver source file.
|
||||
* \ingroup Boot_ARM7_LPC2000_Olimex_LPC_L2294_Crossworks
|
||||
* \internal
|
||||
*----------------------------------------------------------------------------------------
|
||||
* C O P Y R I G H T
|
||||
*----------------------------------------------------------------------------------------
|
||||
* Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved
|
||||
*
|
||||
*----------------------------------------------------------------------------------------
|
||||
* L I C E N S E
|
||||
*----------------------------------------------------------------------------------------
|
||||
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You have received a copy of the GNU General Public License along with OpenBLT. It
|
||||
* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
|
||||
*
|
||||
* \endinternal
|
||||
****************************************************************************************/
|
||||
|
||||
/****************************************************************************************
|
||||
* Include files
|
||||
****************************************************************************************/
|
||||
#include "boot.h" /* bootloader generic header */
|
||||
|
||||
|
||||
#if (BOOT_NVM_HOOKS_ENABLE > 0)
|
||||
/****************************************************************************************
|
||||
* Macro definitions
|
||||
****************************************************************************************/
|
||||
/** \brief Value for an invalid flash sector. */
|
||||
#define FLASH_INVALID_SECTOR (0xff)
|
||||
/** \brief Value for an invalid flash address. */
|
||||
#define FLASH_INVALID_ADDRESS (0xffffffff)
|
||||
/** \brief Standard size of a flash block for writing. */
|
||||
#define FLASH_WRITE_BLOCK_SIZE (512)
|
||||
/** \brief Total numbers of sectors in array flashLayout[]. */
|
||||
#define FLASH_TOTAL_SECTORS (sizeof(flashLayout)/sizeof(flashLayout[0]))
|
||||
/** \brief C3 Intel flash read array command. */
|
||||
#define FLASH_CMD_READ_ARRAY_MODE (0xFF)
|
||||
/** \brief C3 Intel flash read id command. */
|
||||
#define FLASH_CMD_READ_ID_MODE (0x90)
|
||||
/** \brief C3 Intel flash erase command. */
|
||||
#define FLASH_CMD_ERASE_MODE (0x20)
|
||||
/** \brief C3 Intel flash read status command. */
|
||||
#define FLASH_CMD_READ_STATUS_MODE (0x70)
|
||||
/** \brief C3 Intel flash change lock command. */
|
||||
#define FLASH_CMD_CHANGE_LOCK_MODE (0x60)
|
||||
/** \brief C3 Intel flash unlock sector command. */
|
||||
#define FLASH_CMD_UNLOCK_SECTOR (0xD0)
|
||||
/** \brief C3 Intel flash lock sector command. */
|
||||
#define FLASH_CMD_LOCK_SECTOR (0x01)
|
||||
/** \brief C3 Intel flash program command. */
|
||||
#define FLASH_CMD_PROGRAM_MODE (0x40)
|
||||
/** \brief C3 Intel flash erase confirm command. */
|
||||
#define FLASH_CMD_ERASE_CONFIRM (0xD0)
|
||||
/** \brief C3 Intel flash clear status command. */
|
||||
#define FLASH_CMD_CLEAR_STATUS (0x50)
|
||||
/** \brief C3 Intel flash lock bit. */
|
||||
#define FLASH_LOCK_BIT (0x01)
|
||||
/** \brief C3 Intel flash status ready bit. */
|
||||
#define FLASH_STATUS_READY_BIT (0x80)
|
||||
/** \brief C3 Intel flash locked error code. */
|
||||
#define FLASH_ERR_LOCKED (0x02)
|
||||
/** \brief C3 Intel flash Vpp range error code. */
|
||||
#define FLASH_ERR_VPP_RANGE (0x08)
|
||||
/** \brief C3 Intel flash program error code. */
|
||||
#define FLASH_ERR_PROGRAM (0x10)
|
||||
/** \brief C3 Intel flash command sequence error code. */
|
||||
#define FLASH_ERR_CMD_SEQ (0x10)
|
||||
/** \brief C3 Intel flash erase error code. */
|
||||
#define FLASH_ERR_ERASE (0x20)
|
||||
/** \brief Flash erase timeout value. */
|
||||
#define FLASH_ERASE_TIMEOUT ((blt_int32u)5000000)
|
||||
/** \brief Flash program timeout value. */
|
||||
#define FLASH_PROGRAM_TIMEOUT ((blt_int32u)1000000)
|
||||
/** \brief Supported Intel C3 flash manufacturer ID. */
|
||||
#define FLASH_DEV_MAN_ID ((blt_int16u)0x0089)
|
||||
/** \brief Supported Intel C3 flash device ID. */
|
||||
#define FLASH_DEV_ID ((blt_int16u)0x88c3)
|
||||
/** \brief Offset for reading manufacturer ID. */
|
||||
#define FLASH_DEVINFO_MAN_ID ((blt_int16u)0x0000)
|
||||
/** \brief Offset for reading device ID. */
|
||||
#define FLASH_DEVINFO_DEV_ID ((blt_int16u)0x0001)
|
||||
/** \brief Offset for reading lock status. */
|
||||
#define FLASH_DEVINFO_LOCK_STATUS ((blt_int16u)0x0002)
|
||||
/** \brief Runtime efficient macro for obtaining the manufacturer ID. */
|
||||
#define ExtFlashGetManID() (ExtFlashGetDeviceInfo(flashLayout[0].sector_start, \
|
||||
FLASH_DEVINFO_MAN_ID))
|
||||
/** \brief Runtime efficient macro for obtaining the device ID. */
|
||||
#define ExtFlashGetDevID() (ExtFlashGetDeviceInfo(flashLayout[0].sector_start, \
|
||||
FLASH_DEVINFO_DEV_ID))
|
||||
/** \brief Runtime efficient macro for obtaining the lock status. */
|
||||
#define ExtFlashGetLockStatus(base) (ExtFlashGetDeviceInfo(base, \
|
||||
FLASH_DEVINFO_LOCK_STATUS))
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Type definitions
|
||||
****************************************************************************************/
|
||||
/** \brief Flash sector descriptor type. */
|
||||
typedef struct
|
||||
{
|
||||
blt_addr sector_start; /**< sector start address */
|
||||
blt_int32u sector_size; /**< sector size in bytes */
|
||||
blt_int8u sector_num; /**< sector number */
|
||||
} tFlashSector;
|
||||
|
||||
/** \brief Structure type for grouping flash block information.
|
||||
* \details Programming is done per block of max FLASH_WRITE_BLOCK_SIZE. for this a
|
||||
* flash block manager is implemented in this driver. this flash block manager
|
||||
* depends on this flash block info structure. It holds the base address of
|
||||
* the flash block and the data that should be programmed into the flash
|
||||
* block.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
blt_addr base_addr; /**< Base address for the flash operation.*/
|
||||
blt_int8u data[FLASH_WRITE_BLOCK_SIZE]; /**< Data array. */
|
||||
} tFlashBlockInfo;
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Function prototypes
|
||||
****************************************************************************************/
|
||||
static blt_bool ExtFlashInitBlock(tFlashBlockInfo *block, blt_addr address);
|
||||
static tFlashBlockInfo *ExtFlashSwitchBlock(tFlashBlockInfo *block, blt_addr base_addr);
|
||||
static blt_bool ExtFlashAddToBlock(tFlashBlockInfo *block, blt_addr address,
|
||||
blt_int8u *data, blt_int32u len);
|
||||
static blt_bool ExtFlashWriteBlock(tFlashBlockInfo *block);
|
||||
static blt_bool ExtFlashEraseSector(blt_addr sector_base);
|
||||
static blt_int16u ExtFlashGetDeviceInfo(blt_addr block_base, blt_int16u info);
|
||||
static void ExtFlashLockSector(blt_addr sector_base);
|
||||
static void ExtFlashUnlockSector(blt_addr sector_base);
|
||||
static blt_int8u ExtFlashGetSector(blt_addr address);
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Local constant declarations
|
||||
****************************************************************************************/
|
||||
/** \brief Array wit the layout of the flash memory.
|
||||
* \details The current layout supports the 2MB external C3 Intel flash:
|
||||
* - manufacturer id = 0x0089
|
||||
* - device id = 0x88c3 (16 Mbit bottom boot device)
|
||||
* Note that what Intel calls a block in the user manual, is called a sector in this
|
||||
* driver.
|
||||
*/
|
||||
static const tFlashSector flashLayout[] =
|
||||
{
|
||||
{ 0x80000000, 0x02000, 0}, /* flash sector 0 - 8 kbyte */
|
||||
{ 0x80002000, 0x02000, 1}, /* flash sector 1 - 8 kbyte */
|
||||
{ 0x80004000, 0x02000, 2}, /* flash sector 2 - 8 kbyte */
|
||||
{ 0x80006000, 0x02000, 3}, /* flash sector 3 - 8 kbyte */
|
||||
{ 0x80008000, 0x02000, 4}, /* flash sector 4 - 8 kbyte */
|
||||
{ 0x8000A000, 0x02000, 5}, /* flash sector 5 - 8 kbyte */
|
||||
{ 0x8000C000, 0x02000, 6}, /* flash sector 6 - 8 kbyte */
|
||||
{ 0x8000E000, 0x02000, 7}, /* flash sector 7 - 8 kbyte */
|
||||
{ 0x80010000, 0x10000, 8}, /* flash sector 8 - 64 kbyte */
|
||||
{ 0x80020000, 0x10000, 9}, /* flash sector 9 - 64 kbyte */
|
||||
{ 0x80030000, 0x10000, 10}, /* flash sector 10 - 64 kbyte */
|
||||
{ 0x80040000, 0x10000, 11}, /* flash sector 11 - 64 kbyte */
|
||||
{ 0x80050000, 0x10000, 12}, /* flash sector 12 - 64 kbyte */
|
||||
{ 0x80060000, 0x10000, 13}, /* flash sector 13 - 64 kbyte */
|
||||
{ 0x80070000, 0x10000, 14}, /* flash sector 14 - 64 kbyte */
|
||||
{ 0x80080000, 0x10000, 15}, /* flash sector 15 - 64 kbyte */
|
||||
{ 0x80090000, 0x10000, 16}, /* flash sector 16 - 64 kbyte */
|
||||
{ 0x800A0000, 0x10000, 17}, /* flash sector 17 - 64 kbyte */
|
||||
{ 0x800B0000, 0x10000, 18}, /* flash sector 18 - 64 kbyte */
|
||||
{ 0x800C0000, 0x10000, 19}, /* flash sector 19 - 64 kbyte */
|
||||
{ 0x800D0000, 0x10000, 20}, /* flash sector 20 - 64 kbyte */
|
||||
{ 0x800E0000, 0x10000, 21}, /* flash sector 21 - 64 kbyte */
|
||||
{ 0x800F0000, 0x10000, 22}, /* flash sector 22 - 64 kbyte */
|
||||
{ 0x80100000, 0x10000, 23}, /* flash sector 23 - 64 kbyte */
|
||||
{ 0x80110000, 0x10000, 24}, /* flash sector 24 - 64 kbyte */
|
||||
{ 0x80120000, 0x10000, 25}, /* flash sector 25 - 64 kbyte */
|
||||
{ 0x80130000, 0x10000, 26}, /* flash sector 26 - 64 kbyte */
|
||||
{ 0x80140000, 0x10000, 27}, /* flash sector 27 - 64 kbyte */
|
||||
{ 0x80150000, 0x10000, 28}, /* flash sector 28 - 64 kbyte */
|
||||
{ 0x80160000, 0x10000, 29}, /* flash sector 29 - 64 kbyte */
|
||||
{ 0x80170000, 0x10000, 30}, /* flash sector 30 - 64 kbyte */
|
||||
{ 0x80180000, 0x10000, 31}, /* flash sector 31 - 64 kbyte */
|
||||
{ 0x80190000, 0x10000, 32}, /* flash sector 32 - 64 kbyte */
|
||||
{ 0x801A0000, 0x10000, 33}, /* flash sector 33 - 64 kbyte */
|
||||
{ 0x801B0000, 0x10000, 34}, /* flash sector 34 - 64 kbyte */
|
||||
{ 0x801C0000, 0x10000, 35}, /* flash sector 35 - 64 kbyte */
|
||||
{ 0x801D0000, 0x10000, 36}, /* flash sector 36 - 64 kbyte */
|
||||
{ 0x801E0000, 0x10000, 37}, /* flash sector 37 - 64 kbyte */
|
||||
{ 0x801F0000, 0x10000, 38} /* flash sector 38 - 64 kbyte */
|
||||
};
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Local data declarations
|
||||
****************************************************************************************/
|
||||
/** \brief Local variable with information about the flash block that is currently
|
||||
* being operated on.
|
||||
* \details The smallest amount of flash that can be programmed is
|
||||
* FLASH_WRITE_BLOCK_SIZE. A flash block manager is implemented in this driver
|
||||
* and stores info in this variable. Whenever new data should be flashed, it
|
||||
* is first added to a RAM buffer, which is part of this variable. Whenever
|
||||
* the RAM buffer, which has the size of a flash block, is full or data needs
|
||||
* to be written to a different block, the contents of the RAM buffer are
|
||||
* programmed to flash. The flash block manager requires some software
|
||||
* overhead, yet results is faster flash programming because data is first
|
||||
* harvested, ideally until there is enough to program an entire flash block,
|
||||
* before the flash device is actually operated on.
|
||||
*/
|
||||
static tFlashBlockInfo blockInfo;
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Initializes the flash driver.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
void ExtFlashInit(void)
|
||||
{
|
||||
/* init the flash block info struct by setting the address to an invalid address */
|
||||
blockInfo.base_addr = FLASH_INVALID_ADDRESS;
|
||||
/* check the flash device identification */
|
||||
if ((ExtFlashGetManID() != FLASH_DEV_MAN_ID) || (ExtFlashGetDevID() != FLASH_DEV_ID))
|
||||
{
|
||||
ASSERT_RT(BLT_FALSE);
|
||||
}
|
||||
} /*** end of ExtFlashInit ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Writes the data to flash.
|
||||
** \param addr Start address.
|
||||
** \param len Length in bytes.
|
||||
** \param data Pointer to the data buffer.
|
||||
** \return BLT_NVM_OKAY if successful, BLT_NVM_NOT_IN_RANGE if the address is
|
||||
** not within the supported memory range, or BLT_NVM_ERROR is the write
|
||||
** operation failed.
|
||||
**
|
||||
****************************************************************************************/
|
||||
blt_int8u ExtFlashWrite(blt_addr addr, blt_int32u len, blt_int8u *data)
|
||||
{
|
||||
/* make sure the addresses are within the flash device */
|
||||
if ( (ExtFlashGetSector(addr) == FLASH_INVALID_SECTOR) || \
|
||||
(ExtFlashGetSector(addr+len-1) == FLASH_INVALID_SECTOR) )
|
||||
{
|
||||
return BLT_NVM_NOT_IN_RANGE;
|
||||
}
|
||||
|
||||
/* let the block manager handle it */
|
||||
if (ExtFlashAddToBlock(&blockInfo, addr, data, len) == BLT_FALSE)
|
||||
{
|
||||
return BLT_NVM_ERROR;
|
||||
}
|
||||
return BLT_NVM_OKAY;
|
||||
} /*** end of FlashWrite ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Erases the flash memory. Note that this function also checks that no
|
||||
** data is erased outside the flash memory region.
|
||||
** \param addr Start address.
|
||||
** \param len Length in bytes.
|
||||
** \return BLT_NVM_OKAY if successful, BLT_NVM_NOT_IN_RANGE if the address is
|
||||
** not within the supported memory range, or BLT_NVM_ERROR is the erase
|
||||
** operation failed.
|
||||
**
|
||||
****************************************************************************************/
|
||||
blt_int8u ExtFlashErase(blt_addr addr, blt_int32u len)
|
||||
{
|
||||
blt_int8u first_sector;
|
||||
blt_int8u last_sector;
|
||||
blt_int8u sectorIdx;
|
||||
|
||||
/* obtain the first and last sector number */
|
||||
first_sector = ExtFlashGetSector(addr);
|
||||
last_sector = ExtFlashGetSector(addr+len-1);
|
||||
/* check them */
|
||||
if ( (first_sector == FLASH_INVALID_SECTOR) || (last_sector == FLASH_INVALID_SECTOR) )
|
||||
{
|
||||
return BLT_NVM_NOT_IN_RANGE;
|
||||
}
|
||||
/* erase the sectors one-by-one */
|
||||
for (sectorIdx = first_sector; sectorIdx <= last_sector; sectorIdx++)
|
||||
{
|
||||
/* keep the watchdog happy */
|
||||
CopService();
|
||||
/* erase the sector */
|
||||
if (ExtFlashEraseSector(flashLayout[sectorIdx].sector_start) == BLT_FALSE)
|
||||
{
|
||||
return BLT_NVM_ERROR;
|
||||
}
|
||||
}
|
||||
/* done so return the result of the operation */
|
||||
return BLT_NVM_OKAY;
|
||||
} /*** end of ExtFlashErase ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Finalizes the flash driver operations.
|
||||
** \return BLT_TRUE is succesful, BLT_FALSE otherwise.
|
||||
**
|
||||
****************************************************************************************/
|
||||
blt_bool ExtFlashDone(void)
|
||||
{
|
||||
/* check if there is still data waiting to be programmed */
|
||||
if (blockInfo.base_addr != FLASH_INVALID_ADDRESS)
|
||||
{
|
||||
if (ExtFlashWriteBlock(&blockInfo) == BLT_FALSE)
|
||||
{
|
||||
return BLT_FALSE;
|
||||
}
|
||||
}
|
||||
/* still here so all is okay */
|
||||
return BLT_TRUE;
|
||||
} /*** end of ExtFlashDone ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Copies data currently in flash to the block->data and sets the
|
||||
** base address.
|
||||
** \param block Pointer to flash block info structure to operate on.
|
||||
** \param address Base address of the block data.
|
||||
** \return BLT_TRUE is succesful, BLT_FALSE otherwise.
|
||||
**
|
||||
****************************************************************************************/
|
||||
static blt_bool ExtFlashInitBlock(tFlashBlockInfo *block, blt_addr address)
|
||||
{
|
||||
/* check address alignment */
|
||||
if ((address % FLASH_WRITE_BLOCK_SIZE) != 0)
|
||||
{
|
||||
return BLT_FALSE;
|
||||
}
|
||||
/* make sure that we are initializing a new block and not the same one */
|
||||
if (block->base_addr == address)
|
||||
{
|
||||
/* block already initialized, so nothing to do */
|
||||
return BLT_TRUE;
|
||||
}
|
||||
/* set the base address and copies the current data from flash */
|
||||
block->base_addr = address;
|
||||
CpuMemCopy((blt_addr)block->data, address, FLASH_WRITE_BLOCK_SIZE);
|
||||
return BLT_TRUE;
|
||||
} /*** end of ExtFlashInitBlock ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Switches blocks by programming the current one and initializing the next.
|
||||
** \param block Pointer to flash block info structure to operate on.
|
||||
** \param base_addr Base address for the next block.
|
||||
** \return The pointer of the block info struct that is no being used, or a NULL
|
||||
** pointer in case of error.
|
||||
**
|
||||
****************************************************************************************/
|
||||
static tFlashBlockInfo *ExtFlashSwitchBlock(tFlashBlockInfo *block, blt_addr base_addr)
|
||||
{
|
||||
/* need to switch to a new block, so program the current one and init the next */
|
||||
if (ExtFlashWriteBlock(block) == BLT_FALSE)
|
||||
{
|
||||
return BLT_NULL;
|
||||
}
|
||||
/* initialize the new block when necessary */
|
||||
if (ExtFlashInitBlock(block, base_addr) == BLT_FALSE)
|
||||
{
|
||||
return BLT_NULL;
|
||||
}
|
||||
/* still here to all is okay */
|
||||
return block;
|
||||
} /*** end of ExtFlashSwitchBlock ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Programming is done per block. This function adds data to the block
|
||||
** that is currently collecting data to be written to flash. If the
|
||||
** address is outside of the current block, the current block is written
|
||||
** to flash an a new block is initialized.
|
||||
** \param block Pointer to flash block info structure to operate on.
|
||||
** \param address Flash destination address.
|
||||
** \param data Pointer to the byte array with data.
|
||||
** \param len Number of bytes to add to the block.
|
||||
** \return BLT_TRUE if successful, BLT_FALSE otherwise.
|
||||
**
|
||||
****************************************************************************************/
|
||||
static blt_bool ExtFlashAddToBlock(tFlashBlockInfo *block, blt_addr address,
|
||||
blt_int8u *data, blt_int32u len)
|
||||
{
|
||||
blt_addr current_base_addr;
|
||||
blt_int8u *dst;
|
||||
blt_int8u *src;
|
||||
|
||||
/* determine the current base address */
|
||||
current_base_addr = (address/FLASH_WRITE_BLOCK_SIZE)*FLASH_WRITE_BLOCK_SIZE;
|
||||
|
||||
/* make sure the blockInfo is not uninitialized */
|
||||
if (block->base_addr == FLASH_INVALID_ADDRESS)
|
||||
{
|
||||
/* initialize the blockInfo struct for the current block */
|
||||
if (ExtFlashInitBlock(block, current_base_addr) == BLT_FALSE)
|
||||
{
|
||||
return BLT_FALSE;
|
||||
}
|
||||
}
|
||||
/* check if the new data fits in the current block */
|
||||
if (block->base_addr != current_base_addr)
|
||||
{
|
||||
/* need to switch to a new block, so program the current one and init the next */
|
||||
block = ExtFlashSwitchBlock(block, current_base_addr);
|
||||
if (block == BLT_NULL)
|
||||
{
|
||||
return BLT_FALSE;
|
||||
}
|
||||
}
|
||||
/* add the data to the current block, but check for block overflow */
|
||||
dst = &(block->data[address - block->base_addr]);
|
||||
src = data;
|
||||
do
|
||||
{
|
||||
/* keep the watchdog happy */
|
||||
CopService();
|
||||
/* buffer overflow? */
|
||||
if ((blt_addr)(dst-&(block->data[0])) >= FLASH_WRITE_BLOCK_SIZE)
|
||||
{
|
||||
/* need to switch to a new block, so program the current one and init the next */
|
||||
block = ExtFlashSwitchBlock(block, current_base_addr+FLASH_WRITE_BLOCK_SIZE);
|
||||
if (block == BLT_NULL)
|
||||
{
|
||||
return BLT_FALSE;
|
||||
}
|
||||
/* reset destination pointer */
|
||||
dst = &(block->data[0]);
|
||||
}
|
||||
/* write the data to the buffer */
|
||||
*dst = *src;
|
||||
/* update pointers */
|
||||
dst++;
|
||||
src++;
|
||||
/* decrement byte counter */
|
||||
len--;
|
||||
}
|
||||
while (len > 0);
|
||||
/* still here so all is good */
|
||||
return BLT_TRUE;
|
||||
} /*** end of ExtFlashAddToBlock ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Programs FLASH_WRITE_BLOCK_SIZE bytes to flash from the block->data array.
|
||||
** \param block Pointer to flash block info structure to operate on.
|
||||
** \return BLT_TRUE if successful, BLT_FALSE otherwise.
|
||||
**
|
||||
****************************************************************************************/
|
||||
static blt_bool ExtFlashWriteBlock(tFlashBlockInfo *block)
|
||||
{
|
||||
volatile blt_int16u *pAddr;
|
||||
volatile blt_int16u *pData;
|
||||
blt_bool result = BLT_TRUE;
|
||||
volatile blt_int32u timeout = 0;
|
||||
|
||||
/* unlock the sector */
|
||||
ExtFlashUnlockSector(block->base_addr);
|
||||
/* init pointer to valid address in the flash block */
|
||||
pAddr = (blt_int16u *)block->base_addr;
|
||||
/* init pointer to start of block data */
|
||||
pData = (blt_int16u *)block->data;
|
||||
/* program all block data 16-bits at a time */
|
||||
while ((blt_addr)pAddr < (block->base_addr+FLASH_WRITE_BLOCK_SIZE))
|
||||
{
|
||||
/* keep the watchdog happy */
|
||||
CopService();
|
||||
/* issue program setup command */
|
||||
*pAddr = FLASH_CMD_PROGRAM_MODE;
|
||||
/* write 16-bit data that is to be programmed to start programming operation */
|
||||
*pAddr = *pData;
|
||||
/* check status register for completion */
|
||||
*pAddr = FLASH_CMD_READ_STATUS_MODE;
|
||||
/* wait for completion or timeout */
|
||||
while( ((*pAddr & FLASH_STATUS_READY_BIT) == 0) && (timeout < FLASH_PROGRAM_TIMEOUT) )
|
||||
{
|
||||
timeout++;
|
||||
}
|
||||
/* check for possible errors */
|
||||
if ( (timeout >= FLASH_ERASE_TIMEOUT) || \
|
||||
((*pAddr & (FLASH_ERR_LOCKED | FLASH_ERR_VPP_RANGE | FLASH_ERR_PROGRAM))!= 0) )
|
||||
{
|
||||
result = BLT_FALSE;
|
||||
}
|
||||
/* clear the status register */
|
||||
*pAddr = FLASH_CMD_CLEAR_STATUS;
|
||||
/* increment address and data pointers */
|
||||
pAddr++;
|
||||
pData++;
|
||||
}
|
||||
/* lock the sector. this also switches back to read array mode */
|
||||
ExtFlashLockSector(block->base_addr);
|
||||
/* inform the caller about the result */
|
||||
return result;
|
||||
} /*** end of ExtFlashWriteBlock ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Erases the flash sector.
|
||||
** \param sector_base Base address of the sector to erase.
|
||||
** \return BLT_TRUE if successful, BLT_FALSE otherwise.
|
||||
**
|
||||
****************************************************************************************/
|
||||
static blt_bool ExtFlashEraseSector(blt_addr sector_base)
|
||||
{
|
||||
volatile blt_int16u *pAddr;
|
||||
blt_bool result = BLT_TRUE;
|
||||
volatile blt_int32u timeout = 0;
|
||||
|
||||
/* unlock the sector */
|
||||
ExtFlashUnlockSector(sector_base);
|
||||
/* init pointer to valid address in the flash sector */
|
||||
pAddr = (blt_int16u *)sector_base;
|
||||
/* issue erase setup command */
|
||||
*pAddr = FLASH_CMD_ERASE_MODE;
|
||||
/* issue erase confirm command */
|
||||
*pAddr = FLASH_CMD_ERASE_CONFIRM;
|
||||
/* check status register for completion */
|
||||
*pAddr = FLASH_CMD_READ_STATUS_MODE;
|
||||
/* wait for completion or timeout */
|
||||
while( ((*pAddr & FLASH_STATUS_READY_BIT) == 0) && (timeout < FLASH_ERASE_TIMEOUT) )
|
||||
{
|
||||
timeout++;
|
||||
}
|
||||
/* check for possible errors */
|
||||
if ( (timeout >= FLASH_ERASE_TIMEOUT) || \
|
||||
((*pAddr & (FLASH_ERR_LOCKED | FLASH_ERR_VPP_RANGE | FLASH_ERR_ERASE))!= 0) )
|
||||
{
|
||||
result = BLT_FALSE;
|
||||
}
|
||||
/* clear the status register */
|
||||
*pAddr = FLASH_CMD_CLEAR_STATUS;
|
||||
/* lock the sector. this also switches back to read array mode */
|
||||
ExtFlashLockSector(sector_base);
|
||||
/* inform the caller about the result */
|
||||
return result;
|
||||
} /*** end of ExtFlashEraseSector ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Locks the flash sector.
|
||||
** \param sector_base Base address of the sector to lock.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
static void ExtFlashLockSector(blt_addr sector_base)
|
||||
{
|
||||
volatile blt_int16u *pAddr;
|
||||
|
||||
/* no need to lock a sector that is already locked */
|
||||
if ((ExtFlashGetLockStatus(sector_base) & FLASH_LOCK_BIT) != 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
/* init pointer to valid address in the flash sector */
|
||||
pAddr = (blt_int16u *)sector_base;
|
||||
/* switch to change lock mode */
|
||||
*pAddr = FLASH_CMD_CHANGE_LOCK_MODE;
|
||||
/* unlock the sector */
|
||||
*pAddr = FLASH_CMD_LOCK_SECTOR;
|
||||
/* check that the sector is now actually locked */
|
||||
ASSERT_RT((ExtFlashGetLockStatus(sector_base) & FLASH_LOCK_BIT) != 0);
|
||||
} /*** end of ExtFlashLockSector ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Unlocks the flash sector.
|
||||
** \param sector_base Base address of the sector to unlock.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
static void ExtFlashUnlockSector(blt_addr sector_base)
|
||||
{
|
||||
volatile blt_int16u *pAddr;
|
||||
|
||||
/* no need to unlock a sector that is already unlocked */
|
||||
if ((ExtFlashGetLockStatus(sector_base) & FLASH_LOCK_BIT) == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
/* init pointer to valid address in the flash sector */
|
||||
pAddr = (blt_int16u *)sector_base;
|
||||
/* switch to change lock mode */
|
||||
*pAddr = FLASH_CMD_CHANGE_LOCK_MODE;
|
||||
/* unlock the sector */
|
||||
*pAddr = FLASH_CMD_UNLOCK_SECTOR;
|
||||
/* check that the sector is now actually unlocked */
|
||||
ASSERT_RT((ExtFlashGetLockStatus(sector_base) & FLASH_LOCK_BIT) == 0);
|
||||
} /*** end of ExtFlashUnlockSector ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Obtains device information from the flash device.
|
||||
** \param sector_base Base address of the sector to get the info from.
|
||||
** \param info Identifier to the type of info to obtain.
|
||||
** \return Device info.
|
||||
**
|
||||
****************************************************************************************/
|
||||
static blt_int16u ExtFlashGetDeviceInfo(blt_addr sector_base, blt_int16u info)
|
||||
{
|
||||
volatile blt_int16u *pAddr;
|
||||
blt_int16u readData;
|
||||
|
||||
/* init pointer to any valid address in the flash device */
|
||||
pAddr = (blt_int16u *)sector_base + info;
|
||||
/* switch to read identifier mode */
|
||||
*pAddr = FLASH_CMD_READ_ID_MODE;
|
||||
/* read the info */
|
||||
readData = *pAddr;
|
||||
/* switch back to reading mode */
|
||||
*pAddr = FLASH_CMD_READ_ARRAY_MODE;
|
||||
/* return the result */
|
||||
return readData;
|
||||
} /*** end of ExtFlashGetDeviceInfo ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Determines the flash sector the address is in.
|
||||
** \param address Address in the flash sector.
|
||||
** \return Flash sector number or FLASH_INVALID_SECTOR
|
||||
**
|
||||
****************************************************************************************/
|
||||
static blt_int8u ExtFlashGetSector(blt_addr address)
|
||||
{
|
||||
blt_int8u sectorIdx;
|
||||
|
||||
/* search through the sectors to find the right one */
|
||||
for (sectorIdx = 0; sectorIdx < FLASH_TOTAL_SECTORS; sectorIdx++)
|
||||
{
|
||||
/* keep the watchdog happy */
|
||||
CopService();
|
||||
/* is the address in this sector? */
|
||||
if ( (address >= flashLayout[sectorIdx].sector_start) && \
|
||||
(address < (flashLayout[sectorIdx].sector_start + \
|
||||
flashLayout[sectorIdx].sector_size)) )
|
||||
{
|
||||
/* return the sector number */
|
||||
return flashLayout[sectorIdx].sector_num;
|
||||
}
|
||||
}
|
||||
/* still here so no valid sector found */
|
||||
return FLASH_INVALID_SECTOR;
|
||||
} /*** end of ExtFlashGetSector ***/
|
||||
#endif
|
||||
|
||||
/*********************************** end of extflash.c *********************************/
|
|
@ -1,42 +0,0 @@
|
|||
/************************************************************************************//**
|
||||
* \file Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Boot\extflash.h
|
||||
* \brief Bootloader external flash driver header file.
|
||||
* \ingroup Boot_ARM7_LPC2000_Olimex_LPC_L2294_Crossworks
|
||||
* \internal
|
||||
*----------------------------------------------------------------------------------------
|
||||
* C O P Y R I G H T
|
||||
*----------------------------------------------------------------------------------------
|
||||
* Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved
|
||||
*
|
||||
*----------------------------------------------------------------------------------------
|
||||
* L I C E N S E
|
||||
*----------------------------------------------------------------------------------------
|
||||
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You have received a copy of the GNU General Public License along with OpenBLT. It
|
||||
* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
|
||||
*
|
||||
* \endinternal
|
||||
****************************************************************************************/
|
||||
#ifndef EXTFLASH_H
|
||||
#define EXTFLASH_H
|
||||
|
||||
#if (BOOT_NVM_HOOKS_ENABLE > 0)
|
||||
/****************************************************************************************
|
||||
* Function prototypes
|
||||
****************************************************************************************/
|
||||
void ExtFlashInit(void);
|
||||
blt_int8u ExtFlashWrite(blt_addr addr, blt_int32u len, blt_int8u *data);
|
||||
blt_int8u ExtFlashErase(blt_addr addr, blt_int32u len);
|
||||
blt_bool ExtFlashDone(void);
|
||||
#endif
|
||||
|
||||
#endif /* EXTFLASH_H */
|
||||
/*********************************** end of extflash.h *********************************/
|
|
@ -1,296 +0,0 @@
|
|||
/************************************************************************************//**
|
||||
* \file Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Boot\hooks.c
|
||||
* \brief Bootloader callback source file.
|
||||
* \ingroup Boot_ARM7_LPC2000_Olimex_LPC_L2294_Crossworks
|
||||
* \internal
|
||||
*----------------------------------------------------------------------------------------
|
||||
* C O P Y R I G H T
|
||||
*----------------------------------------------------------------------------------------
|
||||
* Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved
|
||||
*
|
||||
*----------------------------------------------------------------------------------------
|
||||
* L I C E N S E
|
||||
*----------------------------------------------------------------------------------------
|
||||
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You have received a copy of the GNU General Public License along with OpenBLT. It
|
||||
* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
|
||||
*
|
||||
* \endinternal
|
||||
****************************************************************************************/
|
||||
|
||||
/****************************************************************************************
|
||||
* Include files
|
||||
****************************************************************************************/
|
||||
#include "boot.h" /* bootloader generic header */
|
||||
#include "lpc2294.h" /* CPU register definitions */
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* B A C K D O O R E N T R Y H O O K F U N C T I O N S
|
||||
****************************************************************************************/
|
||||
|
||||
#if (BOOT_BACKDOOR_HOOKS_ENABLE > 0)
|
||||
/************************************************************************************//**
|
||||
** \brief Initializes the backdoor entry option.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
void BackDoorInitHook(void)
|
||||
{
|
||||
/* configure the button connected to P0.16 as a digital input */
|
||||
IO0DIR &= ~(1<<16);
|
||||
} /*** end of BackDoorInitHook ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Checks if a backdoor entry is requested.
|
||||
** \return BLT_TRUE if the backdoor entry is requested, BLT_FALSE otherwise.
|
||||
**
|
||||
****************************************************************************************/
|
||||
blt_bool BackDoorEntryHook(void)
|
||||
{
|
||||
/* button P0.16 has a pullup, so will read high by default. enter backdoor only when
|
||||
* this button is pressed. this is the case when it reads low */
|
||||
if ((IO0PIN & (1<<16)) == 0)
|
||||
{
|
||||
return BLT_TRUE;
|
||||
}
|
||||
return BLT_FALSE;
|
||||
} /*** end of BackDoorEntryHook ***/
|
||||
#endif /* BOOT_BACKDOOR_HOOKS_ENABLE > 0 */
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* C P U D R I V E R H O O K F U N C T I O N S
|
||||
****************************************************************************************/
|
||||
|
||||
#if (BOOT_CPU_USER_PROGRAM_START_HOOK > 0)
|
||||
/************************************************************************************//**
|
||||
** \brief Callback that gets called when the bootloader is about to exit and
|
||||
** hand over control to the user program. This is the last moment that
|
||||
** some final checking can be performed and if necessary prevent the
|
||||
** bootloader from activiting the user program.
|
||||
** \return BLT_TRUE if it is okay to start the user program, BLT_FALSE to keep
|
||||
** keep the bootloader active.
|
||||
**
|
||||
****************************************************************************************/
|
||||
blt_bool CpuUserProgramStartHook(void)
|
||||
{
|
||||
/* okay to start the user program */
|
||||
return BLT_TRUE;
|
||||
} /*** end of CpuUserProgramStartHook ***/
|
||||
#endif /* BOOT_CPU_USER_PROGRAM_START_HOOK > 0 */
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* N O N - V O L A T I L E M E M O R Y D R I V E R H O O K F U N C T I O N S
|
||||
****************************************************************************************/
|
||||
|
||||
#if (BOOT_NVM_HOOKS_ENABLE > 0)
|
||||
#include "extflash.h"
|
||||
/************************************************************************************//**
|
||||
** \brief Callback that gets called at the start of the internal NVM driver
|
||||
** initialization routine.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
void NvmInitHook(void)
|
||||
{
|
||||
/* init the external flash driver */
|
||||
ExtFlashInit();
|
||||
} /*** end of NvmInitHook ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Callback that gets called at the start of a firmware update to reinitialize
|
||||
** the NVM driver.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
void NvmReinitHook(void)
|
||||
{
|
||||
} /*** end of NvmReinitHook ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Callback that gets called at the start of the NVM driver write
|
||||
** routine. It allows additional memory to be operated on. If the address
|
||||
** is not within the range of the additional memory, then
|
||||
** BLT_NVM_NOT_IN_RANGE must be returned to indicate that the data hasn't
|
||||
** been written yet.
|
||||
** \param addr Start address.
|
||||
** \param len Length in bytes.
|
||||
** \param data Pointer to the data buffer.
|
||||
** \return BLT_NVM_OKAY if successful, BLT_NVM_NOT_IN_RANGE if the address is
|
||||
** not within the supported memory range, or BLT_NVM_ERROR is the write
|
||||
** operation failed.
|
||||
**
|
||||
****************************************************************************************/
|
||||
blt_int8u NvmWriteHook(blt_addr addr, blt_int32u len, blt_int8u *data)
|
||||
{
|
||||
/* attempt to write with the external flash driver */
|
||||
return ExtFlashWrite(addr, len, data);
|
||||
} /*** end of NvmWriteHook ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Callback that gets called at the start of the NVM driver erase
|
||||
** routine. It allows additional memory to be operated on. If the address
|
||||
** is not within the range of the additional memory, then
|
||||
** BLT_NVM_NOT_IN_RANGE must be returned to indicate that the memory
|
||||
** hasn't been erased yet.
|
||||
** \param addr Start address.
|
||||
** \param len Length in bytes.
|
||||
** \return BLT_NVM_OKAY if successful, BLT_NVM_NOT_IN_RANGE if the address is
|
||||
** not within the supported memory range, or BLT_NVM_ERROR is the erase
|
||||
** operation failed.
|
||||
**
|
||||
****************************************************************************************/
|
||||
blt_int8u NvmEraseHook(blt_addr addr, blt_int32u len)
|
||||
{
|
||||
/* attempt to erase with the external flash driver */
|
||||
return ExtFlashErase(addr, len);
|
||||
} /*** end of NvmEraseHook ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Callback that gets called at the end of the NVM programming session.
|
||||
** \return BLT_TRUE is successful, BLT_FALSE otherwise.
|
||||
**
|
||||
****************************************************************************************/
|
||||
blt_bool NvmDoneHook(void)
|
||||
{
|
||||
/* finish up the operations of the external flash driver */
|
||||
return ExtFlashDone();
|
||||
} /*** end of NvmDoneHook ***/
|
||||
#endif /* BOOT_NVM_HOOKS_ENABLE > 0 */
|
||||
|
||||
|
||||
#if (BOOT_NVM_CHECKSUM_HOOKS_ENABLE > 0)
|
||||
/************************************************************************************//**
|
||||
** \brief Verifies the checksum, which indicates that a valid user program is
|
||||
** present and can be started.
|
||||
** \return BLT_TRUE if successful, BLT_FALSE otherwise.
|
||||
**
|
||||
****************************************************************************************/
|
||||
blt_bool NvmVerifyChecksumHook(void)
|
||||
{
|
||||
return BLT_TRUE;
|
||||
} /*** end of NvmVerifyChecksum ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Writes a checksum of the user program to non-volatile memory. This is
|
||||
** performed once the entire user program has been programmed. Through
|
||||
** the checksum, the bootloader can check if a valid user programming is
|
||||
** present and can be started.
|
||||
** \return BLT_TRUE if successful, BLT_FALSE otherwise.
|
||||
**
|
||||
****************************************************************************************/
|
||||
blt_bool NvmWriteChecksumHook(void)
|
||||
{
|
||||
return BLT_TRUE;
|
||||
}
|
||||
#endif /* BOOT_NVM_CHECKSUM_HOOKS_ENABLE > 0 */
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* W A T C H D O G D R I V E R H O O K F U N C T I O N S
|
||||
****************************************************************************************/
|
||||
|
||||
#if (BOOT_COP_HOOKS_ENABLE > 0)
|
||||
/************************************************************************************//**
|
||||
** \brief Callback that gets called at the end of the internal COP driver
|
||||
** initialization routine. It can be used to configure and enable the
|
||||
** watchdog.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
void CopInitHook(void)
|
||||
{
|
||||
} /*** end of CopInitHook ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Callback that gets called at the end of the internal COP driver
|
||||
** service routine. This gets called upon initialization and during
|
||||
** potential long lasting loops and routine. It can be used to service
|
||||
** the watchdog to prevent a watchdog reset.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
void CopServiceHook(void)
|
||||
{
|
||||
} /*** end of CopServiceHook ***/
|
||||
#endif /* BOOT_COP_HOOKS_ENABLE > 0 */
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* S E E D / K E Y S E C U R I T Y H O O K F U N C T I O N S
|
||||
****************************************************************************************/
|
||||
|
||||
#if (BOOT_XCP_SEED_KEY_ENABLE > 0)
|
||||
/************************************************************************************//**
|
||||
** \brief Provides a seed to the XCP master that will be used for the key
|
||||
** generation when the master attempts to unlock the specified resource.
|
||||
** Called by the GET_SEED command.
|
||||
** \param resource Resource that the seed if requested for (XCP_RES_XXX).
|
||||
** \param seed Pointer to byte buffer wher the seed will be stored.
|
||||
** \return Length of the seed in bytes.
|
||||
**
|
||||
****************************************************************************************/
|
||||
blt_int8u XcpGetSeedHook(blt_int8u resource, blt_int8u *seed)
|
||||
{
|
||||
/* request seed for unlocking ProGraMming resource */
|
||||
if ((resource & XCP_RES_PGM) != 0)
|
||||
{
|
||||
seed[0] = 0x55;
|
||||
}
|
||||
|
||||
/* return seed length */
|
||||
return 1;
|
||||
} /*** end of XcpGetSeedHook ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Called by the UNLOCK command and checks if the key to unlock the
|
||||
** specified resource was correct. If so, then the resource protection
|
||||
** will be removed.
|
||||
** \param resource resource to unlock (XCP_RES_XXX).
|
||||
** \param key pointer to the byte buffer holding the key.
|
||||
** \param len length of the key in bytes.
|
||||
** \return 1 if the key was correct, 0 otherwise.
|
||||
**
|
||||
****************************************************************************************/
|
||||
blt_int8u XcpVerifyKeyHook(blt_int8u resource, blt_int8u *key, blt_int8u len)
|
||||
{
|
||||
/* suppress compiler warning for unused parameter */
|
||||
len = len;
|
||||
|
||||
/* the example key algorithm in "FeaserKey.dll" works as follows:
|
||||
* - PGM will be unlocked if key = seed - 1
|
||||
*/
|
||||
|
||||
/* check key for unlocking ProGraMming resource */
|
||||
if ((resource == XCP_RES_PGM) && (key[0] == (0x55-1)))
|
||||
{
|
||||
/* correct key received for unlocking PGM resource */
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* still here so key incorrect */
|
||||
return 0;
|
||||
} /*** end of XcpVerifyKeyHook ***/
|
||||
#endif /* BOOT_XCP_SEED_KEY_ENABLE > 0 */
|
||||
|
||||
|
||||
|
||||
/*********************************** end of hooks.c ************************************/
|
|
@ -1,67 +0,0 @@
|
|||
<!DOCTYPE CrossStudio_Project_File>
|
||||
<solution Name="lpc2294_crossworks" target="8" version="2">
|
||||
<project Name="openblt_olimex_lpc_l2294_20mhz">
|
||||
<configuration Name="Common" arm_library_optimization="Fast" arm_simulator_memory_simulation_filename="$(PackagesDir)/targets/Philips_LPC210X/LPC2000SimulatorMemory.dll" arm_simulator_memory_simulation_parameter="LPC22;0x20000;0x4000;0x400000;0x100000;0x0;0x0" arm_target_loader_parameter="20000000" arm_use_gcc_libraries="No" build_intermediate_directory="$(Configuration)/../../obj" build_output_directory="$(ProjectDir)/../bin" c_preprocessor_definitions="__TARGET_PROCESSOR=LPC2294;OSCILLATOR_CLOCK_FREQUENCY=20000000" c_user_include_directories="$(ProjectDir)/..;$(ProjectDir)/../../../../Source;$(ProjectDir)/../../../../Source/ARM7_LPC2000;$(ProjectDir)/../../../../Source/ARM7_LPC2000/Crossworks" gcc_entry_point="Reset_Handler" gcc_optimization_level="Level 1" gcc_strip_symbols="No" link_include_standard_libraries="Yes" link_include_startup_code="No" linker_DebugIO_enabled="No" linker_additional_files="$(PackagesDir)/lib/liblpc2000$(LibExt)$(LIB)" linker_additional_options="" linker_keep_symbols="_vectors;EntryFromProg" linker_output_format="srec" linker_printf_enabled="No" linker_printf_width_precision_supported="No" linker_scanf_enabled="No" project_directory="" project_type="Executable"/>
|
||||
<configuration Name="RAM" target_reset_script="RAMReset()"/>
|
||||
<configuration Name="Flash" arm_target_flash_loader_file_path="$(PackagesDir)/targets/Olimex_LPC_E2294/Release/Loader_rpc.elf" arm_target_flash_loader_type="LIBMEM RPC Loader" target_reset_script="FLASHReset()"/>
|
||||
<folder Name="Source Files">
|
||||
<configuration Name="Common" filter="c;cpp;cxx;cc;h;s;asm;inc"/>
|
||||
<folder Name="Demo">
|
||||
<folder Name="Boot" file_name="">
|
||||
<file file_name="../hooks.c"/>
|
||||
<file file_name="../lpc2294.h"/>
|
||||
<file file_name="../main.c"/>
|
||||
<file file_name="../extflash.c"/>
|
||||
<file file_name="../extflash.h"/>
|
||||
<file file_name="../blt_conf.h"/>
|
||||
</folder>
|
||||
</folder>
|
||||
<folder Name="Source" file_name="">
|
||||
<folder Name="ARM7_LPC2000">
|
||||
<folder Name="Crossworks" file_name="">
|
||||
<file file_name="../../../../Source/ARM7_LPC2000/Crossworks/cstart.s"/>
|
||||
<file file_name="../../../../Source/ARM7_LPC2000/Crossworks/flash.c"/>
|
||||
<file file_name="../../../../Source/ARM7_LPC2000/Crossworks/flash.h"/>
|
||||
<file file_name="../../../../Source/ARM7_LPC2000/Crossworks/cpu_comp.c"/>
|
||||
</folder>
|
||||
<file file_name="../../../../Source/ARM7_LPC2000/can.c"/>
|
||||
<file file_name="../../../../Source/ARM7_LPC2000/cpu.c"/>
|
||||
<file file_name="../../../../Source/ARM7_LPC2000/nvm.c"/>
|
||||
<file file_name="../../../../Source/ARM7_LPC2000/timer.c"/>
|
||||
<file file_name="../../../../Source/ARM7_LPC2000/types.h"/>
|
||||
<file file_name="../../../../Source/ARM7_LPC2000/uart.c"/>
|
||||
</folder>
|
||||
<file file_name="../../../../Source/assert.c"/>
|
||||
<file file_name="../../../../Source/assert.h"/>
|
||||
<file file_name="../../../../Source/backdoor.c"/>
|
||||
<file file_name="../../../../Source/backdoor.h"/>
|
||||
<file file_name="../../../../Source/boot.c"/>
|
||||
<file file_name="../../../../Source/boot.h"/>
|
||||
<file file_name="../../../../Source/com.c"/>
|
||||
<file file_name="../../../../Source/com.h"/>
|
||||
<file file_name="../../../../Source/cop.c"/>
|
||||
<file file_name="../../../../Source/cop.h"/>
|
||||
<file file_name="../../../../Source/plausibility.h"/>
|
||||
<file file_name="../../../../Source/xcp.c"/>
|
||||
<file file_name="../../../../Source/xcp.h"/>
|
||||
<file file_name="../../../../Source/can.h"/>
|
||||
<file file_name="../../../../Source/cpu.h"/>
|
||||
<file file_name="../../../../Source/nvm.h"/>
|
||||
<file file_name="../../../../Source/timer.h"/>
|
||||
<file file_name="../../../../Source/uart.h"/>
|
||||
</folder>
|
||||
</folder>
|
||||
<folder Name="System Files">
|
||||
<file file_name="$(PackagesDir)/targets/Olimex_LPC_E2294/LPC_E2294_Target.js">
|
||||
<configuration Name="Common" file_type="Reset Script"/>
|
||||
</file>
|
||||
<file file_name="../../../../Source/ARM7_LPC2000/Crossworks/memory.x">
|
||||
<configuration Name="Common" file_type="Linker Script"/>
|
||||
</file>
|
||||
</folder>
|
||||
</project>
|
||||
<configuration Name="ARM Flash Debug" inherited_configurations="ARM;Flash;Debug"/>
|
||||
<configuration Name="ARM" Platform="ARM" arm_instruction_set="ARM" arm_library_instruction_set="ARM" c_preprocessor_definitions="__ARM" hidden="Yes"/>
|
||||
<configuration Name="Flash" c_preprocessor_definitions="__FLASH_BUILD" hidden="Yes"/>
|
||||
<configuration Name="Debug" build_debug_information="Yes" c_preprocessor_definitions="DEBUG" gcc_optimization_level="None" hidden="Yes" link_include_startup_code="No"/>
|
||||
</solution>
|
|
@ -1,57 +0,0 @@
|
|||
<!DOCTYPE CrossStudio_for_ARM_Session_File>
|
||||
<session>
|
||||
<Bookmarks/>
|
||||
<Breakpoints/>
|
||||
<ExecutionProfileWindow/>
|
||||
<Memory1>
|
||||
<MemoryWindow autoEvaluate="0" addressText="0x80000200" numColumns="8" sizeText="32" dataSize="1" radix="16" name="openbtl_olimex_lpc_l2294_20mhz" addressSpace="" />
|
||||
</Memory1>
|
||||
<Memory2>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="openbtl_olimex_lpc_l2294_20mhz" addressSpace="" />
|
||||
</Memory2>
|
||||
<Memory3>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="openbtl_olimex_lpc_l2294_20mhz" addressSpace="" />
|
||||
</Memory3>
|
||||
<Memory4>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="openbtl_olimex_lpc_l2294_20mhz" addressSpace="" />
|
||||
</Memory4>
|
||||
<Project>
|
||||
<ProjectSessionItem path="lpc2294_crossworks" name="unnamed" />
|
||||
<ProjectSessionItem path="lpc2294_crossworks;openblt_olimex_lpc_l2294_20mhz" name="unnamed" />
|
||||
<ProjectSessionItem path="lpc2294_crossworks;openblt_olimex_lpc_l2294_20mhz;Source Files" name="unnamed" />
|
||||
<ProjectSessionItem path="lpc2294_crossworks;openblt_olimex_lpc_l2294_20mhz;Source Files;Demo" name="unnamed" />
|
||||
<ProjectSessionItem path="lpc2294_crossworks;openblt_olimex_lpc_l2294_20mhz;Source Files;Demo;Boot" name="unnamed" />
|
||||
</Project>
|
||||
<Register1>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="openbtl_olimex_lpc_l2294_20mhz" />
|
||||
</Register1>
|
||||
<Register2>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="openbtl_olimex_lpc_l2294_20mhz" />
|
||||
</Register2>
|
||||
<Register3>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="openbtl_olimex_lpc_l2294_20mhz" />
|
||||
</Register3>
|
||||
<Register4>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="openbtl_olimex_lpc_l2294_20mhz" />
|
||||
</Register4>
|
||||
<TargetWindow programAction="" uploadFileType="" programLoadAddress="" programSize="" uploadFileName="" uploadMemoryInterface="" programFileName="" uploadStartAddress="" programFileType="" uploadSize="" programMemoryInterface="" />
|
||||
<TraceWindow>
|
||||
<Trace enabled="Yes" />
|
||||
</TraceWindow>
|
||||
<Watch1>
|
||||
<Watches active="1" update="Never" />
|
||||
</Watch1>
|
||||
<Watch2>
|
||||
<Watches active="0" update="Never" />
|
||||
</Watch2>
|
||||
<Watch3>
|
||||
<Watches active="0" update="Never" />
|
||||
</Watch3>
|
||||
<Watch4>
|
||||
<Watches active="0" update="Never" />
|
||||
</Watch4>
|
||||
<Files>
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="C:\Work\software\OpenBLT\Target\Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Boot\main.c" y="53" path="C:\Work\software\OpenBLT\Target\Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Boot\main.c" left="0" selected="1" name="unnamed" top="45" />
|
||||
</Files>
|
||||
<ARMCrossStudioWindow activeProject="openbtl_olimex_lpc_l2294_20mhz" autoConnectTarget="SEGGER J-Link" debugSearchFileMap="" fileDialogInitialDirectory="C:\Work\software\OpenBLT\Target\Source\ARM7_LPC2000\Crossworks" fileDialogDefaultFilter="*.c" autoConnectCapabilities="388479" debugSearchPath="" buildConfiguration="ARM Flash Debug" />
|
||||
</session>
|
|
@ -1,4 +0,0 @@
|
|||
Integrated Development Environment
|
||||
----------------------------------
|
||||
Rowleys CrossWorks (version 2.3.1) was used as the editor during the development of this software program. This directory contains
|
||||
the CrossWorks project and solution files. More info is available at: http://www.rowley.co.uk/
|
|
@ -1,404 +0,0 @@
|
|||
/****************************************************************************************
|
||||
| Description: NXP LPC2294 register definitions
|
||||
| File Name: lpc2294.h
|
||||
|
|
||||
|----------------------------------------------------------------------------------------
|
||||
| C O P Y R I G H T
|
||||
|----------------------------------------------------------------------------------------
|
||||
| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved
|
||||
|
|
||||
|----------------------------------------------------------------------------------------
|
||||
| L I C E N S E
|
||||
|----------------------------------------------------------------------------------------
|
||||
| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
|
||||
| modify it under the terms of the GNU General Public License as published by the Free
|
||||
| Software Foundation, either version 3 of the License, or (at your option) any later
|
||||
| version.
|
||||
|
|
||||
| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
| PURPOSE. See the GNU General Public License for more details.
|
||||
|
|
||||
| You have received a copy of the GNU General Public License along with OpenBLT. It
|
||||
| should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
|
||||
|
|
||||
****************************************************************************************/
|
||||
#ifndef LPC2294_H
|
||||
#define LPC2294_H
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Macro definitions
|
||||
****************************************************************************************/
|
||||
/* EXTERNAL MEMORY CONTROLLER (EMC) */
|
||||
#define BCFG0 (*((volatile unsigned long *) 0xFFE00000)) /* lpc22xx only */
|
||||
#define BCFG1 (*((volatile unsigned long *) 0xFFE00004)) /* lpc22xx only */
|
||||
#define BCFG2 (*((volatile unsigned long *) 0xFFE00008)) /* lpc22xx only */
|
||||
#define BCFG3 (*((volatile unsigned long *) 0xFFE0000C)) /* lpc22xx only */
|
||||
|
||||
/* External Interrupts */
|
||||
#define EXTINT (*((volatile unsigned char *) 0xE01FC140))
|
||||
#define EXTWAKE (*((volatile unsigned char *) 0xE01FC144))
|
||||
#define EXTMODE (*((volatile unsigned char *) 0xE01FC148)) /* no in lpc210x*/
|
||||
#define EXTPOLAR (*((volatile unsigned char *) 0xE01FC14C)) /* no in lpc210x*/
|
||||
|
||||
/* SMemory mapping control. */
|
||||
#define MEMMAP (*((volatile unsigned long *) 0xE01FC040))
|
||||
|
||||
/* Phase Locked Loop (PLL) */
|
||||
#define PLLCON (*((volatile unsigned char *) 0xE01FC080))
|
||||
#define PLLCFG (*((volatile unsigned char *) 0xE01FC084))
|
||||
#define PLLSTAT (*((volatile unsigned short*) 0xE01FC088))
|
||||
#define PLLFEED (*((volatile unsigned char *) 0xE01FC08C))
|
||||
|
||||
/* Power Control */
|
||||
#define PCON (*((volatile unsigned char *) 0xE01FC0C0))
|
||||
#define PCONP (*((volatile unsigned long *) 0xE01FC0C4))
|
||||
|
||||
/* VPB Divider */
|
||||
#define VPBDIV (*((volatile unsigned char *) 0xE01FC100))
|
||||
|
||||
/* Memory Accelerator Module (MAM) */
|
||||
#define MAMCR (*((volatile unsigned char *) 0xE01FC000))
|
||||
#define MAMTIM (*((volatile unsigned char *) 0xE01FC004))
|
||||
|
||||
/* Vectored Interrupt Controller (VIC) */
|
||||
#define VICIRQStatus (*((volatile unsigned long *) 0xFFFFF000))
|
||||
#define VICFIQStatus (*((volatile unsigned long *) 0xFFFFF004))
|
||||
#define VICRawIntr (*((volatile unsigned long *) 0xFFFFF008))
|
||||
#define VICIntSelect (*((volatile unsigned long *) 0xFFFFF00C))
|
||||
#define VICIntEnable (*((volatile unsigned long *) 0xFFFFF010))
|
||||
#define VICIntEnClr (*((volatile unsigned long *) 0xFFFFF014))
|
||||
#define VICSoftInt (*((volatile unsigned long *) 0xFFFFF018))
|
||||
#define VICSoftIntClear (*((volatile unsigned long *) 0xFFFFF01C))
|
||||
#define VICProtection (*((volatile unsigned long *) 0xFFFFF020))
|
||||
#define VICVectAddr (*((volatile unsigned long *) 0xFFFFF030))
|
||||
#define VICDefVectAddr (*((volatile unsigned long *) 0xFFFFF034))
|
||||
#define VICVectAddr0 (*((volatile unsigned long *) 0xFFFFF100))
|
||||
#define VICVectAddr1 (*((volatile unsigned long *) 0xFFFFF104))
|
||||
#define VICVectAddr2 (*((volatile unsigned long *) 0xFFFFF108))
|
||||
#define VICVectAddr3 (*((volatile unsigned long *) 0xFFFFF10C))
|
||||
#define VICVectAddr4 (*((volatile unsigned long *) 0xFFFFF110))
|
||||
#define VICVectAddr5 (*((volatile unsigned long *) 0xFFFFF114))
|
||||
#define VICVectAddr6 (*((volatile unsigned long *) 0xFFFFF118))
|
||||
#define VICVectAddr7 (*((volatile unsigned long *) 0xFFFFF11C))
|
||||
#define VICVectAddr8 (*((volatile unsigned long *) 0xFFFFF120))
|
||||
#define VICVectAddr9 (*((volatile unsigned long *) 0xFFFFF124))
|
||||
#define VICVectAddr10 (*((volatile unsigned long *) 0xFFFFF128))
|
||||
#define VICVectAddr11 (*((volatile unsigned long *) 0xFFFFF12C))
|
||||
#define VICVectAddr12 (*((volatile unsigned long *) 0xFFFFF130))
|
||||
#define VICVectAddr13 (*((volatile unsigned long *) 0xFFFFF134))
|
||||
#define VICVectAddr14 (*((volatile unsigned long *) 0xFFFFF138))
|
||||
#define VICVectAddr15 (*((volatile unsigned long *) 0xFFFFF13C))
|
||||
#define VICVectCntl0 (*((volatile unsigned long *) 0xFFFFF200))
|
||||
#define VICVectCntl1 (*((volatile unsigned long *) 0xFFFFF204))
|
||||
#define VICVectCntl2 (*((volatile unsigned long *) 0xFFFFF208))
|
||||
#define VICVectCntl3 (*((volatile unsigned long *) 0xFFFFF20C))
|
||||
#define VICVectCntl4 (*((volatile unsigned long *) 0xFFFFF210))
|
||||
#define VICVectCntl5 (*((volatile unsigned long *) 0xFFFFF214))
|
||||
#define VICVectCntl6 (*((volatile unsigned long *) 0xFFFFF218))
|
||||
#define VICVectCntl7 (*((volatile unsigned long *) 0xFFFFF21C))
|
||||
#define VICVectCntl8 (*((volatile unsigned long *) 0xFFFFF220))
|
||||
#define VICVectCntl9 (*((volatile unsigned long *) 0xFFFFF224))
|
||||
#define VICVectCntl10 (*((volatile unsigned long *) 0xFFFFF228))
|
||||
#define VICVectCntl11 (*((volatile unsigned long *) 0xFFFFF22C))
|
||||
#define VICVectCntl12 (*((volatile unsigned long *) 0xFFFFF230))
|
||||
#define VICVectCntl13 (*((volatile unsigned long *) 0xFFFFF234))
|
||||
#define VICVectCntl14 (*((volatile unsigned long *) 0xFFFFF238))
|
||||
#define VICVectCntl15 (*((volatile unsigned long *) 0xFFFFF23C))
|
||||
|
||||
/* Pin Connect Block */
|
||||
#define PINSEL0 (*((volatile unsigned long *) 0xE002C000))
|
||||
#define PINSEL1 (*((volatile unsigned long *) 0xE002C004))
|
||||
#define PINSEL2 (*((volatile unsigned long *) 0xE002C014)) /* no in lpc210x*/
|
||||
|
||||
/* General Purpose Input/Output (GPIO) */
|
||||
#define IOPIN (*((volatile unsigned long *) 0xE0028000)) /* lpc210x only */
|
||||
#define IOSET (*((volatile unsigned long *) 0xE0028004)) /* lpc210x only */
|
||||
#define IODIR (*((volatile unsigned long *) 0xE0028008)) /* lpc210x only */
|
||||
#define IOCLR (*((volatile unsigned long *) 0xE002800C)) /* lpc210x only */
|
||||
|
||||
#define IO0PIN (*((volatile unsigned long *) 0xE0028000)) /* no in lpc210x*/
|
||||
#define IO0SET (*((volatile unsigned long *) 0xE0028004)) /* no in lpc210x*/
|
||||
#define IO0DIR (*((volatile unsigned long *) 0xE0028008)) /* no in lpc210x*/
|
||||
#define IO0CLR (*((volatile unsigned long *) 0xE002800C)) /* no in lpc210x*/
|
||||
|
||||
#define IO1PIN (*((volatile unsigned long *) 0xE0028010)) /* no in lpc210x*/
|
||||
#define IO1SET (*((volatile unsigned long *) 0xE0028014)) /* no in lpc210x*/
|
||||
#define IO1DIR (*((volatile unsigned long *) 0xE0028018)) /* no in lpc210x*/
|
||||
#define IO1CLR (*((volatile unsigned long *) 0xE002801C)) /* no in lpc210x*/
|
||||
|
||||
#define IO2PIN (*((volatile unsigned long *) 0xE0028020)) /* lpc22xx only */
|
||||
#define IO2SET (*((volatile unsigned long *) 0xE0028024)) /* lpc22xx only */
|
||||
#define IO2DIR (*((volatile unsigned long *) 0xE0028028)) /* lpc22xx only */
|
||||
#define IO2CLR (*((volatile unsigned long *) 0xE002802C)) /* lpc22xx only */
|
||||
|
||||
#define IO3PIN (*((volatile unsigned long *) 0xE0028030)) /* lpc22xx only */
|
||||
#define IO3SET (*((volatile unsigned long *) 0xE0028034)) /* lpc22xx only */
|
||||
#define IO3DIR (*((volatile unsigned long *) 0xE0028038)) /* lpc22xx only */
|
||||
#define IO3CLR (*((volatile unsigned long *) 0xE002803C)) /* lpc22xx only */
|
||||
|
||||
/* Universal Asynchronous Receiver Transmitter 0 (UART0) */
|
||||
#define U0RBR (*((volatile unsigned char *) 0xE000C000))
|
||||
#define U0THR (*((volatile unsigned char *) 0xE000C000))
|
||||
#define U0IER (*((volatile unsigned char *) 0xE000C004))
|
||||
#define U0IIR (*((volatile unsigned char *) 0xE000C008))
|
||||
#define U0FCR (*((volatile unsigned char *) 0xE000C008))
|
||||
#define U0LCR (*((volatile unsigned char *) 0xE000C00C))
|
||||
#define U0LSR (*((volatile unsigned char *) 0xE000C014))
|
||||
#define U0SCR (*((volatile unsigned char *) 0xE000C01C))
|
||||
#define U0DLL (*((volatile unsigned char *) 0xE000C000))
|
||||
#define U0DLM (*((volatile unsigned char *) 0xE000C004))
|
||||
|
||||
/* Universal Asynchronous Receiver Transmitter 1 (UART1) */
|
||||
#define U1RBR (*((volatile unsigned char *) 0xE0010000))
|
||||
#define U1THR (*((volatile unsigned char *) 0xE0010000))
|
||||
#define U1IER (*((volatile unsigned char *) 0xE0010004))
|
||||
#define U1IIR (*((volatile unsigned char *) 0xE0010008))
|
||||
#define U1FCR (*((volatile unsigned char *) 0xE0010008))
|
||||
#define U1LCR (*((volatile unsigned char *) 0xE001000C))
|
||||
#define U1MCR (*((volatile unsigned char *) 0xE0010010))
|
||||
#define U1LSR (*((volatile unsigned char *) 0xE0010014))
|
||||
#define U1MSR (*((volatile unsigned char *) 0xE0010018))
|
||||
#define U1SCR (*((volatile unsigned char *) 0xE001001C))
|
||||
#define U1DLL (*((volatile unsigned char *) 0xE0010000))
|
||||
#define U1DLM (*((volatile unsigned char *) 0xE0010004))
|
||||
|
||||
/* I2C (8/16 bit data bus) */
|
||||
#define I2CONSET (*((volatile unsigned long *) 0xE001C000))
|
||||
#define I2STAT (*((volatile unsigned long *) 0xE001C004))
|
||||
#define I2DAT (*((volatile unsigned long *) 0xE001C008))
|
||||
#define I2ADR (*((volatile unsigned long *) 0xE001C00C))
|
||||
#define I2SCLH (*((volatile unsigned long *) 0xE001C010))
|
||||
#define I2SCLL (*((volatile unsigned long *) 0xE001C014))
|
||||
#define I2CONCLR (*((volatile unsigned long *) 0xE001C018))
|
||||
|
||||
/* SPI (Serial Peripheral Interface) */
|
||||
/* only for lpc210x*/
|
||||
#define SPI_SPCR (*((volatile unsigned char *) 0xE0020000))
|
||||
#define SPI_SPSR (*((volatile unsigned char *) 0xE0020004))
|
||||
#define SPI_SPDR (*((volatile unsigned char *) 0xE0020008))
|
||||
#define SPI_SPCCR (*((volatile unsigned char *) 0xE002000C))
|
||||
#define SPI_SPINT (*((volatile unsigned char *) 0xE002001C))
|
||||
|
||||
#define S0PCR (*((volatile unsigned char *) 0xE0020000)) /* no in lpc210x*/
|
||||
#define S0PSR (*((volatile unsigned char *) 0xE0020004)) /* no in lpc210x*/
|
||||
#define S0PDR (*((volatile unsigned char *) 0xE0020008)) /* no in lpc210x*/
|
||||
#define S0PCCR (*((volatile unsigned char *) 0xE002000C)) /* no in lpc210x*/
|
||||
#define S0PINT (*((volatile unsigned char *) 0xE002001C)) /* no in lpc210x*/
|
||||
|
||||
#define S1PCR (*((volatile unsigned char *) 0xE0030000)) /* no in lpc210x*/
|
||||
#define S1PSR (*((volatile unsigned char *) 0xE0030004)) /* no in lpc210x*/
|
||||
#define S1PDR (*((volatile unsigned char *) 0xE0030008)) /* no in lpc210x*/
|
||||
#define S1PCCR (*((volatile unsigned char *) 0xE003000C)) /* no in lpc210x*/
|
||||
#define S1PINT (*((volatile unsigned char *) 0xE003001C)) /* no in lpc210x*/
|
||||
|
||||
/* CAN CONTROLLERS AND ACCEPTANCE FILTER */
|
||||
#define CAN1MOD (*((volatile unsigned long *) 0xE0044000)) /* All CAN Parts */
|
||||
#define CAN1CMR (*((volatile unsigned long *) 0xE0044004)) /* All CAN Parts */
|
||||
#define CAN1GSR (*((volatile unsigned long *) 0xE0044008)) /* All CAN Parts */
|
||||
#define CAN1ICR (*((volatile unsigned long *) 0xE004400C)) /* All CAN Parts */
|
||||
#define CAN1IER (*((volatile unsigned long *) 0xE0044010)) /* All CAN Parts */
|
||||
#define CAN1BTR (*((volatile unsigned long *) 0xE0044014)) /* All CAN Parts */
|
||||
#define CAN1EWL (*((volatile unsigned long *) 0xE0044018)) /* All CAN Parts */
|
||||
#define CAN1SR (*((volatile unsigned long *) 0xE004401C)) /* All CAN Parts */
|
||||
#define CAN1RFS (*((volatile unsigned long *) 0xE0044020)) /* All CAN Parts */
|
||||
#define CAN1RID (*((volatile unsigned long *) 0xE0044024)) /* All CAN Parts */
|
||||
#define CAN1RDA (*((volatile unsigned long *) 0xE0044028)) /* All CAN Parts */
|
||||
#define CAN1RDB (*((volatile unsigned long *) 0xE004402C)) /* All CAN Parts */
|
||||
#define CAN1TFI1 (*((volatile unsigned long *) 0xE0044030)) /* All CAN Parts */
|
||||
#define CAN1TID1 (*((volatile unsigned long *) 0xE0044034)) /* All CAN Parts */
|
||||
#define CAN1TDA1 (*((volatile unsigned long *) 0xE0044038)) /* All CAN Parts */
|
||||
#define CAN1TDB1 (*((volatile unsigned long *) 0xE004403C)) /* All CAN Parts */
|
||||
#define CAN1TFI2 (*((volatile unsigned long *) 0xE0044040)) /* All CAN Parts */
|
||||
#define CAN1TID2 (*((volatile unsigned long *) 0xE0044044)) /* All CAN Parts */
|
||||
#define CAN1TDA2 (*((volatile unsigned long *) 0xE0044048)) /* All CAN Parts */
|
||||
#define CAN1TDB2 (*((volatile unsigned long *) 0xE004404C)) /* All CAN Parts */
|
||||
#define CAN1TFI3 (*((volatile unsigned long *) 0xE0044050)) /* All CAN Parts */
|
||||
#define CAN1TID3 (*((volatile unsigned long *) 0xE0044054)) /* All CAN Parts */
|
||||
#define CAN1TDA3 (*((volatile unsigned long *) 0xE0044058)) /* All CAN Parts */
|
||||
#define CAN1TDB3 (*((volatile unsigned long *) 0xE004405C)) /* All CAN Parts */
|
||||
|
||||
#define CAN2MOD (*((volatile unsigned long *) 0xE0048000)) /* All CAN Parts */
|
||||
#define CAN2CMR (*((volatile unsigned long *) 0xE0048004)) /* All CAN Parts */
|
||||
#define CAN2GSR (*((volatile unsigned long *) 0xE0048008)) /* All CAN Parts */
|
||||
#define CAN2ICR (*((volatile unsigned long *) 0xE004800C)) /* All CAN Parts */
|
||||
#define CAN2IER (*((volatile unsigned long *) 0xE0048010)) /* All CAN Parts */
|
||||
#define CAN2BTR (*((volatile unsigned long *) 0xE0048014)) /* All CAN Parts */
|
||||
#define CAN2EWL (*((volatile unsigned long *) 0xE0048018)) /* All CAN Parts */
|
||||
#define CAN2SR (*((volatile unsigned long *) 0xE004801C)) /* All CAN Parts */
|
||||
#define CAN2RFS (*((volatile unsigned long *) 0xE0048020)) /* All CAN Parts */
|
||||
#define CAN2RID (*((volatile unsigned long *) 0xE0048024)) /* All CAN Parts */
|
||||
#define CAN2RDA (*((volatile unsigned long *) 0xE0048028)) /* All CAN Parts */
|
||||
#define CAN2RDB (*((volatile unsigned long *) 0xE004802C)) /* All CAN Parts */
|
||||
#define CAN2TFI1 (*((volatile unsigned long *) 0xE0048030)) /* All CAN Parts */
|
||||
#define CAN2TID1 (*((volatile unsigned long *) 0xE0048034)) /* All CAN Parts */
|
||||
#define CAN2TDA1 (*((volatile unsigned long *) 0xE0048038)) /* All CAN Parts */
|
||||
#define CAN2TDB1 (*((volatile unsigned long *) 0xE004803C)) /* All CAN Parts */
|
||||
#define CAN2TFI2 (*((volatile unsigned long *) 0xE0048040)) /* All CAN Parts */
|
||||
#define CAN2TID2 (*((volatile unsigned long *) 0xE0048044)) /* All CAN Parts */
|
||||
#define CAN2TDA2 (*((volatile unsigned long *) 0xE0048048)) /* All CAN Parts */
|
||||
#define CAN2TDB2 (*((volatile unsigned long *) 0xE004804C)) /* All CAN Parts */
|
||||
#define CAN2TFI3 (*((volatile unsigned long *) 0xE0048050)) /* All CAN Parts */
|
||||
#define CAN2TID3 (*((volatile unsigned long *) 0xE0048054)) /* All CAN Parts */
|
||||
#define CAN2TDA3 (*((volatile unsigned long *) 0xE0048058)) /* All CAN Parts */
|
||||
#define CAN2TDB3 (*((volatile unsigned long *) 0xE004805C)) /* All CAN Parts */
|
||||
|
||||
#define CAN3MOD (*((volatile unsigned long *) 0xE004C000)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3CMR (*((volatile unsigned long *) 0xE004C004)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3GSR (*((volatile unsigned long *) 0xE004C008)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3ICR (*((volatile unsigned long *) 0xE004C00C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3IER (*((volatile unsigned long *) 0xE004C010)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3BTR (*((volatile unsigned long *) 0xE004C014)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3EWL (*((volatile unsigned long *) 0xE004C018)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3SR (*((volatile unsigned long *) 0xE004C01C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3RFS (*((volatile unsigned long *) 0xE004C020)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3RID (*((volatile unsigned long *) 0xE004C024)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3RDA (*((volatile unsigned long *) 0xE004C028)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3RDB (*((volatile unsigned long *) 0xE004C02C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TFI1 (*((volatile unsigned long *) 0xE004C030)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TID1 (*((volatile unsigned long *) 0xE004C034)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TDA1 (*((volatile unsigned long *) 0xE004C038)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TDB1 (*((volatile unsigned long *) 0xE004C03C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TFI2 (*((volatile unsigned long *) 0xE004C040)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TID2 (*((volatile unsigned long *) 0xE004C044)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TDA2 (*((volatile unsigned long *) 0xE004C048)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TDB2 (*((volatile unsigned long *) 0xE004C04C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TFI3 (*((volatile unsigned long *) 0xE004C050)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TID3 (*((volatile unsigned long *) 0xE004C054)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TDA3 (*((volatile unsigned long *) 0xE004C058)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TDB3 (*((volatile unsigned long *) 0xE004C05C)) /* lpc2194\lpc2294 only */
|
||||
|
||||
#define CAN4MOD (*((volatile unsigned long *) 0xE0050000)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4CMR (*((volatile unsigned long *) 0xE0050004)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4GSR (*((volatile unsigned long *) 0xE0050008)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4ICR (*((volatile unsigned long *) 0xE005000C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4IER (*((volatile unsigned long *) 0xE0050010)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4BTR (*((volatile unsigned long *) 0xE0050014)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4EWL (*((volatile unsigned long *) 0xE0050018)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4SR (*((volatile unsigned long *) 0xE005001C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4RFS (*((volatile unsigned long *) 0xE0050020)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4RID (*((volatile unsigned long *) 0xE0050024)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4RDA (*((volatile unsigned long *) 0xE0050028)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4RDB (*((volatile unsigned long *) 0xE005002C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TFI1 (*((volatile unsigned long *) 0xE0050030)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TID1 (*((volatile unsigned long *) 0xE0050034)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TDA1 (*((volatile unsigned long *) 0xE0050038)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TDB1 (*((volatile unsigned long *) 0xE005003C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TFI2 (*((volatile unsigned long *) 0xE0050040)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TID2 (*((volatile unsigned long *) 0xE0050044)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TDA2 (*((volatile unsigned long *) 0xE0050048)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TDB2 (*((volatile unsigned long *) 0xE005004C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TFI3 (*((volatile unsigned long *) 0xE0050050)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TID3 (*((volatile unsigned long *) 0xE0050054)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TDA3 (*((volatile unsigned long *) 0xE0050058)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TDB3 (*((volatile unsigned long *) 0xE005005C)) /* lpc2194\lpc2294 only */
|
||||
|
||||
|
||||
#define CANTxSR (*((volatile unsigned long *) 0xE0040000)) /* ALL CAN Parts */
|
||||
#define CANRxSR (*((volatile unsigned long *) 0xE0040004)) /* ALL CAN Parts */
|
||||
#define CANMSR (*((volatile unsigned long *) 0xE0040008)) /* ALL CAN Parts */
|
||||
|
||||
#define CANAFMR (*((volatile unsigned char *) 0xE003C000)) /* ALL CAN Parts */
|
||||
#define CANSFF_sa (*((volatile unsigned short*) 0xE003C004)) /* ALL CAN Parts */
|
||||
#define CANSFF_GRP_sa (*((volatile unsigned short*) 0xE003C008)) /* ALL CAN Parts */
|
||||
#define CANEFF_sa (*((volatile unsigned short*) 0xE003C00C)) /* ALL CAN Parts */
|
||||
#define CANEFF_GRP_sa (*((volatile unsigned short*) 0xE003C010)) /* ALL CAN Parts */
|
||||
#define CANENDofTable (*((volatile unsigned short*) 0xE003C014)) /* ALL CAN Parts */
|
||||
#define CANLUTerrAd (*((volatile unsigned short*) 0xE003C018)) /* ALL CAN Parts */
|
||||
#define CANLUTerr (*((volatile unsigned char *) 0xE003C01C)) /* ALL CAN Parts */
|
||||
|
||||
|
||||
/* Timer 0 */
|
||||
#define T0IR (*((volatile unsigned long *) 0xE0004000))
|
||||
#define T0TCR (*((volatile unsigned long *) 0xE0004004))
|
||||
#define T0TC (*((volatile unsigned long *) 0xE0004008))
|
||||
#define T0PR (*((volatile unsigned long *) 0xE000400C))
|
||||
#define T0PC (*((volatile unsigned long *) 0xE0004010))
|
||||
#define T0MCR (*((volatile unsigned long *) 0xE0004014))
|
||||
#define T0MR0 (*((volatile unsigned long *) 0xE0004018))
|
||||
#define T0MR1 (*((volatile unsigned long *) 0xE000401C))
|
||||
#define T0MR2 (*((volatile unsigned long *) 0xE0004020))
|
||||
#define T0MR3 (*((volatile unsigned long *) 0xE0004024))
|
||||
#define T0CCR (*((volatile unsigned long *) 0xE0004028))
|
||||
#define T0CR0 (*((volatile unsigned long *) 0xE000402C))
|
||||
#define T0CR1 (*((volatile unsigned long *) 0xE0004030))
|
||||
#define T0CR2 (*((volatile unsigned long *) 0xE0004034))
|
||||
#define T0CR3 (*((volatile unsigned long *) 0xE0004038))
|
||||
#define T0EMR (*((volatile unsigned long *) 0xE000403C))
|
||||
|
||||
/* Timer 1 */
|
||||
#define T1IR (*((volatile unsigned long *) 0xE0008000))
|
||||
#define T1TCR (*((volatile unsigned long *) 0xE0008004))
|
||||
#define T1TC (*((volatile unsigned long *) 0xE0008008))
|
||||
#define T1PR (*((volatile unsigned long *) 0xE000800C))
|
||||
#define T1PC (*((volatile unsigned long *) 0xE0008010))
|
||||
#define T1MCR (*((volatile unsigned long *) 0xE0008014))
|
||||
#define T1MR0 (*((volatile unsigned long *) 0xE0008018))
|
||||
#define T1MR1 (*((volatile unsigned long *) 0xE000801C))
|
||||
#define T1MR2 (*((volatile unsigned long *) 0xE0008020))
|
||||
#define T1MR3 (*((volatile unsigned long *) 0xE0008024))
|
||||
#define T1CCR (*((volatile unsigned long *) 0xE0008028))
|
||||
#define T1CR0 (*((volatile unsigned long *) 0xE000802C))
|
||||
#define T1CR1 (*((volatile unsigned long *) 0xE0008030))
|
||||
#define T1CR2 (*((volatile unsigned long *) 0xE0008034))
|
||||
#define T1CR3 (*((volatile unsigned long *) 0xE0008038))
|
||||
#define T1EMR (*((volatile unsigned long *) 0xE000803C))
|
||||
|
||||
/* Pulse Width Modulator (PWM) */
|
||||
#define PWMIR (*((volatile unsigned long *) 0xE0014000))
|
||||
#define PWMTCR (*((volatile unsigned long *) 0xE0014004))
|
||||
#define PWMTC (*((volatile unsigned long *) 0xE0014008))
|
||||
#define PWMPR (*((volatile unsigned long *) 0xE001400C))
|
||||
#define PWMPC (*((volatile unsigned long *) 0xE0014010))
|
||||
#define PWMMCR (*((volatile unsigned long *) 0xE0014014))
|
||||
#define PWMMR0 (*((volatile unsigned long *) 0xE0014018))
|
||||
#define PWMMR1 (*((volatile unsigned long *) 0xE001401C))
|
||||
#define PWMMR2 (*((volatile unsigned long *) 0xE0014020))
|
||||
#define PWMMR3 (*((volatile unsigned long *) 0xE0014024))
|
||||
#define PWMMR4 (*((volatile unsigned long *) 0xE0014040))
|
||||
#define PWMMR5 (*((volatile unsigned long *) 0xE0014044))
|
||||
#define PWMMR6 (*((volatile unsigned long *) 0xE0014048))
|
||||
#define PWMPCR (*((volatile unsigned long *) 0xE001404C))
|
||||
#define PWMLER (*((volatile unsigned long *) 0xE0014050))
|
||||
|
||||
/* A/D CONVERTER */
|
||||
#define ADCR (*((volatile unsigned long *) 0xE0034000)) /* no in lpc210x*/
|
||||
#define ADDR (*((volatile unsigned long *) 0xE0034004)) /* no in lpc210x*/
|
||||
|
||||
/* Real Time Clock */
|
||||
#define ILR (*((volatile unsigned char *) 0xE0024000))
|
||||
#define CTC (*((volatile unsigned short*) 0xE0024004))
|
||||
#define CCR (*((volatile unsigned char *) 0xE0024008))
|
||||
#define CIIR (*((volatile unsigned char *) 0xE002400C))
|
||||
#define AMR (*((volatile unsigned char *) 0xE0024010))
|
||||
#define CTIME0 (*((volatile unsigned long *) 0xE0024014))
|
||||
#define CTIME1 (*((volatile unsigned long *) 0xE0024018))
|
||||
#define CTIME2 (*((volatile unsigned long *) 0xE002401C))
|
||||
#define SEC (*((volatile unsigned char *) 0xE0024020))
|
||||
#define MIN (*((volatile unsigned char *) 0xE0024024))
|
||||
#define HOUR (*((volatile unsigned char *) 0xE0024028))
|
||||
#define DOM (*((volatile unsigned char *) 0xE002402C))
|
||||
#define DOW (*((volatile unsigned char *) 0xE0024030))
|
||||
#define DOY (*((volatile unsigned short*) 0xE0024034))
|
||||
#define MONTH (*((volatile unsigned char *) 0xE0024038))
|
||||
#define YEAR (*((volatile unsigned short*) 0xE002403C))
|
||||
#define ALSEC (*((volatile unsigned char *) 0xE0024060))
|
||||
#define ALMIN (*((volatile unsigned char *) 0xE0024064))
|
||||
#define ALHOUR (*((volatile unsigned char *) 0xE0024068))
|
||||
#define ALDOM (*((volatile unsigned char *) 0xE002406C))
|
||||
#define ALDOW (*((volatile unsigned char *) 0xE0024070))
|
||||
#define ALDOY (*((volatile unsigned short*) 0xE0024074))
|
||||
#define ALMON (*((volatile unsigned char *) 0xE0024078))
|
||||
#define ALYEAR (*((volatile unsigned short*) 0xE002407C))
|
||||
#define PREINT (*((volatile unsigned short*) 0xE0024080))
|
||||
#define PREFRAC (*((volatile unsigned short*) 0xE0024084))
|
||||
|
||||
/* Watchdog */
|
||||
#define WDMOD (*((volatile unsigned char *) 0xE0000000))
|
||||
#define WDTC (*((volatile unsigned long *) 0xE0000004))
|
||||
#define WDFEED (*((volatile unsigned char *) 0xE0000008))
|
||||
#define WDTV (*((volatile unsigned long *) 0xE000000C))
|
||||
|
||||
#endif /* LPC2294_H */
|
||||
/*********************************** end of lpc2294.h **********************************/
|
|
@ -1,174 +0,0 @@
|
|||
/************************************************************************************//**
|
||||
* \file Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Boot\main.c
|
||||
* \brief Bootloader application source file.
|
||||
* \ingroup Boot_ARM7_LPC2000_Olimex_LPC_L2294_Crossworks
|
||||
* \internal
|
||||
*----------------------------------------------------------------------------------------
|
||||
* C O P Y R I G H T
|
||||
*----------------------------------------------------------------------------------------
|
||||
* Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved
|
||||
*
|
||||
*----------------------------------------------------------------------------------------
|
||||
* L I C E N S E
|
||||
*----------------------------------------------------------------------------------------
|
||||
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You have received a copy of the GNU General Public License along with OpenBLT. It
|
||||
* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
|
||||
*
|
||||
* \endinternal
|
||||
****************************************************************************************/
|
||||
|
||||
/****************************************************************************************
|
||||
* Include files
|
||||
****************************************************************************************/
|
||||
#include "boot.h" /* bootloader generic header */
|
||||
#include "lpc2294.h" /* CPU register definitions */
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Function prototypes
|
||||
****************************************************************************************/
|
||||
static void Init(void);
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief This is the entry point for the bootloader application and is called
|
||||
** by the reset interrupt vector after the C-startup routines executed.
|
||||
** \return Program return code.
|
||||
**
|
||||
****************************************************************************************/
|
||||
int main(void)
|
||||
{
|
||||
/* initialize the microcontroller */
|
||||
Init();
|
||||
/* initialize the bootloader */
|
||||
BootInit();
|
||||
/* start the infinite program loop */
|
||||
while (1)
|
||||
{
|
||||
/* run the bootloader task */
|
||||
BootTask();
|
||||
}
|
||||
|
||||
/* program should never get here */
|
||||
return 0;
|
||||
} /*** end of main ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Initializes the microcontroller. The Fpll is set to 60MHz and Fvpb is
|
||||
** configured equal to Fpll. The GPIO pin of the status LED is configured
|
||||
** as digital output.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
static void Init(void)
|
||||
{
|
||||
blt_int8u m_sel; /* pll multiplier register value */
|
||||
static blt_int8u pll_dividers[] = { 1, 2, 4, 8 }; /* possible pll dividers */
|
||||
blt_int8u p_sel_cnt; /* loop counter to find p_sel */
|
||||
blt_int32u f_cco; /* current controller oscillator */
|
||||
|
||||
/* check that pll multiplier value will be in the range 1..32 */
|
||||
ASSERT_CT((BOOT_CPU_SYSTEM_SPEED_KHZ + ((BOOT_CPU_XTAL_SPEED_KHZ+1)/2)) / \
|
||||
BOOT_CPU_XTAL_SPEED_KHZ >= 1);
|
||||
|
||||
ASSERT_CT((BOOT_CPU_SYSTEM_SPEED_KHZ + ((BOOT_CPU_XTAL_SPEED_KHZ+1)/2)) / \
|
||||
BOOT_CPU_XTAL_SPEED_KHZ <= 32);
|
||||
|
||||
/* calculate MSEL: M = round(Fcclk / Fosc) */
|
||||
m_sel = (BOOT_CPU_SYSTEM_SPEED_KHZ + ((BOOT_CPU_XTAL_SPEED_KHZ+1)/2)) / \
|
||||
BOOT_CPU_XTAL_SPEED_KHZ;
|
||||
/* value for the PLLCFG register is -1 */
|
||||
m_sel--;
|
||||
|
||||
/* find PSEL value so that Fcco(= Fcclk * 2 * P) is in the 156000..320000 kHz range. */
|
||||
for (p_sel_cnt=0; p_sel_cnt<sizeof(pll_dividers)/sizeof(pll_dividers[0]); p_sel_cnt++)
|
||||
{
|
||||
/* check f_cco with this pll divider */
|
||||
f_cco = BOOT_CPU_SYSTEM_SPEED_KHZ * 2 * pll_dividers[p_sel_cnt];
|
||||
if ( (f_cco >= 156000) && (f_cco <= 320000) )
|
||||
{
|
||||
/* found a valid pll divider value */
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* check that a valid value was found */
|
||||
ASSERT_RT(p_sel_cnt < (sizeof(pll_dividers)/sizeof(pll_dividers[0])));
|
||||
|
||||
/* set multiplier and divider values */
|
||||
PLLCFG = (p_sel_cnt << 5) | m_sel;
|
||||
PLLFEED = 0xAA;
|
||||
PLLFEED = 0x55;
|
||||
/* enable the PLL */
|
||||
PLLCON = 0x1;
|
||||
PLLFEED = 0xAA;
|
||||
PLLFEED = 0x55;
|
||||
/* wait for the PLL to lock to set frequency */
|
||||
while(!(PLLSTAT & 0x400)) { ; }
|
||||
/* connect the PLL as the clock source */
|
||||
PLLCON = 0x3;
|
||||
PLLFEED = 0xAA;
|
||||
PLLFEED = 0x55;
|
||||
/* enable MAM and set number of clocks used for Flash memory fetch. Recommended:
|
||||
* Fcclk >= 60 MHz: 4 clock cycles
|
||||
* Fcclk >= 40 MHz: 3 clock cycles
|
||||
* Fcclk >= 20 MHz: 2 clock cycles
|
||||
* Fcclk < 20 MHz: 1 clock cycle
|
||||
*/
|
||||
MAMCR = 0x0;
|
||||
#if (BOOT_CPU_SYSTEM_SPEED_KHZ >= 60000)
|
||||
MAMTIM = 4;
|
||||
#elif (BOOT_CPU_SYSTEM_SPEED_KHZ >= 40000)
|
||||
MAMTIM = 3;
|
||||
#elif (BOOT_CPU_SYSTEM_SPEED_KHZ >= 20000)
|
||||
MAMTIM = 2;
|
||||
#else
|
||||
MAMTIM = 1;
|
||||
#endif
|
||||
MAMCR = 0x2;
|
||||
/* setting peripheral Clock (pclk) to System Clock (cclk) */
|
||||
VPBDIV = 0x1;
|
||||
#if (BOOT_NVM_HOOKS_ENABLE > 0)
|
||||
/* in this the external memory on the Olimex LPC-L2294 board is used so configure
|
||||
* the memory banks for the external flash EEPROM and RAM
|
||||
*/
|
||||
/* external flash EEPROM:
|
||||
* IDCY=3 (idle timing)
|
||||
* WST1=4 (read timing)
|
||||
* RBLE=1
|
||||
* WST2=6 (write timing)
|
||||
* MW=1 (16-bit data bus)
|
||||
*/
|
||||
BCFG0 = (0x3 << 0) | (0x4 << 5) | (0x1 << 10) | (0x6 << 11) | (0x1 << 28);
|
||||
/* external RAM:
|
||||
* IDCY=0 (idle timing)
|
||||
* WST1=0 (read timing)
|
||||
* RBLE=1
|
||||
* WST2=0 (write timing)
|
||||
* MW=2 (32-bit data bus)
|
||||
*/
|
||||
BCFG1 = (0x0 << 0) | (0x0 << 5) | (0x1 << 10) | (0x0 << 11) | (0x2 << 28);
|
||||
/* configure use of data bus and strobe pins for the external memory */
|
||||
PINSEL2 = 0x0F000924;
|
||||
#endif
|
||||
#if (BOOT_COM_UART_ENABLE > 0)
|
||||
/* configure P0.0 for UART0 Tx and P0.1 for UART0 Rx functionality */
|
||||
PINSEL0 |= 0x05;
|
||||
#endif
|
||||
#if (BOOT_COM_CAN_ENABLE > 0)
|
||||
/* configure P0.25 for CAN1 Rx functionality */
|
||||
PINSEL1 |= 0x00040000L;
|
||||
#endif
|
||||
} /*** end of Init ***/
|
||||
|
||||
|
||||
/*********************************** end of main.c *************************************/
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -1,661 +0,0 @@
|
|||
S02B0000433A2F576F726B2F736F6674776172652F4F70656E424C542F5461726765742F44656D6F2F41524DEF
|
||||
S113200018F09FE518F09FE518F09FE518F09FE59C
|
||||
S113201018F09FE5885F20B9F0FF1FE510F09FE5F9
|
||||
S11320206020000040200000442000004820000000
|
||||
S10B20304C20000050200000C8
|
||||
S11320380000000000000000FEFFFFEAFEFFFFEAC8
|
||||
S1132048FEFFFFEAFEFFFFEAFEFFFFEAFEFFFFEAEC
|
||||
S11320580000A0E10000A0E100000FE11F00C0E3C0
|
||||
S11320681B1080E301F02FE15CD19FE5171080E39A
|
||||
S113207801F02FE154D19FE5121080E301F02FE124
|
||||
S11320884CD19FE5111080E301F02FE144D19FE585
|
||||
S1132098131080E301F02FE13CD19FE51F1080E38A
|
||||
S11320A801F02FE134D19FE534019FE534119FE518
|
||||
S11320B834219FE52E0000EB30019FE530119FE5A8
|
||||
S11320C830219FE52A0000EB2C019FE52C119FE5A8
|
||||
S11320D82C219FE5260000EB28019FE528119FE5A8
|
||||
S11320E828219FE5220000EB24019FE524119FE5A8
|
||||
S11320F824219FE51E0000EB20019FE520119FE5A8
|
||||
S113210820219FE51A0000EB1C019FE51C119FE5A7
|
||||
S11321180020A0E3280000EB14019FE514119FE5BB
|
||||
S1132128001041E0080051E30020A0A3042080A48B
|
||||
S1132138001080A5D0009FE5D0109FE5010050E174
|
||||
S11321480500000A042090E403002DE90FE0A0E153
|
||||
S113215812FF2FE10300BDE8F7FFFFEA0000A0E348
|
||||
S11321680010A0E3D0209FE50FE0A0E112FF2FE1CB
|
||||
S1132178FEFFFFEA010050E10EF0A001012052E049
|
||||
S11321880EF0A001013080E1023083E1030013E383
|
||||
S11321980400001A043090E4043081E4042052E27C
|
||||
S11321A8FBFFFF1A0EF0A0E10130D0E40130C1E4D6
|
||||
S11321B8012052E2FBFFFF1A0EF0A0E1010050E1FA
|
||||
S11321C80EF0A0010120C0E4FBFFFFEA982D0040B7
|
||||
S11321D8982C004098290040982A0040982B0040E9
|
||||
S11321E8982800400C4900003C2000403C20004056
|
||||
S11321F85022000050220000584800000C490000FA
|
||||
S1132208982D0040982D0040584800005848000078
|
||||
S11322185848000058480000584800005848000032
|
||||
S113222858480000584800000C4900003C20004071
|
||||
S1132238982000409820004098240040B0290000CD
|
||||
S10B22480000A0E10000A0E188
|
||||
S113225000482DE904B08DE21C309FE50FE0A0E1B9
|
||||
S113226013FF2FE114309FE50FE0A0E113FF2FE1EE
|
||||
S113227004D04BE20048BDE81EFF2FE11423000008
|
||||
S1132280D426000000482DE904B08DE21C309FE5FF
|
||||
S11322900FE0A0E113FF2FE114309FE50FE0A0E170
|
||||
S11322A013FF2FE104D04BE20048BDE81EFF2FE1ED
|
||||
S11322B0CC2300007027000004B02DE500B08DE2AF
|
||||
S11322C04E32A0E3012BA0E3002083E50E32A0E30D
|
||||
S11322D00320A0E30020C3E58E32A0E35520E0E311
|
||||
S11322E00020C3E58E32A0E35520A0E30020C3E51F
|
||||
S11322F08E32A0E35520E0E30020C3E58E32A0E354
|
||||
S11323000020A0E30020C3E500D08BE20008BDE874
|
||||
S11323101EFF2FE104B02DE500B08DE204D04DE2A4
|
||||
S11323208C309FE588209FE5002092E5052082E31C
|
||||
S1132330002083E57C309FE50020A0E30020C3E576
|
||||
S113234074309FE50020A0E30020C3E56C309FE5D6
|
||||
S11323500020A0E30020C3E564309FE57F20E0E394
|
||||
S11323600020C3E54130A0E304300BE554309FE581
|
||||
S113237004201BE5FF2002E20020C3E534309FE582
|
||||
S113238004201BE52224A0E1FF2002E20020C3E593
|
||||
S11323902C309FE50320A0E30020C3E518309FE51F
|
||||
S11323A00720A0E30020C3E500D08BE20008BDE8CD
|
||||
S11323B01EFF2FE100C002E004C000E008C000E0FE
|
||||
S11323C014C000E00CC000E000C000E000482DE9AB
|
||||
S11323D004B08DE2E4309FE50030D3E5000053E320
|
||||
S11323E00D00001AD8009FE5D8309FE50FE0A0E16A
|
||||
S11323F013FF2FE10030A0E1010053E32C00001A89
|
||||
S1132400B8309FE50120A0E30020C3E5B8309FE584
|
||||
S11324100020A0E30020C3E5250000EAA8309FE5E2
|
||||
S11324200030D3E5012083E294309FE5033082E05D
|
||||
S11324300300A0E18C309FE50FE0A0E113FF2FE142
|
||||
S11324400030A0E1010053E31900001A78309FE541
|
||||
S11324500030D3E5013083E2FF2003E268309FE5DA
|
||||
S11324600020C3E558309FE50020D3E558309FE5B0
|
||||
S11324700030D3E5030052E10D00001A3C309FE523
|
||||
S11324800020A0E30020C3E534309FE50130D3E50C
|
||||
S1132490FF0053E30600001A24309FE50230D3E521
|
||||
S11324A0000053E30200001A20309FE50FE0A0E192
|
||||
S11324B013FF2FE104D04BE20048BDE81EFF2FE1DB
|
||||
S11324C03C20004040200040D424000084200040F0
|
||||
S11324D0B822000004B02DE500B08DE204D04DE236
|
||||
S11324E004000BE544309FE50030D3E5FF3003E200
|
||||
S11324F0013003E2FF3003E2000053E30600000A68
|
||||
S11325002C309FE50030D3E5FF2003E204301BE5C7
|
||||
S11325100020C3E50130A0E3000000EA0030A0E39E
|
||||
S11325200300A0E100D08BE20008BDE81EFF2FE10C
|
||||
S113253014C000E000C000E000482DE904B08DE2C2
|
||||
S11325400CD04DE20030A0E110100BE5BC304BE1A3
|
||||
S11325500030A0E305304BE5510000EABC305BE1FC
|
||||
S113256005105BE558219FE50121D2E70210A0E1A7
|
||||
S113257005005BE548C19FE50120A0E30001A0E15F
|
||||
S113258000008CE0022080E00020D2E5022081E0FF
|
||||
S1132590012082E2930202E028119FE528319FE5A1
|
||||
S11325A00100A0E10210A0E10FE0A0E113FF2FE180
|
||||
S11325B00030A0E1000053E33600001ABC305BE1B8
|
||||
S11325C005105BE5F8209FE50121D2E70210A0E1A8
|
||||
S11325D005005BE5E8C09FE50120A0E30001A0E160
|
||||
S11325E000008CE0022080E00020D2E5022081E09F
|
||||
S11325F0012082E2930202E0D0309FE5C4009FE50F
|
||||
S11326000210A0E10FE0A0E113FF2FE10030A0E1F0
|
||||
S1132610B8304BE1B8305BE1000053E31D00000A21
|
||||
S1132620B8305BE1010B53E31A00008AB8305BE178
|
||||
S1132630013043E20320A0E110301BE5002083E5D4
|
||||
S113264010301BE5002093E505105BE570009FE565
|
||||
S11326500130A0E30111A0E1011080E0033081E02A
|
||||
S11326600030D3E5013043E2031AA0E105005BE545
|
||||
S11326704C309FE50031D3E7013043E20338A0E159
|
||||
S1132680033081E1032082E110301BE5002083E563
|
||||
S11326900130A0E3060000EA05305BE5013083E287
|
||||
S11326A005304BE505305BE5110053E3AAFFFF9AC3
|
||||
S11326B00030A0E30300A0E104D04BE20048BDE8F1
|
||||
S11326C01EFF2FE15848000060EA0000E0310000DE
|
||||
S11326D0702D000000482DE904B08DE204D04DE2D5
|
||||
S11326E070309FE50220A0E30020C3E568309FE539
|
||||
S11326F00120A0E3002083E560309FE50020A0E3F3
|
||||
S1132700002083E558309FE50020A0E3002083E506
|
||||
S113271008304BE27D0FA0E30310A0E144309FE5B5
|
||||
S11327200FE0A0E113FF2FE10030A0E1010053E32B
|
||||
S11327300200001A30309FE508201BE5002083E5E5
|
||||
S113274014309FE50020A0E3002083E504D04BE291
|
||||
S11327500048BDE81EFF2FE100C003E0004004E094
|
||||
S1132760104004E0084004E038250000144004E070
|
||||
S113277000482DE904B08DE204D04DE290309FE58D
|
||||
S1132780003093E5013003E2000053E31A00000A2D
|
||||
S113279080309FE5002093E57C309FE5030052E103
|
||||
S11327A01700001A74309FE5003093E5FF3003E210
|
||||
S11327B008304BE564309FE5003093E52334A0E115
|
||||
S11327C0FF3003E207304BE554309FE50420A0E3DB
|
||||
S11327D0002083E508305BE5FF0053E30900001A9D
|
||||
S11327E007305BE5000053E30600001A34309FE530
|
||||
S11327F00FE0A0E113FF2FE1020000EA0000A0E1D6
|
||||
S1132800000000EA0000A0E104D04BE20048BDE86B
|
||||
S11328101EFF2FE11C4004E0244004E06706000092
|
||||
S1132820284004E0044004E0B822000010082DE928
|
||||
S113283004B08DE204D04DE200400FE108400BE506
|
||||
S113284008301BE50300A0E104D04BE21008BDE80A
|
||||
S11328501EFF2FE104B02DE500B08DE204D04DE25F
|
||||
S113286004000BE504301BE503F029E100D08BE202
|
||||
S11328700008BDE81EFF2FE100482DE904B08DE2F9
|
||||
S113288004D04DE22C309FE50FE0A0E113FF2FE1CF
|
||||
S113289008000BE508301BE58030C3E30300A0E12A
|
||||
S11328A014309FE50FE0A0E113FF2FE104D04BE2C9
|
||||
S11328B00048BDE81EFF2FE12C280000542800002A
|
||||
S11328C004B02DE500B08DE224309FE520209FE583
|
||||
S11328D0002092E5022582E3002083E514309FE581
|
||||
S11328E00225A0E3002083E500D08BE20008BDE8C8
|
||||
S11328F01EFF2FE1188002E0148002E000482DE959
|
||||
S113290004B08DE204D04DE288309FE50FE0A0E1F1
|
||||
S113291013FF2FE108000BE57C309FE5003093E5C1
|
||||
S113292008201BE5022063E070309FE5030052E1BC
|
||||
S11329301400009A68309FE50030D3E5000053E3AB
|
||||
S11329400600001A58309FE50120A0E30020C3E5EB
|
||||
S113295050309FE50225A0E3002083E5050000EA4E
|
||||
S11329603C309FE50020A0E30020C3E538309FE51C
|
||||
S11329700225A0E3002083E51C309FE508201BE529
|
||||
S1132980002083E5000000EA0000A0E104D04BE24F
|
||||
S11329900048BDE81EFF2FE1FC2C00008820004009
|
||||
S11329A0F30100008C2000401C8002E0148002E04F
|
||||
S11329B000482DE904B08DE22C309FE50FE0A0E142
|
||||
S11329C013FF2FE124309FE50FE0A0E113FF2FE177
|
||||
S11329D01C309FE50FE0A0E113FF2FE114309FE5C9
|
||||
S11329E00FE0A0E113FF2FE1F8FFFFEAFC2900004C
|
||||
S11329F050220000FC2800008422000000482DE939
|
||||
S1132A0004B08DE20CD04DE2CC319FE510104BE2C6
|
||||
S1132A100320A0E10430A0E30100A0E10210A0E142
|
||||
S1132A200320A0E1B4319FE50FE0A0E113FF2FE103
|
||||
S1132A300330A0E306304BE506305BE5013043E2AA
|
||||
S1132A4006304BE50030A0E305304BE51C0000EAFE
|
||||
S1132A5005205BE50B30E0E304104BE2022081E04B
|
||||
S1132A60033082E00030D3E50320A0E10230A0E18E
|
||||
S1132A708332A0E1033062E00331A0E1023083E05D
|
||||
S1132A800322A0E1022063E00233A0E10320A0E1DD
|
||||
S1132A900230A0E10C300BE50C201BE540319FE532
|
||||
S1132AA0030052E10300009A0C201BE534319FE53A
|
||||
S1132AB0030052E10600009A05305BE5013083E231
|
||||
S1132AC005304BE505305BE5030053E3DFFFFF9A78
|
||||
S1132AD0000000EA0000A0E10C319FE505205BE561
|
||||
S1132AE08222A0E1FF1002E206205BE5022081E1E0
|
||||
S1132AF0FF2002E2FF2002E20020C3E5EC309FE564
|
||||
S1132B005520E0E30020C3E5E0309FE55520A0E335
|
||||
S1132B100020C3E5D8309FE50120A0E30020C3E5F1
|
||||
S1132B20C8309FE55520E0E30020C3E5BC309FE5B5
|
||||
S1132B305520A0E30020C3E50000A0E1B4309FE5E8
|
||||
S1132B40B030D3E10338A0E12338A0E1013B03E234
|
||||
S1132B50000053E3F8FFFF0A94309FE50320A0E34D
|
||||
S1132B600020C3E584309FE55520E0E30020C3E561
|
||||
S1132B7078309FE55520A0E30020C3E578309FE539
|
||||
S1132B800020A0E30020C3E570309FE50420A0E30B
|
||||
S1132B900020C3E560309FE50220A0E30020C3E5E8
|
||||
S1132BA05C309FE50120A0E30020C3E554309FE59D
|
||||
S1132BB00FE0A0E113FF2FE14C309FE50FE0A0E10F
|
||||
S1132BC013FF2FE144309FE50FE0A0E113FF2FE155
|
||||
S1132BD004D04BE20048BDE81EFF2FE1A0480000EE
|
||||
S1132BE0603200005F61020000E2040084C01FE064
|
||||
S1132BF08CC01FE080C01FE088C01FE000C01FE041
|
||||
S1132C0004C01FE000C11FE0C0280000142C000015
|
||||
S1132C107828000000482DE904B08DE25C309FE57F
|
||||
S1132C205C209FE5002083E558309FE50320A0E366
|
||||
S1132C30002083E550309FE50120A0E3002083E5D8
|
||||
S1132C4048309FE548209FE5002083E544309FE518
|
||||
S1132C502420A0E3002083E53C309FE51020A0E37E
|
||||
S1132C60002083E50000A0E330309FE50FE0A0E101
|
||||
S1132C7013FF2FE104D04BE20048BDE81EFF2FE113
|
||||
S1132C80184000E05FEA0000144000E0044000E067
|
||||
S1132C9000F1FFFF202D000000F2FFFF10F0FFFF06
|
||||
S1132CA0D02C000004B02DE500B08DE218309FE573
|
||||
S1132CB0003093E5012083E20C309FE5002083E59A
|
||||
S1132CC000D08BE20008BDE81EFF2FE190200040F9
|
||||
S1132CD004B02DE500B08DE204D04DE204000BE514
|
||||
S1132CE010309FE504201BE5002083E500D08BE233
|
||||
S1132CF00008BDE81EFF2FE19020004004B02DE540
|
||||
S1132D0000B08DE210309FE5003093E50300A0E1B0
|
||||
S1132D1000D08BE20008BDE81EFF2FE190200040A8
|
||||
S1132D2004E04EE20F582DE918B08DE224309FE5FF
|
||||
S1132D300120A0E3002083E51C309FE50020A0E3F0
|
||||
S1132D40002083E514309FE50FE0A0E113FF2FE19D
|
||||
S1132D5018D04BE20F98FDE8004000E030F0FFFF90
|
||||
S1132D60A42C00000000000000000000000000008F
|
||||
S1132D70010030E15A00004A000010E10000604206
|
||||
S1132D8000107142A00351E1052071922700008ACE
|
||||
S1132D900130B0E10020B0E3010853E31020823297
|
||||
S1132DA00338A031010453E3082082320334A031F4
|
||||
S1132DB0010253E3042082320332A031030113E3FE
|
||||
S1132DC0022082020331B0018330A05101209252CB
|
||||
S1132DD0F8C39FE5A3CCDCE7072052E21CC2A0E1C4
|
||||
S1132DE09C0101E09C2080E0001071E20030B0E31F
|
||||
S1132DF09120A3E0030080E000C0B0E39123ACE0A5
|
||||
S1132E000C0080E00030B0E3912CA3E0030080E0EC
|
||||
S1132E1000C0B0E39123ACE00C0080E00030B0E3EC
|
||||
S1132E20912CA3E0010072E10300A0E01EFF2FE15A
|
||||
S1132E30040051E31B00009A00C0A0E10000B0E3CD
|
||||
S1132E402C0151E11100008AAC0351E181C34C9083
|
||||
S1132E50800080922C0351E101C34C904000809289
|
||||
S1132E60AC0251E181C24C90200080922C0251E1CD
|
||||
S1132E7001C24C9010008092AC0151E181C14C9090
|
||||
S1132E80080080922C0151E101C14C900400809211
|
||||
S1132E90AC0051E181C04C90020080920C0051E1E1
|
||||
S1132EA0010080921EFF2FE12001A0011EFF2F01CF
|
||||
S1132EB0010051E30000A0331EFF2F91020051E3F3
|
||||
S1132EC0A000A0011EFF2F01AB20A0E3AA2C82E3E7
|
||||
S1132ED0AA2882E3AA2482E3923080E0A000B0E131
|
||||
S1132EE01EFF2FE1010011E1000070420010714249
|
||||
S1132EF0C00371E1052071922900008A0130B0E11C
|
||||
S1132F000020B0E3010853E3102082320338A031DB
|
||||
S1132F10010453E3082082320334A031010253E355
|
||||
S1132F20042082320332A031030113E3022082021F
|
||||
S1132F300331B0018330A051012092528CC29FE52D
|
||||
S1132F40A3CCDCE7000070E2072052E21CC2A0E13F
|
||||
S1132F509C0101E09C2080E0001071E20030B0E3AD
|
||||
S1132F609120A3E0030080E000C0B0E39123ACE033
|
||||
S1132F700C0080E00030B0E3912CA3E0030080E07B
|
||||
S1132F8000C0B0E39123ACE00C0080E00030B0E37B
|
||||
S1132F90912CA3E0010072E10300A0E0000070E2C4
|
||||
S1132FA01EFF2FE1040051E31B00009A00C070E2F1
|
||||
S1132FB00000B0E32C0151E11100008AAC0351E19F
|
||||
S1132FC081C34C90800040922C0351E101C34C908A
|
||||
S1132FD040004092AC0251E181C24C9020004092EA
|
||||
S1132FE02C0251E101C24C9010004092AC0151E11D
|
||||
S1132FF081C14C90080040922C0151E101C14C90D8
|
||||
S113300004004092AC0051E181C04C900200409217
|
||||
S11330100C0051E1010040921EFF2FE103008002E9
|
||||
S11330204001A0011EFF2F01010051E30000A03365
|
||||
S11330301EFF2F91020051E301008002C000A00195
|
||||
S11330401EFF2F01AB20A0E3AA2C82E3AA2882E36F
|
||||
S1133050AA2482E3000070E2923080E0A000B0E194
|
||||
S1133060000070E21EFF2FE10000A0E10000A0E1DB
|
||||
S1133070A00351E1053071922700008A0130B0E1CC
|
||||
S11330800020B0E3010853E3102082320338A0315A
|
||||
S1133090010453E3082082320334A031010253E3D4
|
||||
S11330A0042082320332A031030113E3022082029E
|
||||
S11330B00331B0018330A051012092520CC19FE52D
|
||||
S11330C0A3CCDCE7072052E21CC2A0E19C0101E092
|
||||
S11330D09C2080E0001071E20030B0E39120A3E076
|
||||
S11330E0030080E000C0B0E39123ACE00C0080E07A
|
||||
S11330F00030B0E3912CA3E0030080E000C0B0E313
|
||||
S11331009123ACE00C0080E00030B0E3912CA3E00C
|
||||
S1133110010072E10300A0E01EFF2FE1040051E36F
|
||||
S11331201B00009A00C0A0E10000B0E32C0151E1B3
|
||||
S11331301100008AAC0351E181C34C90800080925D
|
||||
S11331402C0351E101C34C9040008092AC0251E148
|
||||
S113315081C24C90200080922C0251E101C24C901B
|
||||
S113316010008092AC0151E181C14C900800809222
|
||||
S11331702C0151E101C14C9004008092AC0051E15A
|
||||
S113318081C04C90020080920C0051E101008092B9
|
||||
S11331901EFF2FE12001A0011EFF2F01010051E3BA
|
||||
S11331A00000A0331EFF2F91020051E3A000A001F4
|
||||
S11331B01EFF2F01AB20A0E3AA2C82E3AA2882E3FE
|
||||
S11331C0AA2482E3923080E0A000B0E11EFF2FE148
|
||||
S11331D064480000C046C046C046C046C046C0461B
|
||||
S11331E000402DE9050000EB0100A0E10040BDE82E
|
||||
S11331F01EFF2FE10000A0E10000A0E10000A0E11B
|
||||
S1133200023111E20010714240C033E0000060223C
|
||||
S11332100120B0E10E00000AA00052E18220A0913A
|
||||
S1133220FCFFFF3A020050E10330A3E0020040201B
|
||||
S1133230010032E1A220A011F9FFFF1A0010A0E161
|
||||
S11332400300A0E18CC0B0E10000602200106142E4
|
||||
S11332501EFF2FE10000B0E31EFF2FE10000A0E1FC
|
||||
S113326000C0A0E1013080E1030013E30800001A6C
|
||||
S1133270240052E30600003AF00F2DE9F80FB1E8FC
|
||||
S1133280F80FA0E8242042E2240052E3FAFFFF2AC8
|
||||
S1133290F00FBDE8000052E30300000A0130D1E45E
|
||||
S11332A00130C0E4012052E2FBFFFF1A0C00A0E150
|
||||
S11332B01EFF2FE10000A0E10000A0E10000A0E15A
|
||||
S11332C0011080E2030010E30C00000A0120D0E4A6
|
||||
S11332D0000052E31700000A030010E30700000A8D
|
||||
S11332E00120D0E4000052E31200000A030010E3BE
|
||||
S11332F00200000A0120D0E4000052E30D00000A9D
|
||||
S113330070002DE934209FE534309FE5044090E4BB
|
||||
S1133310025044E00450C5E1035015E00000001AD7
|
||||
S1133320F9FFFFEA040040E27000BDE80120D0E4A8
|
||||
S1133330000052E3FCFFFF1A010040E01EFF2FE1F2
|
||||
S113334001010101808080800000A0E10000A0E173
|
||||
S1133350F04F2DE918D04DE20070A0E10140A0E14A
|
||||
S113336008208DE50030A0E3003080E598B89FE5A3
|
||||
S11333700150A0E1130200EA015085E2250051E367
|
||||
S11333800530A0010060A0030200000A0700A0E1CC
|
||||
S1133390230400EB0B0200EA0310A0E10100D3E4D4
|
||||
S11333A00350A0E1202040E2100052E302F19F9775
|
||||
S11333B01C0000EAF8330000283400002834000020
|
||||
S11333C000340000283400002834000028340000B1
|
||||
S11333D00834000028340000283400002834000099
|
||||
S11333E01034000028340000183400002834000091
|
||||
S11333F02834000020340000406086E3E5FFFFEA43
|
||||
S1133400806086E3E3FFFFEA026986E3E1FFFFEA07
|
||||
S1133410206086E3DFFFFFEA106086E3DDFFFFEA5A
|
||||
S1133420026C86E3DBFFFFEA2A0050E30400000A93
|
||||
S1133430302040E2090052E30090A0830A00009A81
|
||||
S1133440120000EA08309DE5040083E208008DE5DF
|
||||
S1133450009093E5000059E3009069B2106086B3D0
|
||||
S11334600100D1E5025081E2080000EA0090A0E3E7
|
||||
S1133470099189E0300040E2899080E00100D3E4C2
|
||||
S11334800350A0E1302040E2090052E3F7FFFF9A25
|
||||
S1133490C99FC9E12E0050E30080A0131C00001A4C
|
||||
S11334A00000D5E52A0050E30500000A015085E23A
|
||||
S11334B0303040E2090053E30080A0830700009A03
|
||||
S11334C0120000EA08309DE5042083E208208DE51F
|
||||
S11334D0008093E50100D5E5025085E2090000EA89
|
||||
S11334E00530A0E10080A0E3088188E0300040E2DC
|
||||
S11334F0888080E00100D3E40350A0E1302040E262
|
||||
S1133500090052E3F7FFFF9A000058E3000000BAF5
|
||||
S1133510016C86E3680050E30600001A0000D5E55C
|
||||
S1133520680050E3086086030100D5050250850257
|
||||
S11335300150851204608613780050E300F19F97D0
|
||||
S1133540780000EAFC3B0000283700002837000020
|
||||
S113355028370000283700002837000028370000EB
|
||||
S113356028370000283700002837000028370000DB
|
||||
S113357028370000283700002837000028370000CB
|
||||
S113358028370000283700002837000028370000BB
|
||||
S113359028370000283700002837000028370000AB
|
||||
S11335A0283700002837000028370000283700009B
|
||||
S11335B0283700002837000028370000283700008B
|
||||
S11335C0283700002837000028370000283700007B
|
||||
S11335D028370000283700005C3700002837000037
|
||||
S11335E0283700002837000028370000283700005B
|
||||
S11335F0283700002837000028370000283700004B
|
||||
S1133600283700002837000028370000283700003A
|
||||
S1133610283700002837000028370000283700002A
|
||||
S1133620283700002837000028370000283700001A
|
||||
S1133630283700002837000028370000283700000A
|
||||
S113364028370000283700002837000028370000FA
|
||||
S113365028370000283700002837000028370000EA
|
||||
S113366028370000283700002837000028370000DA
|
||||
S113367028370000283700002837000028370000CA
|
||||
S113368028370000283700002837000028370000BA
|
||||
S113369028370000283700002837000028370000AA
|
||||
S11336A0283700008C380000283700002837000035
|
||||
S11336B0283700002837000028370000283700008A
|
||||
S11336C0283700002837000028370000283700007A
|
||||
S11336D06C370000E8380000283700002837000065
|
||||
S11336E02837000028370000E83800002837000099
|
||||
S11336F0283700002837000028370000B8370000BA
|
||||
S1133700B83800006038000028370000283700006F
|
||||
S1133710DC37000028370000D438000028370000C8
|
||||
S11337202837000090380000E0349FE500C093E59E
|
||||
S113373000005CE32301000A00808DE508308DE27F
|
||||
S113374004308DE50710A0E10620A0E10930A0E1D6
|
||||
S11337500FE0A0E11CFF2FE11A0100EA0700A0E13D
|
||||
S11337602510A0E32E0300EB160100EA08309DE5C6
|
||||
S1133770042083E208208DE50040D3E5019049E26E
|
||||
S11337800600A0E10910A0E10720A0E14E0300EB30
|
||||
S11337900700A0E10410A0E1210300EB100016E3F0
|
||||
S11337A00801000A2000A0E30910A0E10720A0E11D
|
||||
S11337B0360300EB030100EA080016E308309DE538
|
||||
S11337C0042083E208208DE5003093E5002097E58E
|
||||
S11337D00020C31500208305FA0000EA08309DE5A7
|
||||
S11337E0042083E208208DE5004093E520149FE542
|
||||
S11337F0000054E30140A001026CC6E30400A0E110
|
||||
S1133800AEFEFFEB00A0A0E1010C16E30030A00324
|
||||
S11338100130A013000058E10030A0A3013003B22E
|
||||
S1133820000053E308A0A01109906AE00600A0E19B
|
||||
S11338300910A0E10720A0E1230300EB00005AE3F4
|
||||
S1133840D5FFFF0A0A80A0E10700A0E10110D4E43B
|
||||
S1133850F30200EB018058E2FAFFFF1ACEFFFFEA01
|
||||
S113386008309DE5042083E208208DE5003093E5CF
|
||||
S113387080A006E200005AE323A0A01300A0A00346
|
||||
S1133880016C86E30880A0E33E0000EA026A86E356
|
||||
S1133890800016E300A0A0030300000A74339FE530
|
||||
S11338A074A39FE5780050E303A0A001010C16E384
|
||||
S11338B0026CC6130F0000EA80A006E200005AE37F
|
||||
S11338C030A0A01300A0A003010C16E3026CC613E1
|
||||
S11338D0080000EA010C16E3026CC61300A0A01352
|
||||
S11338E00400001A020000EA016986E300A0A0E3D4
|
||||
S11338F0000000EA00A0A0E3010916E31400000A96
|
||||
S113390008309DE5042083E208208DE5003093E52E
|
||||
S1133910040016E30338A0114338A0110100001A73
|
||||
S1133920080016E3FF300312000053E3003063B2D3
|
||||
S11339302DA0A0B3100000BA200016E32BA0A01302
|
||||
S11339400D00001A402006E2000052E320A0A0135C
|
||||
S1133950090000EA08309DE5042083E208208DE593
|
||||
S1133960003093E5040016E30338A0112338A011B6
|
||||
S11339700100001A080016E3FF300312010C16E3DD
|
||||
S11339800200000A026CC6E3010C16E30000001AF0
|
||||
S11339900180A0E3580040E2200050E300F19F972B
|
||||
S11339A0590000EA483A00000C3B00000C3B0000C0
|
||||
S11339B00C3B00000C3B00000C3B00000C3B0000E7
|
||||
S11339C00C3B00000C3B00000C3B00000C3B0000D7
|
||||
S11339D00C3B0000383A00000C3B00000C3B00009C
|
||||
S11339E00C3B00000C3B0000383A00000C3B00008C
|
||||
S11339F00C3B00000C3B00000C3B00000C3B0000A7
|
||||
S1133A00283A0000483A00000C3B00000C3B000040
|
||||
S1133A100C3B00000C3B0000383A00000C3B00005B
|
||||
S1133A200C3B0000483A0000000053E30040A003B0
|
||||
S1133A301500001A350000EA000053E30040A0031B
|
||||
S1133A401A00001A310000EA000053E30040A0030A
|
||||
S1133A502E00000A0040A0E3022A06E2000052E31E
|
||||
S1133A600F1003E2B4C19F150100DC17B0E19F05FC
|
||||
S1133A700100DE070C108DE20100C4E7014084E27E
|
||||
S1133A802332B0E1F4FFFF1A200000EA0040A0E373
|
||||
S1133A90071003E2301081E20C208DE20210C4E72B
|
||||
S1133AA0014084E2A331B0E1F8FFFF1A170000EAF5
|
||||
S1133AB00040A0E3020906E22CC0A0E3000050E3AA
|
||||
S1133AC00500000A032004E2030052E318108D02EB
|
||||
S1133AD0042081000CC042050140840218208DE2BC
|
||||
S1133AE0041082E09BE382E0A221A0E102E182E0F3
|
||||
S1133AF08E3043E0303083E20C3041E5014084E213
|
||||
S1133B00003052E2ECFFFF1A000000EA0040A0E39C
|
||||
S1133B10088064E0C88FC8E1099068E0099064E017
|
||||
S1133B20FF005AE30190498200005AE301904912D0
|
||||
S1133B30020C16E30400001A0600A0E10910A0E13B
|
||||
S1133B400720A0E1600200EB0090A0E3FF005AE32D
|
||||
S1133B502A14A0810700A081FF1001823002008B8B
|
||||
S1133B6000005AE3FF100A120700A0112C02001BE8
|
||||
S1133B700600A0E10910A0E10720A0E1520200EB39
|
||||
S1133B803000A0E30810A0E10720A0E13F0200EB11
|
||||
S1133B90010054E30600004A0C808DE2044088E0F2
|
||||
S1133BA00700A0E1011074E51D0200EB080054E1D8
|
||||
S1133BB0FAFFFF1A100016E32000A0130910A01149
|
||||
S1133BC00720A0113102001B0010D5E5000051E3CD
|
||||
S1133BD0E8FDFF1A083097E5000053E30400000AEB
|
||||
S1133BE0002097E5041097E5010052E10010A0338E
|
||||
S1133BF00210C337000097E5000000EA0000E0E38C
|
||||
S1133C0018D08DE2F04FBDE81EFF2FE1CDCCCCCC17
|
||||
S1133C1094200040E4480000783000005830000050
|
||||
S1133C20FC480000EC48000010402DE90040A0E1F1
|
||||
S1133C300030D1E5000053E30400000A010070E302
|
||||
S1133C40043091150130431204308115020000EA5A
|
||||
S1133C5008C091E50FE0A0E11CFF2FE10400A0E102
|
||||
S1133C601040BDE81EFF2FE1F04F2DE90090A0E1C8
|
||||
S1133C7001B0A0E10280A0E103A0A0E124609DE5E1
|
||||
S1133C800050E0E3000000EA0450A0E1014085E2B6
|
||||
S1133C900900A0E1CF0100EB0070A0E1380200EBC5
|
||||
S1133CA0000050E3F7FFFF1A0730A0E1010077E3BB
|
||||
S1133CB00040E0035900000A068CC8E3000056E304
|
||||
S1133CC02B0000DA800018E30900000A2B0057E3F8
|
||||
S1133CD00200000A2D0057E30500001A018B88E357
|
||||
S1133CE0024085E20900A0E1BA0100EB0070A0E106
|
||||
S1133CF0016046E2000056E30030A0D30130A0C3C7
|
||||
S1133D00300057E30030A013000053E31800000A0A
|
||||
S1133D10028C88E3016046E2015084E20900A0E1DC
|
||||
S1133D20AC0100EB0070A0E1000056E30D0000DAE6
|
||||
S1133D30580050E3780050130A00001A10005AE3A8
|
||||
S1133D4000005A130700001A028CC8E3016046E21F
|
||||
S1133D50025084E20900A0E19E0100EB0070A0E1A2
|
||||
S1133D6010A0A0E3300000EA00005AE308A0A0037A
|
||||
S1133D702D0000EA00005AE30AA0A003000056E365
|
||||
S1133D800050A0D30A0000CA0F0000EA028C88E3A6
|
||||
S1133D90016046E29A0525E0014084E20900A0E1C1
|
||||
S1133DA08C0100EB0070A0E1000056E30100001A52
|
||||
S1133DB0050000EA0050A0E30700A0E10A10A0E11A
|
||||
S1133DC0DA0100EB000050E3EFFFFFAA0700A0E1D7
|
||||
S1133DD00910A0E193FFFFEB020C18E30140E0039C
|
||||
S1133DE00E00000A010018E30C00001A00309BE5E5
|
||||
S1133DF0042083E200208BE5003093E5122D08E2D5
|
||||
S1133E00120D52E300506502100018E30050C31570
|
||||
S1133E100200001A080018E3B050C31100508305D3
|
||||
S1133E200400A0E1F04FBDE81EFF2FE10540A0E132
|
||||
S1133E30D1FFFFEAF04F2DE914D04DE204008DE5E7
|
||||
S1133E4001A0A0E110208DE50090A0E308908DE58D
|
||||
S1133E507CB59FE50A60A0E10140D6E4000054E38C
|
||||
S1133E605701000A250054E32900000A0400A0E1D8
|
||||
S1133E70C30100EB000050E30100001A120000EA45
|
||||
S1133E800460A0E1014086E20000D6E5BC0100EB3D
|
||||
S1133E90000050E3F9FFFF1A000000EA019089E2F4
|
||||
S1133EA004009DE54B0100EB0040A0E1B40100EBF0
|
||||
S1133EB0000050E3F8FFFF1A0400A0E104109DE5A0
|
||||
S1133EC058FFFFEB06A0A0E1E1FFFFEA04009DE537
|
||||
S1133ED0400100EB0050A0E1040050E10190890290
|
||||
S1133EE006A0A001DAFFFF0A04109DE54DFFFFEBD9
|
||||
S1133EF008209DE5000052E3010075030050A01363
|
||||
S1133F000150A003000055E30020E01308208DE5D4
|
||||
S1133F102B0100EA0130DAE52A0053E302608A0249
|
||||
S1133F200180A0030080A0130640A0E10050A0E39C
|
||||
S1133F30060000EA0B0055E1210100CA055185E0A5
|
||||
S1133F40306046E2855096E01D01004A208088E3F7
|
||||
S1133F500470A0E1014084E20060D7E504A0A0E180
|
||||
S1133F600600A0E16C0100EB000050E3F0FFFF1A33
|
||||
S1133F700810A0E1202008E2000052E30251E0030F
|
||||
S1133F804C0056E30160D70502A0870244808803F1
|
||||
S1133F900800000A680056E30600001A0160D7E52D
|
||||
S1133FA0680056E3108088030260D70503A08702E7
|
||||
S1133FB002A0871208808113256046E2530056E36D
|
||||
S1133FC006F19F97FE0000EA18410000C443000078
|
||||
S1133FD0C4430000C4430000C4430000C4430000C1
|
||||
S1133FE0C4430000C4430000C4430000C4430000B1
|
||||
S1133FF0C4430000C4430000C4430000C4430000A1
|
||||
S1134000C4430000C4430000C4430000C443000090
|
||||
S1134010C4430000C4430000C4430000C443000080
|
||||
S1134020C4430000C4430000C4430000C443000070
|
||||
S1134030C4430000C4430000C4430000C443000060
|
||||
S1134040C4430000C4430000C4430000C443000050
|
||||
S1134050C4430000C4430000C4430000C443000040
|
||||
S1134060C4430000C4430000C4430000C443000030
|
||||
S1134070C4430000C4430000C4430000C443000020
|
||||
S1134080C4430000C4430000C4430000C443000010
|
||||
S1134090C443000064430000C4430000C443000060
|
||||
S11340A0C4430000C4430000C4430000C4430000F0
|
||||
S11340B0C4430000C4430000C4430000C4430000E0
|
||||
S11340C05C410000D8410000C4430000C443000028
|
||||
S11340D0C4430000C4430000F8410000C44300008E
|
||||
S11340E0C4430000C4430000C4430000184200005D
|
||||
S11340F04C4200006C420000C4430000C443000072
|
||||
S11341008C420000C443000044430000C443000048
|
||||
S1134110C44300006443000004009DE5AD0000EBCF
|
||||
S11341200040A0E1250050E30190890248FFFF0A06
|
||||
S113413004109DE5BBFEFFEB08309DE5010074E330
|
||||
S1134140000053030040A0030140A013000054E307
|
||||
S11341500030E00308308DE5990000EA203008E2E1
|
||||
S1134160000053E30150A003018018E210309D05C4
|
||||
S11341700420830210208D05004093050040A01305
|
||||
S1134180000055E38E00000A0D0000DA04009DE5EE
|
||||
S1134190900000EB010070E30400001A08209DE584
|
||||
S11341A0000052E30020E00308208DE5840000EACB
|
||||
S11341B0000058E30100C404019089E2015055E273
|
||||
S11341C0F1FFFF1A000058E308309D050130830217
|
||||
S11341D008308D051EFFFFEA00508DE504009DE5C3
|
||||
S11341E010108DE2802088E30A30A0E39DFEFFEBEF
|
||||
S11341F00040A0E1610000EA00508DE504009DE567
|
||||
S113420010108DE2802088E30030A0E395FEFFEBE0
|
||||
S11342100040A0E1590000EA010018E30CFFFF1A76
|
||||
S113422010309DE5042083E210208DE5003093E5F5
|
||||
S1134230100018E30090C31505FFFF1A080018E3E7
|
||||
S1134240B090C3110090830501FFFFEA00508DE593
|
||||
S113425004009DE510108DE2802088E30830A0E37F
|
||||
S113426080FEFFEB0040A0E1440000EA00508DE531
|
||||
S113427004009DE510108DE21E20C8E31030A0E379
|
||||
S113428078FEFFEB0040A0E13C0000EA0040E0E3E0
|
||||
S1134290014084E204009DE54E0000EB0060A0E1D3
|
||||
S11342A0B70000EB000050E3F8FFFF1A010076E3CB
|
||||
S11342B00040E0033100000A017018E210309D054F
|
||||
S11342C00420830210208D05003093050C308D05E9
|
||||
S11342D00020A0130C208D15000055E30C0000CA2B
|
||||
S11342E00F0000EA015045E2000057E30C309D0541
|
||||
S11342F00160C3040C308D05014084E204009DE597
|
||||
S1134300340000EB0060A0E1010070E300005513ED
|
||||
S1134310030000DA0600A0E1990000EB000050E37E
|
||||
S1134320EFFFFF0A0600A0E104109DE53DFEFFEB50
|
||||
S1134330000057E30020A0030C309D050020C305B6
|
||||
S11343400E0000EA00508DE504009DE510108DE29A
|
||||
S1134350802088E30A30A0E342FEFFEB0040A0E1A6
|
||||
S1134360060000EA00508DE504009DE510108DE282
|
||||
S1134370802088E31030A0E33AFEFFEB0040A0E188
|
||||
S1134380000054E3080000AA08209DE5010074E33E
|
||||
S1134390000052030040A0030140A013000054E3B6
|
||||
S11343A00020E00308208DE5050000EA010018E381
|
||||
S11343B008309D050130830208308D05049089E0A2
|
||||
S11343C0A3FEFFEA08009DE514D08DE2F04FBDE89E
|
||||
S11343D01EFF2FE1CCCCCC0C04E02DE50030A0E195
|
||||
S11343E00020D0E5000052E30600000A042090E516
|
||||
S11343F00000D2E5000050E301208212042083155E
|
||||
S11344000500001A030000EA04C090E50FE0A0E1F3
|
||||
S11344101CFF2FE1000000EA0000E0E304E09DE45B
|
||||
S11344201EFF2FE110402DE90040A0E1FF0001E252
|
||||
S1134430081094E5000051E30600000A003094E5FA
|
||||
S1134440042094E501C083E202005CE10000A003C3
|
||||
S1134450020053E10300C1370C3094E5000053E33C
|
||||
S11344600500000A001094E5042094E5020051E1DF
|
||||
S11344700410A0310FE0A03113FF2F31003094E578
|
||||
S1134480013083E2003084E51040BDE81EFF2FE1D7
|
||||
S1134490F0402DE90250A0E1010051E30800004A78
|
||||
S11344A00160A0E10040A0E3FF7000E20500A0E18C
|
||||
S11344B00710A0E1DAFFFFEB014084E2060054E1BB
|
||||
S11344C0F9FFFF1AF040BDE81EFF2FE104E02DE5DF
|
||||
S11344D0100010E30400001A020C00E2000050E394
|
||||
S11344E02000A0033000A013E8FFFFEB04E09DE4EC
|
||||
S11344F01EFF2FE1410040E2190050E30000A083B9
|
||||
S11345000100A0931EFF2FE1610040E2190050E377
|
||||
S11345100000A0830100A0931EFF2FE1300040E2C1
|
||||
S1134520090050E30000A0830100A0931EFF2FE1C7
|
||||
S113453030402DE90040A0E10150A0E1F6FFFFEB7F
|
||||
S1134540000050E3300044120900001A0400A0E106
|
||||
S1134550ECFFFFEB000050E3570044120400001A84
|
||||
S11345600400A0E1E2FFFFEB000050E33700441237
|
||||
S11345700000E003050050E10000E0A33040BDE886
|
||||
S11345801EFF2FE1093040E2200050E304005313E2
|
||||
S11345900000A0830100A0931EFF2FE130402DE90D
|
||||
S11345A004D04DE20050A0E104408DE2041024E563
|
||||
S11345B0090000EB0500A0E1140000EB0D00A0E1F0
|
||||
S11345C0120000EB190000EB040000EB00009DE575
|
||||
S11345D004D08DE23040BDE81EFF2FE11EFF2FE125
|
||||
S11345E01EFF2FE10000000000000000000000009A
|
||||
S11345F0100E10EE010010E3FCFFFF0A100E11EE86
|
||||
S11346001EFF2FE10000A0E10000A0E10000A0E1F6
|
||||
S113461002002DE9101E10EE020011E3FCFFFF1A48
|
||||
S1134620100E01EE0200BDE81EFF2FE10000A0E124
|
||||
S1134630F0472DE90480A0E30870A0E10090A0E316
|
||||
S1134640EAFFFFEB2042A0E10F0000E20A0050E382
|
||||
S113465000F19F97F9FFFFEA84460000D846000066
|
||||
S113466094470000C0470000D047000020480000E5
|
||||
S1134670304700004046000040460000DC47000090
|
||||
S113468050480000D9FFFFEB000054E36600001A15
|
||||
S11346900D0000EAD5FFFFEB0730A0E10100C5E4FF
|
||||
S11346A0014054E20020A0030120A013013053E292
|
||||
S11346B00010A00301100212000051E32004A01115
|
||||
S11346C0F5FFFF1A000052E3F1FFFF1A0100A0E317
|
||||
S11346D0CEFFFFEBD9FFFFEAC4FFFFEB000054E37A
|
||||
S11346E00060A0110950A0110B00001A0C0000EA90
|
||||
S11346F02554A0E1000054E30120D614025C851186
|
||||
S113470001404412013053E2F8FFFF1A0500A0E112
|
||||
S1134710BEFFFFEB000054E30100000A0730A0E1F4
|
||||
S1134720F2FFFFEA0100A0E3B8FFFFEBC3FFFFEADB
|
||||
S1134730AEFFFFEB000054E30150A0033E00001A5B
|
||||
S1134740100000EAA9FFFFEB0730A0E10110D6E456
|
||||
S1134750FF2000E2020051E10050A013014054E2A6
|
||||
S11347600020A0030120A013013053E20010A00395
|
||||
S113477001100212000051E32004A011F2FFFF1AFD
|
||||
S1134780000052E3EEFFFF1A0500A0E19FFFFFEBDC
|
||||
S1134790AAFFFFEA95FFFFEB0050A0E193FFFFEBB8
|
||||
S11347A0000054E30200000A0100C5E4014054E2A1
|
||||
S11347B0FCFFFF1A0100A0E394FFFFEB9FFFFFEA59
|
||||
S11347C08AFFFFEB0100A0E390FFFFEB9BFFFFEAF2
|
||||
S11347D00100A0E38DFFFFEB98FFFFEA83FFFFEBEF
|
||||
S11347E00040A0E181FFFFEB0050A0E17FFFFFEB61
|
||||
S11347F00060A0E17DFFFFEB00A0A0E17BFFFFEBE9
|
||||
S11348000030A0E10500A0E10610A0E10A20A0E12B
|
||||
S11348100FE0A0E114FF2FE17CFFFFEB87FFFFEA2D
|
||||
S11348200100A0E379FFFFEB080000EA0050A0E1DB
|
||||
S11348306EFFFFEB0830A0E197FFFFEA0060A0E104
|
||||
S11348406AFFFFEB0150A0E30830A0E1BEFFFFEADE
|
||||
S10B4850F047BDE81EFF2FE153
|
||||
S1134858050200000602000006030000070300002A
|
||||
S11348680803000009030000090400000A0400000A
|
||||
S11348780B0400000C0400000C0500000D050000EA
|
||||
S11348880E0500000F0500000F06000010060000CA
|
||||
S1134898100700001008000001020408FCF8F4F0F6
|
||||
S11348A8EDEAE6E3E0DDDAD7D4D2CFCCCAC7C5C394
|
||||
S11348B8C0BEBCBAB8B6B4B2B0AEACAAA8A7A5A3D9
|
||||
S11348C8A2A09F9D9C9A999796949392908F8E8D6F
|
||||
S11348D88C8A89888786858483828180286E756C12
|
||||
S11348E86C29000030313233343536373839616257
|
||||
S11348F8636465663031323334353637383941428A
|
||||
S10749084344454695
|
||||
S90320607C
|
|
@ -1,404 +0,0 @@
|
|||
/************************************************************************************//**
|
||||
* \file Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\boot.c
|
||||
* \brief Demo program bootloader interface source file.
|
||||
* \ingroup Prog_ARM7_LPC2000_Olimex_LPC_L2294_Crossworks
|
||||
* \internal
|
||||
*----------------------------------------------------------------------------------------
|
||||
* C O P Y R I G H T
|
||||
*----------------------------------------------------------------------------------------
|
||||
* Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved
|
||||
*
|
||||
*----------------------------------------------------------------------------------------
|
||||
* L I C E N S E
|
||||
*----------------------------------------------------------------------------------------
|
||||
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You have received a copy of the GNU General Public License along with OpenBLT. It
|
||||
* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
|
||||
*
|
||||
* \endinternal
|
||||
****************************************************************************************/
|
||||
|
||||
/****************************************************************************************
|
||||
* Include files
|
||||
****************************************************************************************/
|
||||
#include "header.h" /* generic header */
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Function prototypes
|
||||
****************************************************************************************/
|
||||
#if (BOOT_COM_UART_ENABLE > 0)
|
||||
static void BootComUartInit(void);
|
||||
static void BootComUartCheckActivationRequest(void);
|
||||
#endif
|
||||
#if (BOOT_COM_CAN_ENABLE > 0)
|
||||
static void BootComCanInit(void);
|
||||
static void BootComCanCheckActivationRequest(void);
|
||||
#endif
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Initializes the communication interface.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
void BootComInit(void)
|
||||
{
|
||||
#if (BOOT_COM_UART_ENABLE > 0)
|
||||
BootComUartInit();
|
||||
#endif
|
||||
#if (BOOT_COM_CAN_ENABLE > 0)
|
||||
BootComCanInit();
|
||||
#endif
|
||||
} /*** end of BootComInit ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Receives the CONNECT request from the host, which indicates that the
|
||||
** bootloader should be activated and, if so, activates it.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
void BootComCheckActivationRequest(void)
|
||||
{
|
||||
#if (BOOT_COM_UART_ENABLE > 0)
|
||||
BootComUartCheckActivationRequest();
|
||||
#endif
|
||||
#if (BOOT_COM_CAN_ENABLE > 0)
|
||||
BootComCanCheckActivationRequest();
|
||||
#endif
|
||||
} /*** end of BootComCheckActivationRequest ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Bootloader activation function. Performs a software reset by configuring
|
||||
** and triggering the watchdog.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
void BootActivate(void)
|
||||
{
|
||||
#define WDEN_BIT (0x01) /* watchdog enable bit (set only) */
|
||||
#define WDRESET_BIT (0x02) /* watchdog reset enable bit */
|
||||
|
||||
/* configure a short timeout. not really interesting as we won't be using it */
|
||||
WDTC = 1024;
|
||||
/* enable the watchdog and configure it such that a watchdog timeout causes a reset */
|
||||
WDMOD = WDEN_BIT | WDRESET_BIT;
|
||||
/* start the watchdog */
|
||||
WDFEED = 0xAA;
|
||||
WDFEED = 0x55;
|
||||
/* write invalid feed sequence to cause an instant reset */
|
||||
WDFEED = 0xAA;
|
||||
WDFEED = 0x00;
|
||||
} /*** end of BootActivate ***/
|
||||
|
||||
|
||||
#if (BOOT_COM_UART_ENABLE > 0)
|
||||
/****************************************************************************************
|
||||
* U N I V E R S A L A S Y N C H R O N O U S R X T X I N T E R F A C E
|
||||
****************************************************************************************/
|
||||
|
||||
/****************************************************************************************
|
||||
* Macro definitions
|
||||
****************************************************************************************/
|
||||
/** \brief Divisor latch access bit. */
|
||||
#define UART_DLAB (0x80)
|
||||
/** \brief 8 data and 1 stop bit, no parity. */
|
||||
#define UART_MODE_8N1 (0x03)
|
||||
/** \brief FIFO reset and RX FIFO 1 deep. */
|
||||
#define UART_FIFO_RX1 (0x07)
|
||||
/** \brief Receiver data ready. */
|
||||
#define UART_RDR (0x01)
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Function prototypes
|
||||
****************************************************************************************/
|
||||
static unsigned char UartReceiveByte(unsigned char *data);
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Initializes the UART communication interface.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
static void BootComUartInit(void)
|
||||
{
|
||||
unsigned long baud_reg_value; /* baudrate register value */
|
||||
|
||||
/* configure P0.0 for UART0 Tx and P0.1 for UART0 Rx functionality */
|
||||
PINSEL0 |= 0x05;
|
||||
/* disable UART related interrupt generation. this driver works in polling mode */
|
||||
U0IER = 0;
|
||||
/* clear interrupt id register */
|
||||
U0IIR = 0;
|
||||
/* clear line status register */
|
||||
U0LSR = 0;
|
||||
/* set divisor latch DLAB = 1 so buadrate can be configured */
|
||||
U0LCR = UART_DLAB;
|
||||
/* Baudrate calculation:
|
||||
* y = BOOT_CPU_SYSTEM_SPEED_KHZ * 1000 / 16 / BOOT_COM_UART_BAUDRATE and add
|
||||
* smartness to automatically round the value up/down using the following trick:
|
||||
* y = x/n can round with y = (x + (n + 1)/2 ) / n
|
||||
*/
|
||||
baud_reg_value = (((BOOT_CPU_SYSTEM_SPEED_KHZ*1000/16)+ \
|
||||
((BOOT_COM_UART_BAUDRATE+1)/2))/BOOT_COM_UART_BAUDRATE);
|
||||
/* write the calculated baudrate selector value to the registers */
|
||||
U0DLL = (unsigned char)baud_reg_value;
|
||||
U0DLM = (unsigned char)(baud_reg_value >> 8);
|
||||
/* configure 8 data bits, no parity and 1 stop bit and set DLAB = 0 */
|
||||
U0LCR = UART_MODE_8N1;
|
||||
/* enable and reset transmit and receive FIFO. necessary for UART operation */
|
||||
U0FCR = UART_FIFO_RX1;
|
||||
} /*** end of BootComUartInit ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Receives the CONNECT request from the host, which indicates that the
|
||||
** bootloader should be activated and, if so, activates it.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
static void BootComUartCheckActivationRequest(void)
|
||||
{
|
||||
static unsigned char xcpCtoReqPacket[BOOT_COM_UART_RX_MAX_DATA+1];
|
||||
static unsigned char xcpCtoRxLength;
|
||||
static unsigned char xcpCtoRxInProgress = 0;
|
||||
|
||||
/* start of cto packet received? */
|
||||
if (xcpCtoRxInProgress == 0)
|
||||
{
|
||||
/* store the message length when received */
|
||||
if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1)
|
||||
{
|
||||
/* indicate that a cto packet is being received */
|
||||
xcpCtoRxInProgress = 1;
|
||||
|
||||
/* reset packet data count */
|
||||
xcpCtoRxLength = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* store the next packet byte */
|
||||
if (UartReceiveByte(&xcpCtoReqPacket[xcpCtoRxLength+1]) == 1)
|
||||
{
|
||||
/* increment the packet data count */
|
||||
xcpCtoRxLength++;
|
||||
|
||||
/* check to see if the entire packet was received */
|
||||
if (xcpCtoRxLength == xcpCtoReqPacket[0])
|
||||
{
|
||||
/* done with cto packet reception */
|
||||
xcpCtoRxInProgress = 0;
|
||||
|
||||
/* check if this was an XCP CONNECT command */
|
||||
if ((xcpCtoReqPacket[1] == 0xff) && (xcpCtoReqPacket[2] == 0x00))
|
||||
{
|
||||
/* connection request received so start the bootloader */
|
||||
BootActivate();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} /*** end of BootComUartCheckActivationRequest ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Receives a communication interface byte if one is present.
|
||||
** \param data Pointer to byte where the data is to be stored.
|
||||
** \return 1 if a byte was received, 0 otherwise.
|
||||
**
|
||||
****************************************************************************************/
|
||||
static unsigned char UartReceiveByte(unsigned char *data)
|
||||
{
|
||||
/* check if a new byte was received by means of the RDR-bit */
|
||||
if((U0LSR & UART_RDR) != 0)
|
||||
{
|
||||
/* store the received byte */
|
||||
data[0] = U0RBR;
|
||||
/* inform caller of the newly received byte */
|
||||
return 1;
|
||||
}
|
||||
/* inform caller that no new data was received */
|
||||
return 0;
|
||||
} /*** end of UartReceiveByte ***/
|
||||
#endif /* BOOT_COM_UART_ENABLE > 0 */
|
||||
|
||||
|
||||
#if (BOOT_COM_CAN_ENABLE > 0)
|
||||
/****************************************************************************************
|
||||
* C O N T R O L L E R A R E A N E T W O R K I N T E R F A C E
|
||||
****************************************************************************************/
|
||||
|
||||
/****************************************************************************************
|
||||
* Macro definitions
|
||||
****************************************************************************************/
|
||||
/** \brief Transmit buffer 1 idle. */
|
||||
#define CAN_TBS1 (0x00000004)
|
||||
/** \brief Transmit buffer 1 complete. */
|
||||
#define CAN_TCS1 (0x00000008)
|
||||
/** \brief Receive buffer release. */
|
||||
#define CAN_RRB (0x04)
|
||||
/** \brief Receive buffer status. */
|
||||
#define CAN_RBS (0x01)
|
||||
/** \brief Transmission request. */
|
||||
#define CAN_TR (0x01)
|
||||
/** \brief Select tx buffer 1 for transmit. */
|
||||
#define CAN_STB1 (0x20)
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Type definitions
|
||||
****************************************************************************************/
|
||||
/** \brief Structure type for grouping CAN bus timing related information. */
|
||||
typedef struct t_can_bus_timing
|
||||
{
|
||||
unsigned char tseg1; /**< CAN time segment 1 */
|
||||
unsigned char tseg2; /**< CAN time segment 2 */
|
||||
} tCanBusTiming;
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Local constant declarations
|
||||
****************************************************************************************/
|
||||
/** \brief CAN bittiming table for dynamically calculating the bittiming settings.
|
||||
* \details According to the CAN protocol 1 bit-time can be made up of between 8..25
|
||||
* time quanta (TQ). The total TQ in a bit is SYNC + TSEG1 + TSEG2 with SYNC
|
||||
* always being 1. The sample point is (SYNC + TSEG1) / (SYNC + TSEG1 + SEG2) *
|
||||
* 100%. This array contains possible and valid time quanta configurations with
|
||||
* a sample point between 68..78%.
|
||||
*/
|
||||
static const tCanBusTiming canTiming[] =
|
||||
{ /* TQ | TSEG1 | TSEG2 | SP */
|
||||
/* ------------------------- */
|
||||
{ 5, 2 }, /* 8 | 5 | 2 | 75% */
|
||||
{ 6, 2 }, /* 9 | 6 | 2 | 78% */
|
||||
{ 6, 3 }, /* 10 | 6 | 3 | 70% */
|
||||
{ 7, 3 }, /* 11 | 7 | 3 | 73% */
|
||||
{ 8, 3 }, /* 12 | 8 | 3 | 75% */
|
||||
{ 9, 3 }, /* 13 | 9 | 3 | 77% */
|
||||
{ 9, 4 }, /* 14 | 9 | 4 | 71% */
|
||||
{ 10, 4 }, /* 15 | 10 | 4 | 73% */
|
||||
{ 11, 4 }, /* 16 | 11 | 4 | 75% */
|
||||
{ 12, 4 }, /* 17 | 12 | 4 | 76% */
|
||||
{ 12, 5 }, /* 18 | 12 | 5 | 72% */
|
||||
{ 13, 5 }, /* 19 | 13 | 5 | 74% */
|
||||
{ 14, 5 }, /* 20 | 14 | 5 | 75% */
|
||||
{ 15, 5 }, /* 21 | 15 | 5 | 76% */
|
||||
{ 15, 6 }, /* 22 | 15 | 6 | 73% */
|
||||
{ 16, 6 }, /* 23 | 16 | 6 | 74% */
|
||||
{ 16, 7 }, /* 24 | 16 | 7 | 71% */
|
||||
{ 16, 8 } /* 25 | 16 | 8 | 68% */
|
||||
};
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Search algorithm to match the desired baudrate to a possible bus
|
||||
** timing configuration.
|
||||
** \param baud The desired baudrate in kbps. Valid values are 10..1000.
|
||||
** \param btr Pointer to where the value for register CANxBTR will be stored.
|
||||
** \return 1 if the CAN bustiming register values were found, 0 otherwise.
|
||||
**
|
||||
****************************************************************************************/
|
||||
static unsigned char CanGetSpeedConfig(unsigned short baud, unsigned long *btr)
|
||||
{
|
||||
unsigned short prescaler;
|
||||
unsigned char cnt;
|
||||
|
||||
/* loop through all possible time quanta configurations to find a match */
|
||||
for (cnt=0; cnt < sizeof(canTiming)/sizeof(canTiming[0]); cnt++)
|
||||
{
|
||||
if ((BOOT_CPU_SYSTEM_SPEED_KHZ % (baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1))) == 0)
|
||||
{
|
||||
/* compute the prescaler that goes with this TQ configuration */
|
||||
prescaler = BOOT_CPU_SYSTEM_SPEED_KHZ/(baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1));
|
||||
|
||||
/* make sure the prescaler is valid */
|
||||
if ( (prescaler > 0) && (prescaler <= 1024) )
|
||||
{
|
||||
/* store the prescaler and bustiming register value */
|
||||
*btr = prescaler - 1;
|
||||
*btr |= ((canTiming[cnt].tseg2 - 1) << 20) | ((canTiming[cnt].tseg1 - 1) << 16);
|
||||
/* found a good bus timing configuration */
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* could not find a good bus timing configuration */
|
||||
return 0;
|
||||
} /*** end of CanGetSpeedConfig ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Initializes the CAN communication interface.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
static void BootComCanInit(void)
|
||||
{
|
||||
unsigned long btr_reg_value;
|
||||
|
||||
/* configure acceptance filter for bypass mode so it receives all messages */
|
||||
CANAFMR = 0x00000002L;
|
||||
/* take CAN controller offline and go into reset mode */
|
||||
CAN1MOD = 1;
|
||||
/* disable all interrupts. driver only needs to work in polling mode */
|
||||
CAN1IER = 0;
|
||||
/* reset CAN controller status */
|
||||
CAN1GSR = 0;
|
||||
/* configure the bittiming */
|
||||
if (CanGetSpeedConfig(BOOT_COM_CAN_BAUDRATE/1000, &btr_reg_value) == 1)
|
||||
{
|
||||
/* write the bittiming configuration to the register */
|
||||
CAN1BTR = btr_reg_value;
|
||||
}
|
||||
/* enter normal operating mode and synchronize to the CAN bus */
|
||||
CAN1MOD = 0;
|
||||
} /*** end of BootComCanInit ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Receives the CONNECT request from the host, which indicates that the
|
||||
** bootloader should be activated and, if so, activates it.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
static void BootComCanCheckActivationRequest(void)
|
||||
{
|
||||
unsigned char data[2];
|
||||
|
||||
/* check if a new message was received */
|
||||
if ((CAN1SR & CAN_RBS) == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
/* see if this is the message identifier that we are interested in */
|
||||
if (CAN1RID != BOOT_COM_CAN_RX_MSG_ID)
|
||||
{
|
||||
return;
|
||||
}
|
||||
/* store the message data */
|
||||
data[0] = (unsigned char)CAN1RDA;
|
||||
data[1] = (unsigned char)(CAN1RDA >> 8);
|
||||
/* release the receive buffer */
|
||||
CAN1CMR = CAN_RRB;
|
||||
/* check if this was an XCP CONNECT command */
|
||||
if ((data[0] == 0xff) && (data[1] == 0x00))
|
||||
{
|
||||
/* connection request received so start the bootloader */
|
||||
BootActivate();
|
||||
}
|
||||
} /*** end of BootComCanCheckActivationRequest ***/
|
||||
#endif /* BOOT_COM_CAN_ENABLE > 0 */
|
||||
|
||||
|
||||
/*********************************** end of boot.c *************************************/
|
|
@ -1,40 +0,0 @@
|
|||
/************************************************************************************//**
|
||||
* \file Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\boot.h
|
||||
* \brief Demo program bootloader interface header file.
|
||||
* \ingroup Prog_ARM7_LPC2000_Olimex_LPC_L2294_Crossworks
|
||||
* \internal
|
||||
*----------------------------------------------------------------------------------------
|
||||
* C O P Y R I G H T
|
||||
*----------------------------------------------------------------------------------------
|
||||
* Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved
|
||||
*
|
||||
*----------------------------------------------------------------------------------------
|
||||
* L I C E N S E
|
||||
*----------------------------------------------------------------------------------------
|
||||
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You have received a copy of the GNU General Public License along with OpenBLT. It
|
||||
* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
|
||||
*
|
||||
* \endinternal
|
||||
****************************************************************************************/
|
||||
#ifndef BOOT_H
|
||||
#define BOOT_H
|
||||
|
||||
/****************************************************************************************
|
||||
* Function prototypes
|
||||
****************************************************************************************/
|
||||
void BootComInit(void);
|
||||
void BootComCheckActivationRequest(void);
|
||||
void BootActivate(void);
|
||||
|
||||
|
||||
#endif /* BOOT_H */
|
||||
/*********************************** end of boot.h *************************************/
|
|
@ -1,415 +0,0 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2001, 2002 Rowley Associates Limited. *
|
||||
* *
|
||||
* This file may be distributed under the terms of the License Agreement *
|
||||
* provided with this software. *
|
||||
* *
|
||||
* THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE *
|
||||
* WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. *
|
||||
*****************************************************************************/
|
||||
|
||||
/*****************************************************************************
|
||||
* Preprocessor Definitions
|
||||
* ------------------------
|
||||
* APP_ENTRY_POINT
|
||||
*
|
||||
* Defines the application entry point function, if undefined this setting
|
||||
* defaults to "main".
|
||||
*
|
||||
* INITIALIZE_STACKS
|
||||
*
|
||||
* If defined, the contents of the stacks will be initialized to a the
|
||||
* value 0xCC.
|
||||
*
|
||||
* INITIALIZE_SECONDARY_SECTIONS
|
||||
*
|
||||
* If defined, the .text2, .data2 and .bss2 sections will be initialized.
|
||||
*
|
||||
* SUPERVISOR_START
|
||||
*
|
||||
* If defined, the application will start up in supervisor mode. If
|
||||
* undefined the application will start up in system mode.
|
||||
*
|
||||
* FULL_LIBRARY
|
||||
*
|
||||
* If defined then
|
||||
* - argc, argv are setup by the debug_getargs.
|
||||
* - the exit symbol is defined and executes on return from main.
|
||||
* - the exit symbol calls destructors, atexit functions and then debug_exit.
|
||||
*
|
||||
* If not defined then
|
||||
* - argc and argv are zero.
|
||||
* - the exit symbol is defined, executes on return from main and loops
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
.section .vectors, "ax"
|
||||
.code 32
|
||||
.align 0
|
||||
.global _vectors
|
||||
.global reset_handler
|
||||
|
||||
/*****************************************************************************
|
||||
* Exception Vectors *
|
||||
*****************************************************************************/
|
||||
_vectors:
|
||||
ldr pc, [pc, #reset_handler_address - . - 8] /* reset */
|
||||
ldr pc, [pc, #undef_handler_address - . - 8] /* undefined instruction */
|
||||
ldr pc, [pc, #swi_handler_address - . - 8] /* swi handler */
|
||||
ldr pc, [pc, #pabort_handler_address - . - 8] /* abort prefetch */
|
||||
ldr pc, [pc, #dabort_handler_address - . - 8] /* abort data */
|
||||
.word 0xB9205F88 /* boot loader checksum */
|
||||
ldr pc, [pc, #-0xFF0] /* irq handler */
|
||||
ldr pc, [pc, #fiq_handler_address - . - 8] /* fiq handler */
|
||||
|
||||
reset_handler_address:
|
||||
.word _start
|
||||
undef_handler_address:
|
||||
.word undef_handler
|
||||
swi_handler_address:
|
||||
.word swi_handler
|
||||
pabort_handler_address:
|
||||
.word pabort_handler
|
||||
dabort_handler_address:
|
||||
.word dabort_handler
|
||||
fiq_handler_address:
|
||||
.word fiq_handler
|
||||
|
||||
.section .init, "ax"
|
||||
.code 32
|
||||
.align 0
|
||||
|
||||
/******************************************************************************
|
||||
* *
|
||||
* Default exception handlers *
|
||||
* *
|
||||
******************************************************************************/
|
||||
/******************************************************************************
|
||||
* *
|
||||
* Default exception handlers *
|
||||
* These are declared weak symbols so they can be redefined in user code. *
|
||||
* *
|
||||
******************************************************************************/
|
||||
undef_handler:
|
||||
b undef_handler
|
||||
|
||||
swi_handler:
|
||||
b swi_handler
|
||||
|
||||
pabort_handler:
|
||||
b pabort_handler
|
||||
|
||||
dabort_handler:
|
||||
b dabort_handler
|
||||
|
||||
fiq_handler:
|
||||
b fiq_handler
|
||||
|
||||
irq_handler:
|
||||
b irq_handler
|
||||
|
||||
.weak undef_handler, swi_handler, pabort_handler, dabort_handler, fiq_handler, irq_handler
|
||||
|
||||
.section .init, "ax"
|
||||
.code 32
|
||||
.align 4
|
||||
|
||||
#ifndef APP_ENTRY_POINT
|
||||
#define APP_ENTRY_POINT main
|
||||
#endif
|
||||
|
||||
#ifndef ARGSSPACE
|
||||
#define ARGSSPACE 128
|
||||
#endif
|
||||
|
||||
.weak _start
|
||||
.global __start
|
||||
.global __gccmain
|
||||
.extern APP_ENTRY_POINT
|
||||
.global exit
|
||||
|
||||
/*****************************************************************************
|
||||
* Function : _start *
|
||||
* Description : Main entry point and startup code for C system. *
|
||||
*****************************************************************************/
|
||||
_start:
|
||||
__start:
|
||||
mrs r0, cpsr
|
||||
bic r0, r0, #0x1F
|
||||
|
||||
/* Setup stacks */
|
||||
orr r1, r0, #0x1B /* Undefined mode */
|
||||
msr cpsr_cxsf, r1
|
||||
ldr sp, =__stack_und_end__
|
||||
#ifdef __ARM_EABI__
|
||||
bic sp, sp, #0x7
|
||||
#endif
|
||||
|
||||
orr r1, r0, #0x17 /* Abort mode */
|
||||
msr cpsr_cxsf, r1
|
||||
ldr sp, =__stack_abt_end__
|
||||
#ifdef __ARM_EABI__
|
||||
bic sp, sp, #0x7
|
||||
#endif
|
||||
|
||||
orr r1, r0, #0x12 /* IRQ mode */
|
||||
msr cpsr_cxsf, r1
|
||||
ldr sp, =__stack_irq_end__
|
||||
#ifdef __ARM_EABI__
|
||||
bic sp, sp, #0x7
|
||||
#endif
|
||||
|
||||
orr r1, r0, #0x11 /* FIQ mode */
|
||||
msr cpsr_cxsf, r1
|
||||
ldr sp, =__stack_fiq_end__
|
||||
#ifdef __ARM_EABI__
|
||||
bic sp, sp, #0x7
|
||||
#endif
|
||||
|
||||
orr r1, r0, #0x13 /* Supervisor mode */
|
||||
msr cpsr_cxsf, r1
|
||||
ldr sp, =__stack_svc_end__
|
||||
#ifdef __ARM_EABI__
|
||||
bic sp, sp, #0x7
|
||||
#endif
|
||||
|
||||
#ifdef SUPERVISOR_START
|
||||
/* Start application in supervisor mode */
|
||||
ldr r1, =__stack_end__ /* Setup user/system mode stack */
|
||||
#ifdef __ARM_EABI__
|
||||
bic r1, r1, #0x7
|
||||
#endif
|
||||
mov r2, sp
|
||||
stmfd r2!, {r1}
|
||||
ldmfd r2, {sp}^
|
||||
#else
|
||||
/* Start application in system mode */
|
||||
orr r1, r0, #0x1F /* System mode */
|
||||
msr cpsr_cxsf, r1
|
||||
ldr sp, =__stack_end__
|
||||
#ifdef __ARM_EABI__
|
||||
bic sp, sp, #0x7
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef INITIALIZE_STACKS
|
||||
mov r2, #0xCC
|
||||
ldr r0, =__stack_und_start__
|
||||
ldr r1, =__stack_und_end__
|
||||
bl memory_set
|
||||
ldr r0, =__stack_abt_start__
|
||||
ldr r1, =__stack_abt_end__
|
||||
bl memory_set
|
||||
ldr r0, =__stack_irq_start__
|
||||
ldr r1, =__stack_irq_end__
|
||||
bl memory_set
|
||||
ldr r0, =__stack_fiq_start__
|
||||
ldr r1, =__stack_fiq_end__
|
||||
bl memory_set
|
||||
ldr r0, =__stack_svc_start__
|
||||
ldr r1, =__stack_svc_end__
|
||||
bl memory_set
|
||||
ldr r0, =__stack_start__
|
||||
ldr r1, =__stack_end__
|
||||
bl memory_set
|
||||
#endif
|
||||
|
||||
/* Copy initialised memory sections into RAM (if necessary). */
|
||||
ldr r0, =__data_load_start__
|
||||
ldr r1, =__data_start__
|
||||
ldr r2, =__data_end__
|
||||
bl memory_copy
|
||||
ldr r0, =__text_load_start__
|
||||
ldr r1, =__text_start__
|
||||
ldr r2, =__text_end__
|
||||
bl memory_copy
|
||||
ldr r0, =__fast_load_start__
|
||||
ldr r1, =__fast_start__
|
||||
ldr r2, =__fast_end__
|
||||
bl memory_copy
|
||||
ldr r0, =__ctors_load_start__
|
||||
ldr r1, =__ctors_start__
|
||||
ldr r2, =__ctors_end__
|
||||
bl memory_copy
|
||||
ldr r0, =__dtors_load_start__
|
||||
ldr r1, =__dtors_start__
|
||||
ldr r2, =__dtors_end__
|
||||
bl memory_copy
|
||||
ldr r0, =__rodata_load_start__
|
||||
ldr r1, =__rodata_start__
|
||||
ldr r2, =__rodata_end__
|
||||
bl memory_copy
|
||||
#ifdef INITIALIZE_SECONDARY_SECTIONS
|
||||
ldr r0, =__data2_load_start__
|
||||
ldr r1, =__data2_start__
|
||||
ldr r2, =__data2_end__
|
||||
bl memory_copy
|
||||
ldr r0, =__text2_load_start__
|
||||
ldr r1, =__text2_start__
|
||||
ldr r2, =__text2_end__
|
||||
bl memory_copy
|
||||
ldr r0, =__rodata2_load_start__
|
||||
ldr r1, =__rodata2_start__
|
||||
ldr r2, =__rodata2_end__
|
||||
bl memory_copy
|
||||
#endif /* #ifdef INITIALIZE_SECONDARY_SECTIONS */
|
||||
|
||||
/* Zero the bss. */
|
||||
ldr r0, =__bss_start__
|
||||
ldr r1, =__bss_end__
|
||||
mov r2, #0
|
||||
bl memory_set
|
||||
#ifdef INITIALIZE_SECONDARY_SECTIONS
|
||||
ldr r0, =__bss2_start__
|
||||
ldr r1, =__bss2_end__
|
||||
mov r2, #0
|
||||
bl memory_set
|
||||
#endif /* #ifdef INITIALIZE_SECONDARY_SECTIONS */
|
||||
|
||||
/* Initialise the heap */
|
||||
ldr r0, = __heap_start__
|
||||
ldr r1, = __heap_end__
|
||||
sub r1, r1, r0
|
||||
cmp r1, #8
|
||||
movge r2, #0
|
||||
strge r2, [r0], #+4
|
||||
strge r1, [r0]
|
||||
|
||||
/* Call constructors */
|
||||
ldr r0, =__ctors_start__
|
||||
ldr r1, =__ctors_end__
|
||||
ctor_loop:
|
||||
cmp r0, r1
|
||||
beq ctor_end
|
||||
ldr r2, [r0], #+4
|
||||
stmfd sp!, {r0-r1}
|
||||
mov lr, pc
|
||||
#ifdef __ARM_ARCH_3__
|
||||
mov pc, r2
|
||||
#else
|
||||
bx r2
|
||||
#endif
|
||||
ldmfd sp!, {r0-r1}
|
||||
b ctor_loop
|
||||
ctor_end:
|
||||
|
||||
.type start, function
|
||||
start:
|
||||
/* Jump to application entry point */
|
||||
#ifdef FULL_LIBRARY
|
||||
mov r0, #ARGSSPACE
|
||||
ldr r1, =args
|
||||
ldr r2, =debug_getargs
|
||||
mov lr, pc
|
||||
#ifdef __ARM_ARCH_3__
|
||||
mov pc, r2
|
||||
#else
|
||||
bx r2
|
||||
#endif
|
||||
ldr r1, =args
|
||||
#else
|
||||
mov r0, #0
|
||||
mov r1, #0
|
||||
#endif
|
||||
ldr r2, =APP_ENTRY_POINT
|
||||
mov lr, pc
|
||||
#ifdef __ARM_ARCH_3__
|
||||
mov pc, r2
|
||||
#else
|
||||
bx r2
|
||||
#endif
|
||||
|
||||
exit:
|
||||
#ifdef FULL_LIBRARY
|
||||
mov r5, r0 // save the exit parameter/return result
|
||||
|
||||
/* Call destructors */
|
||||
ldr r0, =__dtors_start__
|
||||
ldr r1, =__dtors_end__
|
||||
dtor_loop:
|
||||
cmp r0, r1
|
||||
beq dtor_end
|
||||
ldr r2, [r0], #+4
|
||||
stmfd sp!, {r0-r1}
|
||||
mov lr, pc
|
||||
#ifdef __ARM_ARCH_3__
|
||||
mov pc, r2
|
||||
#else
|
||||
bx r2
|
||||
#endif
|
||||
ldmfd sp!, {r0-r1}
|
||||
b dtor_loop
|
||||
dtor_end:
|
||||
|
||||
/* Call atexit functions */
|
||||
ldr r2, =_execute_at_exit_fns
|
||||
mov lr, pc
|
||||
#ifdef __ARM_ARCH_3__
|
||||
mov pc, r2
|
||||
#else
|
||||
bx r2
|
||||
#endif
|
||||
|
||||
/* Call debug_exit with return result/exit parameter */
|
||||
mov r0, r5
|
||||
ldr r2, =debug_exit
|
||||
mov lr, pc
|
||||
#ifdef __ARM_ARCH_3__
|
||||
mov pc, r2
|
||||
#else
|
||||
bx r2
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/* Returned from application entry point/debug_exit, loop forever. */
|
||||
exit_loop:
|
||||
b exit_loop
|
||||
|
||||
memory_copy:
|
||||
cmp r0, r1
|
||||
moveq pc, lr
|
||||
subs r2, r2, r1
|
||||
moveq pc, lr
|
||||
|
||||
/* if either pointer or length is not word aligned then byte copy */
|
||||
orr r3, r0, r1
|
||||
orr r3, r3, r2
|
||||
tst r3, #0x3
|
||||
bne 2f
|
||||
/* word copy */
|
||||
1:
|
||||
ldr r3, [r0], #+4
|
||||
str r3, [r1], #+4
|
||||
subs r2, r2, #4
|
||||
bne 1b
|
||||
mov pc, lr
|
||||
/* byte copy */
|
||||
2:
|
||||
ldrb r3, [r0], #+1
|
||||
strb r3, [r1], #+1
|
||||
subs r2, r2, #1
|
||||
bne 2b
|
||||
mov pc, lr
|
||||
|
||||
memory_set:
|
||||
cmp r0, r1
|
||||
moveq pc, lr
|
||||
strb r2, [r0], #1
|
||||
b memory_set
|
||||
|
||||
#ifdef FULL_LIBRARY
|
||||
.bss
|
||||
args:
|
||||
.space ARGSSPACE
|
||||
#endif
|
||||
|
||||
/* Setup attibutes of stack and heap sections so they don't take up unnecessary room in the elf file */
|
||||
.section .stack, "wa", %nobits
|
||||
.section .stack_abt, "wa", %nobits
|
||||
.section .stack_irq, "wa", %nobits
|
||||
.section .stack_fiq, "wa", %nobits
|
||||
.section .stack_svc, "wa", %nobits
|
||||
.section .stack_und, "wa", %nobits
|
||||
.section .heap, "wa", %nobits
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
/************************************************************************************//**
|
||||
* \file Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\header.h
|
||||
* \brief Generic header file.
|
||||
* \ingroup Prog_ARM7_LPC2000_Olimex_LPC_L2294_Crossworks
|
||||
* \internal
|
||||
*----------------------------------------------------------------------------------------
|
||||
* C O P Y R I G H T
|
||||
*----------------------------------------------------------------------------------------
|
||||
* Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved
|
||||
*
|
||||
*----------------------------------------------------------------------------------------
|
||||
* L I C E N S E
|
||||
*----------------------------------------------------------------------------------------
|
||||
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You have received a copy of the GNU General Public License along with OpenBLT. It
|
||||
* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
|
||||
*
|
||||
* \endinternal
|
||||
****************************************************************************************/
|
||||
#ifndef HEADER_H
|
||||
#define HEADER_H
|
||||
|
||||
/****************************************************************************************
|
||||
* Include files
|
||||
****************************************************************************************/
|
||||
#include "../Boot/blt_conf.h" /* bootloader configuration */
|
||||
#include "lpc2294.h" /* CPU register definitions */
|
||||
#include "boot.h" /* bootloader interface driver */
|
||||
#include "irq.h" /* IRQ driver */
|
||||
#include "led.h" /* LED driver */
|
||||
#include "timer.h" /* Timer driver */
|
||||
|
||||
|
||||
#endif /* HEADER_H */
|
||||
/*********************************** end of header.h ***********************************/
|
|
@ -1,40 +0,0 @@
|
|||
<!DOCTYPE CrossStudio_Project_File>
|
||||
<solution Name="lpc2294_crossworks" target="8" version="2">
|
||||
<project Name="demoprog_olimex_lpc_l2294_20mhz">
|
||||
<configuration Name="Common" arm_long_calls="Yes" arm_simulator_memory_simulation_filename="$(PackagesDir)/targets/Philips_LPC210X/LPC2000SimulatorMemory.dll" arm_simulator_memory_simulation_parameter="LPC22;0x20000;0x4000;0x400000;0x100000;0x0;0x0" arm_target_loader_parameter="20000000" build_intermediate_directory="$(Configuration)/../../obj" build_output_directory="$(ProjectDir)/../bin" c_preprocessor_definitions="__TARGET_PROCESSOR=LPC2294;OSCILLATOR_CLOCK_FREQUENCY=20000000" c_user_include_directories="$(ProjectDir)/..;$(ProjectDir)/../../../../Source;$(ProjectDir)/../../../../Source/ARM7_LPC2000;$(ProjectDir)/../../../../Source/ARM7_LPC2000/Crossworks" gcc_entry_point="_start" gcc_optimization_level="None" link_include_standard_libraries="Yes" link_include_startup_code="No" linker_DebugIO_enabled="Yes" linker_additional_files="$(PackagesDir)/lib/liblpc2000$(LibExt)$(LIB)" linker_additional_options="" linker_keep_symbols="_vectors;EntryFromProg;ExtFlashTestData" linker_output_format="srec" project_directory="" project_type="Executable"/>
|
||||
<configuration Name="RAM" target_reset_script="RAMReset()"/>
|
||||
<configuration Name="Flash" arm_target_flash_loader_file_path="$(PackagesDir)/targets/Olimex_LPC_E2294/Release/Loader_rpc.elf" arm_target_flash_loader_type="LIBMEM RPC Loader" target_reset_script="FLASHReset()"/>
|
||||
<folder Name="Source Files">
|
||||
<configuration Name="Common" filter="c;cpp;cxx;cc;h;s;asm;inc"/>
|
||||
<folder Name="Demo">
|
||||
<folder Name="Prog">
|
||||
<file file_name="../boot.c"/>
|
||||
<file file_name="../boot.h"/>
|
||||
<file file_name="../cstart.s"/>
|
||||
<file file_name="../header.h"/>
|
||||
<file file_name="../irq.c"/>
|
||||
<file file_name="../irq.h"/>
|
||||
<file file_name="../led.c"/>
|
||||
<file file_name="../led.h"/>
|
||||
<file file_name="../lpc2294.h"/>
|
||||
<file file_name="../main.c"/>
|
||||
<file file_name="../timer.c"/>
|
||||
<file file_name="../timer.h"/>
|
||||
<file file_name="../vectors.c"/>
|
||||
</folder>
|
||||
</folder>
|
||||
</folder>
|
||||
<folder Name="System Files">
|
||||
<file file_name="$(PackagesDir)/targets/Olimex_LPC_E2294/LPC_E2294_Target.js">
|
||||
<configuration Name="Common" file_type="Reset Script"/>
|
||||
</file>
|
||||
<file file_name="../memory.x">
|
||||
<configuration Name="Common" file_type="Linker Script"/>
|
||||
</file>
|
||||
</folder>
|
||||
</project>
|
||||
<configuration Name="ARM Flash Debug" inherited_configurations="ARM;Flash;Debug"/>
|
||||
<configuration Name="ARM" Platform="ARM" arm_instruction_set="ARM" arm_library_instruction_set="ARM" c_preprocessor_definitions="__ARM" hidden="Yes"/>
|
||||
<configuration Name="Flash" c_preprocessor_definitions="__FLASH_BUILD" hidden="Yes"/>
|
||||
<configuration Name="Debug" build_debug_information="Yes" c_preprocessor_definitions="DEBUG" gcc_optimization_level="None" hidden="Yes" link_include_startup_code="No"/>
|
||||
</solution>
|
|
@ -1,60 +0,0 @@
|
|||
<!DOCTYPE CrossStudio_for_ARM_Session_File>
|
||||
<session>
|
||||
<Bookmarks/>
|
||||
<Breakpoints/>
|
||||
<ExecutionProfileWindow/>
|
||||
<Memory1>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
</Memory1>
|
||||
<Memory2>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
</Memory2>
|
||||
<Memory3>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
</Memory3>
|
||||
<Memory4>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
</Memory4>
|
||||
<Project>
|
||||
<ProjectSessionItem path="lpc2294_crossworks" name="unnamed" />
|
||||
<ProjectSessionItem path="lpc2294_crossworks;demoprog_olimex_lpc_l2294_20mhz" name="unnamed" />
|
||||
<ProjectSessionItem path="lpc2294_crossworks;demoprog_olimex_lpc_l2294_20mhz;Source Files" name="unnamed" />
|
||||
<ProjectSessionItem path="lpc2294_crossworks;demoprog_olimex_lpc_l2294_20mhz;Source Files;Demo" name="unnamed" />
|
||||
<ProjectSessionItem path="lpc2294_crossworks;demoprog_olimex_lpc_l2294_20mhz;Source Files;Demo;Prog" name="unnamed" />
|
||||
</Project>
|
||||
<Register1>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="" />
|
||||
</Register1>
|
||||
<Register2>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="" />
|
||||
</Register2>
|
||||
<Register3>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="" />
|
||||
</Register3>
|
||||
<Register4>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="" />
|
||||
</Register4>
|
||||
<TargetWindow programAction="" uploadFileType="" programLoadAddress="" programSize="" uploadFileName="" uploadMemoryInterface="" programFileName="" uploadStartAddress="" programFileType="" uploadSize="" programMemoryInterface="" />
|
||||
<TraceWindow>
|
||||
<Trace enabled="Yes" />
|
||||
</TraceWindow>
|
||||
<Watch1>
|
||||
<Watches active="1" update="Never" />
|
||||
</Watch1>
|
||||
<Watch2>
|
||||
<Watches active="0" update="Never" />
|
||||
</Watch2>
|
||||
<Watch3>
|
||||
<Watches active="0" update="Never" />
|
||||
</Watch3>
|
||||
<Watch4>
|
||||
<Watches active="0" update="Never" />
|
||||
</Watch4>
|
||||
<Files>
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="C:\Work\software\OpenBLT\Target\Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\main.c" y="45" path="C:\Work\software\OpenBLT\Target\Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\main.c" left="0" selected="0" name="unnamed" top="45" />
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="C:\Work\software\OpenBLT\Target\Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\boot.c" y="85" path="C:\Work\software\OpenBLT\Target\Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\boot.c" left="0" selected="0" name="unnamed" top="85" />
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="C:\Work\software\OpenBLT\Target\Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\boot.h" y="40" path="C:\Work\software\OpenBLT\Target\Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\boot.h" left="0" selected="0" name="unnamed" top="0" />
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="C:\Work\software\OpenBLT\Target\Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\header.h" y="0" path="C:\Work\software\OpenBLT\Target\Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\header.h" left="0" selected="1" name="unnamed" top="0" />
|
||||
</Files>
|
||||
<ARMCrossStudioWindow activeProject="demoprog_olimex_lpc_l2294_20mhz" autoConnectTarget="Olimex ARM-USB-TINY" debugSearchFileMap="" fileDialogInitialDirectory="D:\usr\feaser\software\OpenBLT\Target\Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog" fileDialogDefaultFilter="*.c" autoConnectCapabilities="388479" debugSearchPath="" buildConfiguration="ARM Flash Debug" />
|
||||
</session>
|
|
@ -1,4 +0,0 @@
|
|||
Integrated Development Environment
|
||||
----------------------------------
|
||||
Rowleys CrossWorks (version 2.3.1) was used as the editor during the development of this software program. This directory contains
|
||||
the CrossWorks project and solution files. More info is available at: http://www.rowley.co.uk/
|
|
@ -1,130 +0,0 @@
|
|||
/************************************************************************************//**
|
||||
* \file Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\irq.c
|
||||
* \brief IRQ driver source file.
|
||||
* \ingroup Prog_ARM7_LPC2000_Olimex_LPC_L2294_Crossworks
|
||||
* \internal
|
||||
*----------------------------------------------------------------------------------------
|
||||
* C O P Y R I G H T
|
||||
*----------------------------------------------------------------------------------------
|
||||
* Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved
|
||||
*
|
||||
*----------------------------------------------------------------------------------------
|
||||
* L I C E N S E
|
||||
*----------------------------------------------------------------------------------------
|
||||
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You have received a copy of the GNU General Public License along with OpenBLT. It
|
||||
* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
|
||||
*
|
||||
* \endinternal
|
||||
****************************************************************************************/
|
||||
|
||||
/****************************************************************************************
|
||||
* Include files
|
||||
****************************************************************************************/
|
||||
#include "header.h" /* generic header */
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Local data definitions
|
||||
****************************************************************************************/
|
||||
/** \brief Interrupt status before disabling. Used for global interrupt en/disable. */
|
||||
static unsigned long oldInterruptStatus;
|
||||
/** \brief Interrupt nesting counter. Used for global interrupt en/disable. */
|
||||
static unsigned char interruptNesting = 0;
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Obtains current value of CPSR CPU register. Derived from a sample by R O
|
||||
** Software that is Copyright 2004, R O SoftWare, and can be used for hobby
|
||||
** or commercial purposes.
|
||||
** \return CPSR value.
|
||||
**
|
||||
****************************************************************************************/
|
||||
static unsigned long IrqGetCPSR(void)
|
||||
{
|
||||
unsigned long retval;
|
||||
__asm__ volatile (" mrs %0, cpsr" : "=r" (retval) : /* no inputs */ );
|
||||
return retval;
|
||||
} /*** end of IrqGetCPSR ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Update value of CPSR CPU register. Derived from a sample by R O
|
||||
** Software that is Copyright 2004, R O SoftWare, and can be used for hobby
|
||||
** or commercial purposes.
|
||||
** \param val CPSR value.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
static void IrqSetCPSR(unsigned long val)
|
||||
{
|
||||
__asm__ volatile (" msr cpsr, %0" : /* no outputs */ : "r" (val) );
|
||||
} /*** end of IrqSetCPSR ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Enables the generation IRQ interrupts. Typically called once during
|
||||
** software startup after completion of the initialization.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
void IrqInterruptEnable(void)
|
||||
{
|
||||
unsigned _cpsr;
|
||||
|
||||
_cpsr = IrqGetCPSR();
|
||||
IrqSetCPSR(_cpsr & ~0x00000080);
|
||||
} /*** end of IrqInterruptEnable ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Disables the generation IRQ interrupts and stores information on
|
||||
** whether or not the interrupts were already disabled before explicitly
|
||||
** disabling them with this function. Normally used as a pair together
|
||||
** with IrqInterruptRestore during a critical section.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
void IrqInterruptDisable(void)
|
||||
{
|
||||
unsigned long _cpsr;
|
||||
|
||||
if (interruptNesting == 0)
|
||||
{
|
||||
_cpsr = IrqGetCPSR();
|
||||
IrqSetCPSR(_cpsr | 0x00000080);
|
||||
oldInterruptStatus = _cpsr;
|
||||
}
|
||||
interruptNesting++;
|
||||
} /*** end of IrqInterruptDisable ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Restore the generation IRQ interrupts to the setting it had prior to
|
||||
** calling IrqInterruptDisable. Normally used as a pair together with
|
||||
** IrqInterruptDisable during a critical section.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
void IrqInterruptRestore(void)
|
||||
{
|
||||
unsigned _cpsr;
|
||||
|
||||
interruptNesting--;
|
||||
if (interruptNesting == 0)
|
||||
{
|
||||
_cpsr = IrqGetCPSR();
|
||||
IrqSetCPSR((_cpsr & ~0x00000080) | (oldInterruptStatus & 0x00000080));
|
||||
}
|
||||
} /*** end of IrqInterruptRestore ***/
|
||||
|
||||
|
||||
/*********************************** end of irq.c **************************************/
|
|
@ -1,40 +0,0 @@
|
|||
/************************************************************************************//**
|
||||
* \file Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\irq.h
|
||||
* \brief IRQ driver header file.
|
||||
* \ingroup Prog_ARM7_LPC2000_Olimex_LPC_L2294_Crossworks
|
||||
* \internal
|
||||
*----------------------------------------------------------------------------------------
|
||||
* C O P Y R I G H T
|
||||
*----------------------------------------------------------------------------------------
|
||||
* Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved
|
||||
*
|
||||
*----------------------------------------------------------------------------------------
|
||||
* L I C E N S E
|
||||
*----------------------------------------------------------------------------------------
|
||||
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You have received a copy of the GNU General Public License along with OpenBLT. It
|
||||
* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
|
||||
*
|
||||
* \endinternal
|
||||
****************************************************************************************/
|
||||
#ifndef IRQ_H
|
||||
#define IRQ_H
|
||||
|
||||
/****************************************************************************************
|
||||
* Function prototypes
|
||||
****************************************************************************************/
|
||||
void IrqInterruptEnable(void);
|
||||
void IrqInterruptDisable(void);
|
||||
void IrqInterruptRestore(void);
|
||||
|
||||
|
||||
#endif /* IRQ_H */
|
||||
/*********************************** end of irq.h **************************************/
|
|
@ -1,94 +0,0 @@
|
|||
/************************************************************************************//**
|
||||
* \file Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\led.c
|
||||
* \brief LED driver source file.
|
||||
* \ingroup Prog_ARM7_LPC2000_Olimex_LPC_L2294_Crossworks
|
||||
* \internal
|
||||
*----------------------------------------------------------------------------------------
|
||||
* C O P Y R I G H T
|
||||
*----------------------------------------------------------------------------------------
|
||||
* Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved
|
||||
*
|
||||
*----------------------------------------------------------------------------------------
|
||||
* L I C E N S E
|
||||
*----------------------------------------------------------------------------------------
|
||||
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You have received a copy of the GNU General Public License along with OpenBLT. It
|
||||
* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
|
||||
*
|
||||
* \endinternal
|
||||
****************************************************************************************/
|
||||
|
||||
/****************************************************************************************
|
||||
* Include files
|
||||
****************************************************************************************/
|
||||
#include "header.h" /* generic header */
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Macro definitions
|
||||
****************************************************************************************/
|
||||
/** \brief Toggle interval time in milliseconds. */
|
||||
#define LED_TOGGLE_MS (500)
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Initializes the LED.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
void LedInit(void)
|
||||
{
|
||||
/* set io pins for led P1.23 */
|
||||
IO1DIR |= 0x00800000;
|
||||
/* turn the led off */
|
||||
IO1SET = 0x00800000;
|
||||
} /*** end of LedInit ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Toggles the LED at a fixed time interval.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
void LedToggle(void)
|
||||
{
|
||||
static unsigned char led_toggle_state = 0;
|
||||
static unsigned long timer_counter_last = 0;
|
||||
unsigned long timer_counter_now;
|
||||
|
||||
/* check if toggle interval time passed */
|
||||
timer_counter_now = TimerGet();
|
||||
if ( (timer_counter_now - timer_counter_last) < LED_TOGGLE_MS)
|
||||
{
|
||||
/* not yet time to toggle */
|
||||
return;
|
||||
}
|
||||
|
||||
/* determine toggle action */
|
||||
if (led_toggle_state == 0)
|
||||
{
|
||||
led_toggle_state = 1;
|
||||
/* turn the LED on */
|
||||
IO1CLR = 0x00800000;
|
||||
}
|
||||
else
|
||||
{
|
||||
led_toggle_state = 0;
|
||||
/* turn the LED off */
|
||||
IO1SET = 0x00800000;
|
||||
}
|
||||
|
||||
/* store toggle time to determine next toggle interval */
|
||||
timer_counter_last = timer_counter_now;
|
||||
} /*** end of LedToggle ***/
|
||||
|
||||
|
||||
/*********************************** end of led.c **************************************/
|
|
@ -1,39 +0,0 @@
|
|||
/************************************************************************************//**
|
||||
* \file Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\led.h
|
||||
* \brief LED driver header file.
|
||||
* \ingroup Prog_ARM7_LPC2000_Olimex_LPC_L2294_Crossworks
|
||||
* \internal
|
||||
*----------------------------------------------------------------------------------------
|
||||
* C O P Y R I G H T
|
||||
*----------------------------------------------------------------------------------------
|
||||
* Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved
|
||||
*
|
||||
*----------------------------------------------------------------------------------------
|
||||
* L I C E N S E
|
||||
*----------------------------------------------------------------------------------------
|
||||
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You have received a copy of the GNU General Public License along with OpenBLT. It
|
||||
* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
|
||||
*
|
||||
* \endinternal
|
||||
****************************************************************************************/
|
||||
#ifndef LED_H
|
||||
#define LED_H
|
||||
|
||||
/****************************************************************************************
|
||||
* Function prototypes
|
||||
****************************************************************************************/
|
||||
void LedInit(void);
|
||||
void LedToggle(void);
|
||||
|
||||
|
||||
#endif /* LED_H */
|
||||
/*********************************** end of led.h **************************************/
|
|
@ -1,404 +0,0 @@
|
|||
/****************************************************************************************
|
||||
| Description: NXP LPC2294 register definitions
|
||||
| File Name: lpc2294.h
|
||||
|
|
||||
|----------------------------------------------------------------------------------------
|
||||
| C O P Y R I G H T
|
||||
|----------------------------------------------------------------------------------------
|
||||
| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved
|
||||
|
|
||||
|----------------------------------------------------------------------------------------
|
||||
| L I C E N S E
|
||||
|----------------------------------------------------------------------------------------
|
||||
| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
|
||||
| modify it under the terms of the GNU General Public License as published by the Free
|
||||
| Software Foundation, either version 3 of the License, or (at your option) any later
|
||||
| version.
|
||||
|
|
||||
| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
| PURPOSE. See the GNU General Public License for more details.
|
||||
|
|
||||
| You have received a copy of the GNU General Public License along with OpenBLT. It
|
||||
| should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
|
||||
|
|
||||
****************************************************************************************/
|
||||
#ifndef LPC2294_H
|
||||
#define LPC2294_H
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Macro definitions
|
||||
****************************************************************************************/
|
||||
/* EXTERNAL MEMORY CONTROLLER (EMC) */
|
||||
#define BCFG0 (*((volatile unsigned long *) 0xFFE00000)) /* lpc22xx only */
|
||||
#define BCFG1 (*((volatile unsigned long *) 0xFFE00004)) /* lpc22xx only */
|
||||
#define BCFG2 (*((volatile unsigned long *) 0xFFE00008)) /* lpc22xx only */
|
||||
#define BCFG3 (*((volatile unsigned long *) 0xFFE0000C)) /* lpc22xx only */
|
||||
|
||||
/* External Interrupts */
|
||||
#define EXTINT (*((volatile unsigned char *) 0xE01FC140))
|
||||
#define EXTWAKE (*((volatile unsigned char *) 0xE01FC144))
|
||||
#define EXTMODE (*((volatile unsigned char *) 0xE01FC148)) /* no in lpc210x*/
|
||||
#define EXTPOLAR (*((volatile unsigned char *) 0xE01FC14C)) /* no in lpc210x*/
|
||||
|
||||
/* SMemory mapping control. */
|
||||
#define MEMMAP (*((volatile unsigned long *) 0xE01FC040))
|
||||
|
||||
/* Phase Locked Loop (PLL) */
|
||||
#define PLLCON (*((volatile unsigned char *) 0xE01FC080))
|
||||
#define PLLCFG (*((volatile unsigned char *) 0xE01FC084))
|
||||
#define PLLSTAT (*((volatile unsigned short*) 0xE01FC088))
|
||||
#define PLLFEED (*((volatile unsigned char *) 0xE01FC08C))
|
||||
|
||||
/* Power Control */
|
||||
#define PCON (*((volatile unsigned char *) 0xE01FC0C0))
|
||||
#define PCONP (*((volatile unsigned long *) 0xE01FC0C4))
|
||||
|
||||
/* VPB Divider */
|
||||
#define VPBDIV (*((volatile unsigned char *) 0xE01FC100))
|
||||
|
||||
/* Memory Accelerator Module (MAM) */
|
||||
#define MAMCR (*((volatile unsigned char *) 0xE01FC000))
|
||||
#define MAMTIM (*((volatile unsigned char *) 0xE01FC004))
|
||||
|
||||
/* Vectored Interrupt Controller (VIC) */
|
||||
#define VICIRQStatus (*((volatile unsigned long *) 0xFFFFF000))
|
||||
#define VICFIQStatus (*((volatile unsigned long *) 0xFFFFF004))
|
||||
#define VICRawIntr (*((volatile unsigned long *) 0xFFFFF008))
|
||||
#define VICIntSelect (*((volatile unsigned long *) 0xFFFFF00C))
|
||||
#define VICIntEnable (*((volatile unsigned long *) 0xFFFFF010))
|
||||
#define VICIntEnClr (*((volatile unsigned long *) 0xFFFFF014))
|
||||
#define VICSoftInt (*((volatile unsigned long *) 0xFFFFF018))
|
||||
#define VICSoftIntClear (*((volatile unsigned long *) 0xFFFFF01C))
|
||||
#define VICProtection (*((volatile unsigned long *) 0xFFFFF020))
|
||||
#define VICVectAddr (*((volatile unsigned long *) 0xFFFFF030))
|
||||
#define VICDefVectAddr (*((volatile unsigned long *) 0xFFFFF034))
|
||||
#define VICVectAddr0 (*((volatile unsigned long *) 0xFFFFF100))
|
||||
#define VICVectAddr1 (*((volatile unsigned long *) 0xFFFFF104))
|
||||
#define VICVectAddr2 (*((volatile unsigned long *) 0xFFFFF108))
|
||||
#define VICVectAddr3 (*((volatile unsigned long *) 0xFFFFF10C))
|
||||
#define VICVectAddr4 (*((volatile unsigned long *) 0xFFFFF110))
|
||||
#define VICVectAddr5 (*((volatile unsigned long *) 0xFFFFF114))
|
||||
#define VICVectAddr6 (*((volatile unsigned long *) 0xFFFFF118))
|
||||
#define VICVectAddr7 (*((volatile unsigned long *) 0xFFFFF11C))
|
||||
#define VICVectAddr8 (*((volatile unsigned long *) 0xFFFFF120))
|
||||
#define VICVectAddr9 (*((volatile unsigned long *) 0xFFFFF124))
|
||||
#define VICVectAddr10 (*((volatile unsigned long *) 0xFFFFF128))
|
||||
#define VICVectAddr11 (*((volatile unsigned long *) 0xFFFFF12C))
|
||||
#define VICVectAddr12 (*((volatile unsigned long *) 0xFFFFF130))
|
||||
#define VICVectAddr13 (*((volatile unsigned long *) 0xFFFFF134))
|
||||
#define VICVectAddr14 (*((volatile unsigned long *) 0xFFFFF138))
|
||||
#define VICVectAddr15 (*((volatile unsigned long *) 0xFFFFF13C))
|
||||
#define VICVectCntl0 (*((volatile unsigned long *) 0xFFFFF200))
|
||||
#define VICVectCntl1 (*((volatile unsigned long *) 0xFFFFF204))
|
||||
#define VICVectCntl2 (*((volatile unsigned long *) 0xFFFFF208))
|
||||
#define VICVectCntl3 (*((volatile unsigned long *) 0xFFFFF20C))
|
||||
#define VICVectCntl4 (*((volatile unsigned long *) 0xFFFFF210))
|
||||
#define VICVectCntl5 (*((volatile unsigned long *) 0xFFFFF214))
|
||||
#define VICVectCntl6 (*((volatile unsigned long *) 0xFFFFF218))
|
||||
#define VICVectCntl7 (*((volatile unsigned long *) 0xFFFFF21C))
|
||||
#define VICVectCntl8 (*((volatile unsigned long *) 0xFFFFF220))
|
||||
#define VICVectCntl9 (*((volatile unsigned long *) 0xFFFFF224))
|
||||
#define VICVectCntl10 (*((volatile unsigned long *) 0xFFFFF228))
|
||||
#define VICVectCntl11 (*((volatile unsigned long *) 0xFFFFF22C))
|
||||
#define VICVectCntl12 (*((volatile unsigned long *) 0xFFFFF230))
|
||||
#define VICVectCntl13 (*((volatile unsigned long *) 0xFFFFF234))
|
||||
#define VICVectCntl14 (*((volatile unsigned long *) 0xFFFFF238))
|
||||
#define VICVectCntl15 (*((volatile unsigned long *) 0xFFFFF23C))
|
||||
|
||||
/* Pin Connect Block */
|
||||
#define PINSEL0 (*((volatile unsigned long *) 0xE002C000))
|
||||
#define PINSEL1 (*((volatile unsigned long *) 0xE002C004))
|
||||
#define PINSEL2 (*((volatile unsigned long *) 0xE002C014)) /* no in lpc210x*/
|
||||
|
||||
/* General Purpose Input/Output (GPIO) */
|
||||
#define IOPIN (*((volatile unsigned long *) 0xE0028000)) /* lpc210x only */
|
||||
#define IOSET (*((volatile unsigned long *) 0xE0028004)) /* lpc210x only */
|
||||
#define IODIR (*((volatile unsigned long *) 0xE0028008)) /* lpc210x only */
|
||||
#define IOCLR (*((volatile unsigned long *) 0xE002800C)) /* lpc210x only */
|
||||
|
||||
#define IO0PIN (*((volatile unsigned long *) 0xE0028000)) /* no in lpc210x*/
|
||||
#define IO0SET (*((volatile unsigned long *) 0xE0028004)) /* no in lpc210x*/
|
||||
#define IO0DIR (*((volatile unsigned long *) 0xE0028008)) /* no in lpc210x*/
|
||||
#define IO0CLR (*((volatile unsigned long *) 0xE002800C)) /* no in lpc210x*/
|
||||
|
||||
#define IO1PIN (*((volatile unsigned long *) 0xE0028010)) /* no in lpc210x*/
|
||||
#define IO1SET (*((volatile unsigned long *) 0xE0028014)) /* no in lpc210x*/
|
||||
#define IO1DIR (*((volatile unsigned long *) 0xE0028018)) /* no in lpc210x*/
|
||||
#define IO1CLR (*((volatile unsigned long *) 0xE002801C)) /* no in lpc210x*/
|
||||
|
||||
#define IO2PIN (*((volatile unsigned long *) 0xE0028020)) /* lpc22xx only */
|
||||
#define IO2SET (*((volatile unsigned long *) 0xE0028024)) /* lpc22xx only */
|
||||
#define IO2DIR (*((volatile unsigned long *) 0xE0028028)) /* lpc22xx only */
|
||||
#define IO2CLR (*((volatile unsigned long *) 0xE002802C)) /* lpc22xx only */
|
||||
|
||||
#define IO3PIN (*((volatile unsigned long *) 0xE0028030)) /* lpc22xx only */
|
||||
#define IO3SET (*((volatile unsigned long *) 0xE0028034)) /* lpc22xx only */
|
||||
#define IO3DIR (*((volatile unsigned long *) 0xE0028038)) /* lpc22xx only */
|
||||
#define IO3CLR (*((volatile unsigned long *) 0xE002803C)) /* lpc22xx only */
|
||||
|
||||
/* Universal Asynchronous Receiver Transmitter 0 (UART0) */
|
||||
#define U0RBR (*((volatile unsigned char *) 0xE000C000))
|
||||
#define U0THR (*((volatile unsigned char *) 0xE000C000))
|
||||
#define U0IER (*((volatile unsigned char *) 0xE000C004))
|
||||
#define U0IIR (*((volatile unsigned char *) 0xE000C008))
|
||||
#define U0FCR (*((volatile unsigned char *) 0xE000C008))
|
||||
#define U0LCR (*((volatile unsigned char *) 0xE000C00C))
|
||||
#define U0LSR (*((volatile unsigned char *) 0xE000C014))
|
||||
#define U0SCR (*((volatile unsigned char *) 0xE000C01C))
|
||||
#define U0DLL (*((volatile unsigned char *) 0xE000C000))
|
||||
#define U0DLM (*((volatile unsigned char *) 0xE000C004))
|
||||
|
||||
/* Universal Asynchronous Receiver Transmitter 1 (UART1) */
|
||||
#define U1RBR (*((volatile unsigned char *) 0xE0010000))
|
||||
#define U1THR (*((volatile unsigned char *) 0xE0010000))
|
||||
#define U1IER (*((volatile unsigned char *) 0xE0010004))
|
||||
#define U1IIR (*((volatile unsigned char *) 0xE0010008))
|
||||
#define U1FCR (*((volatile unsigned char *) 0xE0010008))
|
||||
#define U1LCR (*((volatile unsigned char *) 0xE001000C))
|
||||
#define U1MCR (*((volatile unsigned char *) 0xE0010010))
|
||||
#define U1LSR (*((volatile unsigned char *) 0xE0010014))
|
||||
#define U1MSR (*((volatile unsigned char *) 0xE0010018))
|
||||
#define U1SCR (*((volatile unsigned char *) 0xE001001C))
|
||||
#define U1DLL (*((volatile unsigned char *) 0xE0010000))
|
||||
#define U1DLM (*((volatile unsigned char *) 0xE0010004))
|
||||
|
||||
/* I2C (8/16 bit data bus) */
|
||||
#define I2CONSET (*((volatile unsigned long *) 0xE001C000))
|
||||
#define I2STAT (*((volatile unsigned long *) 0xE001C004))
|
||||
#define I2DAT (*((volatile unsigned long *) 0xE001C008))
|
||||
#define I2ADR (*((volatile unsigned long *) 0xE001C00C))
|
||||
#define I2SCLH (*((volatile unsigned long *) 0xE001C010))
|
||||
#define I2SCLL (*((volatile unsigned long *) 0xE001C014))
|
||||
#define I2CONCLR (*((volatile unsigned long *) 0xE001C018))
|
||||
|
||||
/* SPI (Serial Peripheral Interface) */
|
||||
/* only for lpc210x*/
|
||||
#define SPI_SPCR (*((volatile unsigned char *) 0xE0020000))
|
||||
#define SPI_SPSR (*((volatile unsigned char *) 0xE0020004))
|
||||
#define SPI_SPDR (*((volatile unsigned char *) 0xE0020008))
|
||||
#define SPI_SPCCR (*((volatile unsigned char *) 0xE002000C))
|
||||
#define SPI_SPINT (*((volatile unsigned char *) 0xE002001C))
|
||||
|
||||
#define S0PCR (*((volatile unsigned char *) 0xE0020000)) /* no in lpc210x*/
|
||||
#define S0PSR (*((volatile unsigned char *) 0xE0020004)) /* no in lpc210x*/
|
||||
#define S0PDR (*((volatile unsigned char *) 0xE0020008)) /* no in lpc210x*/
|
||||
#define S0PCCR (*((volatile unsigned char *) 0xE002000C)) /* no in lpc210x*/
|
||||
#define S0PINT (*((volatile unsigned char *) 0xE002001C)) /* no in lpc210x*/
|
||||
|
||||
#define S1PCR (*((volatile unsigned char *) 0xE0030000)) /* no in lpc210x*/
|
||||
#define S1PSR (*((volatile unsigned char *) 0xE0030004)) /* no in lpc210x*/
|
||||
#define S1PDR (*((volatile unsigned char *) 0xE0030008)) /* no in lpc210x*/
|
||||
#define S1PCCR (*((volatile unsigned char *) 0xE003000C)) /* no in lpc210x*/
|
||||
#define S1PINT (*((volatile unsigned char *) 0xE003001C)) /* no in lpc210x*/
|
||||
|
||||
/* CAN CONTROLLERS AND ACCEPTANCE FILTER */
|
||||
#define CAN1MOD (*((volatile unsigned long *) 0xE0044000)) /* All CAN Parts */
|
||||
#define CAN1CMR (*((volatile unsigned long *) 0xE0044004)) /* All CAN Parts */
|
||||
#define CAN1GSR (*((volatile unsigned long *) 0xE0044008)) /* All CAN Parts */
|
||||
#define CAN1ICR (*((volatile unsigned long *) 0xE004400C)) /* All CAN Parts */
|
||||
#define CAN1IER (*((volatile unsigned long *) 0xE0044010)) /* All CAN Parts */
|
||||
#define CAN1BTR (*((volatile unsigned long *) 0xE0044014)) /* All CAN Parts */
|
||||
#define CAN1EWL (*((volatile unsigned long *) 0xE0044018)) /* All CAN Parts */
|
||||
#define CAN1SR (*((volatile unsigned long *) 0xE004401C)) /* All CAN Parts */
|
||||
#define CAN1RFS (*((volatile unsigned long *) 0xE0044020)) /* All CAN Parts */
|
||||
#define CAN1RID (*((volatile unsigned long *) 0xE0044024)) /* All CAN Parts */
|
||||
#define CAN1RDA (*((volatile unsigned long *) 0xE0044028)) /* All CAN Parts */
|
||||
#define CAN1RDB (*((volatile unsigned long *) 0xE004402C)) /* All CAN Parts */
|
||||
#define CAN1TFI1 (*((volatile unsigned long *) 0xE0044030)) /* All CAN Parts */
|
||||
#define CAN1TID1 (*((volatile unsigned long *) 0xE0044034)) /* All CAN Parts */
|
||||
#define CAN1TDA1 (*((volatile unsigned long *) 0xE0044038)) /* All CAN Parts */
|
||||
#define CAN1TDB1 (*((volatile unsigned long *) 0xE004403C)) /* All CAN Parts */
|
||||
#define CAN1TFI2 (*((volatile unsigned long *) 0xE0044040)) /* All CAN Parts */
|
||||
#define CAN1TID2 (*((volatile unsigned long *) 0xE0044044)) /* All CAN Parts */
|
||||
#define CAN1TDA2 (*((volatile unsigned long *) 0xE0044048)) /* All CAN Parts */
|
||||
#define CAN1TDB2 (*((volatile unsigned long *) 0xE004404C)) /* All CAN Parts */
|
||||
#define CAN1TFI3 (*((volatile unsigned long *) 0xE0044050)) /* All CAN Parts */
|
||||
#define CAN1TID3 (*((volatile unsigned long *) 0xE0044054)) /* All CAN Parts */
|
||||
#define CAN1TDA3 (*((volatile unsigned long *) 0xE0044058)) /* All CAN Parts */
|
||||
#define CAN1TDB3 (*((volatile unsigned long *) 0xE004405C)) /* All CAN Parts */
|
||||
|
||||
#define CAN2MOD (*((volatile unsigned long *) 0xE0048000)) /* All CAN Parts */
|
||||
#define CAN2CMR (*((volatile unsigned long *) 0xE0048004)) /* All CAN Parts */
|
||||
#define CAN2GSR (*((volatile unsigned long *) 0xE0048008)) /* All CAN Parts */
|
||||
#define CAN2ICR (*((volatile unsigned long *) 0xE004800C)) /* All CAN Parts */
|
||||
#define CAN2IER (*((volatile unsigned long *) 0xE0048010)) /* All CAN Parts */
|
||||
#define CAN2BTR (*((volatile unsigned long *) 0xE0048014)) /* All CAN Parts */
|
||||
#define CAN2EWL (*((volatile unsigned long *) 0xE0048018)) /* All CAN Parts */
|
||||
#define CAN2SR (*((volatile unsigned long *) 0xE004801C)) /* All CAN Parts */
|
||||
#define CAN2RFS (*((volatile unsigned long *) 0xE0048020)) /* All CAN Parts */
|
||||
#define CAN2RID (*((volatile unsigned long *) 0xE0048024)) /* All CAN Parts */
|
||||
#define CAN2RDA (*((volatile unsigned long *) 0xE0048028)) /* All CAN Parts */
|
||||
#define CAN2RDB (*((volatile unsigned long *) 0xE004802C)) /* All CAN Parts */
|
||||
#define CAN2TFI1 (*((volatile unsigned long *) 0xE0048030)) /* All CAN Parts */
|
||||
#define CAN2TID1 (*((volatile unsigned long *) 0xE0048034)) /* All CAN Parts */
|
||||
#define CAN2TDA1 (*((volatile unsigned long *) 0xE0048038)) /* All CAN Parts */
|
||||
#define CAN2TDB1 (*((volatile unsigned long *) 0xE004803C)) /* All CAN Parts */
|
||||
#define CAN2TFI2 (*((volatile unsigned long *) 0xE0048040)) /* All CAN Parts */
|
||||
#define CAN2TID2 (*((volatile unsigned long *) 0xE0048044)) /* All CAN Parts */
|
||||
#define CAN2TDA2 (*((volatile unsigned long *) 0xE0048048)) /* All CAN Parts */
|
||||
#define CAN2TDB2 (*((volatile unsigned long *) 0xE004804C)) /* All CAN Parts */
|
||||
#define CAN2TFI3 (*((volatile unsigned long *) 0xE0048050)) /* All CAN Parts */
|
||||
#define CAN2TID3 (*((volatile unsigned long *) 0xE0048054)) /* All CAN Parts */
|
||||
#define CAN2TDA3 (*((volatile unsigned long *) 0xE0048058)) /* All CAN Parts */
|
||||
#define CAN2TDB3 (*((volatile unsigned long *) 0xE004805C)) /* All CAN Parts */
|
||||
|
||||
#define CAN3MOD (*((volatile unsigned long *) 0xE004C000)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3CMR (*((volatile unsigned long *) 0xE004C004)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3GSR (*((volatile unsigned long *) 0xE004C008)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3ICR (*((volatile unsigned long *) 0xE004C00C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3IER (*((volatile unsigned long *) 0xE004C010)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3BTR (*((volatile unsigned long *) 0xE004C014)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3EWL (*((volatile unsigned long *) 0xE004C018)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3SR (*((volatile unsigned long *) 0xE004C01C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3RFS (*((volatile unsigned long *) 0xE004C020)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3RID (*((volatile unsigned long *) 0xE004C024)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3RDA (*((volatile unsigned long *) 0xE004C028)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3RDB (*((volatile unsigned long *) 0xE004C02C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TFI1 (*((volatile unsigned long *) 0xE004C030)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TID1 (*((volatile unsigned long *) 0xE004C034)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TDA1 (*((volatile unsigned long *) 0xE004C038)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TDB1 (*((volatile unsigned long *) 0xE004C03C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TFI2 (*((volatile unsigned long *) 0xE004C040)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TID2 (*((volatile unsigned long *) 0xE004C044)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TDA2 (*((volatile unsigned long *) 0xE004C048)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TDB2 (*((volatile unsigned long *) 0xE004C04C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TFI3 (*((volatile unsigned long *) 0xE004C050)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TID3 (*((volatile unsigned long *) 0xE004C054)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TDA3 (*((volatile unsigned long *) 0xE004C058)) /* lpc2194\lpc2294 only */
|
||||
#define CAN3TDB3 (*((volatile unsigned long *) 0xE004C05C)) /* lpc2194\lpc2294 only */
|
||||
|
||||
#define CAN4MOD (*((volatile unsigned long *) 0xE0050000)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4CMR (*((volatile unsigned long *) 0xE0050004)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4GSR (*((volatile unsigned long *) 0xE0050008)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4ICR (*((volatile unsigned long *) 0xE005000C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4IER (*((volatile unsigned long *) 0xE0050010)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4BTR (*((volatile unsigned long *) 0xE0050014)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4EWL (*((volatile unsigned long *) 0xE0050018)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4SR (*((volatile unsigned long *) 0xE005001C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4RFS (*((volatile unsigned long *) 0xE0050020)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4RID (*((volatile unsigned long *) 0xE0050024)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4RDA (*((volatile unsigned long *) 0xE0050028)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4RDB (*((volatile unsigned long *) 0xE005002C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TFI1 (*((volatile unsigned long *) 0xE0050030)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TID1 (*((volatile unsigned long *) 0xE0050034)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TDA1 (*((volatile unsigned long *) 0xE0050038)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TDB1 (*((volatile unsigned long *) 0xE005003C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TFI2 (*((volatile unsigned long *) 0xE0050040)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TID2 (*((volatile unsigned long *) 0xE0050044)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TDA2 (*((volatile unsigned long *) 0xE0050048)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TDB2 (*((volatile unsigned long *) 0xE005004C)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TFI3 (*((volatile unsigned long *) 0xE0050050)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TID3 (*((volatile unsigned long *) 0xE0050054)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TDA3 (*((volatile unsigned long *) 0xE0050058)) /* lpc2194\lpc2294 only */
|
||||
#define CAN4TDB3 (*((volatile unsigned long *) 0xE005005C)) /* lpc2194\lpc2294 only */
|
||||
|
||||
|
||||
#define CANTxSR (*((volatile unsigned long *) 0xE0040000)) /* ALL CAN Parts */
|
||||
#define CANRxSR (*((volatile unsigned long *) 0xE0040004)) /* ALL CAN Parts */
|
||||
#define CANMSR (*((volatile unsigned long *) 0xE0040008)) /* ALL CAN Parts */
|
||||
|
||||
#define CANAFMR (*((volatile unsigned char *) 0xE003C000)) /* ALL CAN Parts */
|
||||
#define CANSFF_sa (*((volatile unsigned short*) 0xE003C004)) /* ALL CAN Parts */
|
||||
#define CANSFF_GRP_sa (*((volatile unsigned short*) 0xE003C008)) /* ALL CAN Parts */
|
||||
#define CANEFF_sa (*((volatile unsigned short*) 0xE003C00C)) /* ALL CAN Parts */
|
||||
#define CANEFF_GRP_sa (*((volatile unsigned short*) 0xE003C010)) /* ALL CAN Parts */
|
||||
#define CANENDofTable (*((volatile unsigned short*) 0xE003C014)) /* ALL CAN Parts */
|
||||
#define CANLUTerrAd (*((volatile unsigned short*) 0xE003C018)) /* ALL CAN Parts */
|
||||
#define CANLUTerr (*((volatile unsigned char *) 0xE003C01C)) /* ALL CAN Parts */
|
||||
|
||||
|
||||
/* Timer 0 */
|
||||
#define T0IR (*((volatile unsigned long *) 0xE0004000))
|
||||
#define T0TCR (*((volatile unsigned long *) 0xE0004004))
|
||||
#define T0TC (*((volatile unsigned long *) 0xE0004008))
|
||||
#define T0PR (*((volatile unsigned long *) 0xE000400C))
|
||||
#define T0PC (*((volatile unsigned long *) 0xE0004010))
|
||||
#define T0MCR (*((volatile unsigned long *) 0xE0004014))
|
||||
#define T0MR0 (*((volatile unsigned long *) 0xE0004018))
|
||||
#define T0MR1 (*((volatile unsigned long *) 0xE000401C))
|
||||
#define T0MR2 (*((volatile unsigned long *) 0xE0004020))
|
||||
#define T0MR3 (*((volatile unsigned long *) 0xE0004024))
|
||||
#define T0CCR (*((volatile unsigned long *) 0xE0004028))
|
||||
#define T0CR0 (*((volatile unsigned long *) 0xE000402C))
|
||||
#define T0CR1 (*((volatile unsigned long *) 0xE0004030))
|
||||
#define T0CR2 (*((volatile unsigned long *) 0xE0004034))
|
||||
#define T0CR3 (*((volatile unsigned long *) 0xE0004038))
|
||||
#define T0EMR (*((volatile unsigned long *) 0xE000403C))
|
||||
|
||||
/* Timer 1 */
|
||||
#define T1IR (*((volatile unsigned long *) 0xE0008000))
|
||||
#define T1TCR (*((volatile unsigned long *) 0xE0008004))
|
||||
#define T1TC (*((volatile unsigned long *) 0xE0008008))
|
||||
#define T1PR (*((volatile unsigned long *) 0xE000800C))
|
||||
#define T1PC (*((volatile unsigned long *) 0xE0008010))
|
||||
#define T1MCR (*((volatile unsigned long *) 0xE0008014))
|
||||
#define T1MR0 (*((volatile unsigned long *) 0xE0008018))
|
||||
#define T1MR1 (*((volatile unsigned long *) 0xE000801C))
|
||||
#define T1MR2 (*((volatile unsigned long *) 0xE0008020))
|
||||
#define T1MR3 (*((volatile unsigned long *) 0xE0008024))
|
||||
#define T1CCR (*((volatile unsigned long *) 0xE0008028))
|
||||
#define T1CR0 (*((volatile unsigned long *) 0xE000802C))
|
||||
#define T1CR1 (*((volatile unsigned long *) 0xE0008030))
|
||||
#define T1CR2 (*((volatile unsigned long *) 0xE0008034))
|
||||
#define T1CR3 (*((volatile unsigned long *) 0xE0008038))
|
||||
#define T1EMR (*((volatile unsigned long *) 0xE000803C))
|
||||
|
||||
/* Pulse Width Modulator (PWM) */
|
||||
#define PWMIR (*((volatile unsigned long *) 0xE0014000))
|
||||
#define PWMTCR (*((volatile unsigned long *) 0xE0014004))
|
||||
#define PWMTC (*((volatile unsigned long *) 0xE0014008))
|
||||
#define PWMPR (*((volatile unsigned long *) 0xE001400C))
|
||||
#define PWMPC (*((volatile unsigned long *) 0xE0014010))
|
||||
#define PWMMCR (*((volatile unsigned long *) 0xE0014014))
|
||||
#define PWMMR0 (*((volatile unsigned long *) 0xE0014018))
|
||||
#define PWMMR1 (*((volatile unsigned long *) 0xE001401C))
|
||||
#define PWMMR2 (*((volatile unsigned long *) 0xE0014020))
|
||||
#define PWMMR3 (*((volatile unsigned long *) 0xE0014024))
|
||||
#define PWMMR4 (*((volatile unsigned long *) 0xE0014040))
|
||||
#define PWMMR5 (*((volatile unsigned long *) 0xE0014044))
|
||||
#define PWMMR6 (*((volatile unsigned long *) 0xE0014048))
|
||||
#define PWMPCR (*((volatile unsigned long *) 0xE001404C))
|
||||
#define PWMLER (*((volatile unsigned long *) 0xE0014050))
|
||||
|
||||
/* A/D CONVERTER */
|
||||
#define ADCR (*((volatile unsigned long *) 0xE0034000)) /* no in lpc210x*/
|
||||
#define ADDR (*((volatile unsigned long *) 0xE0034004)) /* no in lpc210x*/
|
||||
|
||||
/* Real Time Clock */
|
||||
#define ILR (*((volatile unsigned char *) 0xE0024000))
|
||||
#define CTC (*((volatile unsigned short*) 0xE0024004))
|
||||
#define CCR (*((volatile unsigned char *) 0xE0024008))
|
||||
#define CIIR (*((volatile unsigned char *) 0xE002400C))
|
||||
#define AMR (*((volatile unsigned char *) 0xE0024010))
|
||||
#define CTIME0 (*((volatile unsigned long *) 0xE0024014))
|
||||
#define CTIME1 (*((volatile unsigned long *) 0xE0024018))
|
||||
#define CTIME2 (*((volatile unsigned long *) 0xE002401C))
|
||||
#define SEC (*((volatile unsigned char *) 0xE0024020))
|
||||
#define MIN (*((volatile unsigned char *) 0xE0024024))
|
||||
#define HOUR (*((volatile unsigned char *) 0xE0024028))
|
||||
#define DOM (*((volatile unsigned char *) 0xE002402C))
|
||||
#define DOW (*((volatile unsigned char *) 0xE0024030))
|
||||
#define DOY (*((volatile unsigned short*) 0xE0024034))
|
||||
#define MONTH (*((volatile unsigned char *) 0xE0024038))
|
||||
#define YEAR (*((volatile unsigned short*) 0xE002403C))
|
||||
#define ALSEC (*((volatile unsigned char *) 0xE0024060))
|
||||
#define ALMIN (*((volatile unsigned char *) 0xE0024064))
|
||||
#define ALHOUR (*((volatile unsigned char *) 0xE0024068))
|
||||
#define ALDOM (*((volatile unsigned char *) 0xE002406C))
|
||||
#define ALDOW (*((volatile unsigned char *) 0xE0024070))
|
||||
#define ALDOY (*((volatile unsigned short*) 0xE0024074))
|
||||
#define ALMON (*((volatile unsigned char *) 0xE0024078))
|
||||
#define ALYEAR (*((volatile unsigned short*) 0xE002407C))
|
||||
#define PREINT (*((volatile unsigned short*) 0xE0024080))
|
||||
#define PREFRAC (*((volatile unsigned short*) 0xE0024084))
|
||||
|
||||
/* Watchdog */
|
||||
#define WDMOD (*((volatile unsigned char *) 0xE0000000))
|
||||
#define WDTC (*((volatile unsigned long *) 0xE0000004))
|
||||
#define WDFEED (*((volatile unsigned char *) 0xE0000008))
|
||||
#define WDTV (*((volatile unsigned long *) 0xE000000C))
|
||||
|
||||
#endif /* LPC2294_H */
|
||||
/*********************************** end of lpc2294.h **********************************/
|
|
@ -1,164 +0,0 @@
|
|||
/************************************************************************************//**
|
||||
* \file Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\main.c
|
||||
* \brief Demo program application source file.
|
||||
* \ingroup Prog_ARM7_LPC2000_Olimex_LPC_L2294_Crossworks
|
||||
* \internal
|
||||
*----------------------------------------------------------------------------------------
|
||||
* C O P Y R I G H T
|
||||
*----------------------------------------------------------------------------------------
|
||||
* Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved
|
||||
*
|
||||
*----------------------------------------------------------------------------------------
|
||||
* L I C E N S E
|
||||
*----------------------------------------------------------------------------------------
|
||||
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You have received a copy of the GNU General Public License along with OpenBLT. It
|
||||
* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
|
||||
*
|
||||
* \endinternal
|
||||
****************************************************************************************/
|
||||
|
||||
/****************************************************************************************
|
||||
* Include files
|
||||
****************************************************************************************/
|
||||
#include "header.h" /* generic header */
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Function prototypes
|
||||
****************************************************************************************/
|
||||
static void Init(void);
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Constant data declarations
|
||||
****************************************************************************************/
|
||||
#if (BOOT_NVM_HOOKS_ENABLE > 0)
|
||||
/** \brief Array with test data to program in the external flash.
|
||||
* \details ROM data allocated to the external flash on the Olimex LPC-L2294 board to
|
||||
* test the programming of data in external flash. To test programming with
|
||||
* the additional external flash driver, build the bootloader and this program
|
||||
* with configurable BOOT_NVM_HOOKS_ENABLE set to 1 in blt_conf.h
|
||||
*/
|
||||
__attribute__((section (".rodata2"))) const unsigned long ExtFlashTestData[] =
|
||||
{
|
||||
0x00000000, 0x11111111, 0x22222222, 0x33333333,
|
||||
0x44444444, 0x55555555, 0x66666666, 0x77777777,
|
||||
0x88888888, 0x99999999, 0xAAAAAAAA, 0xBBBBBBBB,
|
||||
0xCCCCCCCC, 0xDDDDDDDD, 0xEEEEEEEE, 0xFFFFFFFF
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief This is the entry point for the bootloader application and is called
|
||||
** by the reset interrupt vector after the C-startup routines executed.
|
||||
** \return Program return code.
|
||||
**
|
||||
****************************************************************************************/
|
||||
int main(void)
|
||||
{
|
||||
/* initialize the microcontroller */
|
||||
Init();
|
||||
|
||||
/* initialize the bootloader interface */
|
||||
BootComInit();
|
||||
|
||||
/* start the infinite program loop */
|
||||
while (1)
|
||||
{
|
||||
/* toggle LED with a fixed frequency */
|
||||
LedToggle();
|
||||
|
||||
/* check for bootloader activation request */
|
||||
BootComCheckActivationRequest();
|
||||
}
|
||||
|
||||
/* program should never get here */
|
||||
return 0;
|
||||
} /*** end of main ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Initializes the microcontroller. The Fpll is set to 60MHz and Fvpb is
|
||||
** configured equal to Fpll. The GPIO pin of the status LED is configured
|
||||
** as digital output.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
static void Init(void)
|
||||
{
|
||||
unsigned char m_sel; /* pll multiplier register value */
|
||||
unsigned char pll_dividers[] = { 1, 2, 4, 8 }; /* possible pll dividers */
|
||||
unsigned char p_sel_cnt; /* loop counter to find p_sel */
|
||||
unsigned long f_cco; /* current controller oscillator */
|
||||
|
||||
/* calculate MSEL: M = round(Fcclk / Fosc) */
|
||||
m_sel = (BOOT_CPU_SYSTEM_SPEED_KHZ + ((BOOT_CPU_XTAL_SPEED_KHZ+1)/2)) / \
|
||||
BOOT_CPU_XTAL_SPEED_KHZ;
|
||||
/* value for the PLLCFG register is -1 */
|
||||
m_sel--;
|
||||
|
||||
/* find PSEL value so that Fcco(= Fcclk * 2 * P) is in the 156000..320000 kHz range. */
|
||||
for (p_sel_cnt=0; p_sel_cnt<sizeof(pll_dividers)/sizeof(pll_dividers[0]); p_sel_cnt++)
|
||||
{
|
||||
/* check f_cco with this pll divider */
|
||||
f_cco = BOOT_CPU_SYSTEM_SPEED_KHZ * 2 * pll_dividers[p_sel_cnt];
|
||||
if ( (f_cco >= 156000) && (f_cco <= 320000) )
|
||||
{
|
||||
/* found a valid pll divider value */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* set multiplier and divider values */
|
||||
PLLCFG = (p_sel_cnt << 5) | m_sel;
|
||||
PLLFEED = 0xAA;
|
||||
PLLFEED = 0x55;
|
||||
/* enable the PLL */
|
||||
PLLCON = 0x1;
|
||||
PLLFEED = 0xAA;
|
||||
PLLFEED = 0x55;
|
||||
/* wait for the PLL to lock to set frequency */
|
||||
while(!(PLLSTAT & 0x400)) { ; }
|
||||
/* connect the PLL as the clock source */
|
||||
PLLCON = 0x3;
|
||||
PLLFEED = 0xAA;
|
||||
PLLFEED = 0x55;
|
||||
/* enable MAM and set number of clocks used for Flash memory fetch. Recommended:
|
||||
* Fcclk >= 60 MHz: 4 clock cycles
|
||||
* Fcclk >= 40 MHz: 3 clock cycles
|
||||
* Fcclk >= 20 MHz: 2 clock cycles
|
||||
* Fcclk < 20 MHz: 1 clock cycle
|
||||
*/
|
||||
MAMCR = 0x0;
|
||||
#if (BOOT_CPU_SYSTEM_SPEED_KHZ >= 60000)
|
||||
MAMTIM = 4;
|
||||
#elif (BOOT_CPU_SYSTEM_SPEED_KHZ >= 40000)
|
||||
MAMTIM = 3;
|
||||
#elif (BOOT_CPU_SYSTEM_SPEED_KHZ >= 20000)
|
||||
MAMTIM = 2;
|
||||
#else
|
||||
MAMTIM = 1;
|
||||
#endif
|
||||
MAMCR = 0x2;
|
||||
/* setting peripheral Clock (pclk) to System Clock (cclk) */
|
||||
VPBDIV = 0x1;
|
||||
/* init the led driver */
|
||||
LedInit();
|
||||
/* init the timer driver */
|
||||
TimerInit();
|
||||
/* enable IRQ's */
|
||||
IrqInterruptEnable();
|
||||
} /*** end of Init ***/
|
||||
|
||||
|
||||
/*********************************** end of main.c *************************************/
|
|
@ -1,356 +0,0 @@
|
|||
MEMORY
|
||||
{
|
||||
UNPLACED_SECTIONS (wx) : ORIGIN = 0x100000000, LENGTH = 0
|
||||
AHB_Peripherals (wx) : ORIGIN = 0xffe00000, LENGTH = 0x00200000
|
||||
VPB_Peripherals (wx) : ORIGIN = 0xe0000000, LENGTH = 0x00200000
|
||||
BANK3 (wx) : ORIGIN = 0x83000000, LENGTH = 0x01000000
|
||||
BANK2 (wx) : ORIGIN = 0x82000000, LENGTH = 0x01000000
|
||||
External_SRAM (wx) : ORIGIN = 0x81000000, LENGTH = 0x00100000
|
||||
External_FLASH (rx) : ORIGIN = 0x80000000, LENGTH = 0x00200000
|
||||
SRAM (wx) : ORIGIN = 0x40000200, LENGTH = 0x00003CE0
|
||||
FLASH (rx) : ORIGIN = 0x00002000, LENGTH = 0x0003E000
|
||||
}
|
||||
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
__AHB_Peripherals_segment_start__ = 0xffe00000;
|
||||
__AHB_Peripherals_segment_end__ = 0x00000000;
|
||||
__VPB_Peripherals_segment_start__ = 0xe0000000;
|
||||
__VPB_Peripherals_segment_end__ = 0xe0200000;
|
||||
__BANK3_segment_start__ = 0x83000000;
|
||||
__BANK3_segment_end__ = 0x84000000;
|
||||
__BANK2_segment_start__ = 0x82000000;
|
||||
__BANK2_segment_end__ = 0x83000000;
|
||||
__External_SRAM_segment_start__ = 0x81000000;
|
||||
__External_SRAM_segment_end__ = 0x81100000;
|
||||
__External_FLASH_segment_start__ = 0x80000000;
|
||||
__External_FLASH_segment_end__ = 0x80200000;
|
||||
__SRAM_segment_start__ = 0x40002000;
|
||||
__SRAM_segment_end__ = 0x40003EE0;
|
||||
__FLASH_segment_start__ = 0x00002000;
|
||||
__FLASH_segment_end__ = 0x00040000;
|
||||
|
||||
__STACKSIZE__ = 1024;
|
||||
__STACKSIZE_IRQ__ = 256;
|
||||
__STACKSIZE_FIQ__ = 256;
|
||||
__STACKSIZE_SVC__ = 256;
|
||||
__STACKSIZE_ABT__ = 256;
|
||||
__STACKSIZE_UND__ = 256;
|
||||
__HEAPSIZE__ = 1024;
|
||||
|
||||
__text2_load_start__ = ALIGN(__External_FLASH_segment_start__ , 4);
|
||||
.text2 ALIGN(__External_FLASH_segment_start__ , 4) : AT(ALIGN(__External_FLASH_segment_start__ , 4))
|
||||
{
|
||||
__text2_start__ = .;
|
||||
*(.text2 .text2.*)
|
||||
}
|
||||
__text2_end__ = __text2_start__ + SIZEOF(.text2);
|
||||
|
||||
__text2_load_end__ = __text2_end__;
|
||||
|
||||
. = ASSERT(__text2_end__ >= __External_FLASH_segment_start__ && __text2_end__ <= (__External_FLASH_segment_start__ + 0x00400000) , "error: .text2 is too large to fit in External_FLASH memory segment");
|
||||
|
||||
__rodata2_load_start__ = ALIGN(__text2_end__ , 4);
|
||||
.rodata2 ALIGN(__text2_end__ , 4) : AT(ALIGN(__text2_end__ , 4))
|
||||
{
|
||||
__rodata2_start__ = .;
|
||||
*(.rodata2 .rodata2.*)
|
||||
}
|
||||
__rodata2_end__ = __rodata2_start__ + SIZEOF(.rodata2);
|
||||
|
||||
__rodata2_load_end__ = __rodata2_end__;
|
||||
|
||||
. = ASSERT(__rodata2_end__ >= __External_FLASH_segment_start__ && __rodata2_end__ <= (__External_FLASH_segment_start__ + 0x00400000) , "error: .rodata2 is too large to fit in External_FLASH memory segment");
|
||||
|
||||
__data2_load_start__ = ALIGN(__rodata2_end__ , 4);
|
||||
.data2 ALIGN(__External_SRAM_segment_start__ , 4) : AT(ALIGN(__rodata2_end__ , 4))
|
||||
{
|
||||
__data2_start__ = .;
|
||||
*(.data2 .data2.*)
|
||||
}
|
||||
__data2_end__ = __data2_start__ + SIZEOF(.data2);
|
||||
|
||||
__data2_load_end__ = __data2_load_start__ + SIZEOF(.data2);
|
||||
|
||||
__External_FLASH_segment_used_end__ = ALIGN(__rodata2_end__ , 4) + SIZEOF(.data2);
|
||||
|
||||
. = ASSERT((__data2_load_start__ + SIZEOF(.data2)) >= __External_FLASH_segment_start__ && (__data2_load_start__ + SIZEOF(.data2)) <= (__External_FLASH_segment_start__ + 0x00400000) , "error: .data2 is too large to fit in External_FLASH memory segment");
|
||||
|
||||
.data2_run ALIGN(__External_SRAM_segment_start__ , 4) (NOLOAD) :
|
||||
{
|
||||
__data2_run_start__ = .;
|
||||
. = MAX(__data2_run_start__ + SIZEOF(.data2), .);
|
||||
}
|
||||
__data2_run_end__ = __data2_run_start__ + SIZEOF(.data2_run);
|
||||
|
||||
__data2_run_load_end__ = __data2_run_end__;
|
||||
|
||||
. = ASSERT(__data2_run_end__ >= __External_SRAM_segment_start__ && __data2_run_end__ <= (__External_SRAM_segment_start__ + 0x00100000) , "error: .data2_run is too large to fit in External_SRAM memory segment");
|
||||
|
||||
__bss2_load_start__ = ALIGN(__data2_run_end__ , 4);
|
||||
.bss2 ALIGN(__data2_run_end__ , 4) (NOLOAD) : AT(ALIGN(__data2_run_end__ , 4))
|
||||
{
|
||||
__bss2_start__ = .;
|
||||
*(.bss2 .bss2.*)
|
||||
}
|
||||
__bss2_end__ = __bss2_start__ + SIZEOF(.bss2);
|
||||
|
||||
__bss2_load_end__ = __bss2_end__;
|
||||
|
||||
__External_SRAM_segment_used_end__ = ALIGN(__data2_run_end__ , 4) + SIZEOF(.bss2);
|
||||
|
||||
. = ASSERT(__bss2_end__ >= __External_SRAM_segment_start__ && __bss2_end__ <= (__External_SRAM_segment_start__ + 0x00100000) , "error: .bss2 is too large to fit in External_SRAM memory segment");
|
||||
|
||||
__vectors_ram_load_start__ = __SRAM_segment_start__;
|
||||
.vectors_ram __SRAM_segment_start__ (NOLOAD) : AT(__SRAM_segment_start__)
|
||||
{
|
||||
__vectors_ram_start__ = .;
|
||||
*(.vectors_ram .vectors_ram.*)
|
||||
. = MAX(__vectors_ram_start__ + 0x0000003C , .);
|
||||
}
|
||||
__vectors_ram_end__ = __vectors_ram_start__ + SIZEOF(.vectors_ram);
|
||||
|
||||
__vectors_ram_load_end__ = __vectors_ram_end__;
|
||||
|
||||
. = ASSERT(__vectors_ram_end__ >= __SRAM_segment_start__ && __vectors_ram_end__ <= (__SRAM_segment_start__ + 0x00004000) , "error: .vectors_ram is too large to fit in SRAM memory segment");
|
||||
|
||||
__vectors_load_start__ = __FLASH_segment_start__;
|
||||
.vectors __FLASH_segment_start__ : AT(__FLASH_segment_start__)
|
||||
{
|
||||
__vectors_start__ = .;
|
||||
*(.vectors .vectors.*)
|
||||
}
|
||||
__vectors_end__ = __vectors_start__ + SIZEOF(.vectors);
|
||||
|
||||
__vectors_load_end__ = __vectors_end__;
|
||||
|
||||
. = ASSERT(__vectors_end__ >= __FLASH_segment_start__ && __vectors_end__ <= (__FLASH_segment_start__ + 0x00040000) , "error: .vectors is too large to fit in FLASH memory segment");
|
||||
|
||||
__init_load_start__ = ALIGN(__vectors_end__ , 4);
|
||||
.init ALIGN(__vectors_end__ , 4) : AT(ALIGN(__vectors_end__ , 4))
|
||||
{
|
||||
__init_start__ = .;
|
||||
*(.init .init.*)
|
||||
}
|
||||
__init_end__ = __init_start__ + SIZEOF(.init);
|
||||
|
||||
__init_load_end__ = __init_end__;
|
||||
|
||||
. = ASSERT(__init_end__ >= __FLASH_segment_start__ && __init_end__ <= (__FLASH_segment_start__ + 0x00040000) , "error: .init is too large to fit in FLASH memory segment");
|
||||
|
||||
__text_load_start__ = ALIGN(__init_end__ , 4);
|
||||
.text ALIGN(__init_end__ , 4) : AT(ALIGN(__init_end__ , 4))
|
||||
{
|
||||
__text_start__ = .;
|
||||
*(.text .text.* .glue_7t .glue_7 .gnu.linkonce.t.* .gcc_except_table)
|
||||
}
|
||||
__text_end__ = __text_start__ + SIZEOF(.text);
|
||||
|
||||
__text_load_end__ = __text_end__;
|
||||
|
||||
. = ASSERT(__text_end__ >= __FLASH_segment_start__ && __text_end__ <= (__FLASH_segment_start__ + 0x00040000) , "error: .text is too large to fit in FLASH memory segment");
|
||||
|
||||
__dtors_load_start__ = ALIGN(__text_end__ , 4);
|
||||
.dtors ALIGN(__text_end__ , 4) : AT(ALIGN(__text_end__ , 4))
|
||||
{
|
||||
__dtors_start__ = .;
|
||||
KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors))
|
||||
}
|
||||
__dtors_end__ = __dtors_start__ + SIZEOF(.dtors);
|
||||
|
||||
__dtors_load_end__ = __dtors_end__;
|
||||
|
||||
. = ASSERT(__dtors_end__ >= __FLASH_segment_start__ && __dtors_end__ <= (__FLASH_segment_start__ + 0x00040000) , "error: .dtors is too large to fit in FLASH memory segment");
|
||||
|
||||
__ctors_load_start__ = ALIGN(__dtors_end__ , 4);
|
||||
.ctors ALIGN(__dtors_end__ , 4) : AT(ALIGN(__dtors_end__ , 4))
|
||||
{
|
||||
__ctors_start__ = .;
|
||||
KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors))
|
||||
}
|
||||
__ctors_end__ = __ctors_start__ + SIZEOF(.ctors);
|
||||
|
||||
__ctors_load_end__ = __ctors_end__;
|
||||
|
||||
. = ASSERT(__ctors_end__ >= __FLASH_segment_start__ && __ctors_end__ <= (__FLASH_segment_start__ + 0x00040000) , "error: .ctors is too large to fit in FLASH memory segment");
|
||||
|
||||
__rodata_load_start__ = ALIGN(__ctors_end__ , 4);
|
||||
.rodata ALIGN(__ctors_end__ , 4) : AT(ALIGN(__ctors_end__ , 4))
|
||||
{
|
||||
__rodata_start__ = .;
|
||||
*(.rodata .rodata.* .gnu.linkonce.r.*)
|
||||
}
|
||||
__rodata_end__ = __rodata_start__ + SIZEOF(.rodata);
|
||||
|
||||
__rodata_load_end__ = __rodata_end__;
|
||||
|
||||
. = ASSERT(__rodata_end__ >= __FLASH_segment_start__ && __rodata_end__ <= (__FLASH_segment_start__ + 0x00040000) , "error: .rodata is too large to fit in FLASH memory segment");
|
||||
|
||||
__data_load_start__ = ALIGN(__rodata_end__ , 4);
|
||||
.data ALIGN(__vectors_ram_end__ , 4) : AT(ALIGN(__rodata_end__ , 4))
|
||||
{
|
||||
__data_start__ = .;
|
||||
*(.data .data.* .gnu.linkonce.d.*)
|
||||
}
|
||||
__data_end__ = __data_start__ + SIZEOF(.data);
|
||||
|
||||
__data_load_end__ = __data_load_start__ + SIZEOF(.data);
|
||||
|
||||
. = ASSERT((__data_load_start__ + SIZEOF(.data)) >= __FLASH_segment_start__ && (__data_load_start__ + SIZEOF(.data)) <= (__FLASH_segment_start__ + 0x00040000) , "error: .data is too large to fit in FLASH memory segment");
|
||||
|
||||
.data_run ALIGN(__vectors_ram_end__ , 4) (NOLOAD) :
|
||||
{
|
||||
__data_run_start__ = .;
|
||||
. = MAX(__data_run_start__ + SIZEOF(.data), .);
|
||||
}
|
||||
__data_run_end__ = __data_run_start__ + SIZEOF(.data_run);
|
||||
|
||||
__data_run_load_end__ = __data_run_end__;
|
||||
|
||||
. = ASSERT(__data_run_end__ >= __SRAM_segment_start__ && __data_run_end__ <= (__SRAM_segment_start__ + 0x00004000) , "error: .data_run is too large to fit in SRAM memory segment");
|
||||
|
||||
__bss_load_start__ = ALIGN(__data_run_end__ , 4);
|
||||
.bss ALIGN(__data_run_end__ , 4) (NOLOAD) : AT(ALIGN(__data_run_end__ , 4))
|
||||
{
|
||||
__bss_start__ = .;
|
||||
*(.bss .bss.* .gnu.linkonce.b.*) *(COMMON)
|
||||
}
|
||||
__bss_end__ = __bss_start__ + SIZEOF(.bss);
|
||||
|
||||
__bss_load_end__ = __bss_end__;
|
||||
|
||||
. = ASSERT(__bss_end__ >= __SRAM_segment_start__ && __bss_end__ <= (__SRAM_segment_start__ + 0x00004000) , "error: .bss is too large to fit in SRAM memory segment");
|
||||
|
||||
__non_init_load_start__ = ALIGN(__bss_end__ , 4);
|
||||
.non_init ALIGN(__bss_end__ , 4) (NOLOAD) : AT(ALIGN(__bss_end__ , 4))
|
||||
{
|
||||
__non_init_start__ = .;
|
||||
*(.non_init .non_init.*)
|
||||
}
|
||||
__non_init_end__ = __non_init_start__ + SIZEOF(.non_init);
|
||||
|
||||
__non_init_load_end__ = __non_init_end__;
|
||||
|
||||
. = ASSERT(__non_init_end__ >= __SRAM_segment_start__ && __non_init_end__ <= (__SRAM_segment_start__ + 0x00004000) , "error: .non_init is too large to fit in SRAM memory segment");
|
||||
|
||||
__heap_load_start__ = ALIGN(__non_init_end__ , 4);
|
||||
.heap ALIGN(__non_init_end__ , 4) (NOLOAD) : AT(ALIGN(__non_init_end__ , 4))
|
||||
{
|
||||
__heap_start__ = .;
|
||||
*(.heap .heap.*)
|
||||
. = ALIGN(MAX(__heap_start__ + __HEAPSIZE__ , .), 4);
|
||||
}
|
||||
__heap_end__ = __heap_start__ + SIZEOF(.heap);
|
||||
|
||||
__heap_load_end__ = __heap_end__;
|
||||
|
||||
. = ASSERT(__heap_end__ >= __SRAM_segment_start__ && __heap_end__ <= (__SRAM_segment_start__ + 0x00004000) , "error: .heap is too large to fit in SRAM memory segment");
|
||||
|
||||
__stack_load_start__ = ALIGN(__heap_end__ , 4);
|
||||
.stack ALIGN(__heap_end__ , 4) (NOLOAD) : AT(ALIGN(__heap_end__ , 4))
|
||||
{
|
||||
__stack_start__ = .;
|
||||
*(.stack .stack.*)
|
||||
. = ALIGN(MAX(__stack_start__ + __STACKSIZE__ , .), 4);
|
||||
}
|
||||
__stack_end__ = __stack_start__ + SIZEOF(.stack);
|
||||
|
||||
__stack_load_end__ = __stack_end__;
|
||||
|
||||
. = ASSERT(__stack_end__ >= __SRAM_segment_start__ && __stack_end__ <= (__SRAM_segment_start__ + 0x00004000) , "error: .stack is too large to fit in SRAM memory segment");
|
||||
|
||||
__stack_irq_load_start__ = ALIGN(__stack_end__ , 4);
|
||||
.stack_irq ALIGN(__stack_end__ , 4) (NOLOAD) : AT(ALIGN(__stack_end__ , 4))
|
||||
{
|
||||
__stack_irq_start__ = .;
|
||||
*(.stack_irq .stack_irq.*)
|
||||
. = ALIGN(MAX(__stack_irq_start__ + __STACKSIZE_IRQ__ , .), 4);
|
||||
}
|
||||
__stack_irq_end__ = __stack_irq_start__ + SIZEOF(.stack_irq);
|
||||
|
||||
__stack_irq_load_end__ = __stack_irq_end__;
|
||||
|
||||
. = ASSERT(__stack_irq_end__ >= __SRAM_segment_start__ && __stack_irq_end__ <= (__SRAM_segment_start__ + 0x00004000) , "error: .stack_irq is too large to fit in SRAM memory segment");
|
||||
|
||||
__stack_fiq_load_start__ = ALIGN(__stack_irq_end__ , 4);
|
||||
.stack_fiq ALIGN(__stack_irq_end__ , 4) (NOLOAD) : AT(ALIGN(__stack_irq_end__ , 4))
|
||||
{
|
||||
__stack_fiq_start__ = .;
|
||||
*(.stack_fiq .stack_fiq.*)
|
||||
. = ALIGN(MAX(__stack_fiq_start__ + __STACKSIZE_FIQ__ , .), 4);
|
||||
}
|
||||
__stack_fiq_end__ = __stack_fiq_start__ + SIZEOF(.stack_fiq);
|
||||
|
||||
__stack_fiq_load_end__ = __stack_fiq_end__;
|
||||
|
||||
. = ASSERT(__stack_fiq_end__ >= __SRAM_segment_start__ && __stack_fiq_end__ <= (__SRAM_segment_start__ + 0x00004000) , "error: .stack_fiq is too large to fit in SRAM memory segment");
|
||||
|
||||
__stack_svc_load_start__ = ALIGN(__stack_fiq_end__ , 4);
|
||||
.stack_svc ALIGN(__stack_fiq_end__ , 4) (NOLOAD) : AT(ALIGN(__stack_fiq_end__ , 4))
|
||||
{
|
||||
__stack_svc_start__ = .;
|
||||
*(.stack_svc .stack_svc.*)
|
||||
. = ALIGN(MAX(__stack_svc_start__ + __STACKSIZE_SVC__ , .), 4);
|
||||
}
|
||||
__stack_svc_end__ = __stack_svc_start__ + SIZEOF(.stack_svc);
|
||||
|
||||
__stack_svc_load_end__ = __stack_svc_end__;
|
||||
|
||||
. = ASSERT(__stack_svc_end__ >= __SRAM_segment_start__ && __stack_svc_end__ <= (__SRAM_segment_start__ + 0x00004000) , "error: .stack_svc is too large to fit in SRAM memory segment");
|
||||
|
||||
__stack_abt_load_start__ = ALIGN(__stack_svc_end__ , 4);
|
||||
.stack_abt ALIGN(__stack_svc_end__ , 4) (NOLOAD) : AT(ALIGN(__stack_svc_end__ , 4))
|
||||
{
|
||||
__stack_abt_start__ = .;
|
||||
*(.stack_abt .stack_abt.*)
|
||||
. = ALIGN(MAX(__stack_abt_start__ + __STACKSIZE_ABT__ , .), 4);
|
||||
}
|
||||
__stack_abt_end__ = __stack_abt_start__ + SIZEOF(.stack_abt);
|
||||
|
||||
__stack_abt_load_end__ = __stack_abt_end__;
|
||||
|
||||
. = ASSERT(__stack_abt_end__ >= __SRAM_segment_start__ && __stack_abt_end__ <= (__SRAM_segment_start__ + 0x00004000) , "error: .stack_abt is too large to fit in SRAM memory segment");
|
||||
|
||||
__stack_und_load_start__ = ALIGN(__stack_abt_end__ , 4);
|
||||
.stack_und ALIGN(__stack_abt_end__ , 4) (NOLOAD) : AT(ALIGN(__stack_abt_end__ , 4))
|
||||
{
|
||||
__stack_und_start__ = .;
|
||||
*(.stack_und .stack_und.*)
|
||||
. = ALIGN(MAX(__stack_und_start__ + __STACKSIZE_UND__ , .), 4);
|
||||
}
|
||||
__stack_und_end__ = __stack_und_start__ + SIZEOF(.stack_und);
|
||||
|
||||
__stack_und_load_end__ = __stack_und_end__;
|
||||
|
||||
. = ASSERT(__stack_und_end__ >= __SRAM_segment_start__ && __stack_und_end__ <= (__SRAM_segment_start__ + 0x00004000) , "error: .stack_und is too large to fit in SRAM memory segment");
|
||||
|
||||
__fast_load_start__ = ALIGN(__data_load_start__ + SIZEOF(.data) , 4);
|
||||
.fast ALIGN(__stack_und_end__ , 4) : AT(ALIGN(__data_load_start__ + SIZEOF(.data) , 4))
|
||||
{
|
||||
__fast_start__ = .;
|
||||
*(.fast .fast.*)
|
||||
}
|
||||
__fast_end__ = __fast_start__ + SIZEOF(.fast);
|
||||
|
||||
__fast_load_end__ = __fast_load_start__ + SIZEOF(.fast);
|
||||
|
||||
__FLASH_segment_used_end__ = ALIGN(__data_load_start__ + SIZEOF(.data) , 4) + SIZEOF(.fast);
|
||||
|
||||
. = ASSERT((__fast_load_start__ + SIZEOF(.fast)) >= __FLASH_segment_start__ && (__fast_load_start__ + SIZEOF(.fast)) <= (__FLASH_segment_start__ + 0x00040000) , "error: .fast is too large to fit in FLASH memory segment");
|
||||
|
||||
.fast_run ALIGN(__stack_und_end__ , 4) (NOLOAD) :
|
||||
{
|
||||
__fast_run_start__ = .;
|
||||
. = MAX(__fast_run_start__ + SIZEOF(.fast), .);
|
||||
}
|
||||
__fast_run_end__ = __fast_run_start__ + SIZEOF(.fast_run);
|
||||
|
||||
__fast_run_load_end__ = __fast_run_end__;
|
||||
|
||||
__SRAM_segment_used_end__ = ALIGN(__stack_und_end__ , 4) + SIZEOF(.fast_run);
|
||||
|
||||
. = ASSERT(__fast_run_end__ >= __SRAM_segment_start__ && __fast_run_end__ <= (__SRAM_segment_start__ + 0x00004000) , "error: .fast_run is too large to fit in SRAM memory segment");
|
||||
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
/**
|
||||
\defgroup Prog_ARM7_LPC2000_Olimex_LPC_L2294_Crossworks User Program
|
||||
\brief User Program.
|
||||
\ingroup ARM7_LPC2000_Olimex_LPC_L2294_Crossworks
|
||||
*/
|
||||
|
||||
|
|
@ -1,112 +0,0 @@
|
|||
/************************************************************************************//**
|
||||
* \file Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\timer.c
|
||||
* \brief Timer driver source file.
|
||||
* \ingroup Prog_ARM7_LPC2000_Olimex_LPC_L2294_Crossworks
|
||||
* \internal
|
||||
*----------------------------------------------------------------------------------------
|
||||
* C O P Y R I G H T
|
||||
*----------------------------------------------------------------------------------------
|
||||
* Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved
|
||||
*
|
||||
*----------------------------------------------------------------------------------------
|
||||
* L I C E N S E
|
||||
*----------------------------------------------------------------------------------------
|
||||
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You have received a copy of the GNU General Public License along with OpenBLT. It
|
||||
* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
|
||||
*
|
||||
* \endinternal
|
||||
****************************************************************************************/
|
||||
|
||||
/****************************************************************************************
|
||||
* Include files
|
||||
****************************************************************************************/
|
||||
#include "header.h" /* generic header */
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Local data declarations
|
||||
****************************************************************************************/
|
||||
/** \brief Local variable for storing the number of milliseconds that have elapsed since
|
||||
* startup.
|
||||
*/
|
||||
static unsigned long millisecond_counter;
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* External functions
|
||||
****************************************************************************************/
|
||||
extern void TIMER0_ISR(void);
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Initializes the timer.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
void TimerInit(void)
|
||||
{
|
||||
/* configure timer0 as 1 ms software output compare */
|
||||
T0MR0 = BOOT_CPU_SYSTEM_SPEED_KHZ-1;
|
||||
/* enable interrupt and automatic reset upon compare */
|
||||
T0MCR = 0x01 | 0x02;
|
||||
/* enable the output compare */
|
||||
T0TCR = 0x01;
|
||||
/* set the interrupt service routine for the output compare event */
|
||||
VICVectAddr0 = (unsigned long)TIMER0_ISR;
|
||||
/* connect vectored IRQ slot 0 to Timer0's channel 4 */
|
||||
VICVectCntl0 = 0x20 | 4;
|
||||
/* enable the timer0 interrupt */
|
||||
VICIntEnable = 0x10;
|
||||
/* reset the millisecond counter */
|
||||
TimerSet(0);
|
||||
} /*** end of TimerInit ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Updates the millisecond timer. Should be called every millisecond by
|
||||
** the timer interrupt service routine.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
void TimerUpdate(void)
|
||||
{
|
||||
/* increment the millisecond counter */
|
||||
millisecond_counter++;
|
||||
} /*** end of TimerUpdate ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Sets the initial counter value of the millisecond timer.
|
||||
** \param timer_value initialize value of the millisecond timer.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
void TimerSet(unsigned long timer_value)
|
||||
{
|
||||
/* set the millisecond counter */
|
||||
millisecond_counter = timer_value;
|
||||
} /*** end of TimerSet ***/
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Obtains the counter value of the millisecond timer.
|
||||
** \return Current value of the millisecond timer.
|
||||
**
|
||||
****************************************************************************************/
|
||||
unsigned long TimerGet(void)
|
||||
{
|
||||
/* read and return the millisecond counter value */
|
||||
return millisecond_counter;
|
||||
} /*** end of TimerGet ***/
|
||||
|
||||
|
||||
/*********************************** end of timer.c ************************************/
|
|
@ -1,41 +0,0 @@
|
|||
/************************************************************************************//**
|
||||
* \file Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\timer.h
|
||||
* \brief Timer driver header file.
|
||||
* \ingroup Prog_ARM7_LPC2000_Olimex_LPC_L2294_Crossworks
|
||||
* \internal
|
||||
*----------------------------------------------------------------------------------------
|
||||
* C O P Y R I G H T
|
||||
*----------------------------------------------------------------------------------------
|
||||
* Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved
|
||||
*
|
||||
*----------------------------------------------------------------------------------------
|
||||
* L I C E N S E
|
||||
*----------------------------------------------------------------------------------------
|
||||
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You have received a copy of the GNU General Public License along with OpenBLT. It
|
||||
* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
|
||||
*
|
||||
* \endinternal
|
||||
****************************************************************************************/
|
||||
#ifndef TIMER_H
|
||||
#define TIMER_H
|
||||
|
||||
/****************************************************************************************
|
||||
* Function prototypes
|
||||
****************************************************************************************/
|
||||
void TimerInit(void);
|
||||
void TimerUpdate(void);
|
||||
void TimerSet(unsigned long timer_value);
|
||||
unsigned long TimerGet(void);
|
||||
|
||||
|
||||
#endif /* TIMER_H */
|
||||
/*********************************** end of timer.h ************************************/
|
|
@ -1,57 +0,0 @@
|
|||
/************************************************************************************//**
|
||||
* \file Demo\ARM7_LPC2000_Olimex_LPC_L2294_Crossworks\Prog\vectors.c
|
||||
* \brief Demo program interrupt vectors source file.
|
||||
* \ingroup Prog_ARM7_LPC2000_Olimex_LPC_L2294_Crossworks
|
||||
* \internal
|
||||
*----------------------------------------------------------------------------------------
|
||||
* C O P Y R I G H T
|
||||
*----------------------------------------------------------------------------------------
|
||||
* Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved
|
||||
*
|
||||
*----------------------------------------------------------------------------------------
|
||||
* L I C E N S E
|
||||
*----------------------------------------------------------------------------------------
|
||||
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You have received a copy of the GNU General Public License along with OpenBLT. It
|
||||
* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
|
||||
*
|
||||
* \endinternal
|
||||
****************************************************************************************/
|
||||
|
||||
/****************************************************************************************
|
||||
* Include files
|
||||
****************************************************************************************/
|
||||
#include "header.h" /* generic header */
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
* Function prototypes
|
||||
****************************************************************************************/
|
||||
void __attribute__ ((interrupt("IRQ"))) TIMER0_ISR(void);
|
||||
|
||||
|
||||
/************************************************************************************//**
|
||||
** \brief Timer0 exception routine.
|
||||
** \return none.
|
||||
**
|
||||
****************************************************************************************/
|
||||
void TIMER0_ISR(void)
|
||||
{
|
||||
/* clear the interrupt flag */
|
||||
T0IR = 0x01;
|
||||
/* acknowledge interrupt */
|
||||
VICVectAddr = 0;
|
||||
/* process time tick */
|
||||
TimerUpdate();
|
||||
} /*** end of TIMER0_ISR ***/
|
||||
|
||||
|
||||
/*********************************** end of vectors.c **********************************/
|
|
@ -1,8 +0,0 @@
|
|||
/**
|
||||
\defgroup ARM7_LPC2000_Olimex_LPC_L2294_Crossworks Demo for Olimex LPC-L2294/Crossworks
|
||||
\brief Preconfigured programs for the Olimex LPC-L2294 and the Crossworks IDE.
|
||||
\details Refer to http://feaser.com/openblt/doku.php?id=manual:demos
|
||||
for detailed getting started instructions.
|
||||
*/
|
||||
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -1,426 +1,413 @@
|
|||
S02B0000433A2F576F726B2F736F6674776172652F4F70656E424C542F5461726765742F44656D6F2F41524DEF
|
||||
S1130000BC070020B9000000D5010000D5010000A4
|
||||
S1130010D5010000D5010000D5010000D501000084
|
||||
S1130020D5010000D5010000D5010000D501000074
|
||||
S1130030D5010000D5010000D5010000D501000064
|
||||
S1130040D5010000D5010000D5010000D501000054
|
||||
S1130050D5010000D5010000D5010000D501000044
|
||||
S1130060D5010000D5010000D5010000D501000034
|
||||
S1130070D5010000D5010000D5010000D501000024
|
||||
S1130080D5010000D5010000D5010000D501000014
|
||||
S1130090D5010000D5010000D5010000D501000004
|
||||
S11300A0D5010000D5010000D5010000D5010000F4
|
||||
S10B00B0D5010000D501000098
|
||||
S11300B82C498D462C492D480A1A04D081F3098805
|
||||
S11300C8022282F314882A482A492B4A00F039F874
|
||||
S11300D82A482B492B4A00F034F82B482B492C4A40
|
||||
S11300E800F02FF82B482C492C4A00F02AF82C4809
|
||||
S11300F82C492D4A00F025F82C482D492D4A00F0AA
|
||||
S113010820F82D482D49002200F026F82C482D49C6
|
||||
S1130118091A082903DB00220260043001601E4822
|
||||
S11301281E49884205D00268043003B4904703BCD2
|
||||
S1130138F7E700208646EC4600200021224A904733
|
||||
S1130148FEE7884207D0521A05D0037801300B70B5
|
||||
S11301580131013AF9D17047884202D00270013066
|
||||
S1130168FAE77047BC070020BC070020BC07002042
|
||||
S11301785C1A00003801002044010020D40100006A
|
||||
S1130188D4010000341700002419000000000020E6
|
||||
S11301983801002034170000341700003417000019
|
||||
S11301A83417000034170000341700003417000017
|
||||
S11301B83417000023190000440100203A060020E7
|
||||
S10F01C83C060020BC0600205515000079
|
||||
S11301D400B503483821034B98475DF804FB00BF7E
|
||||
S11301E4341700001109000072B6704762B67047F4
|
||||
S11301F400B5024B98475DF804FB00BFED01000015
|
||||
S113020410B50A4B984780B1094B9847094C0A4BDF
|
||||
S11302149847A047094B20F0604020F07F00186005
|
||||
S1130224A047074B44689847A04710BD85060000C3
|
||||
S1130234410A000095060000DD06000008ED00E018
|
||||
S1130244F1010000F0B50C4695B20646054F06E0F0
|
||||
S113025414F8013B013D06F8013BB847ADB2002D4B
|
||||
S1130264F6D1F0BDA30A0000F0B50C4D0C4F0646C0
|
||||
S11302740024B8472B689E4209D36A689B189E429F
|
||||
S113028405D2064B0C2202FB0434207AF0BD01345F
|
||||
S11302940C350F2CEDD1FF20F0BD00BFC8170000B2
|
||||
S11302A4A30A00002DE9F147114B0546006898475D
|
||||
S11302B4FF281AD0DFF83C90DFF83C8000242F6834
|
||||
S11302C4261DAB5904EB070A0093C84750466946F8
|
||||
S11302D40422C04748B9E259009B9A4206D1B6F5B4
|
||||
S11302E4007F3446EBD1012000E00020BDE8F8870C
|
||||
S11302F46D020000A30A000079000020114B30B500
|
||||
S1130304984204460D4606D0B1F5005F05D00E4B65
|
||||
S1130314984718B910E00D4C00E01C46EB050DD1CC
|
||||
S11303242368AB420BD0204640F8045B29464FF4C3
|
||||
S11303340072074B984702E0044600E0002420467C
|
||||
S113034430BD00BF44010020A9020000480300207E
|
||||
S1130354490200002DE9F04F9846036821F4FE7722
|
||||
S1130364013304460D46164627F0030706D140F828
|
||||
S1130374047B39464FF40072184B98472368BB42F8
|
||||
S113038405D020463946164B9847044610B32368D3
|
||||
S1130394DFF850A0C3EB050B0BF1040B104DA34481
|
||||
S11303A440F2FF19D047231DC3EB0B034B4507D978
|
||||
S11303B4204607F50071A847044668B100F1040B10
|
||||
S11303C416F8013BB8F101080BF8013BEAD101200E
|
||||
S11303D4BDE8F08FBDE8F08FBDE8F08F490200005E
|
||||
S11303E401030000A30A0000054B00B59847054A21
|
||||
S11303F44FF0FF331360044A13605DF804FB00BF3D
|
||||
S1130404F91400004803002044010020F0B50F4C07
|
||||
S113041405460E461746A047FF2813D0681E8019C8
|
||||
S1130424A047FF2810D025F4FE7323F00303B3F58B
|
||||
S1130434005F074C0CBF0748074829463A46334631
|
||||
S1130444A047F0BD0020F0BD0020F0BD6D02000007
|
||||
S11304545903000044010020480300202DE9F0471B
|
||||
S1130464424E0F460446B047013C0546E019B047E6
|
||||
S1130474FF2D074673D0FF2874D085426FD8002D12
|
||||
S11304846AD00F286BD83A4B1E78472E08D0492ED1
|
||||
S113049406D0482E14BF4FF400664FF4805601E092
|
||||
S11304A44FF40076DFF8CC80DFF8D0A0C1460024F6
|
||||
S11304B4D04799F80830AB4204D10C235C432D4B4C
|
||||
S11304C41C5906E001340F2C09F10C09F0D14FF04A
|
||||
S11304D4FF34DFF8A090DFF8A4A00025D04799F8F2
|
||||
S11304E40830BB4205D10C235D43224B53F80590DD
|
||||
S11304F406E001350F2D09F10C09EFD14FF0FF3956
|
||||
S1130504DFF878A00025D04798F80830BB4205D11D
|
||||
S1130514184B0C2202FB05356B6805E001350F2DE1
|
||||
S113052408F10C08EFD10023C4EB09099944B9FB81
|
||||
S1130534F6F91FFA89F90025DFF840800E4F06E02A
|
||||
S1130544C0472046B847A41948B90135ADB24D4552
|
||||
S1130554F6D30120BDE8F0872846BDE8F0870020E3
|
||||
S1130564BDE8F0870020BDE8F08700BF6D020000FD
|
||||
S1130574FE81E00FC817000001000020A30A000058
|
||||
S11305840F4B01B51A68013217D05A68996842F2C0
|
||||
S1130594B8008918DA6889181A6989185A6989188F
|
||||
S11305A49A698918DA698B185B4201AA42F8043DF6
|
||||
S11305B404216A46034B984700E0012008BD00BFAC
|
||||
S11305C4440100201104000042F2040318684FF4AB
|
||||
S11305D400531B68C01842F208031B68C01842F297
|
||||
S11305E40C031B68C01842F210031B68C01842F2C3
|
||||
S11305F414031B68C01842F218031B68C01842F2A3
|
||||
S1130604B8031B68C018D0F1010038BF002070473C
|
||||
S1130614094800B50368013302D0084B984748B130
|
||||
S113062407480368013302D0044B984710B1054BC3
|
||||
S1130634984701205DF804FB44010020A90200004E
|
||||
S113064448030020191500004FF4005070470000BF
|
||||
S113065400B5024B98475DF804FB00BFED030000AE
|
||||
S113066400B5024B98475DF804FB00BF1104000079
|
||||
S113067400B5024B98475DF804FB00BF6104000019
|
||||
S113068400B5024B98475DF804FB00BFCD0500009C
|
||||
S113069400B5024B98475DF804FB00BF4D0600000B
|
||||
S11306A400B5034B984708B1024B98475DF804FB27
|
||||
S11306B48505000015060000054B002243F2AF61D6
|
||||
S11306C41A60596005219A601960024B1A607047D8
|
||||
S11306D410E000E04C050020014B00221A60704732
|
||||
S11306E410E000E0044B1B68DB0303D5034B1A68DA
|
||||
S11306F401321A60704700BF10E000E04C0500208E
|
||||
S113070400B5034B9847034B18685DF804FB00BF1E
|
||||
S1130714E90600004C05002030B5204D86B06C4637
|
||||
S11307240FCD0FC495E8030084E803001C4C012199
|
||||
S11307341C48A0471C4D0220062104220123A8477B
|
||||
S11307440122002302200721A8470121174D18483C
|
||||
S1130754A04702211748184B984728460121174BF4
|
||||
S1130764984728460121A047154C002506A941F8BD
|
||||
S1130774185D20466946134B9847204629464FF492
|
||||
S11307841652114B9847032363650423636320467D
|
||||
S113079405210E4B984706B030BD00BF7C180000FD
|
||||
S11307A41510000000C20200751300004015160065
|
||||
S11307B4002304000300120081120000E90E00006B
|
||||
S11307C40044084081140000051400005114000082
|
||||
S11307D42DE9F043CDB2402D814603D91A486C214A
|
||||
S11307E41A4B98471A4CA368D8060AD520462946BA
|
||||
S11307F4184B9847184E00E0B047A368D906FBD5B8
|
||||
S113080403E011487021114B9847114E0024124FF4
|
||||
S1130814B04614E0B847B36819F80410DA0609D5E9
|
||||
S11308240B480C4B984700E0B847D8F80830DB066F
|
||||
S1130834FAD503E004487921044B98470134A3B260
|
||||
S1130844AB42E7D3BDE8F08394180000110900001B
|
||||
S113085400440840DD140000A30A00002DE9F0411F
|
||||
S1130864224C0746267822489EB9C56A15F0040529
|
||||
S113087438D0204B9847204B1870002831D01F4B98
|
||||
S113088498471F4B354618601E4B1E700123237076
|
||||
S113089428E0C56A1B4E15F0040596F800800ED0B6
|
||||
S11308A4144B984714493378884488F80100013379
|
||||
S11308B40A78DBB29A42337009D0002512E00F4B58
|
||||
S11308C498470F4B1B686433984208D80AE00E4BD0
|
||||
S11308D438460131984700232370012502E025702E
|
||||
S11308E400E005462846BDE8F08100BF5505002018
|
||||
S11308F400440840D11400005605002005070000F8
|
||||
S1130904500500205405002049020000034B00B5A3
|
||||
S11309141860034B034C1960A047FDE798050020B9
|
||||
S11309249C050020A30A000010B50A4B984701282F
|
||||
S11309340FD0094C2378012B0BD1084B9847084B53
|
||||
S11309441B6803F5FA73984203D300232370054B01
|
||||
S1130954984710BD910A0000A00500200507000077
|
||||
S1130964A405002005020000054B012200B51A70FD
|
||||
S1130974044B9847044B1860044B98475DF804FBF8
|
||||
S1130984A005002005070000A40500202D0900008F
|
||||
S113099400B5074B9847074B9847074B9847074BB5
|
||||
S11309A49847074B9847074B98475DF804FB00BFEB
|
||||
S11309B4F5010000A10A0000BD0600005506000070
|
||||
S11309C4F50900006D09000000B5054B9847054B77
|
||||
S11309D49847054B9847054B98475DF804FB00BFBF
|
||||
S11309E4A30A0000E9060000150A00002D0900000E
|
||||
S11309F400B5044B9847044B9847044B00221A60F3
|
||||
S1130A045DF804FBB90A00001D070000380100204A
|
||||
S1130A1400B50648064B9847012805D1054B00222A
|
||||
S1130A241A600248044B98475DF804FBA8050020AB
|
||||
S1130A346108000038010020F50A00007047000036
|
||||
S1130A44054B00B51B6889B213B9C9B2034B984767
|
||||
S1130A54034B98475DF804FB38010020D5070000D8
|
||||
S1130A64E50A0000034B1868013802288CBF4020B3
|
||||
S1130A740020704738010020034B1868013802280D
|
||||
S1130A848CBF4020002070473801002000B5024B81
|
||||
S1130A9498475DF804FB00BFD50A0000704770470F
|
||||
S1130AA4034BFE22DA7002221871A3F84420704723
|
||||
S1130AB4E8050020054B00221A709A6483F8432049
|
||||
S1130AC4A3F844209A705A70704700BFE8050020C8
|
||||
S1130AD4024B1878003018BF01207047E805002045
|
||||
S1130AE4024B002283F84320704700BFE80500202E
|
||||
S1130AF42DE9F04103780546FF2B824C13D10022E3
|
||||
S1130B040125E370102362706271237125707E4B9A
|
||||
S1130B1498477E4EA071B047E071B047000A207236
|
||||
S1130B246572A57272E02678012E40F0E980F32BF9
|
||||
S1130B3446D012D8CF2B00F0C28005D8C92B78D068
|
||||
S1130B44CC2B40F0C580C1E0D12B00F0B280C0F0C2
|
||||
S1130B548380D22B40F0BC809CE0FA2B49D006D889
|
||||
S1130B64F52B0CD013D3F62B40F0B28023E0FD2BED
|
||||
S1130B7450D0FE2B59D0FC2B40F0AA8048E0624BA5
|
||||
S1130B8498476A7890426DDD201DA16C08E05E4BA5
|
||||
S1130B9498476B78984265DD6968201DA1646A787A
|
||||
S1130BA45B4B9847FF23E3706A78A36CD318A36460
|
||||
S1130BB46B7801337AE0FF23E3704368A36482E033
|
||||
S1130BC4FF23E3700023A06C69681A4603E01C5CED
|
||||
S1130BD401331219D2B28B42F9D14A4BC3F807201C
|
||||
S1130BE401221A7100225A719A710822A3F844202E
|
||||
S1130BF471E0FF23E370474B0722A36400232371AE
|
||||
S1130C046371A371E27123726372A37208234DE0CA
|
||||
S1130C1400205EE0FF236278E37000232371A37154
|
||||
S1130C24E37123726271062340E00023237063702E
|
||||
S1130C3447E0354FD4F84880B8476A1C411E364B08
|
||||
S1130C4440469847002841D0FF23E370A56CB84779
|
||||
S1130C54013D2D18A56436E02B4B98476B78013879
|
||||
S1130C64984201DC222034E0FF23E370A4F84460BA
|
||||
S1130C74697821B9294B984700282CD126E0214CC6
|
||||
S1130C84AA1CA06C244B984700B36A78A36CD318AD
|
||||
S1130C94A36420E00025FF23E37025711A4B6571DA
|
||||
S1130CA49847E571A071257265720723A4F844304E
|
||||
S1130CB411E0A06C69681A4B984710B906E0194B07
|
||||
S1130CC49847FF23E370A4F8446004E0312000E073
|
||||
S1130CD42020154B98470B4C94F84330012B02D138
|
||||
S1130CE41020114B9847B4F8441006480BB2002B5B
|
||||
S1130CF406DD012380F8433089B203300B4B984757
|
||||
S1130D04BDE8F081E8050020690A00007D0A0000BE
|
||||
S1130D14490200001819000065060000A506000039
|
||||
S1130D247506000005020000A50A0000450A00003B
|
||||
S1130D341C4AD36A03F47053B3F5805F2DD0B3F522
|
||||
S1130D44005F03D0B3F5006F05D101E0164B00E05A
|
||||
S1130D54164B18687047D36803F4E063B3F5007F57
|
||||
S1130D6413D004D8ABB1B3F5807F14D10FE0B3F53D
|
||||
S1130D74806F15D0B3F5A06F03D0B3F5407F0AD1CB
|
||||
S1130D8401E00B4870470B4870470B4870470B4809
|
||||
S1130D9470470B487047002070474FF40040704779
|
||||
S1130DA40848704700800C403C01002040010020AA
|
||||
S1130DB4003FAB01809FD500C0D8A700C0CF6A0014
|
||||
S1130DC440420F00406F400100B5064B9847064B64
|
||||
S1130DD45B6803F00F0320FA03F0044B18605DF81A
|
||||
S1130DE404FB00BF350D000000800C4034060020D5
|
||||
S1130DF470474FF400407047014B1868704700BFB8
|
||||
S1130E043C0100200A494B6803F00702032A0CD86A
|
||||
S1130E14DFE802F00202070723F0070343F00103AB
|
||||
S1130E2403E023F0070343F003034B60704700BF60
|
||||
S1130E3400000C40104A10B5104C11498218A2420B
|
||||
S1130E444B680BD803F00702023A012A23F0070384
|
||||
S1130E5494BF43F0030343F001030BE0094A9042B7
|
||||
S1130E6408D803F00702023A012A23F0070398BFC3
|
||||
S1130E7443F002034B6010BDFFDB0BFFFF23F400C0
|
||||
S1130E8400000C400024F400034B5A6DD20702D432
|
||||
S1130E941A6D1042FCD1704700800C400D4B400089
|
||||
S1130EA49B6A00B523FA00F000F00300022805D081
|
||||
S1130EB4032807D001280AD1074B00E0074B9847C1
|
||||
S1130EC45DF804FB064B984740085DF804FB0020DA
|
||||
S1130ED45DF804FB00800C40F70D0000FD0D0000DC
|
||||
S1130EE4CD0D0000C0F30313013B10B50C46032BD6
|
||||
S1130EF47FD8DFE803F0020E2058B1FA81F43D4BA9
|
||||
S1130F04E4B29A68C4F11F0422F00F0214439C60F3
|
||||
S1130F1410BD394B9847B4FA84F4364BE4B25A689A
|
||||
S1130F24C4F11F0422F00F0214435C60334B98474E
|
||||
S1130F34334B984710BD334B984215D003F5F63321
|
||||
S1130F44984220D0A3F57F33984252D104202E4BEB
|
||||
S1130F549847B4FA84F4274BE4B29A6EC4F11F049C
|
||||
S1130F6422F00F0214431CE00420274B9847B4FAE0
|
||||
S1130F7484F4204BE4B29A6EC4F11F0422F0F0020C
|
||||
S1130F8442EA04140DE004201F4B9847B4FA84F495
|
||||
S1130F94184BE4B29A6EC4F10F0422F4407242EA8C
|
||||
S1130FA404249C6610BD194B984204D003F5043301
|
||||
S1130FB498421ED10EE04020134B9847B4FA84F4AF
|
||||
S1130FC40C4BE4B21A6FC4F11F0422F0030214435D
|
||||
S1130FD41C6710BD40200C4B9847B4FA84F4054BAD
|
||||
S1130FE4E4B21A6FC4F11F0422F0300242EA04147A
|
||||
S1130FF41C6710BD00800C40090E0000CD0D0000DC
|
||||
S1131004390E000030140A008D0E0000400514004F
|
||||
S1131014C0F30322013A70B50346CDB2052A20D8A1
|
||||
S1131024DFE802F0031206090C0F00200D4C0DE05A
|
||||
S113103400200D4C0AE001200C4C07E010200C4C5D
|
||||
S113104404E000200B4C01E00B4C0020C3F30436F5
|
||||
S113105408B10A4B984704F1047406EBC406B600BD
|
||||
S1131064356070BD08800C4040800C4058800C40B2
|
||||
S113107460800C4078800C4044800C408D0E00004D
|
||||
S113108400F00F000138032827D8DFE800F0041823
|
||||
S1131094220207207047134BD86A00F47050B0F54D
|
||||
S11310A4805F0AD0B0F5005F05D0B0F5006F0CBFC7
|
||||
S11310B40420052070470220704703207047094B21
|
||||
S11310C49B6A03F00303013B022B08D8064AD05C55
|
||||
S11310D47047044B01209B6A70470020704701202D
|
||||
S11310E4704700BF00800C402019000000F4781001
|
||||
S11310F4B0F5402F00B542D013D8B0F5802F2AD0D4
|
||||
S113110405D8002877D0B0F5003F78D11EE0B0F5BB
|
||||
S1131114002F24D0B0F5202F29D0B0F5C02F6ED1E4
|
||||
S11311241BE0B0F5A01F48D006D8B0F5602F2ED030
|
||||
S1131134B0F5901F63D13BE0B0F5C01F50D0B0F5BB
|
||||
S1131144D01F55D0B0F5B01F59D13EE02F4B98476E
|
||||
S11311542F4B9B6808E02F4B4EE0002029E02E4BD8
|
||||
S1131164002098472A4B9B6E03F00F0334E02A4B6C
|
||||
S113117400209847264B9B6EC3F303132CE0264BA5
|
||||
S113118400209847224B9B6EC3F3012324E0224B97
|
||||
S1131194002098471E4B9A6EDB6FC2F3012220FA9B
|
||||
S11311A402F003F007030133B0FBF3F05DF804FB32
|
||||
S11311B40120194B98475DF804FB174B012098470D
|
||||
S11311C4134B1B6F03F0030306E0134B01209847F2
|
||||
S11311D40F4B1B6FC3F3011320FA03F05DF804FBF8
|
||||
S11311E40E480F4B9847072802D008280AD102E07A
|
||||
S11311F40C485DF804FB054B98475DF804FB00209C
|
||||
S11312045DF804FB00205DF804FB00BF350D00000D
|
||||
S113121400800C40CD0D0000A10E00000400180055
|
||||
S113122485100000809FD50010B5C9B2D2B204283D
|
||||
S11312341FD8DFE800F00C09110306000120022383
|
||||
S11312440CE01020202309E04020802306E04FF422
|
||||
S113125480704FF4007301E004200823054C29B185
|
||||
S1131264206222B1E26A1342FCD000E02362024B02
|
||||
S1131274984710BD00800C404913000010B500F0DD
|
||||
S11312840F04012C03D04ED3032C4CD820E0023994
|
||||
S1131294032948D8DFE801F0020B050800200424E0
|
||||
S11312A407E00220044604E00320012401E00120B5
|
||||
S11312B4032401210A461C4B98471C4B98471C4B9A
|
||||
S11312C45C621C4B98471C4B98471C4B984710BDB9
|
||||
S11312D40139022C14BF02240024052923D8DFE891
|
||||
S11312E401F016030A22221101210F4B00200A46A1
|
||||
S11312F4984702230CE001200B4B01460246984711
|
||||
S1131304012305E00E4B01221A60032300E00023AD
|
||||
S1131314032003FA04F300FA04F4054A916A21EA67
|
||||
S113132404042343936210BD2D120000090E00002F
|
||||
S113133400800C4049130000CD0D0000390E00005C
|
||||
S113134408089043024BDA6A024B1A80704700BFC4
|
||||
S113135400800C403806002024225043034B1A58C2
|
||||
S113136422F0030211431950704700BF006000408B
|
||||
S1131374F0B562B124244443012504F1804405FA00
|
||||
S113138401F504F5C0440BB1256100E065614FF03B
|
||||
S1131394240404FB00F4072904F1804404F5C04444
|
||||
S11313A40BD88D000F2606FA05F602FA05F56768D0
|
||||
S11313B427EA0606354365600BE08D00203D0F26C1
|
||||
S11313C406FA05F602FA05F5A76827EA0606354380
|
||||
S11313D4A56062B924225043012400F1804004FA38
|
||||
S11313E401F100F5C0400BB10161F0BD4161F0BDF4
|
||||
S11313F4036CDB0702D4436C1942FCD17047000030
|
||||
S113140430B50446154661B90B4B984205D003F533
|
||||
S1131414806398420FD1094800E00948094B984772
|
||||
S113142401464901B1FBF5F5203DED0020460421B8
|
||||
S1131434054B9847E56030BD004008404015160050
|
||||
S113144440051400F1100000F513000030B5CD433D
|
||||
S113145405F00505044641EA4505024B0221984777
|
||||
S1131464656030BDF5130000C9B229B1436C002B8B
|
||||
S1131474FCD10123036470470164704770B5104BB9
|
||||
S11314840D460221044698470A236360204601213D
|
||||
S11314940C4EB0472969EB6822680B43696922F052
|
||||
S11314A41C020B431343236020466968AA68064B55
|
||||
S11314B498472B68204663600021B04770BD00BF85
|
||||
S11314C4F51300006D1400000514000083689A06E7
|
||||
S11314D4FCD5C069C0B2704730B50446CDB2A36828
|
||||
S11314E4D806FCD520464021014B9847A56230BD5F
|
||||
S11314F4F5130000064B9A6842F001029A6041F623
|
||||
S11315047132DA639A6822F001029A60704700BF6C
|
||||
S113151400000C40054B9A6842F001029A600022D4
|
||||
S1131524DA639A6822F001029A60704700000C4062
|
||||
S1131534064B1A6902F03F0202709A69DB6902F0F1
|
||||
S1131544F002C3F30313134343707047D0FF0FE057
|
||||
S1131554554B01B59847554B1B681B0E0ED1544B84
|
||||
S11315641A6822F070021A60524B1A6822F0604220
|
||||
S11315741A601A6862F060621A6001E0032B0BD8E7
|
||||
S11315844C4B1A6822F4FC521A604B4A0023136031
|
||||
S11315945360936113629363484B684698479DF87C
|
||||
S11315A40030012B10D19DF8013023B9424B1A6845
|
||||
S11315B442F002021A609DF80130012B04D8404B1A
|
||||
S11315C41A6842F001021A603E4B1A683E4B9A4272
|
||||
S11315D420D83B4B1A6842F490421A603B4A106884
|
||||
S11315E411681568146805F4FE4204F07F0422436C
|
||||
S11315F401F07F0142EA0141C0F30620344A41EA82
|
||||
S113160400611160334A1168334A11601A6822F484
|
||||
S113161490421A60012100200A46304B9847304B0F
|
||||
S1131624304C1A6C002142F00F021A645A6C2E4892
|
||||
S11316346FEA12426FEA02425A64A04700212B481F
|
||||
S1131644A04700212A48A04700212A48A047002196
|
||||
S11316542948A04700212948A04700212848A04739
|
||||
S113166400212848A04700212748A04700212748F3
|
||||
S1131674A04700212648A04700212648A04700216E
|
||||
S11316842548A04700212548A047012009210346F5
|
||||
S11316940522234CA04701200221224B9847224BC8
|
||||
S11316A49847224CA047FDE7F50D0000FC81E00FAC
|
||||
S11316B40CA00C4020600C4040800C403515000008
|
||||
S11316C444800C40F081E00FFFB98A4CB481E00FF0
|
||||
S11316D434200040C881E00F2C4000402D1200004B
|
||||
S11316E400800C40151000000003040000130400E3
|
||||
S11316F40033040000A202000002020000120200EF
|
||||
S11317040022020000320200007202000082020081
|
||||
S113171400B2020000E2020000F2020000D2020061
|
||||
S1131724751300005D13000095090000CD09000045
|
||||
S1131734433A2F576F726B2F736F667477617265B8
|
||||
S11317442F4F70656E424C542F5461726765742F29
|
||||
S113175444656D6F2F41524D434D335F45464D33C0
|
||||
S1131764325F4F6C696D65785F454D333247383865
|
||||
S1131774304631323853544B5F43726F7373776F0F
|
||||
S1131784726B732F426F6F742F6964652F2E2E2F23
|
||||
S11317942E2E2F2E2E2F2E2E2F536F757263652F00
|
||||
S11317A441524D434D335F45464D33322F43726F9F
|
||||
S11317B47373776F726B732F766563746F72732EA2
|
||||
S11317C4630000000020000000200000010000006D
|
||||
S11317D4004000000020000002000000006000003F
|
||||
S11317E4002000000300000000800000002000002E
|
||||
S11317F40400000000A00000002000000500000018
|
||||
S113180400C00000002000000600000000E000000A
|
||||
S11318140020000007000000000001000020000078
|
||||
S1131824080000000020010000200000090000005E
|
||||
S113183400400100002000000A00000000600100D4
|
||||
S1131844002000000B0000000080010000200000C4
|
||||
S11318540C00000000A00100002000000D000000A6
|
||||
S113186400C00100002000000E00000000E00100A0
|
||||
S1131874002000000F00000005000000000000002C
|
||||
S113188480250000000000000000000000000000AB
|
||||
S1131894433A2F576F726B2F736F66747761726557
|
||||
S11318A42F4F70656E424C542F5461726765742FC8
|
||||
S11318B444656D6F2F41524D434D335F45464D335F
|
||||
S11318C4325F4F6C696D65785F454D333247383804
|
||||
S11318D4304631323853544B5F43726F7373776FAE
|
||||
S11318E4726B732F426F6F742F6964652F2E2E2FC2
|
||||
S11318F42E2E2F2E2E2F2E2E2F536F757263652F9F
|
||||
S113190441524D434D335F45464D33322F75617219
|
||||
S1121914742E63004F70656E424C54000302063C
|
||||
S11319241B4B10B59A6842F001029A6001221861B7
|
||||
S1131934DA60DA69510706D59A684FF0FF3022F06D
|
||||
S113194401029A6010BDDA69920706D59A686FF0AD
|
||||
S1131954010022F001029A6010BD0222DA600D4AED
|
||||
S113196400E0013AD8690A4910F001000C4602D09B
|
||||
S1131974002AF6D100E032B9A3686FF0020023F024
|
||||
S11319840103A36010BD8B6823F001038B6010BDB9
|
||||
S113199400000C40809698002D4B2DE9F0419C6882
|
||||
S11319A4921044F001049C6000254FF001081F4686
|
||||
S11319B44FF0080C41E01861C3F80C80DE6916F09E
|
||||
S11319C4040F07D0A3684FF0FF3023F00103A36092
|
||||
S11319D4BDE8F081DE6916F0020F09D0A3686FF048
|
||||
S11319E4010023F00103A360BDE8F081013C00E0A1
|
||||
S11319F4184CDE6916F0080F154E02D1002CF5D1EF
|
||||
S1131A0412E08CB151F8044BBC61C7F80CC0114C02
|
||||
S1131A1400E0013CDE6916F0010F0D4E02D0002CEB
|
||||
S1131A24F7D101E004303CB9B3686FF0020023F04D
|
||||
S1131A340103B360BDE8F08101359542044CBADB7F
|
||||
S1131A44A368002023F00103A360BDE8F08100BF74
|
||||
S10B1A5400000C40809698008C
|
||||
S10F1A5C04000000008000000048E801C5
|
||||
S11300009C070020B9000000DD010000DD010000B4
|
||||
S1130010DD010000DD010000DD010000DD01000064
|
||||
S1130020DD010000DD010000DD010000DD01000054
|
||||
S1130030DD010000DD010000DD010000DD01000044
|
||||
S1130040DD010000DD010000DD010000DD01000034
|
||||
S1130050DD010000DD010000DD010000DD01000024
|
||||
S1130060DD010000DD010000DD010000DD01000014
|
||||
S1130070DD010000DD010000DD010000DD01000004
|
||||
S1130080DD010000DD010000DD010000DD010000F4
|
||||
S1130090DD010000DD010000DD010000DD010000E4
|
||||
S11300A0DD010000DD010000DD010000DD010000D4
|
||||
S10B00B0DD010000DD01000088
|
||||
S11300B82E49072291438D462D492E480A1A06D007
|
||||
S11300C80722914381F30988022282F314882A487B
|
||||
S11300D82A492B4A00F039F82A482B492B4A00F0C0
|
||||
S11300E834F82B482B492C4A00F02FF82B482C497C
|
||||
S11300F82C4A00F02AF82C482C492D4A00F025F8FF
|
||||
S11301082C482D492D4A00F020F82D482D4900226D
|
||||
S113011800F026F82C482D49091A082903DB002287
|
||||
S11301280260043001601E481E49884205D00268F6
|
||||
S1130138043003B4904703BCF7E700208646EC4636
|
||||
S113014800200021224A9047FEE7884207D0521A2D
|
||||
S113015805D0037801300B700131013AF9D17047A9
|
||||
S1130168884202D002700130FAE770479C070020E9
|
||||
S11301789C0700209C07002078190000200100201B
|
||||
S11301882C010020DC010000DC01000070160000D6
|
||||
S113019858180000000000202001002070160000FC
|
||||
S11301A8701600007016000070160000701600002B
|
||||
S11301B87016000070160000701600005718000032
|
||||
S11301C82C0100201A0600201C0600209C06002092
|
||||
S10701D88D1400007E
|
||||
S11301DC38210148014B184770160000B108000083
|
||||
S11301EC72B6704762B67047004B1847ED010000B9
|
||||
S11301FC10B50C4B984798B10B4B98470B4C0C4BC8
|
||||
S113020C9847A0470B4B20F0604020F07F0018600B
|
||||
S113021CA0474468084B98472346BDE8104018474C
|
||||
S113022C10BD00BF59060000D9090000610600008A
|
||||
S113023CA506000008ED00E0F1010000F8B5013A54
|
||||
S113024C054F4D1E5618441AB54204D015F8013FFB
|
||||
S113025C6355B847F8E7F8BD270A00002DE9F041CB
|
||||
S113026C05460C4F0C4E00244FF00C08B84708FB05
|
||||
S113027C04F39959A94207D833445A680A4495425D
|
||||
S113028C02D2187ABDE8F08101340F2CEED1FF2094
|
||||
S113029CBDE8F081270A0000041700002DE9F3479C
|
||||
S11302AC134B054600689847FF2801D100201BE03A
|
||||
S11302BCDFF84080DFF840900024261D2F68AB59EE
|
||||
S11302CC04EB070A0193C04704220DEB02015046CC
|
||||
S11302DCC8470028EAD1E259019B9A42E6D1B6F507
|
||||
S11302EC007F3446E9D1012002B0BDE8F08700BF9D
|
||||
S11302FC69020000270A00000100002038B5114BE8
|
||||
S113030C044698420D4606D0B1F5005F05D00E4B5D
|
||||
S113031C984718B911E00D4C00E01C46C5F30803CE
|
||||
S113032C5BB923689D420AD020464FF4007240F812
|
||||
S113033C045B2946064B984701E0002038BD204653
|
||||
S113034C38BD00BF2C010020A9020000300300209E
|
||||
S113035C490200002DE9F84F9846036821F4FF7612
|
||||
S113036C013304460D46174626F0010606D140F823
|
||||
S113037C046B4FF400723146184B984723689E4225
|
||||
S113038C08D020463146164B9847044610B9002035
|
||||
S113039CBDE8F88FB9462368DFF848A0ED1A254468
|
||||
S11303ACDFF83CB0043506F50076D047231DEB1A74
|
||||
S11303BCB3F5007F06D320463146D84704460028BF
|
||||
S11303CCE5D0051D19F8013B05F8013BC9EB080301
|
||||
S11303DCDF42EAD10120BDE8F88F00BF49020000DA
|
||||
S11303EC09030000270A000008B5044B9847044A87
|
||||
S11303FC4FF0FF331360034A136008BD311400003F
|
||||
S113040C300300202C0100202DE9F0410F4E04464E
|
||||
S113041C0D461746B047FF2815D0681E2044B04738
|
||||
S113042CFF2810D024F4FF7323F00103084EB3F516
|
||||
S113043C005F3A462B462146B446BDE8F0410CBF5A
|
||||
S113044C0448054860470020BDE8F08169020000BB
|
||||
S113045C610300002C010020300300202DE9F84F2B
|
||||
S113046C394E0C460746B0470546601E3844B04723
|
||||
S113047C8542814602D90020BDE8F88F6B1EDBB2A1
|
||||
S113048CFD2BF8D80F28F6D8304B1B78472B08D007
|
||||
S113049C492B06D0482B0CBF4FF480564FF4006602
|
||||
S11304AC01E04FF40076DFF8A880DFF8A8B0002450
|
||||
S11304BCC0470C2303FB04B31A7A254FAA42DFF876
|
||||
S11304CC94A001D11D6804E001340F2CF0D14FF03D
|
||||
S11304DCFF3500244FF00C08B84708FB04A31A7A24
|
||||
S11304EC4A4501D11C6804E001340F2CF4D14FF0BF
|
||||
S11304FCFF344FF000084FF00C0BB8470BFB08A36C
|
||||
S113050C1A7A4A4501D15B6805E008F10108B8F193
|
||||
S113051C0F0FF2D10023641B1C44B4FBF6F4DFF878
|
||||
S113052C3890A4B24FF000081FFA88F3A34208D203
|
||||
S113053CB8472846C84708F1010835440028F3D0C9
|
||||
S113054C99E70120BDE8F88F69020000FE81E00FF5
|
||||
S113055C270A000004170000AD0000200F4B07B55C
|
||||
S113056C1A68013216D09A68596842F2B8001144DC
|
||||
S113057CDA6811441A6911445A6911449A6911448C
|
||||
S113058CDA698B185B4202AA42F8043D0421044B3D
|
||||
S113059C984700E0012003B05DF804FB2C01002017
|
||||
S11305AC150400004FF400531A6842F204031B684C
|
||||
S11305BC134442F208021268134442F20C02126809
|
||||
S11305CC134442F21002116842F2140212680B44F2
|
||||
S11305DC1A4442F218031B68134442F2B80212681C
|
||||
S11305ECD3420CBF01200020704700000B4808B513
|
||||
S11305FC0368013304D10A480368013306D109E0C6
|
||||
S113060C084B98470028F6D1002008BD054B9847A5
|
||||
S113061C0028F9D0044B9847012008BD2C01002078
|
||||
S113062C30030020A9020000511400004FF40050C4
|
||||
S113063C70470000004B1847F5030000004B1847A7
|
||||
S113064C15040000004B184769040000004B1847C0
|
||||
S113065CB1050000004B18473906000010B5044BD7
|
||||
S113066C984718B1BDE81040024B184710BD00BFA5
|
||||
S113067C69050000F905000043F2AF61044B002248
|
||||
S113068C1A60596005219A601960024B1A60704710
|
||||
S113069C10E000E034050020014B00221A60704782
|
||||
S11306AC10E000E0044B1B68DB0341BF034A1368F2
|
||||
S11306BC01331360704700BF10E000E034050020E4
|
||||
S11306CC08B5024B9847024B186808BDB1060000E8
|
||||
S11306DC340500207FB51D4B1D4C0FCB8DE80F004E
|
||||
S11306EC01211C48A0471C4E012304220621022090
|
||||
S11306FCB0470122002307210220B047174E0121E5
|
||||
S113070C1748A04702211748174B98473046174BF8
|
||||
S113071C0121984730460121A047154C0026694613
|
||||
S113072C2046144B8DF8006098474FF4165231460E
|
||||
S113073C2046114B98470323636504236363052107
|
||||
S113074C20460E4B984704B070BD00BFB81700008C
|
||||
S113075C8D0F000000C20200D112000040151600DB
|
||||
S113076C0023040003001200DD110000610E0000E0
|
||||
S113077C00440840C113000059130000A5130000E5
|
||||
S113078C40292DE9F84380460F4603D96C211948BA
|
||||
S113079C194B9847194CA368D80609D539462046F5
|
||||
S11307AC174B9847174DA368D90605D4A847FAE701
|
||||
S11307BC70211048104B9847124E4546B146C8EB71
|
||||
S11307CC05039BB29F4212D9B047A368DA0608D539
|
||||
S11307DC29780A480A4B9847A368DB0605D4C8470E
|
||||
S11307ECFAE779210348044B98470135E7E7BDE85C
|
||||
S11307FCF88300BFC8170000B1080000004408408B
|
||||
S113080C15140000270A0000F8B51E4D06462C7876
|
||||
S113081C1D489CB9C36A5B0701D4002430E01B4B10
|
||||
S113082C98471B4B18700028F7D01A4B98471A4B53
|
||||
S113083C18601A4B1C7001232B7021E0C46A14F04D
|
||||
S113084C040415D0154C114B27789847104923787C
|
||||
S113085C0F44787001330A78DBB29A422370DCD1EE
|
||||
S113086C0F4B01313046984700232B70012407E0CD
|
||||
S113087C084B9847084B1B6864339842CDD92C70AD
|
||||
S113088C2046F8BD38050020004408400914000037
|
||||
S113089C40050020CD0600003C0500208105002009
|
||||
S11308AC4902000008B5014CA047FDE7270A0000E7
|
||||
S11308BC10B50B4B9847012811D00A4C2378012B07
|
||||
S11308CC0DD1094B9847094B1B6803F5FA739842F1
|
||||
S11308DC05D300232370BDE81040054B184710BD09
|
||||
S11308EC1D0A000082050020CD06000084050020AE
|
||||
S11308FCFD010000054B012210B51A70044B9847FA
|
||||
S113090CBDE81040034B1860034B184782050020C8
|
||||
S113091CCD06000084050020BD08000010B5074B6F
|
||||
S113092C9847074B9847074B9847074B9847074BF3
|
||||
S113093C9847BDE81040064B184700BFF50100006E
|
||||
S113094C250A000085060000410600008909000004
|
||||
S113095C0109000010B5054B9847054B9847054B0A
|
||||
S113096C9847BDE81040044B184700BF270A000005
|
||||
S113097CB1060000A9090000BD08000008B5044B2D
|
||||
S113098C9847044B9847044B00221A7008BD00BFCB
|
||||
S113099C3D0A0000E10600002001002010B50748C4
|
||||
S11309AC074B9847012807D1BDE81040054B00229E
|
||||
S11309BC1A700248044B184710BD00BF880500206C
|
||||
S11309CC1508000020010020790A0000704700007F
|
||||
S11309DC054B10B51B7813B9C9B2044B9847BDE845
|
||||
S11309EC1040034B184700BF200100208D07000066
|
||||
S11309FC690A0000034B1B78013B022B8CBF40207F
|
||||
S1130A0C0020704720010020004B1847010A000009
|
||||
S1130A1C004B1847590A000070477047034BFE22DD
|
||||
S1130A2CDA7002221871A3F844207047C80500201C
|
||||
S1130A3C054B00221A709A6483F84320A3F84420CF
|
||||
S1130A4C9A705A70704700BFC8050020024B187882
|
||||
S1130A5C003018BF01207047C8050020024B00224B
|
||||
S1130A6C83F84320704700BFC80500202DE9F041EE
|
||||
S1130A7C03780546FF2B814C18D1E3701023002218
|
||||
S1130A8C012523717E4B62706271257098477D4EEF
|
||||
S1130A9CA071B047E071B0470823000AA4F84430B1
|
||||
S1130AAC794B20726572A5729847CFE02678012E97
|
||||
S1130ABC40F0E180F32B53D01ED8CF2B00F0BA803A
|
||||
S1130ACC05D8C92B7FD0CC2B00F0BB80BBE0D12B3D
|
||||
S1130ADC00F0AA80C0F08A80D22B40F0B480FF23AF
|
||||
S1130AEC0025E370664B257165719847E571A0711B
|
||||
S1130AFC25726572072394E0FA2B46D00AD8F52B9D
|
||||
S1130B0C11D019D3F62B40F09E80FF23E370436879
|
||||
S1130B1CA36493E0FD2B47D0FE2B50D0FC2B40F06C
|
||||
S1130B2C9280002090E0564B98476A78904201DC02
|
||||
S1130B3C222089E0A16C07E0514B98476B789842CE
|
||||
S1130B4CF6DD6968A1646A78504B201D9847FF2331
|
||||
S1130B5CE3706B78A26C1344A3646B78013360E08C
|
||||
S1130B6CFF23E370A26C4168002311448A4204D031
|
||||
S1130B7C12F8010B0344DBB2F8E7C4F80730012385
|
||||
S1130B8C237100236371A3710CE0FF23E370404BCA
|
||||
S1130B9C0722A364002323716371A371E27123728E
|
||||
S1130BAC6372A37208233CE0FF236278E370002392
|
||||
S1130BBC2371A371E37123726271062331E0002364
|
||||
S1130BCC2370637038E02E4FD4F84880B8476A1C01
|
||||
S1130BDC411E304B40469847002832D0FF23E37027
|
||||
S1130BECB847A36C01381844A06427E0244B9847F9
|
||||
S1130BFC6B78013898429BDDFF23E370A4F84460C2
|
||||
S1130C0C697819B9244B984700BB1AE0AA1CA06C4C
|
||||
S1130C1C204B1A4E9847A0B16B78B26C1344B36452
|
||||
S1130C2C14E0A4F8443011E041681C4BA06C9847C4
|
||||
S1130C3C10B906E01A4B9847FF23E370A4F84460FC
|
||||
S1130C4C04E0312000E02020164B984794F8433000
|
||||
S1130C5C012B02D11020134B9847B4F944100748C8
|
||||
S1130C6C002908DD012380F8433089B203300E4B90
|
||||
S1130C7CBDE8F0411847BDE8F08100BFC80500206D
|
||||
S1130C8C150A0000010A0000410600004902000098
|
||||
S1130C9C4C180000490600006906000051060000CB
|
||||
S1130CACFD010000290A0000DD0900001B4AD36A7B
|
||||
S1130CBC03F47053B3F5805F2AD0B3F5005F04D00E
|
||||
S1130CCCB3F5006F04D1164B00E0164B186870474F
|
||||
S1130CDCD36803F4E063B3F5007F13D005D89BB15C
|
||||
S1130CECB3F5807F12D110487047B3F5806F07D0ED
|
||||
S1130CFCB3F5A06F0FD0B3F5407F07D10B48704705
|
||||
S1130D0C0B4870470B4870470B48704700207047DE
|
||||
S1130D1C4FF4004070470948704700BF00800C40F6
|
||||
S1130D2C2801002024010020C0CF6A00809FD50038
|
||||
S1130D3C406F4001C0D8A70040420F00003FAB01F8
|
||||
S1130D4C08B5054B9847054B5B6803F00F03D84077
|
||||
S1130D5C034B186008BD00BFB90C000000800C40A8
|
||||
S1130D6C1406002070474FF400407047014B18687C
|
||||
S1130D7C704700BF240100200A4A536803F007019E
|
||||
S1130D8C03290CD8DFE801F00202070723F007035C
|
||||
S1130D9C43F0010303E023F0070343F00303536020
|
||||
S1130DAC704700BF00000C40104910B5104C114A9C
|
||||
S1130DBC0144A14253680BD803F0070102390129FD
|
||||
S1130DCC23F0070394BF43F0030343F001030BE048
|
||||
S1130DDC0949884208D803F007010239012923F094
|
||||
S1130DEC070398BF43F00203536010BDFFDB0BFFF6
|
||||
S1130DFCFF23F40000000C400024F400034B5A6D54
|
||||
S1130E0CD20702D41A6D1042FCD1704700800C40FA
|
||||
S1130E1C0C4B40009B6A10B523FA00F000F0030061
|
||||
S1130E2C022805D0032807D0012809D1064B00E07D
|
||||
S1130E3C064BBDE810401847054B9847400810BDB9
|
||||
S1130E4C002010BD00800C40730D0000790D0000D3
|
||||
S1130E5C4D0D0000C0F30313013B10B50C46032BDE
|
||||
S1130E6C7FD8DFE803F0020E2159B1FA81F43D4A30
|
||||
S1130E7CE4B29368C4F11F0423F00F031C43946081
|
||||
S1130E8C10BD394B9847B4FA84F4364AE4B253682B
|
||||
S1130E9CC4F11F0423F00F031C435460334B9847D5
|
||||
S1130EACBDE81040324B1847324B984215D003F52D
|
||||
S1130EBCF633984221D0A3F57F33984251D10420C4
|
||||
S1130ECC2D4B9847B1FA81F4264AE4B2936EC4F1DF
|
||||
S1130EDC1F0423F00F031C430DE00420264B9847FA
|
||||
S1130EECB1FA81F41F4AE4B2936EC4F11F0423F0E7
|
||||
S1130EFCF00343EA0414946610BD04201E4B984777
|
||||
S1130F0CB1FA81F4174AE4B2936EC4F10F0423F4DA
|
||||
S1130F1C407343EA0424EEE7184B984204D003F5DB
|
||||
S1130F2C043398420ED010BD4020134B9847B1FAAD
|
||||
S1130F3C81F40C4AE4B2136FC4F11F0423F00303CD
|
||||
S1130F4C1C430DE040200C4B9847B1FA81F4054A40
|
||||
S1130F5CE4B2136FC4F11F0423F0300343EA041406
|
||||
S1130F6C146710BD00800C40850D00004D0D000071
|
||||
S1130F7CB50D000030140A00090E000040051400E1
|
||||
S1130F8CC0F30322013A38B50346052A20D8DFE81A
|
||||
S1130F9C02F0120306090C0F00200E4D0DE0002088
|
||||
S1130FAC0D4D0AE001200D4D07E010200C4D04E01E
|
||||
S1130FBC00200C4D01E00C4D0020C3F3043408B1A7
|
||||
S1130FCC0A4B984705F1047304EBC3039B001960A7
|
||||
S1130FDC38BD00BF44800C4040800C4058800C400D
|
||||
S1130FEC60800C4078800C4008800C40090E000096
|
||||
S1130FFC00F00F000138032803D8DFE800F00416D2
|
||||
S113100C202300207047124BDB6A03F47053B3F5B2
|
||||
S113101C805F08D0B3F5005F16D0B3F5006F0CBF3A
|
||||
S113102C04200520704703207047094B9B6A03F08A
|
||||
S113103C0303013B022B09D8064AD05C7047044BCE
|
||||
S113104C9B6A03E007207047022070470120704719
|
||||
S113105C00800C405418000000F47810B0F5402FB8
|
||||
S113106C10B548D018D8B0F5802F32D009D8002844
|
||||
S113107C6FD0B0F5003F6AD1394B9847394B9B6818
|
||||
S113108C2EE0B0F5002F26D0B0F5202F2BD0B0F5E4
|
||||
S113109CC02F5CD1002046E0B0F5A01F47D007D884
|
||||
S11310ACB0F5602F2FD0B0F5901F50D101203AE04D
|
||||
S11310BCB0F5C01F44D0B0F5D01F4ED0B0F5B01F62
|
||||
S11310CC45D1294B01209847264B1B6FC3F30113C1
|
||||
S11310DC34E0264B3EE0244B00209847214B9B6E7A
|
||||
S11310EC03F00F032AE0204B002098471D4B9B6E06
|
||||
S11310FCC3F3031322E01C4B00209847194B9B6E3F
|
||||
S113110CC3F301231AE0184B00209847154A936E39
|
||||
S113111CC3F3012320FA03F3D06F00F0070001306E
|
||||
S113112CB3FBF0F010BD104BBDE8104018470E4B4C
|
||||
S113113C012098470B4B1B6F03F00303D84010BDE1
|
||||
S113114C0B480C4B9847072807D0082801D00020DF
|
||||
S113115C10BD034BBDE810401847074810BD00BF35
|
||||
S113116CB90C000000800C401D0E00004D0D000059
|
||||
S113117C04001800FD0F0000809FD50010B4042853
|
||||
S113118C20D8DFE800F00C09031106000420082322
|
||||
S113119C0CE01020202309E04020802306E04FF4CB
|
||||
S11311AC80704FF4007301E001200223064C29B136
|
||||
S11311BC206222B1E26A1342FCD000E02362034BAA
|
||||
S11311CC10BC184710BC704700800C40A5120000DE
|
||||
S11311DC00F00F00012810B503D04ED3032822D9F8
|
||||
S11311EC10BD0239032948D8DFE801F00B020508C9
|
||||
S11311FC0120032407E00220044604E00320012418
|
||||
S113120C01E000200424012211461C4B98471C4B7E
|
||||
S113121C98471C4B5C621C4B98471C4B9847BDE889
|
||||
S113122C10401B4B1847022801F1FF310CBF00245E
|
||||
S113123C0224052921D8DFE801F016030A20201125
|
||||
S113124C01220E4B11460020984702230CE0012288
|
||||
S113125C0A4B114610469847012305E00D4B012219
|
||||
S113126C1A60032300E0002306480322816AA2408B
|
||||
S113127C21EA0202A3401343836210BD89110000CA
|
||||
S113128C850D000000800C40A51200004D0D0000DF
|
||||
S113129CB50D000008089043024BDA6A024B1A8021
|
||||
S11312AC704700BF00800C401806002024235843CC
|
||||
S11312BC00F1804000F5C040036823F00303194398
|
||||
S11312CC01607047F0B55AB124244443012504F15C
|
||||
S11312DC80448D4004F5C0440BB1256100E0656188
|
||||
S11312EC24244443072904F1804404F5C0440AD857
|
||||
S11312FC67688D000F26AE4027EA060602FA05F54C
|
||||
S113130C354365600CE001F18045083DA768AD00EC
|
||||
S113131C0F26AE4027EA060602FA05F53543A5600A
|
||||
S113132C62B924225043012400F1804004FA01F1F3
|
||||
S113133C00F5C0400BB10161F0BD4161F0BD036C1F
|
||||
S113134CDB0702D4436C0B42FCD1704738B504461E
|
||||
S113135C154661B90B4B984205D003F5806398424E
|
||||
S113136C0FD1094800E00948094B98470146490147
|
||||
S113137CB1FBF5F22046203A0421064BD2009847E3
|
||||
S113138CE26038BD004008404015160040051400CA
|
||||
S113139C651000004B130000CB435B0003F00A0301
|
||||
S11313AC41EA030210B50221014B9847426010BD7B
|
||||
S11313BC4B13000070B50F4B0D46022104469847A1
|
||||
S11313CC0A234360666C002EFCD10123236423683A
|
||||
S11313DC297B6A7B23F01C030B431A43AB7B6968A0
|
||||
S11313EC13432360AA68044B204698472B78636008
|
||||
S11313FC266470BD4B1300005913000083689B06D0
|
||||
S113140CFCD5C069C0B2704710B502460C4693684F
|
||||
S113141CDB06FCD540211046014B9847946210BD65
|
||||
S113142C4B130000064B9A6842F001029A6041F695
|
||||
S113143C7132DA639A6822F001029A60704700BF35
|
||||
S113144C00000C40054B9A6842F001029A6000229D
|
||||
S113145CDA639A6822F001029A60704700000C402B
|
||||
S113146C06490B6903F03F0303708B6903F0F00228
|
||||
S113147CCB69C3F30313134343707047D0FF0FE0DE
|
||||
S113148C564B07B59847564B1B681B0E0ED1554A45
|
||||
S113149C136823F070031360534B1A6822F06042F4
|
||||
S11314AC1A601A6862F060621A6001E0032B0DD8AE
|
||||
S11314BC4D4A136823F4FC53136002F500520023C5
|
||||
S11314CC203213605360936113629363474B01A8FA
|
||||
S11314DC98479DF80430012B0FD19DF805302BB99A
|
||||
S11314EC434A136843F00203136001E0012B04D850
|
||||
S11314FC404A136843F0010313603F4B1A683F4B97
|
||||
S113150C9A4220D83B4C3E48236843F490432360D2
|
||||
S113151C036801681B0403F0FE420368006803F4CB
|
||||
S113152CFE45090400F07F032B4301F4FE010B4339
|
||||
S113153C1343344A1360344B1A68344B1A602368CF
|
||||
S113154C23F490432360012211460020304B98472A
|
||||
S113155C304A314C136C002143F00F031364536C69
|
||||
S113156C2E486FEA13436FEA03435364A0470021E8
|
||||
S113157C2B48A04700212B48A04700212A48A0470C
|
||||
S113158C00212A48A04700212948A04700212948C6
|
||||
S113159CA04700212848A04700212848A047002143
|
||||
S11315AC2748A04700212748A04700212648A047E8
|
||||
S11315BC00212648A04700212548A04701230522E5
|
||||
S11315CC18460921234CA04702210120224B98479D
|
||||
S11315DC224B9847224CA047FDE700BF710D000039
|
||||
S11315ECFC81E00F0CA00C4020600C406D1400003A
|
||||
S11315FC40800C4044800C40F081E00FFFB98A4CD1
|
||||
S113160CB481E00F34200040C881E00F2C4000402E
|
||||
S113161C8911000000800C408D0F000000030400B1
|
||||
S113162C001304000033040000A2020000020200B4
|
||||
S113163C00120200002202000032020000720200BA
|
||||
S113164C0082020000B2020000E2020000F202007A
|
||||
S113165C00D20200D1120000B912000029090000C6
|
||||
S107166C610900000C
|
||||
S1131670433A2F576F726B2F736F6674776172657D
|
||||
S11316802F4F70656E424C542F5461726765742FEE
|
||||
S113169044656D6F2F41524D434D335F45464D3385
|
||||
S11316A0325F4F6C696D65785F454D33324738382A
|
||||
S11316B0304631323853544B5F43726F7373776FD4
|
||||
S11316C0726B732F426F6F742F6964652F2E2E2FE8
|
||||
S11316D02E2E2F2E2E2F2E2E2F536F757263652FC5
|
||||
S11316E041524D434D335F45464D33322F43726F64
|
||||
S11316F07373776F726B732F766563746F72732E67
|
||||
S11317006300000000200000002000000100000031
|
||||
S11317100040000000200000020000000060000003
|
||||
S113172000200000030000000080000000200000F2
|
||||
S11317300400000000A000000020000005000000DC
|
||||
S113174000C00000002000000600000000E00000CF
|
||||
S1131750002000000700000000000100002000003D
|
||||
S11317600800000000200100002000000900000023
|
||||
S113177000400100002000000A0000000060010099
|
||||
S1131780002000000B000000008001000020000089
|
||||
S11317900C00000000A00100002000000D0000006B
|
||||
S11317A000C00100002000000E00000000E0010065
|
||||
S11317B0002000000F0000000500000000000000F1
|
||||
S11317C08025000000000000433A2F576F726B2FF2
|
||||
S11317D0736F6674776172652F4F70656E424C54F7
|
||||
S11317E02F5461726765742F44656D6F2F41524D9C
|
||||
S11317F0434D335F45464D33325F4F6C696D6578B9
|
||||
S11318005F454D3332473838304631323853544BC4
|
||||
S11318105F43726F7373776F726B732F426F6F7462
|
||||
S11318202F6964652F2E2E2F2E2E2F2E2E2F2E2E27
|
||||
S11318302F536F757263652F41524D434D335F458E
|
||||
S1131840464D33322F756172742E63004F70656E8E
|
||||
S10A1850424C5400030206A0
|
||||
S1131858284BF0B51E469C68921044F001049C6025
|
||||
S113186800254FF0010E4FF0080C9542214C3ADA4E
|
||||
S113187800EB85071F61C3F80CE0DF697F0706D515
|
||||
S1131888A3684FF0FF3023F00103A360F0BDDF69C4
|
||||
S1131898BF0701D4184C08E0A3686FF0010023F0D7
|
||||
S11318A80103A360F0BDACB1013CDF6917F0080F78
|
||||
S11318B8104FF8D074B151F82540B4610E4CC6F8F5
|
||||
S11318C80CC0DF6917F0010F0A4F02D014B1013CB4
|
||||
S11318D8F7E734B9BB686FF0020023F00103BB607B
|
||||
S11318E8F0BD0135C1E7A368002023F00103A3601C
|
||||
S11318F8F0BD00BF00000C40809698001A4B10B54C
|
||||
S11319089A6842F001029A6001221861DA60DA6981
|
||||
S1131918510706D59A684FF0FF3022F001029A6009
|
||||
S113192810BDDA69920706D59A686FF0010022F0B3
|
||||
S113193801029A6010BD0222DA600C4AD8690A4989
|
||||
S113194810F001000C4602D012B1013AF6E732B9A0
|
||||
S1131958A3686FF0020023F00103A36010BD8B6835
|
||||
S113196823F001038B6010BD00000C4080969800A2
|
||||
S10F197804000000008000000048E801AA
|
||||
S90300B943
|
||||
|
|
|
@ -1,19 +1,22 @@
|
|||
<!DOCTYPE CrossStudio_for_ARM_Session_File>
|
||||
<!DOCTYPE CrossStudio_Session_File>
|
||||
<session>
|
||||
<Bookmarks/>
|
||||
<Breakpoints/>
|
||||
<ExecutionProfileWindow/>
|
||||
<FrameBufferWindow>
|
||||
<FrameBufferWindow addressText="" bufferWidth="-1" bufferHeight="-1" addressSpace="" />
|
||||
</FrameBufferWindow>
|
||||
<Memory1>
|
||||
<MemoryWindow autoEvaluate="0" addressText="0x4000" numColumns="8" sizeText="128" dataSize="1" radix="16" name="openbtl_olimex_efm32g880" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="0x4000" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="128" viewMode="0" dataSize="1" radix="16" name="openbtl_olimex_efm32g880" addressSpace="" />
|
||||
</Memory1>
|
||||
<Memory2>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="openbtl_olimex_efm32g880" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="openbtl_olimex_efm32g880" addressSpace="" />
|
||||
</Memory2>
|
||||
<Memory3>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="openbtl_olimex_efm32g880" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="openbtl_olimex_efm32g880" addressSpace="" />
|
||||
</Memory3>
|
||||
<Memory4>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="openbtl_olimex_efm32g880" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="openbtl_olimex_efm32g880" addressSpace="" />
|
||||
</Memory4>
|
||||
<Project>
|
||||
<ProjectSessionItem path="EFM32G880_crossworks" name="unnamed" />
|
||||
|
@ -21,20 +24,18 @@
|
|||
<ProjectSessionItem path="EFM32G880_crossworks;openbtl_olimex_efm32g880;Source Files" name="unnamed" />
|
||||
<ProjectSessionItem path="EFM32G880_crossworks;openbtl_olimex_efm32g880;Source Files;Demo" name="unnamed" />
|
||||
<ProjectSessionItem path="EFM32G880_crossworks;openbtl_olimex_efm32g880;Source Files;Demo;Boot" name="unnamed" />
|
||||
<ProjectSessionItem path="EFM32G880_crossworks;openbtl_olimex_efm32g880;Source Files;Demo;Boot;Lib" name="unnamed" />
|
||||
<ProjectSessionItem path="EFM32G880_crossworks;openbtl_olimex_efm32g880;Source Files;Demo;Boot;Lib;Cmsis" name="unnamed" />
|
||||
</Project>
|
||||
<Register1>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="openbtl_olimex_efm32g880" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="openbtl_olimex_efm32g880" />
|
||||
</Register1>
|
||||
<Register2>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="openbtl_olimex_efm32g880" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="openbtl_olimex_efm32g880" />
|
||||
</Register2>
|
||||
<Register3>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="openbtl_olimex_efm32g880" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="openbtl_olimex_efm32g880" />
|
||||
</Register3>
|
||||
<Register4>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="openbtl_olimex_efm32g880" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="openbtl_olimex_efm32g880" />
|
||||
</Register4>
|
||||
<TargetWindow programAction="" uploadFileType="" programLoadAddress="" programSize="" uploadFileName="" uploadMemoryInterface="" programFileName="" uploadStartAddress="" programFileType="" uploadSize="" programMemoryInterface="" />
|
||||
<TraceWindow>
|
||||
|
@ -53,8 +54,7 @@
|
|||
<Watches active="0" update="Never" />
|
||||
</Watch4>
|
||||
<Files>
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="C:\users\voorburg\desktop\target\demo\armcm3_efm32_olimex_em32g880f128stk_crossworks\boot\lib\cmsis\cm3\devicesupport\energymicro\efm32\efm32.h" y="499" path="C:\users\voorburg\desktop\target\demo\armcm3_efm32_olimex_em32g880f128stk_crossworks\boot\lib\cmsis\cm3\devicesupport\energymicro\efm32\efm32.h" left="18" selected="0" name="unnamed" top="485" />
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="C:\Users\voorburg\Desktop\Target\Demo\ARMCM3_EFM32_Olimex_EM32G880F128STK_Crossworks\Boot\main.c" y="0" path="C:\Users\voorburg\Desktop\Target\Demo\ARMCM3_EFM32_Olimex_EM32G880F128STK_Crossworks\Boot\main.c" left="18" selected="1" name="unnamed" top="0" />
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Default" x="0" debugPath="../main.c" y="0" path="../main.c" left="0" selected="1" name="unnamed" top="0" />
|
||||
</Files>
|
||||
<ARMCrossStudioWindow activeProject="openbtl_olimex_efm32g880" autoConnectTarget="SEGGER J-Link" debugSearchFileMap="" fileDialogInitialDirectory="C:\Work\software\OpenBLT\Target\Source\ARMCM3_EFM32\Crossworks" fileDialogDefaultFilter="*.c" autoConnectCapabilities="388991" debugSearchPath="" buildConfiguration="THUMB Flash Debug" />
|
||||
<ARMCrossStudioWindow activeProject="openbtl_olimex_efm32g880" autoConnectTarget="SEGGER J-Link" debugSearchFileMap="" fileDialogInitialDirectory="C:/Work/software/OpenBLT/Target/Source/ARMCM3_EFM32/Crossworks" fileDialogDefaultFilter="*.c" autoConnectCapabilities="388991" debugSearchPath="" buildConfiguration="THUMB Flash Debug" />
|
||||
</session>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Integrated Development Environment
|
||||
----------------------------------
|
||||
Rowleys CrossWorks (version 2.3.1) was used as the editor during the development of this software program. This directory contains
|
||||
Rowleys CrossWorks (version 3.7.6) was used as the editor during the development of this software program. This directory contains
|
||||
the CrossWorks project and solution files. More info is available at: http://www.rowley.co.uk/
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -1,554 +1,270 @@
|
|||
S02B0000433A2F576F726B2F736F6674776172652F4F70656E424C542F5461726765742F44656D6F2F41524DEF
|
||||
S1132000F401002071210000B9270000B927000065
|
||||
S1132010B9270000B9270000B9270000B92700003C
|
||||
S1132020B9270000B9270000B9270000B92700002C
|
||||
S1132030B9270000B9270000B9270000A527000030
|
||||
S1132040B9270000B9270000B9270000B92700000C
|
||||
S1132050B9270000B9270000B9270000B9270000FC
|
||||
S1132060B9270000B9270000B9270000B9270000EC
|
||||
S1132070B9270000B9270000B9270000B9270000DC
|
||||
S1132080B9270000B9270000B9270000B9270000CC
|
||||
S1132090B9270000B9270000B9270000B9270000BC
|
||||
S11320A0B9270000B9270000B9270000B5330000A4
|
||||
S10F20B0B9270000B9270000EE11AA5562
|
||||
S11320BC2E498D462E492F480A1A04D081F30988DB
|
||||
S11320CC022282F314882C482C492D4A00F039F84A
|
||||
S11320DC2C482D492D4A00F034F82D482D492E4A10
|
||||
S11320EC00F02FF82D482E492E4A00F02AF82E48DD
|
||||
S11320FC2E492F4A00F025F82E482F492F4A00F07C
|
||||
S113210C20F82F482F49002200F026F82E482F499A
|
||||
S113211C091A082903DB00220260043001602048FC
|
||||
S113212C2049884205D00268043003B4904703BCAC
|
||||
S113213CF7E700208646EC4600200021244A90470D
|
||||
S113214CFEE7884207D0521A05D0037801300B7091
|
||||
S113215C0131013AF9D17047884202D00270013042
|
||||
S113216CFAE770471B481C490160A1E7F401002001
|
||||
S113217CF4010020F4010020604200000000002063
|
||||
S113218C08000020E8210000E821000020420000A3
|
||||
S113219C60420000000000200000002020420000EB
|
||||
S11321AC2042000020420000204200002042000097
|
||||
S11321BC2042000020420000204200006042000047
|
||||
S11321CC080000207400002074000020F40000209B
|
||||
S10F21DC8D24000008ED00E0002000004D
|
||||
S11321E810B504464FF48843C4F20803DB6A13F0BD
|
||||
S11321F8040F0CD04FF48840C4F2080043F2B12312
|
||||
S1132208C0F20003984720704FF0010010BD4FF052
|
||||
S1132218000010BD30B586B06C4644F22025C0F2EB
|
||||
S113222800050FCD0FC495E8030084E803004FF4BC
|
||||
S11322384240C0F202004FF0010142F6CD34C0F230
|
||||
S11322480004A0474FF002004FF006014FF00402CB
|
||||
S11322584FF0010343F2D905C0F20005A8474FF037
|
||||
S113226802004FF007014FF001024FF00003A847A6
|
||||
S11322784FF40C50C0F204004FF00101A0474FF096
|
||||
S11322880300C0F212004FF0020142F69573C0F247
|
||||
S1132298000398474FF4AA55C0F2160528464FF094
|
||||
S11322A8010142F6C913C0F20003984728464FF0CB
|
||||
S11322B80101A0474FF0000506A941F8185D4FF445
|
||||
S11322C88844C4F208042046694643F25123C0F204
|
||||
S11322D800039847204629464FF4165243F2B11397
|
||||
S11322E8C0F2000398474FF0030363654FF00403FB
|
||||
S11322F8636320464FF0050143F21523C0F200033F
|
||||
S1132308984706B030BD00BFBFF34F8F4FF46D42FE
|
||||
S1132318CEF20002D16801F4E0614FF00403C0F288
|
||||
S1132328FA530B43D360BFF34F8FFEE700B540F277
|
||||
S11323384D03C2F200031B78D3B940F20800C2F27D
|
||||
S1132348000042F2E913C0F200039847012848D17B
|
||||
S113235840F24D03C2F200034FF001021A7040F23A
|
||||
S11323684C03C2F200034FF000021A705DF804FB3C
|
||||
S113237840F20803C2F2000340F24C02C2F2000227
|
||||
S1132388107800F10100181842F2E913C0F20003B2
|
||||
S11323989847012825D140F24C03C2F200031A7869
|
||||
S11323A802F10102D2B21A7040F20803C2F2000329
|
||||
S11323B81B78934215D140F24D03C2F200034FF04B
|
||||
S11323C800021A7040F20803C2F200035B78FF2B84
|
||||
S11323D807D140F20803C2F200039B780BB9024B01
|
||||
S11323E898475DF804FB00BF1123000000B54FF4C3
|
||||
S11323F82040C4F2080043F29943C0F2000398470E
|
||||
S11324085DF804FB10B542F29973C0F200039847D3
|
||||
S1132418044640F25003C2F200031B68C31AB3F522
|
||||
S1132428FA7F2ED340F25403C2F200031B7893B907
|
||||
S113243840F25403C2F200034FF001021A704FF441
|
||||
S11324482040C4F208004FF0000143F2F133C0F217
|
||||
S11324580003984710E040F25403C2F200034FF01F
|
||||
S113246800021A704FF42040C4F20800114643F2E7
|
||||
S1132478F133C0F20003984740F25003C2F200035C
|
||||
S11324881C6010BD00B581B042F6A103C0F2000380
|
||||
S1132498984748F2FC13C0F6E0731B681B0E14D16E
|
||||
S11324A84AF20C03C4F20C031A6822F070021A6090
|
||||
S11324B846F22003C4F20C031A6822F060421A6040
|
||||
S11324C81A6862F060621A6001E0032B22D846F2AF
|
||||
S11324D82003C4F20C031A6822F4FC521A6048F26E
|
||||
S11324E84002C4F20C024FF00003136048F24402A5
|
||||
S11324F8C4F20C02136048F25802C4F20C021360CE
|
||||
S113250848F26002C4F20C02136048F27802C4F282
|
||||
S11325180C021360684643F2C123C0F200039847D3
|
||||
S11325289DF80030012B16D19DF801303BB948F2D3
|
||||
S11325384003C4F20C031A6842F002021A609DF8C0
|
||||
S11325480130012B07D848F24403C4F20C031A687B
|
||||
S113255842F001021A6048F2F013C0F6E0731A68F8
|
||||
S11325684BF6FF13C4F68A439A422FD848F2440321
|
||||
S1132578C4F20C031A6842F490421A6048F2B41286
|
||||
S1132588C0F6E0721168C1F3062110681568146872
|
||||
S113259804F07F0405F4FE42224300F07F0042EA7F
|
||||
S11325A8004242EA016142F23402C4F200021160BC
|
||||
S11325B848F2C812C0F6E072116844F22C02C4F260
|
||||
S11325C8000211601A6822F490421A604FF0000069
|
||||
S11325D84FF001010A4642F61D73C0F20003984702
|
||||
S11325E84FF40043C4F20C031A6C42F00F021A644D
|
||||
S11325F85A6C6FEA12426FEA02425A644FF440700E
|
||||
S1132608C0F204004FF0000142F6CD34C0F20004D9
|
||||
S1132618A0474FF49850C0F204004FF00001A047BF
|
||||
S11326284FF44C50C0F204004FF00001A0474FF49F
|
||||
S11326382240C0F202004FF00001A0474FF400709E
|
||||
S1132648C0F202004FF00001A0474FF49050C0F2CE
|
||||
S113265802004FF00001A0474FF40850C0F20200F6
|
||||
S11326684FF00001A0474FF44850C0F202004FF069
|
||||
S11326780001A0474FF4E440C0F202004FF000010B
|
||||
S1132688A0474FF40240C0F202004FF00001A047F7
|
||||
S11326984FF43240C0F202004FF00001A0474FF45B
|
||||
S11326A86240C0F202004FF00001A0474FF47240AC
|
||||
S11326B8C0F202004FF00001A0474FF45240C0F2AC
|
||||
S11326C802004FF00001A0474FF001004FF009014C
|
||||
S11326D84FF00502034643F2D904C0F20004A047B0
|
||||
S11326E84FF001004FF0020143F2BD03C0F20003B2
|
||||
S11326F8984742F2F533C0F20003984742F23D731B
|
||||
S1132708C0F20003984742F21D23C0F20003984721
|
||||
S113271842F20D45C0F2000542F23534C0F200041D
|
||||
S1132728A847A047FCE700BF40F25803C2F20003E1
|
||||
S11327381860704700B54FF02000C0F2040042F65C
|
||||
S11327481553C0F20003984744F6D353C1F2620309
|
||||
S1132758A3FB0020C0F3971000F1FF304EF21003E2
|
||||
S1132768CEF2000358604FF46D42CEF200024FF0EF
|
||||
S1132778E00182F823104FF0000098604FF0070240
|
||||
S11327881A6042F23173C0F2000398475DF804FB03
|
||||
S113279840F25803C2F200031868704740F2580325
|
||||
S11327A8C2F200031A6802F101021A60704700BFFE
|
||||
S11327B8FEE700BF4FF40043C4F20C03DB6A03F4E2
|
||||
S11327C87053B3F5805F48D0B3F5005F03D0B3F519
|
||||
S11327D8006F0CD105E040F20003C2F20003186850
|
||||
S11327E8704740F20403C2F20003186870474FF4BC
|
||||
S11327F80043C4F20C03DB6803F4E063B3F5007F21
|
||||
S113280819D004D80BB3B3F5807F23D118E0B3F5FE
|
||||
S1132818806F25D0B3F5A06F03D0B3F5407F19D1ED
|
||||
S113282804E04FF47C50C0F2AB10704749F6807056
|
||||
S1132838C0F2D50070474DF6C000C0F2A70070473B
|
||||
S11328484CF6C070C0F26A00704744F24020C0F2EF
|
||||
S11328580F0070474FF0000070474FF40040704776
|
||||
S113286846F64070C0F24010704700BF00B542F20F
|
||||
S1132878BD73C0F2000398474FF40043C4F20C033D
|
||||
S11328885B6803F00F0320FA03F040F25C03C2F222
|
||||
S1132898000318605DF804FB704700BF4FF4004064
|
||||
S11328A8704700BF40F20003C2F200031868704783
|
||||
S11328B84FF00003C4F20C035B6803F00702032A19
|
||||
S11328C80CD8DFE802F00202070723F0070343F0FD
|
||||
S11328D8010303E023F0070343F003034FF000026E
|
||||
S11328E8C4F20C0253607047B0FA80F0C0B2C0F171
|
||||
S11328F81F0070474FF00003C4F20C035B684DF6E9
|
||||
S1132908FF32CFF60B72821842F2FF31C0F2F401A3
|
||||
S11329188A420BD803F00702A2F10202012A23F02B
|
||||
S1132928070394BF43F0030343F001034FF4105229
|
||||
S1132938C0F2F402904209D803F00702A2F102029D
|
||||
S1132948012A23F0070398BF43F002034FF0000263
|
||||
S1132958C4F20C025360704749F68070C0F2D50087
|
||||
S1132968704700BF00B54FF40043C4F20C039B6AE0
|
||||
S11329784FEA400023FA00F000F0030002280AD0CE
|
||||
S113298803280FD0012816D142F6A503C0F200038C
|
||||
S113299898475DF804FB42F6AD03C0F2000398477C
|
||||
S11329A85DF804FB42F67503C0F2000398474FEA4A
|
||||
S11329B850005DF804FB4FF000005DF804FB00BF15
|
||||
S11329C810B50C46C0F3031303F1FF33032B00F2D5
|
||||
S11329D8F780DFE803F0021231A8084642F6F10353
|
||||
S11329E8C0F2000398474FF40043C4F20C039A68FA
|
||||
S11329F822F00F021043986010BD42F6B903C0F2EA
|
||||
S1132A0800039847204642F6F103C0F200039847B2
|
||||
S1132A184FF40043C4F20C035A6822F00F02104327
|
||||
S1132A28586042F67503C0F20003984742F6FD0366
|
||||
S1132A38C0F20003984710BD41F23043C0F20A03C4
|
||||
S1132A4898422CD04FF03003C0F20C03984247D080
|
||||
S1132A584FF48663C0F20803984240F0B1804FF403
|
||||
S1132A680043C4F20C035B6D13F0010F07D14FF45C
|
||||
S1132A780042C4F20C02136D13F0040FFBD120467C
|
||||
S1132A8842F6F103C0F2000398474FF40043C4F23E
|
||||
S1132A980C039A6E22F00F021043986610BD4FF48F
|
||||
S1132AA80043C4F20C035B6D13F0010F07D14FF41C
|
||||
S1132AB80042C4F20C02136D13F0040FFBD120463C
|
||||
S1132AC842F6F103C0F2000398474FF40043C4F2FE
|
||||
S1132AD80C039A6E22F0F00242EA0010986610BDC8
|
||||
S1132AE84FF40043C4F20C035B6D13F0010F07D1DC
|
||||
S1132AF84FF40042C4F20C02136D13F0040FFBD11F
|
||||
S1132B08204642F6F103C0F2000398474FF400430D
|
||||
S1132B18C4F20C039A6EA0F1100022F4407242EA47
|
||||
S1132B2800229A6610BD4FF4A863C0F214039842B9
|
||||
S1132B3806D04FF4AA53C0F21603984240D11FE0BE
|
||||
S1132B484FF40043C4F20C035B6D13F0010F07D17B
|
||||
S1132B584FF40042C4F20C02136D13F0400FFBD182
|
||||
S1132B68204642F6F103C0F2000398474FF40043AD
|
||||
S1132B78C4F20C031A6F22F003021043186710BD45
|
||||
S1132B884FF40043C4F20C035B6D13F0010F07D13B
|
||||
S1132B984FF40042C4F20C02136D13F0400FFBD142
|
||||
S1132BA8204642F6F103C0F2000398474FF400436D
|
||||
S1132BB8C4F20C031A6F22F0300242EA00101867BC
|
||||
S1132BC810BD00BF30B4C9B2C0F3032303F1FF330F
|
||||
S1132BD8052B43D8DFE803F008363B1E250348F2EB
|
||||
S1132BE87802C4F20C0236E0C0F3043048F208025A
|
||||
S1132BF8C4F20C0206E04FF40044C4F20C04236D42
|
||||
S1132C081D42FCD102F1047200EBC2024FEA8202B7
|
||||
S1132C18116023E04FF0010548F25802C4F20C0297
|
||||
S1132C2805E04FF0100548F26002C4F20C02C0F34C
|
||||
S1132C3804304FF40043C4F20C035B6D13F0010F2E
|
||||
S1132C48E0D1D8E748F24402C4F20C0203E048F2A7
|
||||
S1132C584002C4F20C02C0F30430D3E730BC70471E
|
||||
S1132C6800F00F0000F1FF30032842D8DFE800F03D
|
||||
S1132C78051B2E024FF0070070474FF40043C4F2BF
|
||||
S1132C880C03D86A00F47050B0F5805F34D0B0F506
|
||||
S1132C98005F05D0B0F5006F0CBF04200520704715
|
||||
S1132CA84FF0020070474FF40043C4F20C03986AD3
|
||||
S1132CB800F00300022822D0032804D001280CBF06
|
||||
S1132CC80320012070474FF0060070474FF400437B
|
||||
S1132CD8C4F20C03986A00F00C00022812D00328EE
|
||||
S1132CE804D001280CBF0320012070474FF00600D0
|
||||
S1132CF870474FF0000070474FF0030070474FF0E3
|
||||
S1132D08020070474FF00200704700BF00B500F49E
|
||||
S1132D187810B0F5402F7AD014D8B0F5802F42D06F
|
||||
S1132D2805D848B3B0F5003F40F0EF802BE0B0F58C
|
||||
S1132D38002F48D0B0F5202F57D0B0F5C02F40F061
|
||||
S1132D48E48037E0B0F5A01F00F0958007D8B0F50F
|
||||
S1132D58602F6ED0B0F5901F40F0D78082E0B0F5B8
|
||||
S1132D68C01F00F0AC80B0F5D01F00F0C780B0F5EC
|
||||
S1132D78B01F40F0CA8090E042F2BD73C0F2000375
|
||||
S1132D8898475DF804FB42F2BD73C0F2000398470C
|
||||
S1132D984FF40043C4F20C039B6803F00F0320FABA
|
||||
S1132DA803F05DF804FB42F67503C0F2000398478C
|
||||
S1132DB85DF804FB4FF0000042F66D13C0F2000307
|
||||
S1132DC898475DF804FB4FF0000042F66D13C0F21B
|
||||
S1132DD8000398474FF40043C4F20C039B6E03F0BE
|
||||
S1132DE80F0320FA03F05DF804FB4FF0000042F6ED
|
||||
S1132DF86D13C0F2000398474FF40043C4F20C0368
|
||||
S1132E089B6EC3F3031320FA03F05DF804FB4FF041
|
||||
S1132E18000042F66D13C0F2000398474FF40043D4
|
||||
S1132E28C4F20C039B6EC3F3012320FA03F05DF88C
|
||||
S1132E3804FB4FF0000042F66D13C0F200039847FC
|
||||
S1132E484FF40043C4F20C039A6EC2F3012220FA31
|
||||
S1132E5802F0DB6F03F0070303F10103B0FBF3F0A7
|
||||
S1132E685DF804FB4FF0010042F66D13C0F2000355
|
||||
S1132E7898475DF804FB4FF0010042F66D13C0F269
|
||||
S1132E88000398474FF40043C4F20C031B6F03F08C
|
||||
S1132E98030320FA03F05DF804FB4FF0010042F647
|
||||
S1132EA86D13C0F2000398474FF40043C4F20C03B7
|
||||
S1132EB81B6FC3F3011320FA03F05DF804FB4FF012
|
||||
S1132EC80400C0F2180042F66943C0F200039847B0
|
||||
S1132ED8072808D008280DD142F2BD73C0F20003B8
|
||||
S1132EE898475DF804FB42F66113C0F20003984763
|
||||
S1132EF85DF804FB4FF000005DF804FB42F6611333
|
||||
S1132F08C0F2000398475DF804FB4FF000005DF839
|
||||
S1132F1804FB00BF10B5C9B2D2B2042835D8DFE823
|
||||
S1132F2800F0120D170308004FF001044FF00200DF
|
||||
S1132F3812E04FF010044FF020000DE04FF0400471
|
||||
S1132F484FF0800008E04FF480744FF4007003E001
|
||||
S1132F584FF004044FF0080069B14FF40043C4F281
|
||||
S1132F680C031C6262B14FF40042C4F20C02D36A2F
|
||||
S1132F781842FCD004E04FF40043C4F20C03186276
|
||||
S1132F8843F2A503C0F20003984710BD10B500F042
|
||||
S1132F980F00012804D000287FD003287DD83BE007
|
||||
S1132FA8A1F10201032978D8DFE801F00210070B28
|
||||
S1132FB84FF000004FF004040CE04FF00200044608
|
||||
S1132FC808E04FF003004FF0010403E04FF0010064
|
||||
S1132FD84FF003044FF001010A4642F61D73C0F294
|
||||
S1132FE80003984742F6B903C0F2000398474FF428
|
||||
S1132FF80043C4F20C035C6243F2A503C0F200036D
|
||||
S1133008984742F67503C0F20003984742F6FD0359
|
||||
S1133018C0F20003984710BD022814BF02240024FC
|
||||
S113302801F1FF31052938D8DFE801F0260310370C
|
||||
S1133038371C4FF000004FF001010A4642F61D7399
|
||||
S1133048C0F2000398474FF0020217E04FF0010066
|
||||
S11330580146024642F61D73C0F2000398474FF03A
|
||||
S113306801020BE040F60803C4F290334FF001026A
|
||||
S11330781A604FF0030201E04FF000024FF40043DE
|
||||
S1133088C4F20C03996A02FA04F24FF0030000FA3E
|
||||
S113309804F421EA040414439C6210BD4FF4004371
|
||||
S11330A8C4F20C03DA6A40F26003C2F200031A8025
|
||||
S11330B8704700BF4FF4C043C4F2000300EBC000E4
|
||||
S11330C84FEA80001A5822F003021143195070473E
|
||||
S11330D8F0B4DAB16BB14FF0010505FA01F500EB74
|
||||
S11330E8C0044FEA840404F1804404F5C044256113
|
||||
S11330F80CE04FF0010505FA01F500EBC0044FEAB6
|
||||
S1133108840404F1804404F5C0446561072915D892
|
||||
S113311800EBC0044FEA840404F1804404F5C0447D
|
||||
S113312867684FEA81054FF00F0606FA05F627EAA5
|
||||
S1133138060602FA05F53543656016E000EBC0049F
|
||||
S11331484FEA840404F1804404F5C044A7684FEAB4
|
||||
S11331588105A5F120054FF00F0606FA05F627EAC2
|
||||
S1133168060602FA05F53543A560DAB96BB14FF0E6
|
||||
S1133178010303FA01F100EBC0004FEA800000F1FB
|
||||
S1133188804000F5C04001610CE04FF0010303FAF0
|
||||
S113319801F100EBC0004FEA800000F1804000F527
|
||||
S11331A8C0404161F0BC704730B504461546D1B9FA
|
||||
S11331B84FF48043C4F2080398420AD04FF488437A
|
||||
S11331C8C4F2080398421FD14FF4AA50C0F2160063
|
||||
S11331D803E04FF4A860C0F2140042F61553C0F29D
|
||||
S11331E80003984701464FEA4111B1FBF5F5A5F1F3
|
||||
S11331F820054FEAC505236C13F0010F03D1636C56
|
||||
S113320813F0040FFBD1E56030BD00BF6FEA010382
|
||||
S113321803F0050341EA4301036C13F0010F03D1E2
|
||||
S1133228436C13F0020FFBD141607047C9B231B14E
|
||||
S1133238436C002BFCD14FF00103036470474FF03B
|
||||
S113324800030364704700BF70B504460D46036C61
|
||||
S113325813F0010F03D1636C13F0020FFBD14FF08D
|
||||
S11332680A03636020464FF0010143F23526C0F299
|
||||
S11332780006B04722682969EB680B4369690B4368
|
||||
S113328822F01C02134323606968AA68204643F2AB
|
||||
S1133298B113C0F2000398472B68636020464FF0CF
|
||||
S11332A80001B04770BD00BF836813F0200FFBD046
|
||||
S11332B8C069C0B2704700BF4FF6D073CEF20F0397
|
||||
S11332C81A6902F03F0202709A6902F0F002DB699F
|
||||
S11332D8C3F3031313434370704700BF1F2AC4BFCB
|
||||
S11332E8203A04314FF0010303FA02F2072924D8E3
|
||||
S11332F8DFE801F004080C1014181C20036C1A43AE
|
||||
S113330802647047436C1A4342647047836C1A43DF
|
||||
S113331882647047C36C1A43C2647047036D1A43CE
|
||||
S113332802657047436D1A4342657047836D1A43BB
|
||||
S113333882657047C36D1A43C26570471F2AC4BFAC
|
||||
S1133348203A04314FF0010303FA02F207292CD87A
|
||||
S1133358DFE801F004090E13181D2227036C23EA81
|
||||
S1133368020202647047436C23EA02024264704713
|
||||
S1133378836C23EA020282647047C36C23EA020264
|
||||
S1133388C2647047036D23EA020202657047436D05
|
||||
S113339823EA020242657047836D23EA02028265CA
|
||||
S11333A87047C36D23EA0202C26570474FF4204395
|
||||
S11333B8C4F208034FF0FF325A6240F26403C2F2C7
|
||||
S11333C800031A6802F101021A6070474FF0000303
|
||||
S11333D8036403654364436583648365C364C365A5
|
||||
S11333E8436E002BFCD1704730B50B293FD8DFE87A
|
||||
S11333F801F03A060B0F14191E23282D31354FF00E
|
||||
S113340803034FF0010432E04FF003031C462EE09F
|
||||
S11334184FF003034FF0000429E04FF003034FF08B
|
||||
S1133428020424E04FF027034FF000041FE04FF09C
|
||||
S113343827034FF003041AE04FF001034FF003048D
|
||||
S113344815E04FF001034FF0020410E04FF00103C0
|
||||
S11334581C460CE04FF001031C4608E04FF007033C
|
||||
S11334684FF0030403E04FF00F034FF003043AB1A5
|
||||
S113347821461A4643F2E523C0F20003984730BDBB
|
||||
S113348821461A4643F24533C0F20003984730BD3B
|
||||
S113349810B504464FF40043C4F20C039A6A22F0B0
|
||||
S11334A803029A629A6A42F002029A629A6D42F0A0
|
||||
S11334B804029A659A6E22F440729A669A6E42F4ED
|
||||
S11334C840729A664FF000038362636E002BFCD14E
|
||||
S11334D84FF0FF3363624FF46143CEF200034FF0C1
|
||||
S11334E800621A604FF00103A36241F60B73636034
|
||||
S11334F84FF40043C4F20C034FF00002DA6720468D
|
||||
S113350843F2D533C0F20003984740F2FF33A36077
|
||||
S11335184FF005032360636E002BFCD14FF48073D6
|
||||
S1133528C0F21C03E360636E002BFCD14FF001036F
|
||||
S11335386362A36210BD00BF00B5034602783AB1C6
|
||||
S11335484268107840B102F101025A605DF804FB48
|
||||
S1133558436898475DF804FB4FF0FF305DF804FBBF
|
||||
S113356830B50446C8B2A16849B12368626803F15A
|
||||
S11335780105954208BF0020934238BFC854E36848
|
||||
S11335882BB121686268914201D221469847236889
|
||||
S113359803F10103236030BDF0B5154601290BD4AE
|
||||
S11335A80E464FF00004C7B228463946FFF7D8FF45
|
||||
S11335B804F10104B442F7D1F0BD00BF00B510F026
|
||||
S11335C8100F07D100F4007000280CBF2020302011
|
||||
S11335D8FFF7E2FF5DF804FBA0F1410019288CBF56
|
||||
S11335E800200120704700BFA0F1610019288CBF9A
|
||||
S11335F800200120704700BFA0F1300009288CBFCB
|
||||
S113360800200120704700BF30B504460D46FFF77F
|
||||
S1133618F3FF10B1A4F130000FE02046FFF7E4FFF8
|
||||
S113362810B1A4F1570008E02046FFF7D5FF10B108
|
||||
S1133638A4F1370001E04FF0FF30A842A8BF4FF0D3
|
||||
S1133648FF3030BDA0F10903042B04D9202814BF8E
|
||||
S11336580020012070474FF00100704700F101017C
|
||||
S113366810F0030F11D010F8012B002A23D010F00A
|
||||
S1133678030F0AD010F8012B002A1CD010F0030FF6
|
||||
S113368803D010F8012B002A15D02DE970004FF053
|
||||
S113369801324FF0803350F8044BA4EB020525EABD
|
||||
S11336A804051D4000D1F6E7A0F1040070BC10F831
|
||||
S11336B8012B002AFBD1A0EB010070472DE9F04F44
|
||||
S11336C887B007460C4603924FF00003036044F2A8
|
||||
S11336D8382BC0F2000B44F24823C0F200030293D3
|
||||
S11336E8CBE204F10104252903D123464FF0000657
|
||||
S11336F803E03846FFF734FFBFE2194613F8010B1D
|
||||
S11337081C46A0F12002102A1CD8DFE802F0091B8D
|
||||
S11337181B0C1B1B1B0F1B1B1B121B151B1B180035
|
||||
S113372846F04006E9E746F08006E6E746F4004638
|
||||
S1133738E3E746F02006E0E746F01006DDE746F446
|
||||
S11337480076DAE72A2807D0A0F13002D2B2092A93
|
||||
S113375813D94FF0000A20E0039B03F104000390FF
|
||||
S1133768D3F800A0BAF1000FBCBFCAF1000A46F0B2
|
||||
S11337781006487801F102040FE04FF0000A0AEB42
|
||||
S11337888A0AA0F1300000EB4A0A13F8010B1C4620
|
||||
S1133798A0F13002D2B2092AF1D92AEAEA7A2E280B
|
||||
S11337A82DD120782A2809D004F10104A0F130038E
|
||||
S11337B8DBB2092B0CD94FF000081DE0039B03F181
|
||||
S11337C804020392D3F80080607804F1020410E044
|
||||
S11337D823464FF0000808EB8808A0F1300000EBFE
|
||||
S11337E8480813F8010B1C46A0F13002D2B2092A8A
|
||||
S11337F8F1D9B8F1000F04DB46F4807601E04FF00C
|
||||
S1133808000868280CD12078682805D146F00806F5
|
||||
S1133818607804F1020403E004F1010446F00406AC
|
||||
S113382878287AD8DFE810F037027900790079002F
|
||||
S113383879007900790079007900790079007900B4
|
||||
S113384879007900790079007900790079007900A4
|
||||
S11338587900790079007900790079007900790094
|
||||
S11338687900790079007900790079007900790084
|
||||
S113387879008A0079007900790079007900790063
|
||||
S11338887900790079007900790079007900790064
|
||||
S11338987900790079007900790079007900790054
|
||||
S11338A87900790079007900790079007900790044
|
||||
S11338B87900790079007900790079007900790034
|
||||
S11338C87900790079007900790079007900790024
|
||||
S11338D87900790079007900F40079007900790099
|
||||
S11338E879007900790079007900790079009000ED
|
||||
S11338F820017900790079007900200179007900A4
|
||||
S113390879007900AB000901E10079007900B7007A
|
||||
S11339187900180179007900F60040F26803C2F2D0
|
||||
S113392800031D68002D00F0A881CDF8008003ABCA
|
||||
S11339380193394632465346A8479EE138464FF02C
|
||||
S11339482501FFF70DFE98E1039B03F1040203929E
|
||||
S11339581D780AF1FF3A304651463A46FFF72EFEE3
|
||||
S113396838462946FFF7FCFD16F0100F00F0858154
|
||||
S11339784FF0200051463A46FFF70EFE7DE116F05F
|
||||
S1133988080F039B03F1040203921B683A6814BFEF
|
||||
S11339981A701A6071E1039B03F1040203921D6813
|
||||
S11339A81DB944F25825C0F2000526F400762846CD
|
||||
S11339B8FFF754FE814616F4807F02D0C145A8BFA4
|
||||
S11339C8C146C9EB0A0A304651463A46FFF7F6FDA6
|
||||
S11339D8B9F1000FC8D0C84615F8011B3846FFF7DF
|
||||
S11339E8BFFDB8F10108F7D1BEE7039B03F1040258
|
||||
S11339F803921B6806F08009B9F1000F14BF4FF059
|
||||
S1133A0823094FF0000946F480764FF008086AE06D
|
||||
S1133A1846F4005616F0800F07D043F2780343F2B9
|
||||
S1133A285809782808BF994601E04FF0000916F4B0
|
||||
S1133A38807F20D026F400761DE006F08009B9F1D5
|
||||
S1133A48000F14BF4FF030094FF0000916F4807FBF
|
||||
S1133A5811D026F400760EE016F4807F09D026F4FF
|
||||
S1133A6800764FF0000906E046F480464FF000095E
|
||||
S1133A7801E04FF0000916F4804F1ED0039B03F1B8
|
||||
S1133A88040203921B6816F0040F01D01BB203E072
|
||||
S1133A9816F0080F18BFDBB2002B04DAC3F10003D9
|
||||
S1133AA84FF02D091AE016F0200F15D106F0400248
|
||||
S1133AB8002A18BF4FF0200910E0039B03F1040209
|
||||
S1133AC803921B6816F0040F01D09BB206E016F0AF
|
||||
S1133AD8080F03D0DBB201E04FF02B0916F4807F06
|
||||
S1133AE804D026F4007616F4807F01D14FF0010843
|
||||
S1133AF8A0F1580020286FD8DFE800F0196E6E6E28
|
||||
S1133B086E6E6E6E6E6E6E6E156E6E6E6E156E6E7B
|
||||
S1133B186E6E6E11196E6E6E6E156E6E19000BBB9D
|
||||
S1133B284FF000055DE053BB4FF0000559E0002B52
|
||||
S1133B3855D04FF0000506F40052DDF808E032B124
|
||||
S1133B4803F00F011EF8010004A9685405E003F00E
|
||||
S1133B580F011BF8010004A9685405F101051B09AC
|
||||
S1133B68EDD13EE04FF0000503F0070101F130010B
|
||||
S1133B7804AAA95405F10105DB08F5D131E04FF099
|
||||
S1133B88000506F4004C4CF6CD4ECCF6CC4E6246FD
|
||||
S1133B98A44614465CB105F00302032A07D107A81A
|
||||
S1133BA842194FF02C0102F80C1C05F1010507AA73
|
||||
S1133BB85119AEFB03024FEAD20202EB8200A3EBD7
|
||||
S1133BC8400303F1300301F80C3C05F101051346E9
|
||||
S1133BD8002ADFD1644604E04FF0000501E04FF00D
|
||||
S1133BE80005C5EB080828EAE878C8EB0A0AC5EB1B
|
||||
S1133BF80A0AB9F1FF0F88BF0AF1FF3AB9F1000FB9
|
||||
S1133C0801D00AF1FF3A16F4007F06D13046514636
|
||||
S1133C183A46FFF7D3FC4FF0000AB9F1FF0F04D975
|
||||
S1133C28C9F307213846FFF79BFCB9F1000F04D00C
|
||||
S1133C385FFA89F13846FFF793FC304651463A4615
|
||||
S1133C48FFF7BCFC4FF0300041463A46FFF7A4FCAE
|
||||
S1133C58012D09D40DF11008454415F8011D384605
|
||||
S1133C68FFF77EFC4545F8D116F0100F05D04FF04C
|
||||
S1133C78200051463A46FFF78FFC217800297FF44B
|
||||
S1133C8830ADBB682BB13A6879688A423CBF0021E1
|
||||
S1133C989954386801E04FF0FF3007B0BDE8F08F61
|
||||
S1133CA810B504460B783BB1B0F1FF3F06D04B6822
|
||||
S1133CB803F1FF334B6001E08B689847204610BD41
|
||||
S1133CC82DE9F04F82468B4690469946099F4FF05E
|
||||
S1133CD8FF3500E0354605F101065046FFF72CFC98
|
||||
S1133CE80446FFF7AFFC0028F4D1B4F1FF3F00F01D
|
||||
S1133CF8848028F4C068002F3DDD18F0800F0FD0B1
|
||||
S1133D082B2C03D02D2C09D148F4806805F1020628
|
||||
S1133D185046FFF711FC044607F1FF37002F2ADD50
|
||||
S1133D28302C28D148F4007807F1FF3706F1010553
|
||||
S1133D385046FFF701FC0446002F16DD782801D011
|
||||
S1133D48582812D1B9F1000F02D0B9F1100F5CD183
|
||||
S1133D5828F4007807F1FF3706F102055046FFF70B
|
||||
S1133D68EBFB04464FF010094FE0B9F1000F08BF10
|
||||
S1133D784FF0080949E0B9F1000F08BF4FF00A09EC
|
||||
S1133D88002F10DC4FF0000515E048F4007807F127
|
||||
S1133D98FF3709FB050506F101065046FFF7CCFB82
|
||||
S1133DA8044617B907E04FF0000520464946FFF7D7
|
||||
S1133DB82BFC0028E9DA20465146FFF771FF18F476
|
||||
S1133DC8007F1DD018F0010F1CD1DBF8003003F17F
|
||||
S1133DD80402CBF800201B6808F49062B2F5906FD7
|
||||
S1133DE808BF6D4218F0100F01D01D700AE018F0DA
|
||||
S1133DF8080F14BF1D801D6004E04FF0FF3601E07A
|
||||
S1133E086FF001063046BDE8F08F2E46B8E700BFD4
|
||||
S1133E182DE9F04F85B00190894604924FF0000BCC
|
||||
S1133E28CDF808B04CF6CC4AC0F6CC4A4C4614F847
|
||||
S1133E38016B002E00F0CB81252E35D03046FFF7DC
|
||||
S1133E4801FC08B918E02C4604F101052078FFF7B5
|
||||
S1133E58F9FB0028F7D101E00BF1010B0198FFF7FA
|
||||
S1133E686BFB0546FFF7EEFB0028F5D128460199C0
|
||||
S1133E78FFF716FFA146D9E70198FFF75DFB054652
|
||||
S1133E88B04203D10BF1010BA146CFE70199FFF72B
|
||||
S1133E9807FFB5F1FF3F40F09A81029A002A08BF54
|
||||
S1133EA84FF0FF32029292E199F801302A2B06BFB3
|
||||
S1133EB809F102044FF001084FF000084FF0000523
|
||||
S1133EC80CE0554500F3838105EB8505A6F1300622
|
||||
S1133ED816EB450500F17B8148F02008274604F1DC
|
||||
S1133EE801043E78A1463046FFF786FB0028E8D156
|
||||
S1133EF808F02002002A08BF6FF000454C2E05D1B7
|
||||
S1133F087E7807F1020948F044080EE0682E0CD1C7
|
||||
S1133F187E78682E05D148F01008BE7807F10309A9
|
||||
S1133F2803E007F1020948F00808A6F12506532E14
|
||||
S1133F3800F24D81DFE816F054004B014B014B01B0
|
||||
S1133F484B014B014B014B014B014B014B014B0105
|
||||
S1133F584B014B014B014B014B014B014B014B01F5
|
||||
S1133F684B014B014B014B014B014B014B014B01E5
|
||||
S1133F784B014B014B014B014B014B014B014B01D5
|
||||
S1133F884B014B014B014B014B014B014B014B01C5
|
||||
S1133F984B014B014B014B014B014B014B012C01D4
|
||||
S1133FA84B014B014B014B014B014B014B014B01A5
|
||||
S1133FB84B014B016B009C004B014B014B014B0126
|
||||
S1133FC8A7004B014B014B014B01B200C900D400BF
|
||||
S1133FD84B014B01DF004B0121014B014B012C012B
|
||||
S1133FE80198FFF7A9FA0446252802D10BF1010B21
|
||||
S1133FF81CE70199FFF754FEB4F1FF3F40F0E78056
|
||||
S1134008029B002B08BF4FF0FF330293DFE008F058
|
||||
S11340182003002B08BF012518F0010405D1049BD7
|
||||
S113402803F1040204921E6801E04FF00006002D1B
|
||||
S113403800F0CD80002D13DD0198FFF77DFAB0F173
|
||||
S1134048FF3F06D1029B002B08BF4FF0FF330293BA
|
||||
S1134058BDE00CB906F8010B0BF1010B013DEBD1E6
|
||||
S1134068002C7FF4E3AE029B03F101030293DDE627
|
||||
S113407848F080020095019804A94FF00A03FFF75D
|
||||
S11340881FFE04468EE048F080020095019804A9BA
|
||||
S11340984FF00003FFF714FE044683E018F0010F05
|
||||
S11340A87FF4C4AE049B03F1040204921B6818F065
|
||||
S11340B8100F02D083F800B0B8E618F0080F14BF48
|
||||
S11340C8A3F800B0C3F800B0B0E648F08002009549
|
||||
S11340D8019804A94FF00803FFF7F2FD044661E0D4
|
||||
S11340E828F01E020095019804A94FF01003FFF769
|
||||
S11340F8E7FD044656E04FF0FF3404F1010401984B
|
||||
S1134108FFF71AFA0646FFF79DFA0028F5D1B6F12B
|
||||
S1134118FF3F2FD018F0010706D1049B03F10402D6
|
||||
S113412804921B68039302E04FF000020392002DEF
|
||||
S113413811DC15E005F1FF351FB9039B03F8016B8A
|
||||
S1134148039304F101040198FFF7F6F906463DB11B
|
||||
S1134158B0F1FF3F04D03046FFF774FA0028E9D0E5
|
||||
S113416830460199FFF79CFDE7B94FF00002039B25
|
||||
S11341781A7017E04FF0FF3414E048F080020095FD
|
||||
S1134188019804A94FF00A03FFF79AFD044609E0D1
|
||||
S113419848F080020095019804A94FF01003FFF736
|
||||
S11341A88FFD0446002C09DAB4F1FF3F0FD1029ABF
|
||||
S11341B8002A08BF4FF0FF32029208E018F0010FFE
|
||||
S11341C803D1029A02F101020292A3442EE6029854
|
||||
S11341D805B0BDE8F08F00BF30B504460D4600F0C9
|
||||
S11341E817F840F26C03C2F200031D6040F270033A
|
||||
S11341F8C2F200031C601A461368002BFCD100F0BD
|
||||
S113420809F840F26C03C2F20003186830BD00BF1D
|
||||
S10B4218704700BF704700BFAE
|
||||
S113422005000000000000008025000000000000E0
|
||||
S113423000000000000000003031323334353637DE
|
||||
S11342403839616263646566303132333435363708
|
||||
S11342503839414243444546286E756C6C29000048
|
||||
S10B4260008000000048E801A1
|
||||
S90321716A
|
||||
S1132000E4010020792100001126000011260000BF
|
||||
S113201011260000112600001126000011260000E0
|
||||
S113202011260000112600001126000011260000D0
|
||||
S113203011260000112600001126000001260000D0
|
||||
S113204011260000112600001126000011260000B0
|
||||
S113205011260000112600001126000011260000A0
|
||||
S11320601126000011260000112600001126000090
|
||||
S11320701126000011260000112600001126000080
|
||||
S11320801126000011260000112600001126000070
|
||||
S11320901126000011260000112600001126000060
|
||||
S11320A0112600001126000011260000492F00000F
|
||||
S10F20B01126000011260000EE11AA55B4
|
||||
S11320BC3049072291438D462F4930480A1A06D0DD
|
||||
S11320CC0722914381F30988022282F314882C4855
|
||||
S11320DC2C492D4A00F039F82C482D492D4A00F092
|
||||
S11320EC34F82D482D492E4A00F02FF82D482E494E
|
||||
S11320FC2E4A00F02AF82E482E492F4A00F025F8D3
|
||||
S113210C2E482F492F4A00F020F82F482F4900223F
|
||||
S113211C00F026F82E482F49091A082903DB00225F
|
||||
S113212C02600430016020482049884205D00268CE
|
||||
S113213C043003B4904703BCF7E700208646EC4612
|
||||
S113214C00200021244A9047FEE7884207D0521A07
|
||||
S113215C05D0037801300B700131013AF9D1704785
|
||||
S113216C884202D002700130FAE770471B481C49C0
|
||||
S113217C01609DE7E4010020E4010020E40100205B
|
||||
S113218C9C3000000000002008000020F02100001A
|
||||
S113219CF02100008C3000009C3000000000002076
|
||||
S11321AC000000208C3000008C3000008C300000CB
|
||||
S11321BC8C3000008C3000008C3000008C3000001F
|
||||
S11321CC8C3000009C3000000800002064000020CB
|
||||
S11321DC64000020E4000020A923000008ED00E0C6
|
||||
S10721EC00200000CB
|
||||
S11321F070B584B01C4B0FCB8DE80F0001211B4838
|
||||
S11322001B4CA0470123042206210220194EB0478B
|
||||
S11322100023012207210220B04701211648A047CC
|
||||
S113222002211648164B9847164E01213046164B8C
|
||||
S1132230984701213046A04700268DF80060134CD2
|
||||
S113224069462046124B98474FF4165231462046B1
|
||||
S1132250104B9847032363650423636305212046D9
|
||||
S11322600D4B984704B070BD8C30000000C20200D2
|
||||
S11322702D290000C92C00000023040003001200D3
|
||||
S1132280D12B000040151600B5270000004408407B
|
||||
S1132290F92D0000892D0000D92D0000BFF34F8FC8
|
||||
S11322A00449CA6802F4E062034B1343CB60BFF3F2
|
||||
S11322B04F8FFEE700ED00E00400FA0538B51A4B35
|
||||
S11322C01B7883B9194BDB6A13F0040F2BD0174822
|
||||
S11322D0174B9847174B18700122134B1A700022A2
|
||||
S11322E0154B1A7038BD114BDB6A13F0040F1AD06A
|
||||
S11322F0114C25780D480E4B98470E4A15446870CA
|
||||
S113230023780133DBB2237012789A420BD1002276
|
||||
S1132310054B1A70074B5B78FF2B04D1054B9B7858
|
||||
S11323200BB9064B984738BD4A00002000440840CA
|
||||
S1132330492E000008000020490000209D220000D2
|
||||
S113234008B50248024B984708BD00BF00A00840EA
|
||||
S1132350FD2F000010B50F4B98470F4B1B68C31A95
|
||||
S1132360B3F5FA7F14D304460C4B1B783BB9012216
|
||||
S11323700A4B1A7000210A480A4B984706E00021CC
|
||||
S1132380064B19700A460648064B9847024B1C60D8
|
||||
S113239010BD00BFF52500004C00002050000020B7
|
||||
S11323A000A00840812F000000B583B05B4B984724
|
||||
S11323B05B4B1B681B0E0ED15A4A136823F0700343
|
||||
S11323C01360594B1A6822F060421A601A6862F06E
|
||||
S11323D060621A6001E0032B11D8534A136823F496
|
||||
S11323E0FC531360002302F50052203213600432C0
|
||||
S11323F0136014321360083213601832136001A89A
|
||||
S11324004A4B98479DF80430012B10D19DF80530B4
|
||||
S113241023B9474A136843F0020313609DF805305B
|
||||
S1132420012B04D8434A136843F001031360424B61
|
||||
S11324301A68424B9A4220D83E48036843F49043BA
|
||||
S113244003603F490B681B0403F0FE430A680C68F1
|
||||
S1132450096804F4FE4401F07F012143120402F4EC
|
||||
S1132460FE020A431343374A1360374B1A68374B4B
|
||||
S11324701A60036823F4904303600122114600208C
|
||||
S1132480334B9847334A136C43F00F031364536C74
|
||||
S11324906FEA13436FEA0343536400212E482F4C21
|
||||
S11324A0A04700212E48A04700212E48A047002124
|
||||
S11324B02D48A04700212D48A04700212C48A047C3
|
||||
S11324C000212C48A04700212B48A04700212B487D
|
||||
S11324D0A04700212A48A04700212A48A0470021FC
|
||||
S11324E02948A04700212948A04700212848A0479F
|
||||
S11324F00123052209211846264CA0470221012068
|
||||
S1132500254B9847254B9847254B9847254B98478B
|
||||
S1132510254D264CA847A047FCE700BFD526000060
|
||||
S1132520FC81E00F0CA00C4020600C40592E0000F0
|
||||
S113253040800C4044800C40F081E00FFFB98A4C8D
|
||||
S1132540B481E00F34200040C881E00F2C400040EB
|
||||
S11325507D2B000000800C40000304002D290000A6
|
||||
S1132560001304000033040000A202000002020071
|
||||
S11325700012020000220200003202000072020077
|
||||
S11325800082020000B2020000E2020000F2020037
|
||||
S113259000D20200C92C0000AD2C00004123000031
|
||||
S11325A0B1250000F121000055230000BD220000E8
|
||||
S11325B008B50A480A4B98470A4BA3FB0030800928
|
||||
S11325C00138094B5860E021084A82F823100022A0
|
||||
S11325D09A6007211960064B1A6008BD20000400A8
|
||||
S11325E0392A0000D34D621010E000E000ED00E055
|
||||
S11325F054000020014B1868704700BF54000020AD
|
||||
S1132600024A136801331360704700BF540000206E
|
||||
S1132610FEE700BF1D4BDB6A03F47053B3F5805F24
|
||||
S11326202FD0B3F5005F03D0B3F5006F06D102E0FD
|
||||
S1132630174B18687047174B18687047134BDB68C3
|
||||
S113264003F4E063B3F5007F13D004D8ABB1B3F562
|
||||
S1132650807F10D013E0B3F5806F06D0B3F5A06F80
|
||||
S113266012D0B3F5407F0AD101E00B4870470B4804
|
||||
S113267070470B4870470B4870470B487047002061
|
||||
S113268070474FF4004070470848704700800C4082
|
||||
S11326900000002004000020406F4001809FD5000E
|
||||
S11326A0C0D8A700C0CF6A0040420F00003FAB0172
|
||||
S11326B008B5054B9847054B5B6803F00F03D840FA
|
||||
S11326C0034B186008BD00BF1526000000800C40B5
|
||||
S11326D058000020704700BF4FF40040704700BF0F
|
||||
S11326E0014B1868704700BF000000200A4B5B686C
|
||||
S11326F003F00702032A0CD8DFE802F002020707FE
|
||||
S113270023F0070343F0010303E023F0070343F03E
|
||||
S11327100303014A5360704700000C40104B5B6890
|
||||
S1132720104A024410498A420AD803F00702023AC6
|
||||
S1132730012A23F0070394BF43F0030343F001038A
|
||||
S11327400A4A904208D803F00702023A012A23F009
|
||||
S1132750070398BF43F00203014A5360704700BF68
|
||||
S113276000000C40FFDB0BFFFF23F4000024F40007
|
||||
S113277008B50C4B9B6A400023FA00F000F00300FC
|
||||
S1132780022806D0032807D0012809D1064B984710
|
||||
S113279008BD064B984708BD054B9847400808BD3F
|
||||
S11327A0002008BD00800C40D9260000E12600006E
|
||||
S11327B0B1260000C0F30313013B032B00F2A880F1
|
||||
S11327C0DFE803F0020E2271B1FA81F1C9B2514A75
|
||||
S11327D0936823F00F03C1F11F010B43936070470B
|
||||
S11327E010B50C464C4B9847B4FA84F1C9B2494A27
|
||||
S11327F0536823F00F03C1F11F010B435360474B90
|
||||
S11328009847474B984710BD464B98421DD003F557
|
||||
S1132810F633984230D0A3F57F33984278D13D4BBC
|
||||
S11328205B6D13F0010F04D13A4A136D13F0040FDA
|
||||
S1132830FBD1B1FA81F3DBB236498A6E22F00F0282
|
||||
S1132840C3F11F0313438B667047324B5B6D13F068
|
||||
S1132850010F04D12F4A136D13F0040FFBD1B1FA09
|
||||
S113286081F2D2B22B498B6EC2F11F0223F0F00326
|
||||
S113287043EA02138B667047264B5B6D13F0010F1E
|
||||
S113288004D1244A136D13F0040FFBD1B1FA81F281
|
||||
S1132890D2B220498B6EC2F10F0223F4407343EA93
|
||||
S11328A002238B667047204B984204D003F504330F
|
||||
S11328B0984216D07047174B5B6D13F0010F04D18B
|
||||
S11328C0144A136D13F0400FFBD1B1FA81F1C9B270
|
||||
S11328D0104A136F23F00303C1F11F010B43136765
|
||||
S11328E070470C4B5B6D13F0010F04D1094A136D53
|
||||
S11328F013F0400FFBD1B1FA81F1C9B2054A136F4D
|
||||
S1132900C1F11F0123F0300343EA0111116770473D
|
||||
S1132910704700BF00800C40ED260000B126000087
|
||||
S11329201D27000030140A004005140030B4C0F321
|
||||
S11329300323013B052B28D8DFE803F00821061602
|
||||
S113294003231024124A11E0124A1BE0C0F304309E
|
||||
S1132950114A02E02B6D2342FCD102F1047200EB18
|
||||
S1132960C2008000016010E001240C4AC0F304306E
|
||||
S11329700B4B5B6D13F0010FEFD1094DEAE7094AE8
|
||||
S113298000E0094AC0F30430E7E730BC704700BFF9
|
||||
S113299060800C4040800C4008800C4058800C4003
|
||||
S11329A000800C4044800C4078800C4000F00F0004
|
||||
S11329B00138032803D8DFE800F004162738002084
|
||||
S11329C070471C4BDB6A03F47053B3F5805F08D087
|
||||
S11329D0B3F5005F2BD0B3F5006F0CBF04200520C6
|
||||
S11329E0704703207047134B9B6A03F00303022BC9
|
||||
S11329F006D0032B06D0012B0CBF03200120704707
|
||||
S1132A0002207047062070470A4B9B6A03F00C03B0
|
||||
S1132A10022B06D0032B06D0012B0CBF0320012070
|
||||
S1132A207047022070470620704707207047022035
|
||||
S1132A30704700BF00800C4008B500F47810B0F572
|
||||
S1132A40402F4ED012D8B0F5802F31D004D820B307
|
||||
S1132A50B0F5003F24D07FE0B0F5002F2FD0B0F5C3
|
||||
S1132A60202F35D0B0F5C02F76D124E0B0F5A01FCB
|
||||
S1132A7053D006D8B0F5602F3CD0B0F5901F48D0A5
|
||||
S1132A806AE0B0F5C01F5AD0B0F5D01F03D0B0F53E
|
||||
S1132A90B01F61D14AE0324808BD324B984708BDA7
|
||||
S1132AA0304B9847304B9B6803F00F03D84008BD68
|
||||
S1132AB02E4B984708BD00202D4B984708BD002099
|
||||
S1132AC02B4B9847284B9B6E03F00F03D84008BD4F
|
||||
S1132AD00020274B9847244B9B6EC3F30313D84025
|
||||
S1132AE008BD0020224B98471F4B9B6EC3F3012364
|
||||
S1132AF0D84008BD00201E4B98471B4A936EC3F371
|
||||
S1132B000123D840D36F03F007030133B0FBF3F084
|
||||
S1132B1008BD0120164B984708BD0120144B984767
|
||||
S1132B20114B1B6F03F00303D84008BD0120104B69
|
||||
S1132B3098470D4B1B6FC3F30113D84008BD0D48D4
|
||||
S1132B400D4B9847072802D0082802D006E0044815
|
||||
S1132B5008BD044B984708BD002008BD002008BDEF
|
||||
S1132B60809FD5001526000000800C40B12600008F
|
||||
S1132B707127000004001800AD29000008B50428DE
|
||||
S1132B8021D8DFE800F00C09031106000423082013
|
||||
S1132B900CE01023202009E04023802006E04FF4BD
|
||||
S1132BA080734FF4007001E00123022039B106491B
|
||||
S1132BB00B6232B10A46D36A1842FCD001E0024BE0
|
||||
S1132BC01862024B984708BD00800C40992C000005
|
||||
S1132BD010B500F00F00012804D000284CD00328C1
|
||||
S1132BE021D910BD0239032946D8DFE801F00B02D0
|
||||
S1132BF005080120032407E00220044604E0032022
|
||||
S1132C00012401E000200424012211461B4B9847B3
|
||||
S1132C101B4B98471B4B5C621B4B98471B4B9847BD
|
||||
S1132C201B4B984710BD02280CBF00240224013915
|
||||
S1132C30052921D8DFE801F016030A20201101221A
|
||||
S1132C40114600200D4B984702230CE00122114647
|
||||
S1132C5010460A4B9847012305E001220D4B1A60E8
|
||||
S1132C60032300E000230748816A0322A24021EAEB
|
||||
S1132C700202A3401343836210BD00BF7D2B0000FA
|
||||
S1132C80ED26000000800C40992C0000B1260000C5
|
||||
S1132C901D27000008089043024BDA6A024B1A8091
|
||||
S1132CA0704700BF00800C405C00002000EBC000B7
|
||||
S1132CB0800000F1804000F5C040036823F0030366
|
||||
S1132CC019430160704700BFF0B51546AAB153B16E
|
||||
S1132CD001248C4000EBC002920002F1804202F514
|
||||
S1132CE0C042146109E001248C4000EBC002920050
|
||||
S1132CF002F1804202F5C0425461072911D800EB69
|
||||
S1132D00C002920002F1804202F5C04257688C0072
|
||||
S1132D100F26A64027EA060605FA04F43443546055
|
||||
S1132D2016E0184CC600321804EB8202976801F1D1
|
||||
S1132D308042083A92004FF00F0E0EFA02FE27EA84
|
||||
S1132D400E0705FA02F23A43064404EB8604A26035
|
||||
S1132D50BDB95BB1012303FA01F100EBC0008000AF
|
||||
S1132D6000F1804000F5C0400161F0BD012303FA89
|
||||
S1132D7001F100EBC000800000F1804000F5C0408C
|
||||
S1132D804161F0BD0060004038B504461546084670
|
||||
S1132D9059B90D4B9C4205D003F580639C4212D176
|
||||
S1132DA00A4800E00A480B4B98474201B2FBF5F28F
|
||||
S1132DB0203AD200236C13F0010F03D1636C13F09B
|
||||
S1132DC0040FFBD1E26038BD0040084040151600F6
|
||||
S1132DD040051400392A0000CB435B0003F00A03CA
|
||||
S1132DE01943036C13F0010F03D1436C13F0020F6A
|
||||
S1132DF0FBD14160704700BF38B504460D46036CF3
|
||||
S1132E0013F0010F03D1636C13F0020FFBD10A23FB
|
||||
S1132E106360636C002BFCD101232364226822F0DD
|
||||
S1132E201C022B7B1A436B7B1A43AB7B134323603B
|
||||
S1132E30AA6869682046034B98472B78636000238F
|
||||
S1132E40236438BD892D0000836813F0200FFBD064
|
||||
S1132E50C069C0B2704700BF06490B6903F03F0365
|
||||
S1132E6003708B6903F0F002CB69C3F303131343BC
|
||||
S1132E7043707047D0FF0FE01F2AC4BF203A0431CB
|
||||
S1132E80012303FA02F2072924D8DFE801F0040839
|
||||
S1132E900C1014181C20036C1A4302647047436C12
|
||||
S1132EA01A4342647047836C1A4382647047C36C4C
|
||||
S1132EB01A43C2647047036D1A4302657047436D39
|
||||
S1132EC01A4342657047836D1A4382657047C36D28
|
||||
S1132ED01A43C265704700BF1F2AC4BF203A043199
|
||||
S1132EE0012303FA02F207292CD8DFE801F00409D0
|
||||
S1132EF00E13181D2227036C23EA02020264704792
|
||||
S1132F00436C23EA020242647047836C23EA0202A0
|
||||
S1132F1082647047C36C23EA0202C2647047036D83
|
||||
S1132F2023EA020202657047436D23EA0202426506
|
||||
S1132F307047836D23EA020282657047C36D23EAFA
|
||||
S1132F400202C265704700BF4FF0FF32034B5A6262
|
||||
S1132F50034A136801331360704700BF00A00840A0
|
||||
S1132F6060000020002303640365436443658364B5
|
||||
S1132F708365C364C365436E002BFCD1704700BFF7
|
||||
S1132F8010B50B292AD8DFE801F006090C0F121539
|
||||
S1132F90181B1E2124270F2303241FE003230124CD
|
||||
S1132FA01CE003231C4619E00323002416E003233A
|
||||
S1132FB0022413E02723002410E0272303240DE038
|
||||
S1132FC0012303240AE00123022407E001231C4611
|
||||
S1132FD004E001231C4601E00723032422B11A461E
|
||||
S1132FE02146044B984710BD1A462146024B984788
|
||||
S1132FF010BD00BF792E0000D92E000010B5044684
|
||||
S11330001E4B9A6A22F003029A629A6A42F0020202
|
||||
S11330109A629A6D42F004029A659A6E22F44072A2
|
||||
S11330209A669A6E42F440729A6600238362636ED3
|
||||
S1133030002BFCD14FF0FF3363624FF00062104B62
|
||||
S11330401A600123A36241F60B73636000220B4BE9
|
||||
S1133050DA6720460B4B984740F2FF33A360052301
|
||||
S11330602360636E002BFCD1074BE360636E002B7F
|
||||
S1133070FCD101236362A36210BD00BF00800C4039
|
||||
S10F308000E100E0652F000000011C00CE
|
||||
S113308C0500000000000000802500000000000086
|
||||
S10B309C008000000048E80177
|
||||
S903217962
|
||||
|
|
|
@ -1,19 +1,22 @@
|
|||
<!DOCTYPE CrossStudio_for_ARM_Session_File>
|
||||
<!DOCTYPE CrossStudio_Session_File>
|
||||
<session>
|
||||
<Bookmarks/>
|
||||
<Breakpoints/>
|
||||
<ExecutionProfileWindow/>
|
||||
<FrameBufferWindow>
|
||||
<FrameBufferWindow addressText="" bufferWidth="-1" bufferHeight="-1" addressSpace="" />
|
||||
</FrameBufferWindow>
|
||||
<Memory1>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
</Memory1>
|
||||
<Memory2>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
</Memory2>
|
||||
<Memory3>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
</Memory3>
|
||||
<Memory4>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
</Memory4>
|
||||
<Project>
|
||||
<ProjectSessionItem path="EFM32G880_crossworks" name="unnamed" />
|
||||
|
@ -24,16 +27,16 @@
|
|||
<ProjectSessionItem path="EFM32G880_crossworks;demoprog_olimex_efm32g880;Source Files;Demo;Prog" name="unnamed" />
|
||||
</Project>
|
||||
<Register1>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="" />
|
||||
</Register1>
|
||||
<Register2>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="" />
|
||||
</Register2>
|
||||
<Register3>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="" />
|
||||
</Register3>
|
||||
<Register4>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="" />
|
||||
</Register4>
|
||||
<TargetWindow programAction="" uploadFileType="" programLoadAddress="" programSize="" uploadFileName="" uploadMemoryInterface="" programFileName="" uploadStartAddress="" programFileType="" uploadSize="" programMemoryInterface="" />
|
||||
<TraceWindow>
|
||||
|
@ -52,7 +55,7 @@
|
|||
<Watches active="0" update="Never" />
|
||||
</Watch4>
|
||||
<Files>
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="C:\Users\voorburg\Desktop\Target\Demo\ARMCM3_EFM32_Olimex_EM32G880F128STK_Crossworks\Prog\main.c" y="0" path="C:\Users\voorburg\Desktop\Target\Demo\ARMCM3_EFM32_Olimex_EM32G880F128STK_Crossworks\Prog\main.c" left="0" selected="1" name="unnamed" top="0" />
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Default" x="0" debugPath="../main.c" y="0" path="../main.c" left="0" selected="1" name="unnamed" top="0" />
|
||||
</Files>
|
||||
<ARMCrossStudioWindow activeProject="demoprog_olimex_efm32g880" autoConnectTarget="Olimex ARM-USB-TINY" debugSearchFileMap="" fileDialogInitialDirectory="D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_EFM32_Olimex_EM32G880F128STK_Crossworks\Prog" fileDialogDefaultFilter="*.c" autoConnectCapabilities="388991" debugSearchPath="" buildConfiguration="THUMB Flash Debug" />
|
||||
<ARMCrossStudioWindow activeProject="demoprog_olimex_efm32g880" autoConnectTarget="Olimex ARM-USB-TINY" debugSearchFileMap="" fileDialogInitialDirectory="D:/usr/feaser/software/OpenBLT/Target/Demo/ARMCM3_EFM32_Olimex_EM32G880F128STK_Crossworks/Prog" fileDialogDefaultFilter="*.c" autoConnectCapabilities="388991" debugSearchPath="" buildConfiguration="THUMB Flash Debug" />
|
||||
</session>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Integrated Development Environment
|
||||
----------------------------------
|
||||
Rowleys CrossWorks (version 2.3.1) was used as the editor during the development of this software program. This directory contains
|
||||
Rowleys CrossWorks (version 3.7.6) was used as the editor during the development of this software program. This directory contains
|
||||
the CrossWorks project and solution files. More info is available at: http://www.rowley.co.uk/
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,4 +1,4 @@
|
|||
Integrated Development Environment
|
||||
----------------------------------
|
||||
Rowleys CrossWorks (version 2.3.1) was used as the editor during the development of this software program. This directory contains
|
||||
Rowleys CrossWorks (version 3.7.6) was used as the editor during the development of this software program. This directory contains
|
||||
the CrossWorks project and solution files. More info is available at: http://www.rowley.co.uk/
|
|
@ -1,106 +1,172 @@
|
|||
<!DOCTYPE CrossStudio_Project_File>
|
||||
<solution Name="stm32f103_crossworks" target="8" version="2">
|
||||
<project Name="openblt_olimex_stm32h103">
|
||||
<configuration Name="Common" Placement="Flash" Target="STM32F103RB" arm_architecture="v7M" arm_core_type="Cortex-M3" arm_linker_heap_size="128" arm_linker_jtag_pad_pre_dr="1" arm_linker_jtag_pad_pre_ir="5" arm_linker_process_stack_size="0" arm_linker_stack_size="128" arm_simulator_memory_simulation_filename="$(TargetsDir)/STM32/STM32SimulatorMemory.dll" arm_simulator_memory_simulation_parameter="STM32F103RB;0x20000;0x5000" arm_target_debug_interface_type="ADIv5" arm_target_loader_applicable_loaders="Flash" arm_target_loader_default_loader="Flash" arm_target_loader_parameter="8000000" arm_use_gcc_libraries="Yes" build_intermediate_directory="$(Configuration)/../../obj" build_output_directory="$(ProjectDir)/../bin" c_only_additional_options="-I./..;-I./../lib/CMSIS/CM3/CoreSupport;-I./../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x;-I./../lib/USB_FS_DEVICE/inc;-I./../../../../Source;-I./../../../../Source/ARMCM3_STM32F1;-I./../../../../Source/ARMCM3_STM32F1/Crossworks" c_user_include_directories="$(TargetsDir)/STM32/include" gcc_optimization_level="Level 1" link_include_standard_libraries="Yes" linker_keep_symbols="_vectors;EntryFromProg" linker_memory_map_file="$(TargetsDir)/STM32/STM32F103RB_MemoryMap.xml" linker_output_format="srec" linker_printf_enabled="No" linker_printf_width_precision_supported="No" linker_scanf_enabled="No" linker_section_placement_file="$(StudioDir)/targets/Cortex_M/flash_placement.xml" oscillator_frequency="8MHz" project_directory="" project_type="Executable" property_groups_file_path="$(TargetsDir)/STM32/propertyGroups.xml" target_get_partname_script="GetPartName()" target_match_partname_script="MatchPartName("$(Target)")" target_reset_script="Reset()"/>
|
||||
<configuration Name="Flash" arm_target_flash_loader_file_path="$(TargetsDir)/STM32/Release/Loader_rpc.elf" arm_target_flash_loader_type="LIBMEM RPC Loader" arm_target_loader_can_lock_all="No" arm_target_loader_can_lock_range="No" arm_target_loader_can_unlock_all="No" arm_target_loader_can_unlock_range="No" target_reset_script="FLASHReset()"/>
|
||||
<configuration
|
||||
Name="Common"
|
||||
Placement="Flash"
|
||||
Target="STM32F103RB"
|
||||
arm_architecture="v7M"
|
||||
arm_core_type="Cortex-M3"
|
||||
arm_linker_heap_size="128"
|
||||
arm_linker_jtag_pad_pre_dr="1"
|
||||
arm_linker_jtag_pad_pre_ir="5"
|
||||
arm_linker_process_stack_size="0"
|
||||
arm_linker_stack_size="128"
|
||||
arm_simulator_memory_simulation_filename="$(TargetsDir)/STM32/STM32SimulatorMemory.dll"
|
||||
arm_simulator_memory_simulation_parameter="STM32F103RB;0x20000;0x5000"
|
||||
arm_target_debug_interface_type="ADIv5"
|
||||
arm_target_loader_applicable_loaders="Flash"
|
||||
arm_target_loader_default_loader="Flash"
|
||||
arm_target_loader_parameter="8000000"
|
||||
arm_use_gcc_libraries="Yes"
|
||||
build_intermediate_directory="$(Configuration)/../../obj"
|
||||
build_output_directory="$(ProjectDir)/../bin"
|
||||
c_only_additional_options="-I./..;-I./../lib/CMSIS/CM3/CoreSupport;-I./../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x;-I./../lib/USB_FS_DEVICE/inc;-I./../../../../Source;-I./../../../../Source/ARMCM3_STM32F1;-I./../../../../Source/ARMCM3_STM32F1/Crossworks"
|
||||
c_preprocessor_definitions=""
|
||||
c_user_include_directories="$(TargetsDir)/STM32/include"
|
||||
gcc_optimization_level="Level 1"
|
||||
link_include_standard_libraries="Yes"
|
||||
linker_keep_symbols="_vectors;EntryFromProg"
|
||||
linker_memory_map_file="$(TargetsDir)/STM32/STM32F103RB_MemoryMap.xml"
|
||||
linker_output_format="srec"
|
||||
linker_printf_enabled="No"
|
||||
linker_printf_width_precision_supported="No"
|
||||
linker_scanf_enabled="No"
|
||||
linker_section_placement_file="$(StudioDir)/targets/Cortex_M/flash_placement.xml"
|
||||
oscillator_frequency="8MHz"
|
||||
project_directory=""
|
||||
project_type="Executable"
|
||||
property_groups_file_path="$(TargetsDir)/STM32/propertyGroups.xml"
|
||||
target_get_partname_script="GetPartName()"
|
||||
target_match_partname_script="MatchPartName("$(Target)")"
|
||||
target_reset_script="Reset()" />
|
||||
<configuration
|
||||
Name="Flash"
|
||||
arm_target_flash_loader_file_path="$(TargetsDir)/STM32/Release/Loader_rpc.elf"
|
||||
arm_target_flash_loader_type="LIBMEM RPC Loader"
|
||||
arm_target_loader_can_lock_all="No"
|
||||
arm_target_loader_can_lock_range="No"
|
||||
arm_target_loader_can_unlock_all="No"
|
||||
arm_target_loader_can_unlock_range="No"
|
||||
target_reset_script="FLASHReset()" />
|
||||
<folder Name="Source Files">
|
||||
<configuration Name="Common" filter="c;cpp;cxx;cc;h;s;asm;inc"/>
|
||||
<configuration Name="Common" filter="c;cpp;cxx;cc;h;s;asm;inc" />
|
||||
<folder Name="Demo">
|
||||
<folder Name="Boot" file_name="">
|
||||
<file file_name="../hooks.c"/>
|
||||
<file file_name="../main.c"/>
|
||||
<folder Name="Boot">
|
||||
<file file_name="../hooks.c" />
|
||||
<file file_name="../main.c" />
|
||||
<folder Name="lib">
|
||||
<folder Name="CoreSupport">
|
||||
<file file_name="../lib/CMSIS/CM3/CoreSupport/core_cm3.c"/>
|
||||
<file file_name="../lib/CMSIS/CM3/CoreSupport/core_cm3.h"/>
|
||||
<file file_name="../lib/CMSIS/CM3/CoreSupport/core_cm3.h" />
|
||||
</folder>
|
||||
<folder Name="DeviceSupport">
|
||||
<file file_name="../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h"/>
|
||||
<file file_name="../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c"/>
|
||||
<file file_name="../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h"/>
|
||||
<file file_name="../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h" />
|
||||
<file file_name="../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c" />
|
||||
<file file_name="../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h" />
|
||||
</folder>
|
||||
<folder Name="UsbFullspeed">
|
||||
<file file_name="../lib/USB_FS_DEVICE/inc/usb_core.h"/>
|
||||
<file file_name="../lib/USB_FS_DEVICE/inc/usb_def.h"/>
|
||||
<file file_name="../lib/USB_FS_DEVICE/inc/usb_init.h"/>
|
||||
<file file_name="../lib/USB_FS_DEVICE/inc/usb_int.h"/>
|
||||
<file file_name="../lib/USB_FS_DEVICE/inc/usb_lib.h"/>
|
||||
<file file_name="../lib/USB_FS_DEVICE/inc/usb_mem.h"/>
|
||||
<file file_name="../lib/USB_FS_DEVICE/inc/usb_regs.h"/>
|
||||
<file file_name="../lib/USB_FS_DEVICE/inc/usb_sil.h"/>
|
||||
<file file_name="../lib/USB_FS_DEVICE/inc/usb_type.h"/>
|
||||
<file file_name="../lib/USB_FS_DEVICE/src/usb_core.c"/>
|
||||
<file file_name="../lib/USB_FS_DEVICE/src/usb_init.c"/>
|
||||
<file file_name="../lib/USB_FS_DEVICE/src/usb_int.c"/>
|
||||
<file file_name="../lib/USB_FS_DEVICE/src/usb_mem.c"/>
|
||||
<file file_name="../lib/USB_FS_DEVICE/src/usb_regs.c"/>
|
||||
<file file_name="../lib/USB_FS_DEVICE/src/usb_sil.c"/>
|
||||
<file file_name="../lib/USB_FS_DEVICE/inc/usb_core.h" />
|
||||
<file file_name="../lib/USB_FS_DEVICE/inc/usb_def.h" />
|
||||
<file file_name="../lib/USB_FS_DEVICE/inc/usb_init.h" />
|
||||
<file file_name="../lib/USB_FS_DEVICE/inc/usb_int.h" />
|
||||
<file file_name="../lib/USB_FS_DEVICE/inc/usb_lib.h" />
|
||||
<file file_name="../lib/USB_FS_DEVICE/inc/usb_mem.h" />
|
||||
<file file_name="../lib/USB_FS_DEVICE/inc/usb_regs.h" />
|
||||
<file file_name="../lib/USB_FS_DEVICE/inc/usb_sil.h" />
|
||||
<file file_name="../lib/USB_FS_DEVICE/inc/usb_type.h" />
|
||||
<file file_name="../lib/USB_FS_DEVICE/src/usb_core.c" />
|
||||
<file file_name="../lib/USB_FS_DEVICE/src/usb_init.c" />
|
||||
<file file_name="../lib/USB_FS_DEVICE/src/usb_int.c" />
|
||||
<file file_name="../lib/USB_FS_DEVICE/src/usb_mem.c" />
|
||||
<file file_name="../lib/USB_FS_DEVICE/src/usb_regs.c" />
|
||||
<file file_name="../lib/USB_FS_DEVICE/src/usb_sil.c" />
|
||||
</folder>
|
||||
</folder>
|
||||
<file file_name="../usb_conf.h"/>
|
||||
<file file_name="../usb_desc.c"/>
|
||||
<file file_name="../usb_desc.h"/>
|
||||
<file file_name="../usb_endp.c"/>
|
||||
<file file_name="../usb_istr.c"/>
|
||||
<file file_name="../usb_istr.h"/>
|
||||
<file file_name="../usb_prop.c"/>
|
||||
<file file_name="../usb_prop.h"/>
|
||||
<file file_name="../usb_pwr.c"/>
|
||||
<file file_name="../usb_pwr.h"/>
|
||||
<file file_name="../blt_conf.h"/>
|
||||
<file file_name="../usb_conf.h" />
|
||||
<file file_name="../usb_desc.c" />
|
||||
<file file_name="../usb_desc.h" />
|
||||
<file file_name="../usb_endp.c" />
|
||||
<file file_name="../usb_istr.c" />
|
||||
<file file_name="../usb_istr.h" />
|
||||
<file file_name="../usb_prop.c" />
|
||||
<file file_name="../usb_prop.h" />
|
||||
<file file_name="../usb_pwr.c" />
|
||||
<file file_name="../usb_pwr.h" />
|
||||
<file file_name="../blt_conf.h" />
|
||||
</folder>
|
||||
</folder>
|
||||
<folder Name="Source" file_name="">
|
||||
<folder Name="ARMCM3_STM32F1" file_name="">
|
||||
<folder Name="Crossworks" file_name="">
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/Crossworks/cpu_comp.c"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/Crossworks/cstart.s"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/Crossworks/vectors.c"/>
|
||||
<folder Name="Source">
|
||||
<folder Name="ARMCM3_STM32F1">
|
||||
<folder Name="Crossworks">
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/Crossworks/cpu_comp.c" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/Crossworks/cstart.s" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/Crossworks/vectors.c" />
|
||||
</folder>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/can.c"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/cpu.c"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/flash.c"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/flash.h"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/nvm.c"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/timer.c"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/types.h"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/uart.c"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/usb.c"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/can.c" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/cpu.c" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/flash.c" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/flash.h" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/nvm.c" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/timer.c" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/types.h" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/uart.c" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/usb.c" />
|
||||
</folder>
|
||||
<file file_name="../../../../Source/assert.c"/>
|
||||
<file file_name="../../../../Source/assert.h"/>
|
||||
<file file_name="../../../../Source/backdoor.c"/>
|
||||
<file file_name="../../../../Source/backdoor.h"/>
|
||||
<file file_name="../../../../Source/boot.c"/>
|
||||
<file file_name="../../../../Source/boot.h"/>
|
||||
<file file_name="../../../../Source/com.c"/>
|
||||
<file file_name="../../../../Source/com.h"/>
|
||||
<file file_name="../../../../Source/cop.c"/>
|
||||
<file file_name="../../../../Source/cop.h"/>
|
||||
<file file_name="../../../../Source/plausibility.h"/>
|
||||
<file file_name="../../../../Source/xcp.c"/>
|
||||
<file file_name="../../../../Source/xcp.h"/>
|
||||
<file file_name="../../../../Source/can.h"/>
|
||||
<file file_name="../../../../Source/cpu.h"/>
|
||||
<file file_name="../../../../Source/nvm.h"/>
|
||||
<file file_name="../../../../Source/timer.h"/>
|
||||
<file file_name="../../../../Source/uart.h"/>
|
||||
<file file_name="../../../../Source/usb.h"/>
|
||||
<file file_name="../../../../Source/assert.c" />
|
||||
<file file_name="../../../../Source/assert.h" />
|
||||
<file file_name="../../../../Source/backdoor.c" />
|
||||
<file file_name="../../../../Source/backdoor.h" />
|
||||
<file file_name="../../../../Source/boot.c" />
|
||||
<file file_name="../../../../Source/boot.h" />
|
||||
<file file_name="../../../../Source/com.c" />
|
||||
<file file_name="../../../../Source/com.h" />
|
||||
<file file_name="../../../../Source/cop.c" />
|
||||
<file file_name="../../../../Source/cop.h" />
|
||||
<file file_name="../../../../Source/plausibility.h" />
|
||||
<file file_name="../../../../Source/xcp.c" />
|
||||
<file file_name="../../../../Source/xcp.h" />
|
||||
<file file_name="../../../../Source/can.h" />
|
||||
<file file_name="../../../../Source/cpu.h" />
|
||||
<file file_name="../../../../Source/nvm.h" />
|
||||
<file file_name="../../../../Source/timer.h" />
|
||||
<file file_name="../../../../Source/uart.h" />
|
||||
<file file_name="../../../../Source/usb.h" />
|
||||
</folder>
|
||||
</folder>
|
||||
<folder Name="System Files" file_name="">
|
||||
<folder Name="System Files">
|
||||
<file file_name="$(TargetsDir)/STM32/STM32_Target.js">
|
||||
<configuration Name="Common" file_type="Reset Script"/>
|
||||
<configuration Name="Common" file_type="Reset Script" />
|
||||
</file>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/Crossworks/memory.x">
|
||||
<configuration Name="Common" file_type="Linker Script"/>
|
||||
<configuration Name="Common" file_type="Linker Script" />
|
||||
</file>
|
||||
</folder>
|
||||
<configuration Name="Debug" c_only_additional_options=""/>
|
||||
<configuration Name="Debug" c_only_additional_options="" />
|
||||
</project>
|
||||
<configuration Name="THUMB Debug" inherited_configurations="THUMB;Debug"/>
|
||||
<configuration Name="THUMB" Platform="ARM" arm_instruction_set="THUMB" arm_library_instruction_set="THUMB" c_preprocessor_definitions="__THUMB" hidden="Yes"/>
|
||||
<configuration Name="Debug" build_debug_information="Yes" c_preprocessor_definitions="DEBUG" gcc_optimization_level="None" hidden="Yes" link_include_startup_code="No"/>
|
||||
<configuration Name="THUMB Release" inherited_configurations="THUMB;Release"/>
|
||||
<configuration Name="Release" build_debug_information="No" c_additional_options="-g1" c_preprocessor_definitions="NDEBUG" gcc_optimization_level="Level 1" hidden="Yes" link_include_startup_code="No"/>
|
||||
<configuration Name="THUMB Debug" inherited_configurations="THUMB;Debug" />
|
||||
<configuration
|
||||
Name="THUMB"
|
||||
Platform="ARM"
|
||||
arm_instruction_set="THUMB"
|
||||
arm_library_instruction_set="THUMB"
|
||||
c_preprocessor_definitions="__THUMB"
|
||||
hidden="Yes" />
|
||||
<configuration
|
||||
Name="Debug"
|
||||
build_debug_information="Yes"
|
||||
c_preprocessor_definitions="DEBUG"
|
||||
gcc_optimization_level="None"
|
||||
hidden="Yes"
|
||||
link_include_startup_code="No" />
|
||||
<configuration
|
||||
Name="THUMB Release"
|
||||
inherited_configurations="THUMB;Release" />
|
||||
<configuration
|
||||
Name="Release"
|
||||
build_debug_information="No"
|
||||
c_additional_options="-g1"
|
||||
c_preprocessor_definitions="NDEBUG"
|
||||
gcc_optimization_level="Level 1"
|
||||
hidden="Yes"
|
||||
link_include_startup_code="No" />
|
||||
</solution>
|
||||
|
|
|
@ -1,23 +1,28 @@
|
|||
<!DOCTYPE CrossStudio_for_ARM_Session_File>
|
||||
<!DOCTYPE CrossStudio_Session_File>
|
||||
<session>
|
||||
<Bookmarks/>
|
||||
<Breakpoints/>
|
||||
<Breakpoints>
|
||||
<Exceptions set="MemManage;UsageFault_Coprocessor;UsageFault_CheckingError;UsageFault_StateError;BusFault;ExceptionEntryReturnFault;HardFault" />
|
||||
</Breakpoints>
|
||||
<ExecutionProfileWindow/>
|
||||
<FrameBufferWindow>
|
||||
<FrameBufferWindow addressText="" bufferWidth="-1" bufferHeight="-1" addressSpace="" />
|
||||
</FrameBufferWindow>
|
||||
<Memory1>
|
||||
<MemoryWindow autoEvaluate="0" addressText="0x08004004" numColumns="8" sizeText="4" dataSize="1" radix="16" name="openbtl_olimex_stm32h103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="0x08004004" numColumns="8" sizeText="4" dataSize="1" radix="16" name="openblt_olimex_stm32h103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="0x08004004" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="4" viewMode="0" dataSize="1" radix="16" name="openbtl_olimex_stm32h103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="0x08004004" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="4" viewMode="0" dataSize="1" radix="16" name="openblt_olimex_stm32h103" addressSpace="" />
|
||||
</Memory1>
|
||||
<Memory2>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="openbtl_olimex_stm32h103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="openblt_olimex_stm32h103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="openbtl_olimex_stm32h103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="openblt_olimex_stm32h103" addressSpace="" />
|
||||
</Memory2>
|
||||
<Memory3>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="openbtl_olimex_stm32h103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="openblt_olimex_stm32h103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="openbtl_olimex_stm32h103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="openblt_olimex_stm32h103" addressSpace="" />
|
||||
</Memory3>
|
||||
<Memory4>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="openbtl_olimex_stm32h103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="openblt_olimex_stm32h103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="openbtl_olimex_stm32h103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="openblt_olimex_stm32h103" addressSpace="" />
|
||||
</Memory4>
|
||||
<Project>
|
||||
<ProjectSessionItem path="stm32f103_crossworks" name="unnamed" />
|
||||
|
@ -25,22 +30,28 @@
|
|||
<ProjectSessionItem path="stm32f103_crossworks;openblt_olimex_stm32h103;Source Files" name="unnamed" />
|
||||
<ProjectSessionItem path="stm32f103_crossworks;openblt_olimex_stm32h103;Source Files;Demo" name="unnamed" />
|
||||
<ProjectSessionItem path="stm32f103_crossworks;openblt_olimex_stm32h103;Source Files;Demo;Boot" name="unnamed" />
|
||||
<ProjectSessionItem path="stm32f103_crossworks;openblt_olimex_stm32h103;Source Files;Demo;Boot;lib" name="unnamed" />
|
||||
<ProjectSessionItem path="stm32f103_crossworks;openblt_olimex_stm32h103;Source Files;Demo;Boot;lib;CoreSupport" name="unnamed" />
|
||||
<ProjectSessionItem path="stm32f103_crossworks;openblt_olimex_stm32h103;Source Files;Demo;Boot;lib;DeviceSupport" name="unnamed" />
|
||||
<ProjectSessionItem path="stm32f103_crossworks;openblt_olimex_stm32h103;Source Files;Source" name="unnamed" />
|
||||
<ProjectSessionItem path="stm32f103_crossworks;openblt_olimex_stm32h103;Source Files;Source;ARMCM3_STM32F1" name="unnamed" />
|
||||
<ProjectSessionItem path="stm32f103_crossworks;openblt_olimex_stm32h103;Source Files;Source;ARMCM3_STM32F1;Crossworks" name="unnamed" />
|
||||
</Project>
|
||||
<Register1>
|
||||
<RegisterWindow openNodes="CPU" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="CPU" decimalNodes="" octalNodes="" asciiNodes="" name="openbtl_olimex_stm32h103" />
|
||||
<RegisterWindow openNodes="CPU - Current Context" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="CPU - Current Context;CPU" decimalNodes="" octalNodes="" asciiNodes="" name="openblt_olimex_stm32h103" />
|
||||
<RegisterWindow openNodes="CPU" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="openbtl_olimex_stm32h103" />
|
||||
<RegisterWindow openNodes="CPU - Current Context" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="openblt_olimex_stm32h103" />
|
||||
</Register1>
|
||||
<Register2>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="openbtl_olimex_stm32h103" />
|
||||
<RegisterWindow openNodes="CPU - Current Context" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="CPU - Current Context;CPU" decimalNodes="" octalNodes="" asciiNodes="" name="openblt_olimex_stm32h103" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="openbtl_olimex_stm32h103" />
|
||||
<RegisterWindow openNodes="CPU - Current Context" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="openblt_olimex_stm32h103" />
|
||||
</Register2>
|
||||
<Register3>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="openbtl_olimex_stm32h103" />
|
||||
<RegisterWindow openNodes="CPU - Current Context" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="CPU - Current Context;CPU" decimalNodes="" octalNodes="" asciiNodes="" name="openblt_olimex_stm32h103" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="openbtl_olimex_stm32h103" />
|
||||
<RegisterWindow openNodes="CPU - Current Context" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="openblt_olimex_stm32h103" />
|
||||
</Register3>
|
||||
<Register4>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="openbtl_olimex_stm32h103" />
|
||||
<RegisterWindow openNodes="CPU - Current Context" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="CPU - Current Context;CPU" decimalNodes="" octalNodes="" asciiNodes="" name="openblt_olimex_stm32h103" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="openbtl_olimex_stm32h103" />
|
||||
<RegisterWindow openNodes="CPU - Current Context" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="openblt_olimex_stm32h103" />
|
||||
</Register4>
|
||||
<TargetWindow programAction="" uploadFileType="" programLoadAddress="" programSize="" uploadFileName="" uploadMemoryInterface="" programFileName="" uploadStartAddress="" programFileType="" uploadSize="" programMemoryInterface="" />
|
||||
<TraceWindow>
|
||||
|
@ -48,8 +59,8 @@
|
|||
</TraceWindow>
|
||||
<Watch1>
|
||||
<Watches active="1" update="Never" >
|
||||
<Watchpoint linenumber="0" radix="-1" name="fifoCtrl[0]" expression="fifoCtrl[0]" filename="" />
|
||||
<Watchpoint linenumber="0" radix="-1" name="fifoPipeBulkIN" expression="fifoPipeBulkIN" filename="" />
|
||||
<Watchpoint evalMode="0" linenumber="0" numelements="0" radix="-1" name="fifoCtrl[0]" list="" expression="fifoCtrl[0]" filename="../ide" />
|
||||
<Watchpoint evalMode="0" linenumber="0" numelements="0" radix="-1" name="fifoPipeBulkIN" list="" expression="fifoPipeBulkIN" filename="../ide" />
|
||||
</Watches>
|
||||
</Watch1>
|
||||
<Watch2>
|
||||
|
@ -62,7 +73,9 @@
|
|||
<Watches active="0" update="Never" />
|
||||
</Watch4>
|
||||
<Files>
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="C:\Work\software\OpenBLT\Target\Demo\ARMCM3_STM32F1_Olimex_STM32H103_Crossworks\Boot\main.c" y="48" path="C:\Work\software\OpenBLT\Target\Demo\ARMCM3_STM32F1_Olimex_STM32H103_Crossworks\Boot\main.c" left="0" selected="1" name="unnamed" top="4" />
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="../main.c" y="48" path="../main.c" left="0" selected="1" name="unnamed" top="9" />
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Default" x="0" debugPath="../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h" y="64" path="../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h" left="0" selected="0" name="unnamed" top="31" />
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="" x="0" debugPath="../../../../Source/ARMCM3_STM32F1/Crossworks/vectors.c" y="30" path="../../../../Source/ARMCM3_STM32F1/Crossworks/vectors.c" left="0" selected="0" name="unnamed" top="17" />
|
||||
</Files>
|
||||
<ARMCrossStudioWindow activeProject="openblt_olimex_stm32h103" autoConnectTarget="SEGGER J-Link" debugSearchFileMap="" fileDialogInitialDirectory="C:\Work\software\OpenBLT\Target\Source\ARMCM3_STM32F1\Crossworks" fileDialogDefaultFilter="*.c" autoConnectCapabilities="266111" debugSearchPath="" buildConfiguration="THUMB Debug" />
|
||||
<ARMCrossStudioWindow activeProject="openblt_olimex_stm32h103" autoConnectTarget="SEGGER J-Link" debugSearchFileMap="" fileDialogInitialDirectory="C:/Work/software/OpenBLT/Target/Source/ARMCM3_STM32F1/Crossworks" fileDialogDefaultFilter="*.c" autoConnectCapabilities="3711" debugSearchPath="" buildConfiguration="THUMB Debug" />
|
||||
</session>
|
||||
|
|
|
@ -1,784 +0,0 @@
|
|||
/**************************************************************************//**
|
||||
* @file core_cm3.c
|
||||
* @brief CMSIS Cortex-M3 Core Peripheral Access Layer Source File
|
||||
* @version V1.30
|
||||
* @date 30. October 2009
|
||||
*
|
||||
* @note
|
||||
* Copyright (C) 2009 ARM Limited. All rights reserved.
|
||||
*
|
||||
* @par
|
||||
* ARM Limited (ARM) is supplying this software for use with Cortex-M
|
||||
* processor based microcontrollers. This file can be freely distributed
|
||||
* within development tools that are supporting such ARM based processors.
|
||||
*
|
||||
* @par
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||
* OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||
* ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||
* CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* define compiler specific symbols */
|
||||
#if defined ( __CC_ARM )
|
||||
#define __ASM __asm /*!< asm keyword for ARM Compiler */
|
||||
#define __INLINE __inline /*!< inline keyword for ARM Compiler */
|
||||
|
||||
#elif defined ( __ICCARM__ )
|
||||
#define __ASM __asm /*!< asm keyword for IAR Compiler */
|
||||
#define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */
|
||||
|
||||
#elif defined ( __GNUC__ )
|
||||
#define __ASM __asm /*!< asm keyword for GNU Compiler */
|
||||
#define __INLINE inline /*!< inline keyword for GNU Compiler */
|
||||
|
||||
#elif defined ( __TASKING__ )
|
||||
#define __ASM __asm /*!< asm keyword for TASKING Compiler */
|
||||
#define __INLINE inline /*!< inline keyword for TASKING Compiler */
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* ################### Compiler specific Intrinsics ########################### */
|
||||
|
||||
#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/
|
||||
/* ARM armcc specific functions */
|
||||
|
||||
/**
|
||||
* @brief Return the Process Stack Pointer
|
||||
*
|
||||
* @return ProcessStackPointer
|
||||
*
|
||||
* Return the actual process stack pointer
|
||||
*/
|
||||
__ASM uint32_t __get_PSP(void)
|
||||
{
|
||||
mrs r0, psp
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Process Stack Pointer
|
||||
*
|
||||
* @param topOfProcStack Process Stack Pointer
|
||||
*
|
||||
* Assign the value ProcessStackPointer to the MSP
|
||||
* (process stack pointer) Cortex processor register
|
||||
*/
|
||||
__ASM void __set_PSP(uint32_t topOfProcStack)
|
||||
{
|
||||
msr psp, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Main Stack Pointer
|
||||
*
|
||||
* @return Main Stack Pointer
|
||||
*
|
||||
* Return the current value of the MSP (main stack pointer)
|
||||
* Cortex processor register
|
||||
*/
|
||||
__ASM uint32_t __get_MSP(void)
|
||||
{
|
||||
mrs r0, msp
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Main Stack Pointer
|
||||
*
|
||||
* @param topOfMainStack Main Stack Pointer
|
||||
*
|
||||
* Assign the value mainStackPointer to the MSP
|
||||
* (main stack pointer) Cortex processor register
|
||||
*/
|
||||
__ASM void __set_MSP(uint32_t mainStackPointer)
|
||||
{
|
||||
msr msp, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in unsigned short value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in unsigned short value
|
||||
*/
|
||||
__ASM uint32_t __REV16(uint16_t value)
|
||||
{
|
||||
rev16 r0, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in signed short value with sign extension to integer
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in signed short value with sign extension to integer
|
||||
*/
|
||||
__ASM int32_t __REVSH(int16_t value)
|
||||
{
|
||||
revsh r0, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
|
||||
#if (__ARMCC_VERSION < 400000)
|
||||
|
||||
/**
|
||||
* @brief Remove the exclusive lock created by ldrex
|
||||
*
|
||||
* Removes the exclusive lock which is created by ldrex.
|
||||
*/
|
||||
__ASM void __CLREX(void)
|
||||
{
|
||||
clrex
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Base Priority value
|
||||
*
|
||||
* @return BasePriority
|
||||
*
|
||||
* Return the content of the base priority register
|
||||
*/
|
||||
__ASM uint32_t __get_BASEPRI(void)
|
||||
{
|
||||
mrs r0, basepri
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Base Priority value
|
||||
*
|
||||
* @param basePri BasePriority
|
||||
*
|
||||
* Set the base priority register
|
||||
*/
|
||||
__ASM void __set_BASEPRI(uint32_t basePri)
|
||||
{
|
||||
msr basepri, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Priority Mask value
|
||||
*
|
||||
* @return PriMask
|
||||
*
|
||||
* Return state of the priority mask bit from the priority mask register
|
||||
*/
|
||||
__ASM uint32_t __get_PRIMASK(void)
|
||||
{
|
||||
mrs r0, primask
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Priority Mask value
|
||||
*
|
||||
* @param priMask PriMask
|
||||
*
|
||||
* Set the priority mask bit in the priority mask register
|
||||
*/
|
||||
__ASM void __set_PRIMASK(uint32_t priMask)
|
||||
{
|
||||
msr primask, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Fault Mask value
|
||||
*
|
||||
* @return FaultMask
|
||||
*
|
||||
* Return the content of the fault mask register
|
||||
*/
|
||||
__ASM uint32_t __get_FAULTMASK(void)
|
||||
{
|
||||
mrs r0, faultmask
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Fault Mask value
|
||||
*
|
||||
* @param faultMask faultMask value
|
||||
*
|
||||
* Set the fault mask register
|
||||
*/
|
||||
__ASM void __set_FAULTMASK(uint32_t faultMask)
|
||||
{
|
||||
msr faultmask, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Control Register value
|
||||
*
|
||||
* @return Control value
|
||||
*
|
||||
* Return the content of the control register
|
||||
*/
|
||||
__ASM uint32_t __get_CONTROL(void)
|
||||
{
|
||||
mrs r0, control
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Control Register value
|
||||
*
|
||||
* @param control Control value
|
||||
*
|
||||
* Set the control register
|
||||
*/
|
||||
__ASM void __set_CONTROL(uint32_t control)
|
||||
{
|
||||
msr control, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
#endif /* __ARMCC_VERSION */
|
||||
|
||||
|
||||
|
||||
#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/
|
||||
/* IAR iccarm specific functions */
|
||||
#pragma diag_suppress=Pe940
|
||||
|
||||
/**
|
||||
* @brief Return the Process Stack Pointer
|
||||
*
|
||||
* @return ProcessStackPointer
|
||||
*
|
||||
* Return the actual process stack pointer
|
||||
*/
|
||||
uint32_t __get_PSP(void)
|
||||
{
|
||||
__ASM("mrs r0, psp");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Process Stack Pointer
|
||||
*
|
||||
* @param topOfProcStack Process Stack Pointer
|
||||
*
|
||||
* Assign the value ProcessStackPointer to the MSP
|
||||
* (process stack pointer) Cortex processor register
|
||||
*/
|
||||
void __set_PSP(uint32_t topOfProcStack)
|
||||
{
|
||||
__ASM("msr psp, r0");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Main Stack Pointer
|
||||
*
|
||||
* @return Main Stack Pointer
|
||||
*
|
||||
* Return the current value of the MSP (main stack pointer)
|
||||
* Cortex processor register
|
||||
*/
|
||||
uint32_t __get_MSP(void)
|
||||
{
|
||||
__ASM("mrs r0, msp");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Main Stack Pointer
|
||||
*
|
||||
* @param topOfMainStack Main Stack Pointer
|
||||
*
|
||||
* Assign the value mainStackPointer to the MSP
|
||||
* (main stack pointer) Cortex processor register
|
||||
*/
|
||||
void __set_MSP(uint32_t topOfMainStack)
|
||||
{
|
||||
__ASM("msr msp, r0");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in unsigned short value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in unsigned short value
|
||||
*/
|
||||
uint32_t __REV16(uint16_t value)
|
||||
{
|
||||
__ASM("rev16 r0, r0");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse bit order of value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse bit order of value
|
||||
*/
|
||||
uint32_t __RBIT(uint32_t value)
|
||||
{
|
||||
__ASM("rbit r0, r0");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (8 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 8 bit values)
|
||||
*/
|
||||
uint8_t __LDREXB(uint8_t *addr)
|
||||
{
|
||||
__ASM("ldrexb r0, [r0]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (16 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 16 bit values
|
||||
*/
|
||||
uint16_t __LDREXH(uint16_t *addr)
|
||||
{
|
||||
__ASM("ldrexh r0, [r0]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (32 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 32 bit values
|
||||
*/
|
||||
uint32_t __LDREXW(uint32_t *addr)
|
||||
{
|
||||
__ASM("ldrex r0, [r0]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (8 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 8 bit values
|
||||
*/
|
||||
uint32_t __STREXB(uint8_t value, uint8_t *addr)
|
||||
{
|
||||
__ASM("strexb r0, r0, [r1]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (16 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 16 bit values
|
||||
*/
|
||||
uint32_t __STREXH(uint16_t value, uint16_t *addr)
|
||||
{
|
||||
__ASM("strexh r0, r0, [r1]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (32 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 32 bit values
|
||||
*/
|
||||
uint32_t __STREXW(uint32_t value, uint32_t *addr)
|
||||
{
|
||||
__ASM("strex r0, r0, [r1]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
#pragma diag_default=Pe940
|
||||
|
||||
|
||||
#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/
|
||||
/* GNU gcc specific functions */
|
||||
|
||||
/**
|
||||
* @brief Return the Process Stack Pointer
|
||||
*
|
||||
* @return ProcessStackPointer
|
||||
*
|
||||
* Return the actual process stack pointer
|
||||
*/
|
||||
uint32_t __get_PSP(void) __attribute__( ( naked ) );
|
||||
uint32_t __get_PSP(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, psp\n\t"
|
||||
"MOV r0, %0 \n\t"
|
||||
"BX lr \n\t" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Process Stack Pointer
|
||||
*
|
||||
* @param topOfProcStack Process Stack Pointer
|
||||
*
|
||||
* Assign the value ProcessStackPointer to the MSP
|
||||
* (process stack pointer) Cortex processor register
|
||||
*/
|
||||
void __set_PSP(uint32_t topOfProcStack) __attribute__( ( naked ) );
|
||||
void __set_PSP(uint32_t topOfProcStack)
|
||||
{
|
||||
__ASM volatile ("MSR psp, %0\n\t"
|
||||
"BX lr \n\t" : : "r" (topOfProcStack) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Main Stack Pointer
|
||||
*
|
||||
* @return Main Stack Pointer
|
||||
*
|
||||
* Return the current value of the MSP (main stack pointer)
|
||||
* Cortex processor register
|
||||
*/
|
||||
uint32_t __get_MSP(void) __attribute__( ( naked ) );
|
||||
uint32_t __get_MSP(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, msp\n\t"
|
||||
"MOV r0, %0 \n\t"
|
||||
"BX lr \n\t" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Main Stack Pointer
|
||||
*
|
||||
* @param topOfMainStack Main Stack Pointer
|
||||
*
|
||||
* Assign the value mainStackPointer to the MSP
|
||||
* (main stack pointer) Cortex processor register
|
||||
*/
|
||||
void __set_MSP(uint32_t topOfMainStack) __attribute__( ( naked ) );
|
||||
void __set_MSP(uint32_t topOfMainStack)
|
||||
{
|
||||
__ASM volatile ("MSR msp, %0\n\t"
|
||||
"BX lr \n\t" : : "r" (topOfMainStack) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Base Priority value
|
||||
*
|
||||
* @return BasePriority
|
||||
*
|
||||
* Return the content of the base priority register
|
||||
*/
|
||||
uint32_t __get_BASEPRI(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, basepri_max" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Base Priority value
|
||||
*
|
||||
* @param basePri BasePriority
|
||||
*
|
||||
* Set the base priority register
|
||||
*/
|
||||
void __set_BASEPRI(uint32_t value)
|
||||
{
|
||||
__ASM volatile ("MSR basepri, %0" : : "r" (value) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Priority Mask value
|
||||
*
|
||||
* @return PriMask
|
||||
*
|
||||
* Return state of the priority mask bit from the priority mask register
|
||||
*/
|
||||
uint32_t __get_PRIMASK(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, primask" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Priority Mask value
|
||||
*
|
||||
* @param priMask PriMask
|
||||
*
|
||||
* Set the priority mask bit in the priority mask register
|
||||
*/
|
||||
void __set_PRIMASK(uint32_t priMask)
|
||||
{
|
||||
__ASM volatile ("MSR primask, %0" : : "r" (priMask) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Fault Mask value
|
||||
*
|
||||
* @return FaultMask
|
||||
*
|
||||
* Return the content of the fault mask register
|
||||
*/
|
||||
uint32_t __get_FAULTMASK(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, faultmask" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Fault Mask value
|
||||
*
|
||||
* @param faultMask faultMask value
|
||||
*
|
||||
* Set the fault mask register
|
||||
*/
|
||||
void __set_FAULTMASK(uint32_t faultMask)
|
||||
{
|
||||
__ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Control Register value
|
||||
*
|
||||
* @return Control value
|
||||
*
|
||||
* Return the content of the control register
|
||||
*/
|
||||
uint32_t __get_CONTROL(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, control" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Control Register value
|
||||
*
|
||||
* @param control Control value
|
||||
*
|
||||
* Set the control register
|
||||
*/
|
||||
void __set_CONTROL(uint32_t control)
|
||||
{
|
||||
__ASM volatile ("MSR control, %0" : : "r" (control) );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in integer value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in integer value
|
||||
*/
|
||||
uint32_t __REV(uint32_t value)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in unsigned short value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in unsigned short value
|
||||
*/
|
||||
uint32_t __REV16(uint16_t value)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in signed short value with sign extension to integer
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in signed short value with sign extension to integer
|
||||
*/
|
||||
int32_t __REVSH(int16_t value)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse bit order of value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse bit order of value
|
||||
*/
|
||||
uint32_t __RBIT(uint32_t value)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (8 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 8 bit value
|
||||
*/
|
||||
uint8_t __LDREXB(uint8_t *addr)
|
||||
{
|
||||
uint8_t result=0;
|
||||
|
||||
__ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (16 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 16 bit values
|
||||
*/
|
||||
uint16_t __LDREXH(uint16_t *addr)
|
||||
{
|
||||
uint16_t result=0;
|
||||
|
||||
__ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (32 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 32 bit values
|
||||
*/
|
||||
uint32_t __LDREXW(uint32_t *addr)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (8 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 8 bit values
|
||||
*/
|
||||
uint32_t __STREXB(uint8_t value, uint8_t *addr)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (16 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 16 bit values
|
||||
*/
|
||||
uint32_t __STREXH(uint16_t value, uint16_t *addr)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("strexh %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (32 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 32 bit values
|
||||
*/
|
||||
uint32_t __STREXW(uint32_t value, uint32_t *addr)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("strex %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/
|
||||
/* TASKING carm specific functions */
|
||||
|
||||
/*
|
||||
* The CMSIS functions have been implemented as intrinsics in the compiler.
|
||||
* Please use "carm -?i" to get an up to date list of all instrinsics,
|
||||
* Including the CMSIS ones.
|
||||
*/
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -1,243 +0,0 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
<title>CMSIS Debug Support</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
|
||||
<meta name="ProgId" content="FrontPage.Editor.Document">
|
||||
<style>
|
||||
<!--
|
||||
/*-----------------------------------------------------------
|
||||
Keil Software CHM Style Sheet
|
||||
-----------------------------------------------------------*/
|
||||
body { color: #000000; background-color: #FFFFFF; font-size: 75%; font-family:
|
||||
Verdana, Arial, 'Sans Serif' }
|
||||
a:link { color: #0000FF; text-decoration: underline }
|
||||
a:visited { color: #0000FF; text-decoration: underline }
|
||||
a:active { color: #FF0000; text-decoration: underline }
|
||||
a:hover { color: #FF0000; text-decoration: underline }
|
||||
h1 { font-family: Verdana; font-size: 18pt; color: #000080; font-weight: bold;
|
||||
text-align: Center; margin-right: 3 }
|
||||
h2 { font-family: Verdana; font-size: 14pt; color: #000080; font-weight: bold;
|
||||
background-color: #CCCCCC; margin-top: 24; margin-bottom: 3;
|
||||
padding: 6 }
|
||||
h3 { font-family: Verdana; font-size: 10pt; font-weight: bold; background-color:
|
||||
#CCCCCC; margin-top: 24; margin-bottom: 3; padding: 6 }
|
||||
pre { font-family: Courier New; font-size: 10pt; background-color: #CCFFCC;
|
||||
margin-left: 24; margin-right: 24 }
|
||||
ul { list-style-type: square; margin-top: 6pt; margin-bottom: 0 }
|
||||
ol { margin-top: 6pt; margin-bottom: 0 }
|
||||
li { clear: both; margin-bottom: 6pt }
|
||||
table { font-size: 100%; border-width: 0; padding: 0 }
|
||||
th { color: #FFFFFF; background-color: #000080; text-align: left; vertical-align:
|
||||
bottom; padding-right: 6pt }
|
||||
tr { text-align: left; vertical-align: top }
|
||||
td { text-align: left; vertical-align: top; padding-right: 6pt }
|
||||
.ToolT { font-size: 8pt; color: #808080 }
|
||||
.TinyT { font-size: 8pt; text-align: Center }
|
||||
code { color: #000000; background-color: #E0E0E0; font-family: 'Courier New', Courier;
|
||||
line-height: 120%; font-style: normal }
|
||||
/*-----------------------------------------------------------
|
||||
Notes
|
||||
-----------------------------------------------------------*/
|
||||
p.note { font-weight: bold; clear: both; margin-bottom: 3pt; padding-top: 6pt }
|
||||
/*-----------------------------------------------------------
|
||||
Expanding/Contracting Divisions
|
||||
-----------------------------------------------------------*/
|
||||
#expand { text-decoration: none; margin-bottom: 3pt }
|
||||
img.expand { border-style: none; border-width: medium }
|
||||
div.expand { display: none; margin-left: 9pt; margin-top: 0 }
|
||||
/*-----------------------------------------------------------
|
||||
Where List Tags
|
||||
-----------------------------------------------------------*/
|
||||
p.wh { font-weight: bold; clear: both; margin-top: 6pt; margin-bottom: 3pt }
|
||||
table.wh { width: 100% }
|
||||
td.whItem { white-space: nowrap; font-style: italic; padding-right: 6pt; padding-bottom:
|
||||
6pt }
|
||||
td.whDesc { padding-bottom: 6pt }
|
||||
/*-----------------------------------------------------------
|
||||
Keil Table Tags
|
||||
-----------------------------------------------------------*/
|
||||
table.kt { border: 1pt solid #000000 }
|
||||
th.kt { white-space: nowrap; border-bottom: 1pt solid #000000; padding-left: 6pt;
|
||||
padding-right: 6pt; padding-top: 4pt; padding-bottom: 4pt }
|
||||
tr.kt { }
|
||||
td.kt { color: #000000; background-color: #E0E0E0; border-top: 1pt solid #A0A0A0;
|
||||
padding-left: 6pt; padding-right: 6pt; padding-top: 2pt;
|
||||
padding-bottom: 2pt }
|
||||
/*-----------------------------------------------------------
|
||||
-----------------------------------------------------------*/
|
||||
-->
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>CMSIS Debug Support</h1>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>Cortex-M3 ITM Debug Access</h2>
|
||||
<p>
|
||||
The Cortex-M3 incorporates the Instrumented Trace Macrocell (ITM) that provides together with
|
||||
the Serial Viewer Output trace capabilities for the microcontroller system. The ITM has
|
||||
32 communication channels which are able to transmit 32 / 16 / 8 bit values; two ITM
|
||||
communication channels are used by CMSIS to output the following information:
|
||||
</p>
|
||||
<ul>
|
||||
<li>ITM Channel 0: used for printf-style output via the debug interface.</li>
|
||||
<li>ITM Channel 31: is reserved for RTOS kernel awareness debugging.</li>
|
||||
</ul>
|
||||
|
||||
<h2>Debug IN / OUT functions</h2>
|
||||
<p>CMSIS provides following debug functions:</p>
|
||||
<ul>
|
||||
<li>ITM_SendChar (uses ITM channel 0)</li>
|
||||
<li>ITM_ReceiveChar (uses global variable)</li>
|
||||
<li>ITM_CheckChar (uses global variable)</li>
|
||||
</ul>
|
||||
|
||||
<h3>ITM_SendChar</h3>
|
||||
<p>
|
||||
<strong>ITM_SendChar</strong> is used to transmit a character over ITM channel 0 from
|
||||
the microcontroller system to the debug system. <br>
|
||||
Only a 8 bit value is transmitted.
|
||||
</p>
|
||||
<pre>
|
||||
static __INLINE uint32_t ITM_SendChar (uint32_t ch)
|
||||
{
|
||||
/* check if debugger connected and ITM channel enabled for tracing */
|
||||
if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA) &&
|
||||
(ITM->TCR & ITM_TCR_ITMENA) &&
|
||||
(ITM->TER & (1UL << 0)) )
|
||||
{
|
||||
while (ITM->PORT[0].u32 == 0);
|
||||
ITM->PORT[0].u8 = (uint8_t)ch;
|
||||
}
|
||||
return (ch);
|
||||
}</pre>
|
||||
|
||||
<h3>ITM_ReceiveChar</h3>
|
||||
<p>
|
||||
ITM communication channel is only capable for OUT direction. For IN direction
|
||||
a globel variable is used. A simple mechansim detects if a character is received.
|
||||
The project to test need to be build with debug information.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The globale variable <strong>ITM_RxBuffer</strong> is used to transmit a 8 bit value from debug system
|
||||
to microcontroller system. <strong>ITM_RxBuffer</strong> is 32 bit wide to enshure a proper handshake.
|
||||
</p>
|
||||
<pre>
|
||||
extern volatile int ITM_RxBuffer; /* variable to receive characters */
|
||||
</pre>
|
||||
<p>
|
||||
A dedicated bit pattern is used to determin if <strong>ITM_RxBuffer</strong> is empty
|
||||
or contains a valid value.
|
||||
</p>
|
||||
<pre>
|
||||
#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /* value identifying ITM_RxBuffer is ready for next character */
|
||||
</pre>
|
||||
<p>
|
||||
<strong>ITM_ReceiveChar</strong> is used to receive a 8 bit value from the debug system. The function is nonblocking.
|
||||
It returns the received character or '-1' if no character was available.
|
||||
</p>
|
||||
<pre>
|
||||
static __INLINE int ITM_ReceiveChar (void) {
|
||||
int ch = -1; /* no character available */
|
||||
|
||||
if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) {
|
||||
ch = ITM_RxBuffer;
|
||||
ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */
|
||||
}
|
||||
|
||||
return (ch);
|
||||
}
|
||||
</pre>
|
||||
|
||||
<h3>ITM_CheckChar</h3>
|
||||
<p>
|
||||
<strong>ITM_CheckChar</strong> is used to check if a character is received.
|
||||
</p>
|
||||
<pre>
|
||||
static __INLINE int ITM_CheckChar (void) {
|
||||
|
||||
if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) {
|
||||
return (0); /* no character available */
|
||||
} else {
|
||||
return (1); /* character available */
|
||||
}
|
||||
}</pre>
|
||||
|
||||
|
||||
<h2>ITM Debug Support in uVision</h2>
|
||||
<p>
|
||||
uVision uses in a debug session the <strong>Debug (printf) Viewer</strong> window to
|
||||
display the debug data.
|
||||
</p>
|
||||
<p>Direction microcontroller system -> uVision:</p>
|
||||
<ul>
|
||||
<li>
|
||||
Characters received via ITM communication channel 0 are written in a printf style
|
||||
to <strong>Debug (printf) Viewer</strong> window.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>Direction uVision -> microcontroller system:</p>
|
||||
<ul>
|
||||
<li>Check if <strong>ITM_RxBuffer</strong> variable is available (only performed once).</li>
|
||||
<li>Read character from <strong>Debug (printf) Viewer</strong> window.</li>
|
||||
<li>If <strong>ITM_RxBuffer</strong> empty write character to <strong>ITM_RxBuffer</strong>.</li>
|
||||
</ul>
|
||||
|
||||
<p class="Note">Note</p>
|
||||
<ul>
|
||||
<li><p>Current solution does not use a buffer machanism for trasmitting the characters.</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>RTX Kernel awareness in uVision</h2>
|
||||
<p>
|
||||
uVision / RTX are using a simple and efficient solution for RTX Kernel awareness.
|
||||
No format overhead is necessary.<br>
|
||||
uVsion debugger decodes the RTX events via the 32 / 16 / 8 bit ITM write access
|
||||
to ITM communication channel 31.
|
||||
</p>
|
||||
|
||||
<p>Following RTX events are traced:</p>
|
||||
<ul>
|
||||
<li>Task Create / Delete event
|
||||
<ol>
|
||||
<li>32 bit access. Task start address is transmitted</li>
|
||||
<li>16 bit access. Task ID and Create/Delete flag are transmitted<br>
|
||||
High byte holds Create/Delete flag, Low byte holds TASK ID.
|
||||
</li>
|
||||
</ol>
|
||||
</li>
|
||||
<li>Task switch event
|
||||
<ol>
|
||||
<li>8 bit access. Task ID of current task is transmitted</li>
|
||||
</ol>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p class="Note">Note</p>
|
||||
<ul>
|
||||
<li><p>Other RTOS information could be retrieved via memory read access in a polling mode manner.</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
|
||||
|
||||
<hr>
|
||||
|
||||
<p class="TinyT">Copyright © KEIL - An ARM Company.<br>
|
||||
All rights reserved.<br>
|
||||
Visit our web site at <a href="http://www.keil.com">www.keil.com</a>.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -1,320 +0,0 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
<title>CMSIS Changes</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
|
||||
<meta name="ProgId" content="FrontPage.Editor.Document">
|
||||
<style>
|
||||
<!--
|
||||
/*-----------------------------------------------------------
|
||||
Keil Software CHM Style Sheet
|
||||
-----------------------------------------------------------*/
|
||||
body { color: #000000; background-color: #FFFFFF; font-size: 75%; font-family:
|
||||
Verdana, Arial, 'Sans Serif' }
|
||||
a:link { color: #0000FF; text-decoration: underline }
|
||||
a:visited { color: #0000FF; text-decoration: underline }
|
||||
a:active { color: #FF0000; text-decoration: underline }
|
||||
a:hover { color: #FF0000; text-decoration: underline }
|
||||
h1 { font-family: Verdana; font-size: 18pt; color: #000080; font-weight: bold;
|
||||
text-align: Center; margin-right: 3 }
|
||||
h2 { font-family: Verdana; font-size: 14pt; color: #000080; font-weight: bold;
|
||||
background-color: #CCCCCC; margin-top: 24; margin-bottom: 3;
|
||||
padding: 6 }
|
||||
h3 { font-family: Verdana; font-size: 10pt; font-weight: bold; background-color:
|
||||
#CCCCCC; margin-top: 24; margin-bottom: 3; padding: 6 }
|
||||
pre { font-family: Courier New; font-size: 10pt; background-color: #CCFFCC;
|
||||
margin-left: 24; margin-right: 24 }
|
||||
ul { list-style-type: square; margin-top: 6pt; margin-bottom: 0 }
|
||||
ol { margin-top: 6pt; margin-bottom: 0 }
|
||||
li { clear: both; margin-bottom: 6pt }
|
||||
table { font-size: 100%; border-width: 0; padding: 0 }
|
||||
th { color: #FFFFFF; background-color: #000080; text-align: left; vertical-align:
|
||||
bottom; padding-right: 6pt }
|
||||
tr { text-align: left; vertical-align: top }
|
||||
td { text-align: left; vertical-align: top; padding-right: 6pt }
|
||||
.ToolT { font-size: 8pt; color: #808080 }
|
||||
.TinyT { font-size: 8pt; text-align: Center }
|
||||
code { color: #000000; background-color: #E0E0E0; font-family: 'Courier New', Courier;
|
||||
line-height: 120%; font-style: normal }
|
||||
/*-----------------------------------------------------------
|
||||
Notes
|
||||
-----------------------------------------------------------*/
|
||||
p.note { font-weight: bold; clear: both; margin-bottom: 3pt; padding-top: 6pt }
|
||||
/*-----------------------------------------------------------
|
||||
Expanding/Contracting Divisions
|
||||
-----------------------------------------------------------*/
|
||||
#expand { text-decoration: none; margin-bottom: 3pt }
|
||||
img.expand { border-style: none; border-width: medium }
|
||||
div.expand { display: none; margin-left: 9pt; margin-top: 0 }
|
||||
/*-----------------------------------------------------------
|
||||
Where List Tags
|
||||
-----------------------------------------------------------*/
|
||||
p.wh { font-weight: bold; clear: both; margin-top: 6pt; margin-bottom: 3pt }
|
||||
table.wh { width: 100% }
|
||||
td.whItem { white-space: nowrap; font-style: italic; padding-right: 6pt; padding-bottom:
|
||||
6pt }
|
||||
td.whDesc { padding-bottom: 6pt }
|
||||
/*-----------------------------------------------------------
|
||||
Keil Table Tags
|
||||
-----------------------------------------------------------*/
|
||||
table.kt { border: 1pt solid #000000 }
|
||||
th.kt { white-space: nowrap; border-bottom: 1pt solid #000000; padding-left: 6pt;
|
||||
padding-right: 6pt; padding-top: 4pt; padding-bottom: 4pt }
|
||||
tr.kt { }
|
||||
td.kt { color: #000000; background-color: #E0E0E0; border-top: 1pt solid #A0A0A0;
|
||||
padding-left: 6pt; padding-right: 6pt; padding-top: 2pt;
|
||||
padding-bottom: 2pt }
|
||||
/*-----------------------------------------------------------
|
||||
-----------------------------------------------------------*/
|
||||
-->
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>Changes to CMSIS version V1.20</h1>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>1. Removed CMSIS Middelware packages</h2>
|
||||
<p>
|
||||
CMSIS Middleware is on hold from ARM side until a agreement between all CMSIS partners is found.
|
||||
</p>
|
||||
|
||||
<h2>2. SystemFrequency renamed to SystemCoreClock</h2>
|
||||
<p>
|
||||
The variable name <strong>SystemCoreClock</strong> is more precise than <strong>SystemFrequency</strong>
|
||||
because the variable holds the clock value at which the core is running.
|
||||
</p>
|
||||
|
||||
<h2>3. Changed startup concept</h2>
|
||||
<p>
|
||||
The old startup concept (calling SystemInit_ExtMemCtl from startup file and calling SystemInit
|
||||
from main) has the weakness that it does not work for controllers which need a already
|
||||
configuerd clock system to configure the external memory controller.
|
||||
</p>
|
||||
|
||||
<h3>Changed startup concept</h3>
|
||||
<ul>
|
||||
<li>
|
||||
SystemInit() is called from startup file before <strong>premain</strong>.
|
||||
</li>
|
||||
<li>
|
||||
<strong>SystemInit()</strong> configures the clock system and also configures
|
||||
an existing external memory controller.
|
||||
</li>
|
||||
<li>
|
||||
<strong>SystemInit()</strong> must not use global variables.
|
||||
</li>
|
||||
<li>
|
||||
<strong>SystemCoreClock</strong> is initialized with a correct predefined value.
|
||||
</li>
|
||||
<li>
|
||||
Additional function <strong>void SystemCoreClockUpdate (void)</strong> is provided.<br>
|
||||
<strong>SystemCoreClockUpdate()</strong> updates the variable <strong>SystemCoreClock</strong>
|
||||
and must be called whenever the core clock is changed.<br>
|
||||
<strong>SystemCoreClockUpdate()</strong> evaluates the clock register settings and calculates
|
||||
the current core clock.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>4. Advanced Debug Functions</h2>
|
||||
<p>
|
||||
ITM communication channel is only capable for OUT direction. To allow also communication for
|
||||
IN direction a simple concept is provided.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Global variable <strong>volatile int ITM_RxBuffer</strong> used for IN data.
|
||||
</li>
|
||||
<li>
|
||||
Function <strong>int ITM_CheckChar (void)</strong> checks if a new character is available.
|
||||
</li>
|
||||
<li>
|
||||
Function <strong>int ITM_ReceiveChar (void)</strong> retrieves the new character.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
For detailed explanation see file <strong>CMSIS debug support.htm</strong>.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>5. Core Register Bit Definitions</h2>
|
||||
<p>
|
||||
Files core_cm3.h and core_cm0.h contain now bit definitions for Core Registers. The name for the
|
||||
defines correspond with the Cortex-M Technical Reference Manual.
|
||||
</p>
|
||||
<p>
|
||||
e.g. SysTick structure with bit definitions
|
||||
</p>
|
||||
<pre>
|
||||
/** @addtogroup CMSIS_CM3_SysTick CMSIS CM3 SysTick
|
||||
memory mapped structure for SysTick
|
||||
@{
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
__IO uint32_t CTRL; /*!< Offset: 0x00 SysTick Control and Status Register */
|
||||
__IO uint32_t LOAD; /*!< Offset: 0x04 SysTick Reload Value Register */
|
||||
__IO uint32_t VAL; /*!< Offset: 0x08 SysTick Current Value Register */
|
||||
__I uint32_t CALIB; /*!< Offset: 0x0C SysTick Calibration Register */
|
||||
} SysTick_Type;
|
||||
|
||||
/* SysTick Control / Status Register Definitions */
|
||||
#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */
|
||||
#define SysTick_CTRL_COUNTFLAG_Msk (1ul << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */
|
||||
|
||||
#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */
|
||||
#define SysTick_CTRL_CLKSOURCE_Msk (1ul << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */
|
||||
|
||||
#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */
|
||||
#define SysTick_CTRL_TICKINT_Msk (1ul << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */
|
||||
|
||||
#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */
|
||||
#define SysTick_CTRL_ENABLE_Msk (1ul << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */
|
||||
|
||||
/* SysTick Reload Register Definitions */
|
||||
#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */
|
||||
#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */
|
||||
|
||||
/* SysTick Current Register Definitions */
|
||||
#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */
|
||||
#define SysTick_VAL_CURRENT_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */
|
||||
|
||||
/* SysTick Calibration Register Definitions */
|
||||
#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */
|
||||
#define SysTick_CALIB_NOREF_Msk (1ul << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */
|
||||
|
||||
#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */
|
||||
#define SysTick_CALIB_SKEW_Msk (1ul << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */
|
||||
|
||||
#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */
|
||||
#define SysTick_CALIB_TENMS_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */
|
||||
/*@}*/ /* end of group CMSIS_CM3_SysTick */</pre>
|
||||
|
||||
<h2>7. DoxyGen Tags</h2>
|
||||
<p>
|
||||
DoxyGen tags in files core_cm3.[c,h] and core_cm0.[c,h] are reworked to create proper documentation
|
||||
using DoxyGen.
|
||||
</p>
|
||||
|
||||
<h2>8. Folder Structure</h2>
|
||||
<p>
|
||||
The folder structure is changed to differentiate the single support packages.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>CM0</li>
|
||||
<li>CM3
|
||||
<ul>
|
||||
<li>CoreSupport</li>
|
||||
<li>DeviceSupport</li>
|
||||
<ul>
|
||||
<li>Vendor
|
||||
<ul>
|
||||
<li>Device
|
||||
<ul>
|
||||
<li>Startup
|
||||
<ul>
|
||||
<li>Toolchain</li>
|
||||
<li>Toolchain</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Device</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Vendor</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Example
|
||||
<ul>
|
||||
<li>Toolchain
|
||||
<ul>
|
||||
<li>Device</li>
|
||||
<li>Device</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Toolchain</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li>Documentation</li>
|
||||
</ul>
|
||||
|
||||
<h2>9. Open Points</h2>
|
||||
<p>
|
||||
Following points need to be clarified and solved:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>
|
||||
Equivalent C and Assembler startup files.
|
||||
</p>
|
||||
<p>
|
||||
Is there a need for having C startup files although assembler startup files are
|
||||
very efficient and do not need to be changed?
|
||||
<p/>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
Placing of HEAP in external RAM.
|
||||
</p>
|
||||
<p>
|
||||
It must be possible to place HEAP in external RAM if the device supports an
|
||||
external memory controller.
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
Placing of STACK /HEAP.
|
||||
</p>
|
||||
<p>
|
||||
STACK should always be placed at the end of internal RAM.
|
||||
</p>
|
||||
<p>
|
||||
If HEAP is placed in internal RAM than it should be placed after RW ZI section.
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
Removing core_cm3.c and core_cm0.c.
|
||||
</p>
|
||||
<p>
|
||||
On a long term the functions in core_cm3.c and core_cm0.c must be replaced with
|
||||
appropriate compiler intrinsics.
|
||||
</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>10. Limitations</h2>
|
||||
<p>
|
||||
The following limitations are not covered with the current CMSIS version:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
No <strong>C startup files</strong> for ARM toolchain are provided.
|
||||
</li>
|
||||
<li>
|
||||
No <strong>C startup files</strong> for GNU toolchain are provided.
|
||||
</li>
|
||||
<li>
|
||||
No <strong>C startup files</strong> for IAR toolchain are provided.
|
||||
</li>
|
||||
<li>
|
||||
No <strong>Tasking</strong> projects are provided yet.
|
||||
</li>
|
||||
</ul>
|
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -1,151 +1,121 @@
|
|||
S02B0000433A2F576F726B2F736F6674776172652F4F70656E424C542F5461726765742F44656D6F2F41524DEF
|
||||
S3150800600094010020F7610008B9660008B96600081F
|
||||
S31508006010B9660008B9660008B9660008B9660008D6
|
||||
S31508006020B9660008B9660008B9660008B9660008C6
|
||||
S31508006030B9660008B9660008B966000895660008DA
|
||||
S31508006040B9660008B9660008B9660008B9660008A6
|
||||
S31508006050B9660008B9660008B9660008B966000896
|
||||
S31508006060B9660008B9660008B9660008B966000886
|
||||
S31508006070B9660008B9660008B9660008B966000876
|
||||
S31508006080B9660008B9660008B9660008B966000866
|
||||
S31508006090B9660008B9660008B9660008B966000856
|
||||
S315080060A0B9660008B9660008B9660008B966000846
|
||||
S315080060B0B9660008B9660008B9660008B966000836
|
||||
S315080060C0B9660008B9660008B9660008B966000826
|
||||
S315080060D0B9660008B9660008B9660008B966000816
|
||||
S315080060E0B9660008B9660008B9660008B966000806
|
||||
S315080060F0B9660008B9660008B9660008B9660008F6
|
||||
S31508006100B9660008B9660008B9660008B9660008E5
|
||||
S31508006110B9660008B9660008B9660008B9660008D5
|
||||
S31508006120B9660008B9660008B9660008B9660008C5
|
||||
S31508006130B9660008B9660008B9660008B9660008B5
|
||||
S31508006140B9660008B9660008B9660008B9660008A5
|
||||
S315080060008C010020FB6100086565000865650008CD
|
||||
S31508006010656500086565000865650008656500082A
|
||||
S31508006020656500086565000865650008656500081A
|
||||
S315080060306565000865650008656500084965000826
|
||||
S3150800604065650008656500086565000865650008FA
|
||||
S3150800605065650008656500086565000865650008EA
|
||||
S3150800606065650008656500086565000865650008DA
|
||||
S3150800607065650008656500086565000865650008CA
|
||||
S3150800608065650008656500086565000865650008BA
|
||||
S3150800609065650008656500086565000865650008AA
|
||||
S315080060A0656500086565000865650008656500089A
|
||||
S315080060B0656500086565000865650008656500088A
|
||||
S315080060C0656500086565000865650008656500087A
|
||||
S315080060D0656500086565000865650008656500086A
|
||||
S315080060E0656500086565000865650008656500085A
|
||||
S315080060F0656500086565000865650008656500084A
|
||||
S315080061006565000865650008656500086565000839
|
||||
S315080061106565000865650008656500086565000829
|
||||
S315080061206565000865650008656500086565000819
|
||||
S315080061306565000865650008656500086565000809
|
||||
S3150800614065650008656500086565000865650008F9
|
||||
S30908006150EE11AA553F
|
||||
S315080061542A498D462A482B492B4A00F039F82B48F8
|
||||
S315080061642B492C4A00F034F82B482C492C4A00F0C9
|
||||
S315080061742FF82C482C492D4A00F02AF82C482D498A
|
||||
S315080061842D4A00F025F82D482D492E4A00F020F80E
|
||||
S315080061942D482E49002200F026F82D482D49091AC3
|
||||
S315080061A4082903DB00220260043001601E481F49E7
|
||||
S315080061B4884205D00268043003B4904703BCF7E765
|
||||
S315080061C400208646EC4600200021234A9047FEE735
|
||||
S315080061D4884207D0521A05D0037801300B70013172
|
||||
S315080061E4013AF9D17047884202D002700130FAE7C1
|
||||
S315080061F470471A481A490160AAE70000940100206A
|
||||
S3150800620438690008000000200000002068620008C1
|
||||
S315080062146862000838690008386900080000002028
|
||||
S315080062240000002038690008386900083869000841
|
||||
S3150800623438690008386900083869000838690008A8
|
||||
S315080062443869000838690008000000201400002096
|
||||
S3150800625414000020940000202D63000808ED00E0D7
|
||||
S3090800626400600008C0
|
||||
S3150800626880B583B000AF4FF010004FF0010100F081
|
||||
S3150800627817FB4FF480533B804FF003037B604FF0C6
|
||||
S315080062881003BB603B464FF48050C4F20100194620
|
||||
S3150800629800F012FA07F10C07BD4680BD80B581B03B
|
||||
S315080062A800AF00F0E7F903463B6040F20003C2F28C
|
||||
S315080062B800031B683A68D21A40F2F3139A422CD99B
|
||||
S315080062C840F20403C2F200031B78002B0FD140F2F8
|
||||
S315080062D80403C2F200034FF001021A704FF480500B
|
||||
S315080062E8C4F201004FF4805100F0CCFA0EE040F2F7
|
||||
S315080062F80403C2F200034FF000021A704FF48050EC
|
||||
S31508006308C4F201004FF4805100F0AEFA40F20003DF
|
||||
S31508006318C2F200033A681A6000E000BF07F10407F2
|
||||
S31508006328BD4680BD80B500AF00F004F8FFF7B6FF9C
|
||||
S31508006338FCE700BF80B583B000AF4FF000037B6071
|
||||
S315080063484FF000033B604FF48053C4F202034FF446
|
||||
S315080063588052C4F20202126842F001021A604FF42F
|
||||
S315080063688052C4F202024FF48053C4F202035968F9
|
||||
S315080063784FF00003CFF6FF030B4053604FF48053EA
|
||||
S31508006388C4F202034FF48052C4F20202126822F0E1
|
||||
S31508006398847222F480321A604FF48053C4F20203DE
|
||||
S315080063A84FF48052C4F20202126822F480221A605C
|
||||
S315080063B84FF48053C4F202034FF48052C4F2020227
|
||||
S315080063C8526822F4FE025A604FF48053C4F202035C
|
||||
S315080063D84FF41F029A604FF48053C4F202034FF435
|
||||
S315080063E88052C4F20202126842F480321A604FF4EC
|
||||
S315080063F88053C4F202031B6803F400333B607B68CE
|
||||
S3150800640803F101037B603B68002B04D17A6840F2EC
|
||||
S31508006418DC539A42EBD14FF48053C4F202031B684B
|
||||
S3150800642803F40033002B00D1FEE74FF40053C4F2FF
|
||||
S3150800643802034FF40052C4F20202126842F0100234
|
||||
S315080064481A604FF40053C4F202034FF40052C4F220
|
||||
S315080064580202126822F003021A604FF40053C4F2CB
|
||||
S3150800646802034FF40052C4F20202126842F0020212
|
||||
S315080064781A604FF48053C4F202034FF48052C4F2F0
|
||||
S31508006488020252685A604FF48053C4F202034FF46A
|
||||
S315080064988052C4F20202526842F400525A604FF41B
|
||||
S315080064A88053C4F202034FF48052C4F202025268BF
|
||||
S315080064B842F480625A604FF48053C4F202034FF4E0
|
||||
S315080064C88052C4F20202526822F47C125A604FF0D3
|
||||
S315080064D80903BB60BB68A3F102034FEA8343BB60A9
|
||||
S315080064E84FF48053C4F202034FF48052C4F20202F6
|
||||
S315080064F85168BA680A4342F480325A604FF48053A6
|
||||
S31508006508C4F202034FF48052C4F20202126842F03F
|
||||
S3150800651880721A6000BF4FF48053C4F202031B68E6
|
||||
S3150800652803F00073002BF6D04FF48053C4F202032D
|
||||
S315080065384FF48052C4F20202526822F003025A60EB
|
||||
S315080065484FF48053C4F202034FF48052C4F2020295
|
||||
S31508006558526842F002025A6000BF4FF48053C4F2F0
|
||||
S3150800656802035B6803F00C03082BF6D1FFF778FEE5
|
||||
S3150800657800F062F807F10C07BD4680BD80B482B00A
|
||||
S3150800658800AF786039607B68002B10DA4FF46D43EA
|
||||
S31508006598CEF200037A6802F00F02A2F104013A6803
|
||||
S315080065A8D2B24FEA0212D2B25B181A760CE04FF44E
|
||||
S315080065B86143CEF2000379683A68D2B24FEA02120A
|
||||
S315080065C8D2B25B1883F8002307F10807BD4680BCDA
|
||||
S315080065D8704700BF80B581B000AF38603A686FF081
|
||||
S315080065E87F439A4202D94FF001031FE04EF2100387
|
||||
S315080065F8CEF200033A6822F07F4202F1FF325A606F
|
||||
S315080066084FF0FF304FF00F01FFF7B8FF4EF21003B7
|
||||
S31508006618CEF200034FF000029A604EF21003CEF253
|
||||
S3150800662800034FF007021A604FF00003184607F1F7
|
||||
S315080066380407BD4680BD00BF80B500AF4FF4CA50F9
|
||||
S31508006648C0F20100FFF7C6FF4FF0000000F002F89D
|
||||
S3150800665880BD00BF80B481B000AF386040F208033F
|
||||
S31508006668C2F200033A681A6007F10407BD4680BCFF
|
||||
S31508006678704700BF80B400AF40F20803C2F20003B7
|
||||
S315080066881B681846BD4680BC704700BF80B400AF7B
|
||||
S3150800669840F20803C2F200031B6803F1010240F244
|
||||
S315080066A80803C2F200031A60BD4680BC704700BFE3
|
||||
S315080066B880B400AFFEE700BF80B488B000AF78604A
|
||||
S315080066C839604FF00003FB614FF000033B614FF060
|
||||
S315080066D80003BB614FF00003FB604FF000037B61CA
|
||||
S315080066E84FF00003BB603B689B6803F00F03FB6130
|
||||
S315080066F83B689B6803F01003002B04D03B685B6873
|
||||
S31508006708FA691343FB613B681B88DBB2002B4ED042
|
||||
S315080067187B681B687B614FF00003BB6141E0BB697E
|
||||
S315080067284FF0010202FA03F3FB603B681B881A461E
|
||||
S31508006738FB6813403B613A69FB689A422DD1BB69ED
|
||||
S315080067484FEA8303FB60FB684FF00F0202FA03F374
|
||||
S31508006758BB60BB686FEA03037A6913407B61FB6811
|
||||
S31508006768FA6902FA03F37A6913437B613B689B6803
|
||||
S31508006778282B07D1BB694FF0010202FA03F27B689E
|
||||
S315080067885A610AE03B689B68482B06D1BB694FF0FB
|
||||
S31508006798010202FA03F27B681A61BB6903F1010375
|
||||
S315080067A8BB61BB69072BBAD97B687A691A603B68EB
|
||||
S315080067B81B88FF2B53D97B685B687B614FF0000306
|
||||
S315080067C8BB6146E0BB6903F108034FF0010202FA10
|
||||
S315080067D803F3FB603B681B881A46FB6813403B615A
|
||||
S315080067E83A69FB689A4230D1BB694FEA8303FB6072
|
||||
S315080067F8FB684FF00F0202FA03F3BB60BB686FEA47
|
||||
S3150800680803037A6913407B61FB68FA6902FA03F3A2
|
||||
S315080068187A6913437B613B689B68282B08D1BB6957
|
||||
S3150800682803F108034FF0010202FA03F27B685A6182
|
||||
S315080068383B689B68482B08D1BB6903F108034FF0EE
|
||||
S31508006848010202FA03F27B681A61BB6903F10103C4
|
||||
S31508006858BB61BB69072BB5D97B687A695A6007F1AA
|
||||
S315080068682007BD4680BC704780B482B000AF786008
|
||||
S315080068780B463B803A887B681A6107F10807BD46CC
|
||||
S3150800688880BC704780B482B000AF78600B463B8006
|
||||
S315080068983A887B685A6107F10807BD4680BC704785
|
||||
S315080068A880B482B000AF786039603B68002B0CD0A2
|
||||
S315080068B84FF48053C4F202034FF48052C4F2020222
|
||||
S315080068C891697A680A439A610DE04FF48053C4F2D5
|
||||
S315080068D802034FF48052C4F2020291697A686FEA99
|
||||
S315080068E802020A409A6107F10807BD4680BC70474C
|
||||
S315080068F830B504460D4600F017F840F20C03C2F20C
|
||||
S3150800690800031D6040F21003C2F200031C601A4619
|
||||
S315080069181368002BFCD100F009F840F20C03C2F208
|
||||
S315080069280003186830BD00BF704700BF704700BF36
|
||||
S705080061F79A
|
||||
S315080061542B49072291438D462A482B492B4A00F09E
|
||||
S3150800616439F82B482B492C4A00F034F82B482C498B
|
||||
S315080061742C4A00F02FF82C482C492D4A00F02AF80E
|
||||
S315080061842C482D492D4A00F025F82D482D492E4A2C
|
||||
S3150800619400F020F82D482E49002200F026F82D4854
|
||||
S315080061A42D49091A082903DB00220260043001601C
|
||||
S315080061B41E481F49884205D00268043003B4904734
|
||||
S315080061C403BCF7E700208646EC4600200021234A54
|
||||
S315080061D49047FEE7884207D0521A05D00378013063
|
||||
S315080061E40B700131013AF9D17047884202D0027026
|
||||
S315080061F40130FAE770471A481A490160A8E700000F
|
||||
S315080062048C010020586700080000002000000020C8
|
||||
S315080062146C6200086C620008586700085867000832
|
||||
S31508006224000000200000002058670008586700088E
|
||||
S315080062345867000858670008586700085867000830
|
||||
S3150800624458670008586700085867000800000020C7
|
||||
S315080062540C0000200C0000208C00002001630008BC
|
||||
S30D0800626408ED00E000600008E7
|
||||
S3150800626C80B582B000AF0121102000F051FA4FF42E
|
||||
S3150800627C8053BB800323BB711023FB713B1D19464E
|
||||
S3150800628C034800F06DF900BF0837BD4680BD00BF56
|
||||
S3150800629C0010014080B582B000AF00F045F9786077
|
||||
S315080062AC114B1B687A68D31AB3F5FA7F18D30F4BC0
|
||||
S315080062BC1B78002B08D10D4B01221A704FF4805114
|
||||
S315080062CC0B4800F017FA07E0084B00221A704FF437
|
||||
S315080062DC8051074800F000FA034A7B68136000E017
|
||||
S315080062EC00BF0837BD4680BD000000200400002012
|
||||
S315080062FC0010014080B500AF00F004F8FFF7CAFFA4
|
||||
S3150800630CFCE700BF80B584B000AF0023BB60002358
|
||||
S3150800631C7B604F4A4E4B1B6843F0010313604C4994
|
||||
S3150800632C4B4B5A684B4B13404B60494A484B1B68BE
|
||||
S3150800633C23F0847323F480331360454A444B1B685B
|
||||
S3150800634C23F480231360424A414B5B6823F4FE0313
|
||||
S3150800635C53603F4B4FF41F029A603D4A3C4B1B68F7
|
||||
S3150800636C43F4803313603A4B1B6803F400337B60A9
|
||||
S3150800637CBB680133BB607B68002B04D1BB6840F259
|
||||
S3150800638CDC529342EFD1324B1B6803F40033002BDB
|
||||
S3150800639C00D1FEE7304A304B1B6843F010031360FC
|
||||
S315080063AC2D4A2D4B1B6823F0030313602A4A2A4BEC
|
||||
S315080063BC1B6843F002031360254A254B5B68536040
|
||||
S315080063CC234A234B5B6843F400535360204A204B03
|
||||
S315080063DC5B6843F4806353601D4A1D4B5B6823F46A
|
||||
S315080063EC7C1353600923FB60FB68023B9B04FB6030
|
||||
S315080063FC1749174B5A68FB68134343F480334B60B1
|
||||
S3150800640C134A134B1B6843F08073136000BF104B81
|
||||
S3150800641C1B6803F00073002BF9D00D4A0C4B5B6814
|
||||
S3150800642C23F0030353600A4A094B5B6843F00203E3
|
||||
S3150800643C536000BF064B5B6803F00C03082BF9D1BD
|
||||
S3150800644CFFF70EFF00F056F800BF1037BD4680BDAB
|
||||
S3150800645C001002400000FFF80020024080B483B010
|
||||
S3150800646C00AF03463960FB7197F90730002B0BDA3E
|
||||
S3150800647C0D49FB7903F00F03043B3A68D2B21201BB
|
||||
S3150800648CD2B20B441A7609E0084997F907303A68EC
|
||||
S3150800649CD2B21201D2B20B4483F8002300BF0C37D8
|
||||
S315080064ACBD4680BC704700BF00ED00E000E100E08F
|
||||
S315080064BC80B582B000AF78607B68B3F1807F01D37A
|
||||
S315080064CC012311E00A4A7B6823F07F43013B5360A2
|
||||
S315080064DC0F214FF0FF30FFF7C1FF054B00229A60E2
|
||||
S315080064EC034B07221A60002318460837BD4680BDA1
|
||||
S315080064FC10E000E080B500AF0348FFF7D9FF002095
|
||||
S3150800650C00F004F800BF80BD4019010080B483B0C8
|
||||
S3150800651C00AF7860034A7B68136000BF0C37BD4632
|
||||
S3150800652C80BC70470800002080B400AF024B1B6883
|
||||
S3150800653C1846BD4680BC70470800002080B400AFE2
|
||||
S3150800654C044B1B680133034A136000BFBD4680BC6D
|
||||
S3150800655C704700BF0800002080B400AFFEE700BFFC
|
||||
S3150800656C80B489B000AF786039600023FB610023E2
|
||||
S3150800657C3B610023BB610023FB6000237B61002386
|
||||
S3150800658CBB603B68DB7803F00F03FB613B68DB7889
|
||||
S3150800659C03F01003002B05D03B689B781A46FB6961
|
||||
S315080065AC1343FB613B681B88DBB2002B44D07B682A
|
||||
S315080065BC1B687B610023BB6138E00122BB6902FAC8
|
||||
S315080065CC03F3FB603B681B881A46FB6813403B6168
|
||||
S315080065DC3A69FB689A4226D1BB699B00FB600F227D
|
||||
S315080065ECFB6802FA03F3BB60BB68DB437A691340AA
|
||||
S315080065FC7B61FA69FB6802FA03F37A6913437B61D8
|
||||
S3150800660C3B68DB78282B05D10122BB699A407B684D
|
||||
S3150800661C5A6108E03B68DB78482B04D10122BB6938
|
||||
S3150800662C9A407B681A61BB690133BB61BB69072B4E
|
||||
S3150800663CC3D97B687A691A603B681B88FF2B46D9D5
|
||||
S3150800664C7B685B687B610023BB613AE0BB690833F6
|
||||
S3150800665C012202FA03F3FB603B681B881A46FB68A7
|
||||
S3150800666C13403B613A69FB689A4227D1BB699B0088
|
||||
S3150800667CFB600F22FB6802FA03F3BB60BB68DB43C3
|
||||
S3150800668C7A6913407B61FA69FB6802FA03F37A6943
|
||||
S3150800669C13437B613B68DB78282B05D1BB69083330
|
||||
S315080066AC01229A407B685A613B68DB78482B05D1F6
|
||||
S315080066BCBB69083301229A407B681A61BB690133AE
|
||||
S315080066CCBB61BB69072BC1D97B687A695A6000BF65
|
||||
S315080066DC2437BD4680BC704780B483B000AF786061
|
||||
S315080066EC0B467B807A887B681A6100BF0C37BD46DF
|
||||
S315080066FC80BC704780B483B000AF78600B467B8053
|
||||
S3150800670C7A887B685A6100BF0C37BD4680BC7047D7
|
||||
S3150800671C80B483B000AF78600B46FB70FB78002B17
|
||||
S3150800672C06D00949084B9A697B6813438B6106E0C6
|
||||
S3150800673C0549054B9A697B68DB4313408B6100BF9F
|
||||
S3110800674C0C37BD4680BC704700100240A8
|
||||
S705080061FB96
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Integrated Development Environment
|
||||
----------------------------------
|
||||
Rowleys CrossWorks (version 2.3.1) was used as the editor during the development of this software program. This directory contains
|
||||
Rowleys CrossWorks (version 3.7.6) was used as the editor during the development of this software program. This directory contains
|
||||
the CrossWorks project and solution files. More info is available at: http://www.rowley.co.uk/
|
|
@ -1,98 +1,144 @@
|
|||
<!DOCTYPE CrossStudio_Project_File>
|
||||
<solution Name="stm32f103_crossworks" target="8" version="2">
|
||||
<project Name="demoprog_olimex_stm32h103">
|
||||
<configuration Name="Common" Placement="Flash" Target="STM32F103RB" arm_architecture="v7M" arm_core_type="Cortex-M3" arm_linker_heap_size="128" arm_linker_jtag_pad_pre_dr="1" arm_linker_jtag_pad_pre_ir="5" arm_linker_process_stack_size="0" arm_linker_stack_size="128" arm_long_calls="No" arm_simulator_memory_simulation_filename="$(TargetsDir)/STM32/STM32SimulatorMemory.dll" arm_simulator_memory_simulation_parameter="STM32F103RB;0x20000;0x5000" arm_target_debug_interface_type="ADIv5" arm_target_loader_applicable_loaders="Flash" arm_target_loader_default_loader="Flash" arm_target_loader_parameter="8000000" arm_use_gcc_libraries="Yes" build_intermediate_directory="$(Configuration)/../../obj" build_output_directory="$(ProjectDir)/../bin" c_only_additional_options="" c_preprocessor_definitions="USE_STDPERIPH_DRIVER ;VECT_TAB_FLASH;GCC_ARMCM3" c_user_include_directories="$(ProjectDir)/..;$(ProjectDir)/../lib/stdperiphlib;$(ProjectDir)/../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc;$(ProjectDir)/../lib/stdperiphlib/CMSIS/CM3/CoreSupport;$(ProjectDir)/../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x" gcc_optimization_level="None" link_include_standard_libraries="Yes" linker_keep_symbols="_vectors" linker_memory_map_file="$(TargetsDir)/STM32/STM32F103RB_MemoryMap.xml" linker_output_format="srec" linker_printf_enabled="No" linker_printf_width_precision_supported="No" linker_scanf_enabled="No" linker_section_placement_file="$(StudioDir)/targets/Cortex_M/flash_placement.xml" oscillator_frequency="8MHz" project_directory="" project_type="Executable" property_groups_file_path="$(TargetsDir)/STM32/propertyGroups.xml" target_get_partname_script="GetPartName()" target_match_partname_script="MatchPartName("$(Target)")" target_reset_script="Reset()"/>
|
||||
<configuration Name="Flash" arm_target_flash_loader_file_path="$(TargetsDir)/STM32/Release/Loader_rpc.elf" arm_target_flash_loader_type="LIBMEM RPC Loader" arm_target_loader_can_lock_all="No" arm_target_loader_can_lock_range="No" arm_target_loader_can_unlock_all="No" arm_target_loader_can_unlock_range="No" target_reset_script="FLASHReset()"/>
|
||||
<configuration
|
||||
Name="Common"
|
||||
Placement="Flash"
|
||||
Target="STM32F103RB"
|
||||
arm_architecture="v7M"
|
||||
arm_core_type="Cortex-M3"
|
||||
arm_linker_heap_size="128"
|
||||
arm_linker_jtag_pad_pre_dr="1"
|
||||
arm_linker_jtag_pad_pre_ir="5"
|
||||
arm_linker_process_stack_size="0"
|
||||
arm_linker_stack_size="128"
|
||||
arm_long_calls="No"
|
||||
arm_simulator_memory_simulation_filename="$(TargetsDir)/STM32/STM32SimulatorMemory.dll"
|
||||
arm_simulator_memory_simulation_parameter="STM32F103RB;0x20000;0x5000"
|
||||
arm_target_debug_interface_type="ADIv5"
|
||||
arm_target_loader_applicable_loaders="Flash"
|
||||
arm_target_loader_default_loader="Flash"
|
||||
arm_target_loader_parameter="8000000"
|
||||
arm_use_gcc_libraries="Yes"
|
||||
build_intermediate_directory="$(Configuration)/../../obj"
|
||||
build_output_directory="$(ProjectDir)/../bin"
|
||||
c_only_additional_options=""
|
||||
c_preprocessor_definitions="USE_STDPERIPH_DRIVER ;VECT_TAB_FLASH;GCC_ARMCM3"
|
||||
c_user_include_directories="$(ProjectDir)/..;$(ProjectDir)/../lib/stdperiphlib;$(ProjectDir)/../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc;$(ProjectDir)/../lib/stdperiphlib/CMSIS/CM3/CoreSupport;$(ProjectDir)/../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x"
|
||||
gcc_optimization_level="None"
|
||||
link_include_standard_libraries="Yes"
|
||||
linker_keep_symbols="_vectors"
|
||||
linker_memory_map_file="$(TargetsDir)/STM32/STM32F103RB_MemoryMap.xml"
|
||||
linker_output_format="srec"
|
||||
linker_printf_enabled="No"
|
||||
linker_printf_width_precision_supported="No"
|
||||
linker_scanf_enabled="No"
|
||||
linker_section_placement_file="$(StudioDir)/targets/Cortex_M/flash_placement.xml"
|
||||
oscillator_frequency="8MHz"
|
||||
project_directory=""
|
||||
project_type="Executable"
|
||||
property_groups_file_path="$(TargetsDir)/STM32/propertyGroups.xml"
|
||||
target_get_partname_script="GetPartName()"
|
||||
target_match_partname_script="MatchPartName("$(Target)")"
|
||||
target_reset_script="Reset()" />
|
||||
<configuration
|
||||
Name="Flash"
|
||||
arm_target_flash_loader_file_path="$(TargetsDir)/STM32/Release/Loader_rpc.elf"
|
||||
arm_target_flash_loader_type="LIBMEM RPC Loader"
|
||||
arm_target_loader_can_lock_all="No"
|
||||
arm_target_loader_can_lock_range="No"
|
||||
arm_target_loader_can_unlock_all="No"
|
||||
arm_target_loader_can_unlock_range="No"
|
||||
target_reset_script="FLASHReset()" />
|
||||
<folder Name="Source Files">
|
||||
<configuration Name="Common" filter="c;cpp;cxx;cc;h;s;asm;inc"/>
|
||||
<configuration Name="Common" filter="c;cpp;cxx;cc;h;s;asm;inc" />
|
||||
<folder Name="Demo">
|
||||
<folder Name="Prog">
|
||||
<file file_name="../cstart.s"/>
|
||||
<file file_name="../header.h"/>
|
||||
<file file_name="../led.c"/>
|
||||
<file file_name="../led.h"/>
|
||||
<file file_name="../main.c"/>
|
||||
<file file_name="../timer.c"/>
|
||||
<file file_name="../timer.h"/>
|
||||
<file file_name="../vectors.c"/>
|
||||
<file file_name="../cstart.s" />
|
||||
<file file_name="../header.h" />
|
||||
<file file_name="../led.c" />
|
||||
<file file_name="../led.h" />
|
||||
<file file_name="../main.c" />
|
||||
<file file_name="../timer.c" />
|
||||
<file file_name="../timer.h" />
|
||||
<file file_name="../vectors.c" />
|
||||
</folder>
|
||||
</folder>
|
||||
</folder>
|
||||
<folder Name="System Files">
|
||||
<file file_name="$(TargetsDir)/STM32/STM32_Target.js">
|
||||
<configuration Name="Common" file_type="Reset Script"/>
|
||||
<configuration Name="Common" file_type="Reset Script" />
|
||||
</file>
|
||||
<file file_name="../memory.x">
|
||||
<configuration Name="Common" file_type="Linker Script"/>
|
||||
<configuration Name="Common" file_type="Linker Script" />
|
||||
</file>
|
||||
</folder>
|
||||
<configuration Name="Debug" c_only_additional_options=""/>
|
||||
<configuration Name="Debug" c_only_additional_options="" />
|
||||
<folder Name="Library Files">
|
||||
<file file_name="../lib/stdperiphlib/stm32f10x_conf.h"/>
|
||||
<file file_name="../lib/stdperiphlib/stm32f10x_conf.h" />
|
||||
<folder Name="STM32F10x_StdPeriph_Driver">
|
||||
<folder Name="inc">
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/misc.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_adc.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_bkp.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_can.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_cec.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_crc.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dac.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dbgmcu.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dma.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_exti.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_flash.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_fsmc.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_gpio.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_i2c.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_iwdg.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_pwr.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rcc.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rtc.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_sdio.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_spi.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_tim.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_usart.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_wwdg.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/misc.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_adc.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_bkp.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_can.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_cec.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_crc.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dac.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dbgmcu.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dma.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_exti.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_flash.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_fsmc.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_gpio.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_i2c.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_iwdg.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_pwr.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rcc.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rtc.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_sdio.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_spi.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_tim.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_usart.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_wwdg.h" />
|
||||
</folder>
|
||||
<folder Name="src">
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c" />
|
||||
</folder>
|
||||
</folder>
|
||||
<folder Name="CMSIS">
|
||||
<folder Name="CM3">
|
||||
<folder Name="CoreSupport">
|
||||
<file file_name="../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c"/>
|
||||
<file file_name="../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.h"/>
|
||||
<file file_name="../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.h" />
|
||||
</folder>
|
||||
<folder Name="DeviceSupport">
|
||||
<folder Name="ST">
|
||||
<folder Name="STM32F10x">
|
||||
<file file_name="../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h"/>
|
||||
<file file_name="../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c"/>
|
||||
<file file_name="../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h"/>
|
||||
<file file_name="../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h" />
|
||||
<file file_name="../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c" />
|
||||
<file file_name="../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h" />
|
||||
</folder>
|
||||
</folder>
|
||||
</folder>
|
||||
|
@ -100,9 +146,30 @@
|
|||
</folder>
|
||||
</folder>
|
||||
</project>
|
||||
<configuration Name="THUMB Debug" inherited_configurations="THUMB;Debug"/>
|
||||
<configuration Name="THUMB" Platform="ARM" arm_instruction_set="THUMB" arm_library_instruction_set="THUMB" c_preprocessor_definitions="__THUMB" hidden="Yes"/>
|
||||
<configuration Name="Debug" build_debug_information="Yes" c_preprocessor_definitions="DEBUG" gcc_optimization_level="None" hidden="Yes" link_include_startup_code="No"/>
|
||||
<configuration Name="THUMB Release" inherited_configurations="THUMB;Release"/>
|
||||
<configuration Name="Release" build_debug_information="No" c_additional_options="-g1" c_preprocessor_definitions="NDEBUG" gcc_optimization_level="Level 1" hidden="Yes" link_include_startup_code="No"/>
|
||||
<configuration Name="THUMB Debug" inherited_configurations="THUMB;Debug" />
|
||||
<configuration
|
||||
Name="THUMB"
|
||||
Platform="ARM"
|
||||
arm_instruction_set="THUMB"
|
||||
arm_library_instruction_set="THUMB"
|
||||
c_preprocessor_definitions="__THUMB"
|
||||
hidden="Yes" />
|
||||
<configuration
|
||||
Name="Debug"
|
||||
build_debug_information="Yes"
|
||||
c_preprocessor_definitions="DEBUG"
|
||||
gcc_optimization_level="None"
|
||||
hidden="Yes"
|
||||
link_include_startup_code="No" />
|
||||
<configuration
|
||||
Name="THUMB Release"
|
||||
inherited_configurations="THUMB;Release" />
|
||||
<configuration
|
||||
Name="Release"
|
||||
build_debug_information="No"
|
||||
c_additional_options="-g1"
|
||||
c_preprocessor_definitions="NDEBUG"
|
||||
gcc_optimization_level="Level 1"
|
||||
hidden="Yes"
|
||||
link_include_startup_code="No" />
|
||||
</solution>
|
||||
|
|
|
@ -1,19 +1,22 @@
|
|||
<!DOCTYPE CrossStudio_for_ARM_Session_File>
|
||||
<!DOCTYPE CrossStudio_Session_File>
|
||||
<session>
|
||||
<Bookmarks/>
|
||||
<Breakpoints/>
|
||||
<ExecutionProfileWindow/>
|
||||
<FrameBufferWindow>
|
||||
<FrameBufferWindow addressText="" bufferWidth="-1" bufferHeight="-1" addressSpace="" />
|
||||
</FrameBufferWindow>
|
||||
<Memory1>
|
||||
<MemoryWindow autoEvaluate="0" addressText="0" numColumns="8" sizeText="32" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="0" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="32" viewMode="0" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
</Memory1>
|
||||
<Memory2>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
</Memory2>
|
||||
<Memory3>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
</Memory3>
|
||||
<Memory4>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
</Memory4>
|
||||
<Project>
|
||||
<ProjectSessionItem path="stm32f103_crossworks" name="unnamed" />
|
||||
|
@ -23,16 +26,16 @@
|
|||
<ProjectSessionItem path="stm32f103_crossworks;demoprog_olimex_stm32h103;Source Files;Demo;Prog" name="unnamed" />
|
||||
</Project>
|
||||
<Register1>
|
||||
<RegisterWindow openNodes="CPU" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="CPU" decimalNodes="" octalNodes="" asciiNodes="" name="" />
|
||||
<RegisterWindow openNodes="CPU" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="" />
|
||||
</Register1>
|
||||
<Register2>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="" />
|
||||
</Register2>
|
||||
<Register3>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="" />
|
||||
</Register3>
|
||||
<Register4>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="" />
|
||||
</Register4>
|
||||
<TargetWindow programAction="" uploadFileType="" programLoadAddress="" programSize="" uploadFileName="" uploadMemoryInterface="" programFileName="" uploadStartAddress="" programFileType="" uploadSize="" programMemoryInterface="" />
|
||||
<TraceWindow>
|
||||
|
@ -51,7 +54,7 @@
|
|||
<Watches active="0" update="Never" />
|
||||
</Watch4>
|
||||
<Files>
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="C:\Work\software\OpenBLT\Target\Demo\ARMCM3_STM32F1_Olimex_STM32H103_Crossworks\Prog\main.c" y="19" path="C:\Work\software\OpenBLT\Target\Demo\ARMCM3_STM32F1_Olimex_STM32H103_Crossworks\Prog\main.c" left="0" selected="1" name="unnamed" top="15" />
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="../main.c" y="19" path="../main.c" left="0" selected="1" name="unnamed" top="15" />
|
||||
</Files>
|
||||
<ARMCrossStudioWindow activeProject="demoprog_olimex_stm32h103" autoConnectTarget="Olimex ARM-USB-TINY" debugSearchFileMap="" fileDialogInitialDirectory="D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_Crossworks\Prog" fileDialogDefaultFilter="*.c" autoConnectCapabilities="266111" debugSearchPath="" buildConfiguration="THUMB Debug" />
|
||||
<ARMCrossStudioWindow activeProject="demoprog_olimex_stm32h103" autoConnectTarget="Olimex ARM-USB-TINY" debugSearchFileMap="" fileDialogInitialDirectory="D:/usr/feaser/software/OpenBLT/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_Crossworks/Prog" fileDialogDefaultFilter="*.c" autoConnectCapabilities="266111" debugSearchPath="" buildConfiguration="THUMB Debug" />
|
||||
</session>
|
||||
|
|
|
@ -1,784 +0,0 @@
|
|||
/**************************************************************************//**
|
||||
* @file core_cm3.c
|
||||
* @brief CMSIS Cortex-M3 Core Peripheral Access Layer Source File
|
||||
* @version V1.30
|
||||
* @date 30. October 2009
|
||||
*
|
||||
* @note
|
||||
* Copyright (C) 2009 ARM Limited. All rights reserved.
|
||||
*
|
||||
* @par
|
||||
* ARM Limited (ARM) is supplying this software for use with Cortex-M
|
||||
* processor based microcontrollers. This file can be freely distributed
|
||||
* within development tools that are supporting such ARM based processors.
|
||||
*
|
||||
* @par
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||
* OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||
* ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||
* CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* define compiler specific symbols */
|
||||
#if defined ( __CC_ARM )
|
||||
#define __ASM __asm /*!< asm keyword for ARM Compiler */
|
||||
#define __INLINE __inline /*!< inline keyword for ARM Compiler */
|
||||
|
||||
#elif defined ( __ICCARM__ )
|
||||
#define __ASM __asm /*!< asm keyword for IAR Compiler */
|
||||
#define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */
|
||||
|
||||
#elif defined ( __GNUC__ )
|
||||
#define __ASM __asm /*!< asm keyword for GNU Compiler */
|
||||
#define __INLINE inline /*!< inline keyword for GNU Compiler */
|
||||
|
||||
#elif defined ( __TASKING__ )
|
||||
#define __ASM __asm /*!< asm keyword for TASKING Compiler */
|
||||
#define __INLINE inline /*!< inline keyword for TASKING Compiler */
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* ################### Compiler specific Intrinsics ########################### */
|
||||
|
||||
#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/
|
||||
/* ARM armcc specific functions */
|
||||
|
||||
/**
|
||||
* @brief Return the Process Stack Pointer
|
||||
*
|
||||
* @return ProcessStackPointer
|
||||
*
|
||||
* Return the actual process stack pointer
|
||||
*/
|
||||
__ASM uint32_t __get_PSP(void)
|
||||
{
|
||||
mrs r0, psp
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Process Stack Pointer
|
||||
*
|
||||
* @param topOfProcStack Process Stack Pointer
|
||||
*
|
||||
* Assign the value ProcessStackPointer to the MSP
|
||||
* (process stack pointer) Cortex processor register
|
||||
*/
|
||||
__ASM void __set_PSP(uint32_t topOfProcStack)
|
||||
{
|
||||
msr psp, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Main Stack Pointer
|
||||
*
|
||||
* @return Main Stack Pointer
|
||||
*
|
||||
* Return the current value of the MSP (main stack pointer)
|
||||
* Cortex processor register
|
||||
*/
|
||||
__ASM uint32_t __get_MSP(void)
|
||||
{
|
||||
mrs r0, msp
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Main Stack Pointer
|
||||
*
|
||||
* @param topOfMainStack Main Stack Pointer
|
||||
*
|
||||
* Assign the value mainStackPointer to the MSP
|
||||
* (main stack pointer) Cortex processor register
|
||||
*/
|
||||
__ASM void __set_MSP(uint32_t mainStackPointer)
|
||||
{
|
||||
msr msp, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in unsigned short value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in unsigned short value
|
||||
*/
|
||||
__ASM uint32_t __REV16(uint16_t value)
|
||||
{
|
||||
rev16 r0, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in signed short value with sign extension to integer
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in signed short value with sign extension to integer
|
||||
*/
|
||||
__ASM int32_t __REVSH(int16_t value)
|
||||
{
|
||||
revsh r0, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
|
||||
#if (__ARMCC_VERSION < 400000)
|
||||
|
||||
/**
|
||||
* @brief Remove the exclusive lock created by ldrex
|
||||
*
|
||||
* Removes the exclusive lock which is created by ldrex.
|
||||
*/
|
||||
__ASM void __CLREX(void)
|
||||
{
|
||||
clrex
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Base Priority value
|
||||
*
|
||||
* @return BasePriority
|
||||
*
|
||||
* Return the content of the base priority register
|
||||
*/
|
||||
__ASM uint32_t __get_BASEPRI(void)
|
||||
{
|
||||
mrs r0, basepri
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Base Priority value
|
||||
*
|
||||
* @param basePri BasePriority
|
||||
*
|
||||
* Set the base priority register
|
||||
*/
|
||||
__ASM void __set_BASEPRI(uint32_t basePri)
|
||||
{
|
||||
msr basepri, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Priority Mask value
|
||||
*
|
||||
* @return PriMask
|
||||
*
|
||||
* Return state of the priority mask bit from the priority mask register
|
||||
*/
|
||||
__ASM uint32_t __get_PRIMASK(void)
|
||||
{
|
||||
mrs r0, primask
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Priority Mask value
|
||||
*
|
||||
* @param priMask PriMask
|
||||
*
|
||||
* Set the priority mask bit in the priority mask register
|
||||
*/
|
||||
__ASM void __set_PRIMASK(uint32_t priMask)
|
||||
{
|
||||
msr primask, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Fault Mask value
|
||||
*
|
||||
* @return FaultMask
|
||||
*
|
||||
* Return the content of the fault mask register
|
||||
*/
|
||||
__ASM uint32_t __get_FAULTMASK(void)
|
||||
{
|
||||
mrs r0, faultmask
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Fault Mask value
|
||||
*
|
||||
* @param faultMask faultMask value
|
||||
*
|
||||
* Set the fault mask register
|
||||
*/
|
||||
__ASM void __set_FAULTMASK(uint32_t faultMask)
|
||||
{
|
||||
msr faultmask, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Control Register value
|
||||
*
|
||||
* @return Control value
|
||||
*
|
||||
* Return the content of the control register
|
||||
*/
|
||||
__ASM uint32_t __get_CONTROL(void)
|
||||
{
|
||||
mrs r0, control
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Control Register value
|
||||
*
|
||||
* @param control Control value
|
||||
*
|
||||
* Set the control register
|
||||
*/
|
||||
__ASM void __set_CONTROL(uint32_t control)
|
||||
{
|
||||
msr control, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
#endif /* __ARMCC_VERSION */
|
||||
|
||||
|
||||
|
||||
#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/
|
||||
/* IAR iccarm specific functions */
|
||||
#pragma diag_suppress=Pe940
|
||||
|
||||
/**
|
||||
* @brief Return the Process Stack Pointer
|
||||
*
|
||||
* @return ProcessStackPointer
|
||||
*
|
||||
* Return the actual process stack pointer
|
||||
*/
|
||||
uint32_t __get_PSP(void)
|
||||
{
|
||||
__ASM("mrs r0, psp");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Process Stack Pointer
|
||||
*
|
||||
* @param topOfProcStack Process Stack Pointer
|
||||
*
|
||||
* Assign the value ProcessStackPointer to the MSP
|
||||
* (process stack pointer) Cortex processor register
|
||||
*/
|
||||
void __set_PSP(uint32_t topOfProcStack)
|
||||
{
|
||||
__ASM("msr psp, r0");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Main Stack Pointer
|
||||
*
|
||||
* @return Main Stack Pointer
|
||||
*
|
||||
* Return the current value of the MSP (main stack pointer)
|
||||
* Cortex processor register
|
||||
*/
|
||||
uint32_t __get_MSP(void)
|
||||
{
|
||||
__ASM("mrs r0, msp");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Main Stack Pointer
|
||||
*
|
||||
* @param topOfMainStack Main Stack Pointer
|
||||
*
|
||||
* Assign the value mainStackPointer to the MSP
|
||||
* (main stack pointer) Cortex processor register
|
||||
*/
|
||||
void __set_MSP(uint32_t topOfMainStack)
|
||||
{
|
||||
__ASM("msr msp, r0");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in unsigned short value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in unsigned short value
|
||||
*/
|
||||
uint32_t __REV16(uint16_t value)
|
||||
{
|
||||
__ASM("rev16 r0, r0");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse bit order of value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse bit order of value
|
||||
*/
|
||||
uint32_t __RBIT(uint32_t value)
|
||||
{
|
||||
__ASM("rbit r0, r0");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (8 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 8 bit values)
|
||||
*/
|
||||
uint8_t __LDREXB(uint8_t *addr)
|
||||
{
|
||||
__ASM("ldrexb r0, [r0]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (16 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 16 bit values
|
||||
*/
|
||||
uint16_t __LDREXH(uint16_t *addr)
|
||||
{
|
||||
__ASM("ldrexh r0, [r0]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (32 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 32 bit values
|
||||
*/
|
||||
uint32_t __LDREXW(uint32_t *addr)
|
||||
{
|
||||
__ASM("ldrex r0, [r0]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (8 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 8 bit values
|
||||
*/
|
||||
uint32_t __STREXB(uint8_t value, uint8_t *addr)
|
||||
{
|
||||
__ASM("strexb r0, r0, [r1]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (16 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 16 bit values
|
||||
*/
|
||||
uint32_t __STREXH(uint16_t value, uint16_t *addr)
|
||||
{
|
||||
__ASM("strexh r0, r0, [r1]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (32 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 32 bit values
|
||||
*/
|
||||
uint32_t __STREXW(uint32_t value, uint32_t *addr)
|
||||
{
|
||||
__ASM("strex r0, r0, [r1]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
#pragma diag_default=Pe940
|
||||
|
||||
|
||||
#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/
|
||||
/* GNU gcc specific functions */
|
||||
|
||||
/**
|
||||
* @brief Return the Process Stack Pointer
|
||||
*
|
||||
* @return ProcessStackPointer
|
||||
*
|
||||
* Return the actual process stack pointer
|
||||
*/
|
||||
uint32_t __get_PSP(void) __attribute__( ( naked ) );
|
||||
uint32_t __get_PSP(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, psp\n\t"
|
||||
"MOV r0, %0 \n\t"
|
||||
"BX lr \n\t" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Process Stack Pointer
|
||||
*
|
||||
* @param topOfProcStack Process Stack Pointer
|
||||
*
|
||||
* Assign the value ProcessStackPointer to the MSP
|
||||
* (process stack pointer) Cortex processor register
|
||||
*/
|
||||
void __set_PSP(uint32_t topOfProcStack) __attribute__( ( naked ) );
|
||||
void __set_PSP(uint32_t topOfProcStack)
|
||||
{
|
||||
__ASM volatile ("MSR psp, %0\n\t"
|
||||
"BX lr \n\t" : : "r" (topOfProcStack) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Main Stack Pointer
|
||||
*
|
||||
* @return Main Stack Pointer
|
||||
*
|
||||
* Return the current value of the MSP (main stack pointer)
|
||||
* Cortex processor register
|
||||
*/
|
||||
uint32_t __get_MSP(void) __attribute__( ( naked ) );
|
||||
uint32_t __get_MSP(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, msp\n\t"
|
||||
"MOV r0, %0 \n\t"
|
||||
"BX lr \n\t" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Main Stack Pointer
|
||||
*
|
||||
* @param topOfMainStack Main Stack Pointer
|
||||
*
|
||||
* Assign the value mainStackPointer to the MSP
|
||||
* (main stack pointer) Cortex processor register
|
||||
*/
|
||||
void __set_MSP(uint32_t topOfMainStack) __attribute__( ( naked ) );
|
||||
void __set_MSP(uint32_t topOfMainStack)
|
||||
{
|
||||
__ASM volatile ("MSR msp, %0\n\t"
|
||||
"BX lr \n\t" : : "r" (topOfMainStack) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Base Priority value
|
||||
*
|
||||
* @return BasePriority
|
||||
*
|
||||
* Return the content of the base priority register
|
||||
*/
|
||||
uint32_t __get_BASEPRI(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, basepri_max" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Base Priority value
|
||||
*
|
||||
* @param basePri BasePriority
|
||||
*
|
||||
* Set the base priority register
|
||||
*/
|
||||
void __set_BASEPRI(uint32_t value)
|
||||
{
|
||||
__ASM volatile ("MSR basepri, %0" : : "r" (value) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Priority Mask value
|
||||
*
|
||||
* @return PriMask
|
||||
*
|
||||
* Return state of the priority mask bit from the priority mask register
|
||||
*/
|
||||
uint32_t __get_PRIMASK(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, primask" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Priority Mask value
|
||||
*
|
||||
* @param priMask PriMask
|
||||
*
|
||||
* Set the priority mask bit in the priority mask register
|
||||
*/
|
||||
void __set_PRIMASK(uint32_t priMask)
|
||||
{
|
||||
__ASM volatile ("MSR primask, %0" : : "r" (priMask) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Fault Mask value
|
||||
*
|
||||
* @return FaultMask
|
||||
*
|
||||
* Return the content of the fault mask register
|
||||
*/
|
||||
uint32_t __get_FAULTMASK(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, faultmask" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Fault Mask value
|
||||
*
|
||||
* @param faultMask faultMask value
|
||||
*
|
||||
* Set the fault mask register
|
||||
*/
|
||||
void __set_FAULTMASK(uint32_t faultMask)
|
||||
{
|
||||
__ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Control Register value
|
||||
*
|
||||
* @return Control value
|
||||
*
|
||||
* Return the content of the control register
|
||||
*/
|
||||
uint32_t __get_CONTROL(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, control" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Control Register value
|
||||
*
|
||||
* @param control Control value
|
||||
*
|
||||
* Set the control register
|
||||
*/
|
||||
void __set_CONTROL(uint32_t control)
|
||||
{
|
||||
__ASM volatile ("MSR control, %0" : : "r" (control) );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in integer value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in integer value
|
||||
*/
|
||||
uint32_t __REV(uint32_t value)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in unsigned short value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in unsigned short value
|
||||
*/
|
||||
uint32_t __REV16(uint16_t value)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in signed short value with sign extension to integer
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in signed short value with sign extension to integer
|
||||
*/
|
||||
int32_t __REVSH(int16_t value)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse bit order of value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse bit order of value
|
||||
*/
|
||||
uint32_t __RBIT(uint32_t value)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (8 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 8 bit value
|
||||
*/
|
||||
uint8_t __LDREXB(uint8_t *addr)
|
||||
{
|
||||
uint8_t result=0;
|
||||
|
||||
__ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (16 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 16 bit values
|
||||
*/
|
||||
uint16_t __LDREXH(uint16_t *addr)
|
||||
{
|
||||
uint16_t result=0;
|
||||
|
||||
__ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (32 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 32 bit values
|
||||
*/
|
||||
uint32_t __LDREXW(uint32_t *addr)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (8 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 8 bit values
|
||||
*/
|
||||
uint32_t __STREXB(uint8_t value, uint8_t *addr)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (16 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 16 bit values
|
||||
*/
|
||||
uint32_t __STREXH(uint16_t value, uint16_t *addr)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("strexh %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (32 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 32 bit values
|
||||
*/
|
||||
uint32_t __STREXW(uint32_t value, uint32_t *addr)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("strex %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/
|
||||
/* TASKING carm specific functions */
|
||||
|
||||
/*
|
||||
* The CMSIS functions have been implemented as intrinsics in the compiler.
|
||||
* Please use "carm -?i" to get an up to date list of all instrinsics,
|
||||
* Including the CMSIS ones.
|
||||
*/
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -1,243 +0,0 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
<title>CMSIS Debug Support</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
|
||||
<meta name="ProgId" content="FrontPage.Editor.Document">
|
||||
<style>
|
||||
<!--
|
||||
/*-----------------------------------------------------------
|
||||
Keil Software CHM Style Sheet
|
||||
-----------------------------------------------------------*/
|
||||
body { color: #000000; background-color: #FFFFFF; font-size: 75%; font-family:
|
||||
Verdana, Arial, 'Sans Serif' }
|
||||
a:link { color: #0000FF; text-decoration: underline }
|
||||
a:visited { color: #0000FF; text-decoration: underline }
|
||||
a:active { color: #FF0000; text-decoration: underline }
|
||||
a:hover { color: #FF0000; text-decoration: underline }
|
||||
h1 { font-family: Verdana; font-size: 18pt; color: #000080; font-weight: bold;
|
||||
text-align: Center; margin-right: 3 }
|
||||
h2 { font-family: Verdana; font-size: 14pt; color: #000080; font-weight: bold;
|
||||
background-color: #CCCCCC; margin-top: 24; margin-bottom: 3;
|
||||
padding: 6 }
|
||||
h3 { font-family: Verdana; font-size: 10pt; font-weight: bold; background-color:
|
||||
#CCCCCC; margin-top: 24; margin-bottom: 3; padding: 6 }
|
||||
pre { font-family: Courier New; font-size: 10pt; background-color: #CCFFCC;
|
||||
margin-left: 24; margin-right: 24 }
|
||||
ul { list-style-type: square; margin-top: 6pt; margin-bottom: 0 }
|
||||
ol { margin-top: 6pt; margin-bottom: 0 }
|
||||
li { clear: both; margin-bottom: 6pt }
|
||||
table { font-size: 100%; border-width: 0; padding: 0 }
|
||||
th { color: #FFFFFF; background-color: #000080; text-align: left; vertical-align:
|
||||
bottom; padding-right: 6pt }
|
||||
tr { text-align: left; vertical-align: top }
|
||||
td { text-align: left; vertical-align: top; padding-right: 6pt }
|
||||
.ToolT { font-size: 8pt; color: #808080 }
|
||||
.TinyT { font-size: 8pt; text-align: Center }
|
||||
code { color: #000000; background-color: #E0E0E0; font-family: 'Courier New', Courier;
|
||||
line-height: 120%; font-style: normal }
|
||||
/*-----------------------------------------------------------
|
||||
Notes
|
||||
-----------------------------------------------------------*/
|
||||
p.note { font-weight: bold; clear: both; margin-bottom: 3pt; padding-top: 6pt }
|
||||
/*-----------------------------------------------------------
|
||||
Expanding/Contracting Divisions
|
||||
-----------------------------------------------------------*/
|
||||
#expand { text-decoration: none; margin-bottom: 3pt }
|
||||
img.expand { border-style: none; border-width: medium }
|
||||
div.expand { display: none; margin-left: 9pt; margin-top: 0 }
|
||||
/*-----------------------------------------------------------
|
||||
Where List Tags
|
||||
-----------------------------------------------------------*/
|
||||
p.wh { font-weight: bold; clear: both; margin-top: 6pt; margin-bottom: 3pt }
|
||||
table.wh { width: 100% }
|
||||
td.whItem { white-space: nowrap; font-style: italic; padding-right: 6pt; padding-bottom:
|
||||
6pt }
|
||||
td.whDesc { padding-bottom: 6pt }
|
||||
/*-----------------------------------------------------------
|
||||
Keil Table Tags
|
||||
-----------------------------------------------------------*/
|
||||
table.kt { border: 1pt solid #000000 }
|
||||
th.kt { white-space: nowrap; border-bottom: 1pt solid #000000; padding-left: 6pt;
|
||||
padding-right: 6pt; padding-top: 4pt; padding-bottom: 4pt }
|
||||
tr.kt { }
|
||||
td.kt { color: #000000; background-color: #E0E0E0; border-top: 1pt solid #A0A0A0;
|
||||
padding-left: 6pt; padding-right: 6pt; padding-top: 2pt;
|
||||
padding-bottom: 2pt }
|
||||
/*-----------------------------------------------------------
|
||||
-----------------------------------------------------------*/
|
||||
-->
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>CMSIS Debug Support</h1>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>Cortex-M3 ITM Debug Access</h2>
|
||||
<p>
|
||||
The Cortex-M3 incorporates the Instrumented Trace Macrocell (ITM) that provides together with
|
||||
the Serial Viewer Output trace capabilities for the microcontroller system. The ITM has
|
||||
32 communication channels which are able to transmit 32 / 16 / 8 bit values; two ITM
|
||||
communication channels are used by CMSIS to output the following information:
|
||||
</p>
|
||||
<ul>
|
||||
<li>ITM Channel 0: used for printf-style output via the debug interface.</li>
|
||||
<li>ITM Channel 31: is reserved for RTOS kernel awareness debugging.</li>
|
||||
</ul>
|
||||
|
||||
<h2>Debug IN / OUT functions</h2>
|
||||
<p>CMSIS provides following debug functions:</p>
|
||||
<ul>
|
||||
<li>ITM_SendChar (uses ITM channel 0)</li>
|
||||
<li>ITM_ReceiveChar (uses global variable)</li>
|
||||
<li>ITM_CheckChar (uses global variable)</li>
|
||||
</ul>
|
||||
|
||||
<h3>ITM_SendChar</h3>
|
||||
<p>
|
||||
<strong>ITM_SendChar</strong> is used to transmit a character over ITM channel 0 from
|
||||
the microcontroller system to the debug system. <br>
|
||||
Only a 8 bit value is transmitted.
|
||||
</p>
|
||||
<pre>
|
||||
static __INLINE uint32_t ITM_SendChar (uint32_t ch)
|
||||
{
|
||||
/* check if debugger connected and ITM channel enabled for tracing */
|
||||
if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA) &&
|
||||
(ITM->TCR & ITM_TCR_ITMENA) &&
|
||||
(ITM->TER & (1UL << 0)) )
|
||||
{
|
||||
while (ITM->PORT[0].u32 == 0);
|
||||
ITM->PORT[0].u8 = (uint8_t)ch;
|
||||
}
|
||||
return (ch);
|
||||
}</pre>
|
||||
|
||||
<h3>ITM_ReceiveChar</h3>
|
||||
<p>
|
||||
ITM communication channel is only capable for OUT direction. For IN direction
|
||||
a globel variable is used. A simple mechansim detects if a character is received.
|
||||
The project to test need to be build with debug information.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The globale variable <strong>ITM_RxBuffer</strong> is used to transmit a 8 bit value from debug system
|
||||
to microcontroller system. <strong>ITM_RxBuffer</strong> is 32 bit wide to enshure a proper handshake.
|
||||
</p>
|
||||
<pre>
|
||||
extern volatile int ITM_RxBuffer; /* variable to receive characters */
|
||||
</pre>
|
||||
<p>
|
||||
A dedicated bit pattern is used to determin if <strong>ITM_RxBuffer</strong> is empty
|
||||
or contains a valid value.
|
||||
</p>
|
||||
<pre>
|
||||
#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /* value identifying ITM_RxBuffer is ready for next character */
|
||||
</pre>
|
||||
<p>
|
||||
<strong>ITM_ReceiveChar</strong> is used to receive a 8 bit value from the debug system. The function is nonblocking.
|
||||
It returns the received character or '-1' if no character was available.
|
||||
</p>
|
||||
<pre>
|
||||
static __INLINE int ITM_ReceiveChar (void) {
|
||||
int ch = -1; /* no character available */
|
||||
|
||||
if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) {
|
||||
ch = ITM_RxBuffer;
|
||||
ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */
|
||||
}
|
||||
|
||||
return (ch);
|
||||
}
|
||||
</pre>
|
||||
|
||||
<h3>ITM_CheckChar</h3>
|
||||
<p>
|
||||
<strong>ITM_CheckChar</strong> is used to check if a character is received.
|
||||
</p>
|
||||
<pre>
|
||||
static __INLINE int ITM_CheckChar (void) {
|
||||
|
||||
if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) {
|
||||
return (0); /* no character available */
|
||||
} else {
|
||||
return (1); /* character available */
|
||||
}
|
||||
}</pre>
|
||||
|
||||
|
||||
<h2>ITM Debug Support in uVision</h2>
|
||||
<p>
|
||||
uVision uses in a debug session the <strong>Debug (printf) Viewer</strong> window to
|
||||
display the debug data.
|
||||
</p>
|
||||
<p>Direction microcontroller system -> uVision:</p>
|
||||
<ul>
|
||||
<li>
|
||||
Characters received via ITM communication channel 0 are written in a printf style
|
||||
to <strong>Debug (printf) Viewer</strong> window.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>Direction uVision -> microcontroller system:</p>
|
||||
<ul>
|
||||
<li>Check if <strong>ITM_RxBuffer</strong> variable is available (only performed once).</li>
|
||||
<li>Read character from <strong>Debug (printf) Viewer</strong> window.</li>
|
||||
<li>If <strong>ITM_RxBuffer</strong> empty write character to <strong>ITM_RxBuffer</strong>.</li>
|
||||
</ul>
|
||||
|
||||
<p class="Note">Note</p>
|
||||
<ul>
|
||||
<li><p>Current solution does not use a buffer machanism for trasmitting the characters.</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>RTX Kernel awareness in uVision</h2>
|
||||
<p>
|
||||
uVision / RTX are using a simple and efficient solution for RTX Kernel awareness.
|
||||
No format overhead is necessary.<br>
|
||||
uVsion debugger decodes the RTX events via the 32 / 16 / 8 bit ITM write access
|
||||
to ITM communication channel 31.
|
||||
</p>
|
||||
|
||||
<p>Following RTX events are traced:</p>
|
||||
<ul>
|
||||
<li>Task Create / Delete event
|
||||
<ol>
|
||||
<li>32 bit access. Task start address is transmitted</li>
|
||||
<li>16 bit access. Task ID and Create/Delete flag are transmitted<br>
|
||||
High byte holds Create/Delete flag, Low byte holds TASK ID.
|
||||
</li>
|
||||
</ol>
|
||||
</li>
|
||||
<li>Task switch event
|
||||
<ol>
|
||||
<li>8 bit access. Task ID of current task is transmitted</li>
|
||||
</ol>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p class="Note">Note</p>
|
||||
<ul>
|
||||
<li><p>Other RTOS information could be retrieved via memory read access in a polling mode manner.</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
|
||||
|
||||
<hr>
|
||||
|
||||
<p class="TinyT">Copyright © KEIL - An ARM Company.<br>
|
||||
All rights reserved.<br>
|
||||
Visit our web site at <a href="http://www.keil.com">www.keil.com</a>.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -1,320 +0,0 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
<title>CMSIS Changes</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
|
||||
<meta name="ProgId" content="FrontPage.Editor.Document">
|
||||
<style>
|
||||
<!--
|
||||
/*-----------------------------------------------------------
|
||||
Keil Software CHM Style Sheet
|
||||
-----------------------------------------------------------*/
|
||||
body { color: #000000; background-color: #FFFFFF; font-size: 75%; font-family:
|
||||
Verdana, Arial, 'Sans Serif' }
|
||||
a:link { color: #0000FF; text-decoration: underline }
|
||||
a:visited { color: #0000FF; text-decoration: underline }
|
||||
a:active { color: #FF0000; text-decoration: underline }
|
||||
a:hover { color: #FF0000; text-decoration: underline }
|
||||
h1 { font-family: Verdana; font-size: 18pt; color: #000080; font-weight: bold;
|
||||
text-align: Center; margin-right: 3 }
|
||||
h2 { font-family: Verdana; font-size: 14pt; color: #000080; font-weight: bold;
|
||||
background-color: #CCCCCC; margin-top: 24; margin-bottom: 3;
|
||||
padding: 6 }
|
||||
h3 { font-family: Verdana; font-size: 10pt; font-weight: bold; background-color:
|
||||
#CCCCCC; margin-top: 24; margin-bottom: 3; padding: 6 }
|
||||
pre { font-family: Courier New; font-size: 10pt; background-color: #CCFFCC;
|
||||
margin-left: 24; margin-right: 24 }
|
||||
ul { list-style-type: square; margin-top: 6pt; margin-bottom: 0 }
|
||||
ol { margin-top: 6pt; margin-bottom: 0 }
|
||||
li { clear: both; margin-bottom: 6pt }
|
||||
table { font-size: 100%; border-width: 0; padding: 0 }
|
||||
th { color: #FFFFFF; background-color: #000080; text-align: left; vertical-align:
|
||||
bottom; padding-right: 6pt }
|
||||
tr { text-align: left; vertical-align: top }
|
||||
td { text-align: left; vertical-align: top; padding-right: 6pt }
|
||||
.ToolT { font-size: 8pt; color: #808080 }
|
||||
.TinyT { font-size: 8pt; text-align: Center }
|
||||
code { color: #000000; background-color: #E0E0E0; font-family: 'Courier New', Courier;
|
||||
line-height: 120%; font-style: normal }
|
||||
/*-----------------------------------------------------------
|
||||
Notes
|
||||
-----------------------------------------------------------*/
|
||||
p.note { font-weight: bold; clear: both; margin-bottom: 3pt; padding-top: 6pt }
|
||||
/*-----------------------------------------------------------
|
||||
Expanding/Contracting Divisions
|
||||
-----------------------------------------------------------*/
|
||||
#expand { text-decoration: none; margin-bottom: 3pt }
|
||||
img.expand { border-style: none; border-width: medium }
|
||||
div.expand { display: none; margin-left: 9pt; margin-top: 0 }
|
||||
/*-----------------------------------------------------------
|
||||
Where List Tags
|
||||
-----------------------------------------------------------*/
|
||||
p.wh { font-weight: bold; clear: both; margin-top: 6pt; margin-bottom: 3pt }
|
||||
table.wh { width: 100% }
|
||||
td.whItem { white-space: nowrap; font-style: italic; padding-right: 6pt; padding-bottom:
|
||||
6pt }
|
||||
td.whDesc { padding-bottom: 6pt }
|
||||
/*-----------------------------------------------------------
|
||||
Keil Table Tags
|
||||
-----------------------------------------------------------*/
|
||||
table.kt { border: 1pt solid #000000 }
|
||||
th.kt { white-space: nowrap; border-bottom: 1pt solid #000000; padding-left: 6pt;
|
||||
padding-right: 6pt; padding-top: 4pt; padding-bottom: 4pt }
|
||||
tr.kt { }
|
||||
td.kt { color: #000000; background-color: #E0E0E0; border-top: 1pt solid #A0A0A0;
|
||||
padding-left: 6pt; padding-right: 6pt; padding-top: 2pt;
|
||||
padding-bottom: 2pt }
|
||||
/*-----------------------------------------------------------
|
||||
-----------------------------------------------------------*/
|
||||
-->
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>Changes to CMSIS version V1.20</h1>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>1. Removed CMSIS Middelware packages</h2>
|
||||
<p>
|
||||
CMSIS Middleware is on hold from ARM side until a agreement between all CMSIS partners is found.
|
||||
</p>
|
||||
|
||||
<h2>2. SystemFrequency renamed to SystemCoreClock</h2>
|
||||
<p>
|
||||
The variable name <strong>SystemCoreClock</strong> is more precise than <strong>SystemFrequency</strong>
|
||||
because the variable holds the clock value at which the core is running.
|
||||
</p>
|
||||
|
||||
<h2>3. Changed startup concept</h2>
|
||||
<p>
|
||||
The old startup concept (calling SystemInit_ExtMemCtl from startup file and calling SystemInit
|
||||
from main) has the weakness that it does not work for controllers which need a already
|
||||
configuerd clock system to configure the external memory controller.
|
||||
</p>
|
||||
|
||||
<h3>Changed startup concept</h3>
|
||||
<ul>
|
||||
<li>
|
||||
SystemInit() is called from startup file before <strong>premain</strong>.
|
||||
</li>
|
||||
<li>
|
||||
<strong>SystemInit()</strong> configures the clock system and also configures
|
||||
an existing external memory controller.
|
||||
</li>
|
||||
<li>
|
||||
<strong>SystemInit()</strong> must not use global variables.
|
||||
</li>
|
||||
<li>
|
||||
<strong>SystemCoreClock</strong> is initialized with a correct predefined value.
|
||||
</li>
|
||||
<li>
|
||||
Additional function <strong>void SystemCoreClockUpdate (void)</strong> is provided.<br>
|
||||
<strong>SystemCoreClockUpdate()</strong> updates the variable <strong>SystemCoreClock</strong>
|
||||
and must be called whenever the core clock is changed.<br>
|
||||
<strong>SystemCoreClockUpdate()</strong> evaluates the clock register settings and calculates
|
||||
the current core clock.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>4. Advanced Debug Functions</h2>
|
||||
<p>
|
||||
ITM communication channel is only capable for OUT direction. To allow also communication for
|
||||
IN direction a simple concept is provided.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Global variable <strong>volatile int ITM_RxBuffer</strong> used for IN data.
|
||||
</li>
|
||||
<li>
|
||||
Function <strong>int ITM_CheckChar (void)</strong> checks if a new character is available.
|
||||
</li>
|
||||
<li>
|
||||
Function <strong>int ITM_ReceiveChar (void)</strong> retrieves the new character.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
For detailed explanation see file <strong>CMSIS debug support.htm</strong>.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>5. Core Register Bit Definitions</h2>
|
||||
<p>
|
||||
Files core_cm3.h and core_cm0.h contain now bit definitions for Core Registers. The name for the
|
||||
defines correspond with the Cortex-M Technical Reference Manual.
|
||||
</p>
|
||||
<p>
|
||||
e.g. SysTick structure with bit definitions
|
||||
</p>
|
||||
<pre>
|
||||
/** @addtogroup CMSIS_CM3_SysTick CMSIS CM3 SysTick
|
||||
memory mapped structure for SysTick
|
||||
@{
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
__IO uint32_t CTRL; /*!< Offset: 0x00 SysTick Control and Status Register */
|
||||
__IO uint32_t LOAD; /*!< Offset: 0x04 SysTick Reload Value Register */
|
||||
__IO uint32_t VAL; /*!< Offset: 0x08 SysTick Current Value Register */
|
||||
__I uint32_t CALIB; /*!< Offset: 0x0C SysTick Calibration Register */
|
||||
} SysTick_Type;
|
||||
|
||||
/* SysTick Control / Status Register Definitions */
|
||||
#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */
|
||||
#define SysTick_CTRL_COUNTFLAG_Msk (1ul << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */
|
||||
|
||||
#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */
|
||||
#define SysTick_CTRL_CLKSOURCE_Msk (1ul << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */
|
||||
|
||||
#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */
|
||||
#define SysTick_CTRL_TICKINT_Msk (1ul << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */
|
||||
|
||||
#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */
|
||||
#define SysTick_CTRL_ENABLE_Msk (1ul << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */
|
||||
|
||||
/* SysTick Reload Register Definitions */
|
||||
#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */
|
||||
#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */
|
||||
|
||||
/* SysTick Current Register Definitions */
|
||||
#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */
|
||||
#define SysTick_VAL_CURRENT_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */
|
||||
|
||||
/* SysTick Calibration Register Definitions */
|
||||
#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */
|
||||
#define SysTick_CALIB_NOREF_Msk (1ul << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */
|
||||
|
||||
#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */
|
||||
#define SysTick_CALIB_SKEW_Msk (1ul << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */
|
||||
|
||||
#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */
|
||||
#define SysTick_CALIB_TENMS_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */
|
||||
/*@}*/ /* end of group CMSIS_CM3_SysTick */</pre>
|
||||
|
||||
<h2>7. DoxyGen Tags</h2>
|
||||
<p>
|
||||
DoxyGen tags in files core_cm3.[c,h] and core_cm0.[c,h] are reworked to create proper documentation
|
||||
using DoxyGen.
|
||||
</p>
|
||||
|
||||
<h2>8. Folder Structure</h2>
|
||||
<p>
|
||||
The folder structure is changed to differentiate the single support packages.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>CM0</li>
|
||||
<li>CM3
|
||||
<ul>
|
||||
<li>CoreSupport</li>
|
||||
<li>DeviceSupport</li>
|
||||
<ul>
|
||||
<li>Vendor
|
||||
<ul>
|
||||
<li>Device
|
||||
<ul>
|
||||
<li>Startup
|
||||
<ul>
|
||||
<li>Toolchain</li>
|
||||
<li>Toolchain</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Device</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Vendor</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Example
|
||||
<ul>
|
||||
<li>Toolchain
|
||||
<ul>
|
||||
<li>Device</li>
|
||||
<li>Device</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Toolchain</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li>Documentation</li>
|
||||
</ul>
|
||||
|
||||
<h2>9. Open Points</h2>
|
||||
<p>
|
||||
Following points need to be clarified and solved:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>
|
||||
Equivalent C and Assembler startup files.
|
||||
</p>
|
||||
<p>
|
||||
Is there a need for having C startup files although assembler startup files are
|
||||
very efficient and do not need to be changed?
|
||||
<p/>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
Placing of HEAP in external RAM.
|
||||
</p>
|
||||
<p>
|
||||
It must be possible to place HEAP in external RAM if the device supports an
|
||||
external memory controller.
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
Placing of STACK /HEAP.
|
||||
</p>
|
||||
<p>
|
||||
STACK should always be placed at the end of internal RAM.
|
||||
</p>
|
||||
<p>
|
||||
If HEAP is placed in internal RAM than it should be placed after RW ZI section.
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
Removing core_cm3.c and core_cm0.c.
|
||||
</p>
|
||||
<p>
|
||||
On a long term the functions in core_cm3.c and core_cm0.c must be replaced with
|
||||
appropriate compiler intrinsics.
|
||||
</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>10. Limitations</h2>
|
||||
<p>
|
||||
The following limitations are not covered with the current CMSIS version:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
No <strong>C startup files</strong> for ARM toolchain are provided.
|
||||
</li>
|
||||
<li>
|
||||
No <strong>C startup files</strong> for GNU toolchain are provided.
|
||||
</li>
|
||||
<li>
|
||||
No <strong>C startup files</strong> for IAR toolchain are provided.
|
||||
</li>
|
||||
<li>
|
||||
No <strong>Tasking</strong> projects are provided yet.
|
||||
</li>
|
||||
</ul>
|
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,4 +1,4 @@
|
|||
Integrated Development Environment
|
||||
----------------------------------
|
||||
Rowleys CrossWorks (version 2.3.1) was used as the editor during the development of this software program. This directory contains
|
||||
Rowleys CrossWorks (version 3.7.6) was used as the editor during the development of this software program. This directory contains
|
||||
the CrossWorks project and solution files. More info is available at: http://www.rowley.co.uk/
|
|
@ -1,102 +1,168 @@
|
|||
<!DOCTYPE CrossStudio_Project_File>
|
||||
<solution Name="stm32f103_crossworks" target="8" version="2">
|
||||
<project Name="openblt_olimex_stm32p103">
|
||||
<configuration Name="Common" Placement="Flash" Target="STM32F103RB" arm_architecture="v7M" arm_core_type="Cortex-M3" arm_linker_heap_size="128" arm_linker_jtag_pad_pre_dr="1" arm_linker_jtag_pad_pre_ir="5" arm_linker_process_stack_size="0" arm_linker_stack_size="128" arm_simulator_memory_simulation_filename="$(TargetsDir)/STM32/STM32SimulatorMemory.dll" arm_simulator_memory_simulation_parameter="STM32F103RB;0x20000;0x5000" arm_target_debug_interface_type="ADIv5" arm_target_loader_applicable_loaders="Flash" arm_target_loader_default_loader="Flash" arm_target_loader_parameter="8000000" arm_use_gcc_libraries="Yes" build_intermediate_directory="$(Configuration)/../../obj" build_output_directory="$(ProjectDir)/../bin" c_only_additional_options="-I./..;-I./../lib/fatfs;-I./../lib/STM32F10x_StdPeriph_Driver;-I./../lib/STM32F10x_StdPeriph_Driver/inc;-I./../lib/CMSIS/CM3/CoreSupport;-I./../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x;-I./../../../../Source;-I./../../../../Source/third_party/fatfs/src;-I./../../../../Source/ARMCM3_STM32F1;-I./../../../../Source/ARMCM3_STM32F1/Crossworks" c_preprocessor_definitions="USE_STDPERIPH_DRIVER ;VECT_TAB_FLASH;GCC_ARMCM3" c_user_include_directories="$(TargetsDir)/STM32/include" gcc_optimization_level="Level 1" link_include_standard_libraries="Yes" linker_keep_symbols="_vectors;EntryFromProg" linker_memory_map_file="$(TargetsDir)/STM32/STM32F103RB_MemoryMap.xml" linker_output_format="srec" linker_printf_enabled="No" linker_printf_width_precision_supported="No" linker_scanf_enabled="No" linker_section_placement_file="$(StudioDir)/targets/Cortex_M/flash_placement.xml" oscillator_frequency="8MHz" project_directory="" project_type="Executable" property_groups_file_path="$(TargetsDir)/STM32/propertyGroups.xml" target_get_partname_script="GetPartName()" target_match_partname_script="MatchPartName("$(Target)")" target_reset_script="Reset()"/>
|
||||
<configuration Name="Flash" arm_target_flash_loader_file_path="$(TargetsDir)/STM32/Release/Loader_rpc.elf" arm_target_flash_loader_type="LIBMEM RPC Loader" arm_target_loader_can_lock_all="No" arm_target_loader_can_lock_range="No" arm_target_loader_can_unlock_all="No" arm_target_loader_can_unlock_range="No" target_reset_script="FLASHReset()"/>
|
||||
<configuration
|
||||
Name="Common"
|
||||
Placement="Flash"
|
||||
Target="STM32F103RB"
|
||||
arm_architecture="v7M"
|
||||
arm_core_type="Cortex-M3"
|
||||
arm_linker_heap_size="128"
|
||||
arm_linker_jtag_pad_pre_dr="1"
|
||||
arm_linker_jtag_pad_pre_ir="5"
|
||||
arm_linker_process_stack_size="0"
|
||||
arm_linker_stack_size="128"
|
||||
arm_simulator_memory_simulation_filename="$(TargetsDir)/STM32/STM32SimulatorMemory.dll"
|
||||
arm_simulator_memory_simulation_parameter="STM32F103RB;0x20000;0x5000"
|
||||
arm_target_debug_interface_type="ADIv5"
|
||||
arm_target_loader_applicable_loaders="Flash"
|
||||
arm_target_loader_default_loader="Flash"
|
||||
arm_target_loader_parameter="8000000"
|
||||
arm_use_gcc_libraries="Yes"
|
||||
build_intermediate_directory="$(Configuration)/../../obj"
|
||||
build_output_directory="$(ProjectDir)/../bin"
|
||||
c_only_additional_options="-I./..;-I./../lib/fatfs;-I./../lib/STM32F10x_StdPeriph_Driver;-I./../lib/STM32F10x_StdPeriph_Driver/inc;-I./../lib/CMSIS/CM3/CoreSupport;-I./../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x;-I./../../../../Source;-I./../../../../Source/third_party/fatfs/src;-I./../../../../Source/ARMCM3_STM32F1;-I./../../../../Source/ARMCM3_STM32F1/Crossworks"
|
||||
c_preprocessor_definitions="STM32F10X_MD;USE_STDPERIPH_DRIVER ;VECT_TAB_FLASH;GCC_ARMCM3"
|
||||
c_user_include_directories="$(TargetsDir)/STM32/include"
|
||||
gcc_optimization_level="Level 1"
|
||||
link_include_standard_libraries="Yes"
|
||||
linker_keep_symbols="_vectors;EntryFromProg"
|
||||
linker_memory_map_file="$(TargetsDir)/STM32/STM32F103RB_MemoryMap.xml"
|
||||
linker_output_format="srec"
|
||||
linker_printf_enabled="No"
|
||||
linker_printf_width_precision_supported="No"
|
||||
linker_scanf_enabled="No"
|
||||
linker_section_placement_file="$(StudioDir)/targets/Cortex_M/flash_placement.xml"
|
||||
oscillator_frequency="8MHz"
|
||||
project_directory=""
|
||||
project_type="Executable"
|
||||
property_groups_file_path="$(TargetsDir)/STM32/propertyGroups.xml"
|
||||
target_get_partname_script="GetPartName()"
|
||||
target_match_partname_script="MatchPartName("$(Target)")"
|
||||
target_reset_script="Reset()" />
|
||||
<configuration
|
||||
Name="Flash"
|
||||
arm_target_flash_loader_file_path="$(TargetsDir)/STM32/Release/Loader_rpc.elf"
|
||||
arm_target_flash_loader_type="LIBMEM RPC Loader"
|
||||
arm_target_loader_can_lock_all="No"
|
||||
arm_target_loader_can_lock_range="No"
|
||||
arm_target_loader_can_unlock_all="No"
|
||||
arm_target_loader_can_unlock_range="No"
|
||||
target_reset_script="FLASHReset()" />
|
||||
<folder Name="Source Files">
|
||||
<configuration Name="Common" filter="c;cpp;cxx;cc;h;s;asm;inc"/>
|
||||
<configuration Name="Common" filter="c;cpp;cxx;cc;h;s;asm;inc" />
|
||||
<folder Name="Demo">
|
||||
<folder Name="Boot" file_name="">
|
||||
<file file_name="../hooks.c"/>
|
||||
<file file_name="../main.c"/>
|
||||
<file file_name="../stm32f10x.h"/>
|
||||
<folder Name="Boot">
|
||||
<file file_name="../hooks.c" />
|
||||
<file file_name="../main.c" />
|
||||
<file file_name="../stm32f10x.h" />
|
||||
<folder Name="lib">
|
||||
<folder Name="cmsis" file_name="">
|
||||
<file file_name="../lib/CMSIS/CM3/CoreSupport/core_cm3.c"/>
|
||||
<file file_name="../lib/CMSIS/CM3/CoreSupport/core_cm3.h"/>
|
||||
<file file_name="../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h"/>
|
||||
<file file_name="../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c"/>
|
||||
<file file_name="../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h"/>
|
||||
<folder Name="cmsis">
|
||||
<file file_name="../lib/CMSIS/CM3/CoreSupport/core_cm3.h" />
|
||||
<file file_name="../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h" />
|
||||
<file file_name="../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c" />
|
||||
<file file_name="../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h" />
|
||||
</folder>
|
||||
<folder Name="fatfs" file_name="">
|
||||
<file file_name="../lib/fatfs/ffconf.h"/>
|
||||
<file file_name="../lib/fatfs/mmc.c"/>
|
||||
<folder Name="fatfs">
|
||||
<file file_name="../lib/fatfs/ffconf.h" />
|
||||
<file file_name="../lib/fatfs/mmc.c" />
|
||||
</folder>
|
||||
<folder Name="stdperiphlib" file_name="">
|
||||
<file file_name="../lib/STM32F10x_StdPeriph_Driver/stm32f10x_conf.h"/>
|
||||
<file file_name="../lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c"/>
|
||||
<file file_name="../lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c"/>
|
||||
<file file_name="../lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c"/>
|
||||
<file file_name="../lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c"/>
|
||||
<file file_name="../lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_gpio.h"/>
|
||||
<file file_name="../lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rcc.h"/>
|
||||
<file file_name="../lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_spi.h"/>
|
||||
<file file_name="../lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_usart.h"/>
|
||||
<folder Name="stdperiphlib">
|
||||
<file file_name="../lib/STM32F10x_StdPeriph_Driver/stm32f10x_conf.h" />
|
||||
<file file_name="../lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c" />
|
||||
<file file_name="../lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c" />
|
||||
<file file_name="../lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c" />
|
||||
<file file_name="../lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c" />
|
||||
<file file_name="../lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_gpio.h" />
|
||||
<file file_name="../lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rcc.h" />
|
||||
<file file_name="../lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_spi.h" />
|
||||
<file file_name="../lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_usart.h" />
|
||||
</folder>
|
||||
</folder>
|
||||
<file file_name="../blt_conf.h"/>
|
||||
<file file_name="../blt_conf.h" />
|
||||
</folder>
|
||||
</folder>
|
||||
<folder Name="Source" file_name="">
|
||||
<folder Name="ARMCM3_STM32F1" file_name="">
|
||||
<folder Name="Crossworks" file_name=""/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/can.c"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/cpu.c"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/flash.c"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/flash.h"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/nvm.c"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/timer.c"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/types.h"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/uart.c"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/usb.c"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/Crossworks/cpu_comp.c"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/Crossworks/cstart.s"/>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/Crossworks/vectors.c"/>
|
||||
<folder Name="Source">
|
||||
<folder Name="ARMCM3_STM32F1">
|
||||
<folder Name="Crossworks" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/can.c" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/cpu.c" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/flash.c" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/flash.h" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/nvm.c" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/timer.c" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/types.h" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/uart.c" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/usb.c" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/Crossworks/cpu_comp.c" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/Crossworks/cstart.s" />
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/Crossworks/vectors.c" />
|
||||
</folder>
|
||||
<file file_name="../../../../Source/assert.c"/>
|
||||
<file file_name="../../../../Source/assert.h"/>
|
||||
<file file_name="../../../../Source/backdoor.c"/>
|
||||
<file file_name="../../../../Source/backdoor.h"/>
|
||||
<file file_name="../../../../Source/boot.c"/>
|
||||
<file file_name="../../../../Source/boot.h"/>
|
||||
<file file_name="../../../../Source/com.c"/>
|
||||
<file file_name="../../../../Source/com.h"/>
|
||||
<file file_name="../../../../Source/cop.c"/>
|
||||
<file file_name="../../../../Source/cop.h"/>
|
||||
<file file_name="../../../../Source/plausibility.h"/>
|
||||
<file file_name="../../../../Source/xcp.c"/>
|
||||
<file file_name="../../../../Source/xcp.h"/>
|
||||
<file file_name="../../../../Source/file.c"/>
|
||||
<file file_name="../../../../Source/file.h"/>
|
||||
<file file_name="../../../../Source/assert.c" />
|
||||
<file file_name="../../../../Source/assert.h" />
|
||||
<file file_name="../../../../Source/backdoor.c" />
|
||||
<file file_name="../../../../Source/backdoor.h" />
|
||||
<file file_name="../../../../Source/boot.c" />
|
||||
<file file_name="../../../../Source/boot.h" />
|
||||
<file file_name="../../../../Source/com.c" />
|
||||
<file file_name="../../../../Source/com.h" />
|
||||
<file file_name="../../../../Source/cop.c" />
|
||||
<file file_name="../../../../Source/cop.h" />
|
||||
<file file_name="../../../../Source/plausibility.h" />
|
||||
<file file_name="../../../../Source/xcp.c" />
|
||||
<file file_name="../../../../Source/xcp.h" />
|
||||
<file file_name="../../../../Source/file.c" />
|
||||
<file file_name="../../../../Source/file.h" />
|
||||
<folder Name="third_party">
|
||||
<folder Name="fatfs" file_name="">
|
||||
<file file_name="../../../../Source/third_party/fatfs/src/diskio.h"/>
|
||||
<file file_name="../../../../Source/third_party/fatfs/src/ff.c"/>
|
||||
<file file_name="../../../../Source/third_party/fatfs/src/ff.h"/>
|
||||
<file file_name="../../../../Source/third_party/fatfs/src/integer.h"/>
|
||||
<file file_name="../../../../Source/third_party/fatfs/src/option/unicode.c"/>
|
||||
<folder Name="fatfs">
|
||||
<file file_name="../../../../Source/third_party/fatfs/src/diskio.h" />
|
||||
<file file_name="../../../../Source/third_party/fatfs/src/ff.c" />
|
||||
<file file_name="../../../../Source/third_party/fatfs/src/ff.h" />
|
||||
<file file_name="../../../../Source/third_party/fatfs/src/integer.h" />
|
||||
<file file_name="../../../../Source/third_party/fatfs/src/option/unicode.c" />
|
||||
</folder>
|
||||
</folder>
|
||||
<file file_name="../../../../Source/can.h"/>
|
||||
<file file_name="../../../../Source/cpu.h"/>
|
||||
<file file_name="../../../../Source/nvm.h"/>
|
||||
<file file_name="../../../../Source/timer.h"/>
|
||||
<file file_name="../../../../Source/uart.h"/>
|
||||
<file file_name="../../../../Source/can.h" />
|
||||
<file file_name="../../../../Source/cpu.h" />
|
||||
<file file_name="../../../../Source/nvm.h" />
|
||||
<file file_name="../../../../Source/timer.h" />
|
||||
<file file_name="../../../../Source/uart.h" />
|
||||
</folder>
|
||||
</folder>
|
||||
<folder Name="System Files" file_name="">
|
||||
<folder Name="System Files">
|
||||
<file file_name="$(TargetsDir)/STM32/STM32_Target.js">
|
||||
<configuration Name="Common" file_type="Reset Script"/>
|
||||
<configuration Name="Common" file_type="Reset Script" />
|
||||
</file>
|
||||
<file file_name="../../../../Source/ARMCM3_STM32F1/Crossworks/memory.x">
|
||||
<configuration Name="Common" file_type="Linker Script"/>
|
||||
<configuration Name="Common" file_type="Linker Script" />
|
||||
</file>
|
||||
</folder>
|
||||
<configuration Name="Debug" c_only_additional_options=""/>
|
||||
<configuration Name="Debug" c_only_additional_options="" />
|
||||
</project>
|
||||
<configuration Name="THUMB Debug" inherited_configurations="THUMB;Debug"/>
|
||||
<configuration Name="THUMB" Platform="ARM" arm_instruction_set="THUMB" arm_library_instruction_set="THUMB" c_preprocessor_definitions="__THUMB" hidden="Yes"/>
|
||||
<configuration Name="Debug" build_debug_information="Yes" c_preprocessor_definitions="DEBUG" gcc_optimization_level="None" hidden="Yes" link_include_startup_code="No"/>
|
||||
<configuration Name="THUMB Release" inherited_configurations="THUMB;Release"/>
|
||||
<configuration Name="Release" build_debug_information="No" c_additional_options="-g1" c_preprocessor_definitions="NDEBUG" gcc_optimization_level="Level 1" hidden="Yes" link_include_startup_code="No"/>
|
||||
<configuration Name="THUMB Debug" inherited_configurations="THUMB;Debug" />
|
||||
<configuration
|
||||
Name="THUMB"
|
||||
Platform="ARM"
|
||||
arm_instruction_set="THUMB"
|
||||
arm_library_instruction_set="THUMB"
|
||||
c_preprocessor_definitions="__THUMB"
|
||||
hidden="Yes" />
|
||||
<configuration
|
||||
Name="Debug"
|
||||
build_debug_information="Yes"
|
||||
c_preprocessor_definitions="DEBUG"
|
||||
gcc_optimization_level="None"
|
||||
hidden="Yes"
|
||||
link_include_startup_code="No" />
|
||||
<configuration
|
||||
Name="THUMB Release"
|
||||
inherited_configurations="THUMB;Release" />
|
||||
<configuration
|
||||
Name="Release"
|
||||
build_debug_information="No"
|
||||
c_additional_options="-g1"
|
||||
c_preprocessor_definitions="NDEBUG"
|
||||
gcc_optimization_level="Level 1"
|
||||
hidden="Yes"
|
||||
link_include_startup_code="No" />
|
||||
</solution>
|
||||
|
|
|
@ -1,19 +1,28 @@
|
|||
<!DOCTYPE CrossStudio_for_ARM_Session_File>
|
||||
<!DOCTYPE CrossStudio_Session_File>
|
||||
<session>
|
||||
<Bookmarks/>
|
||||
<Breakpoints/>
|
||||
<Breakpoints>
|
||||
<Exceptions set="MemManage;UsageFault_Coprocessor;UsageFault_CheckingError;UsageFault_StateError;BusFault;ExceptionEntryReturnFault;HardFault" />
|
||||
</Breakpoints>
|
||||
<ExecutionProfileWindow/>
|
||||
<FrameBufferWindow>
|
||||
<FrameBufferWindow addressText="" bufferWidth="-1" bufferHeight="-1" addressSpace="" />
|
||||
</FrameBufferWindow>
|
||||
<Memory1>
|
||||
<MemoryWindow autoEvaluate="0" addressText="0x08004004" numColumns="8" sizeText="4" dataSize="1" radix="16" name="openbtl_olimex_stm32p103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="0x08004004" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="4" viewMode="0" dataSize="1" radix="16" name="openbtl_olimex_stm32p103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="0x08004004" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="4" viewMode="0" dataSize="1" radix="16" name="openblt_olimex_stm32p103" addressSpace="" />
|
||||
</Memory1>
|
||||
<Memory2>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="openbtl_olimex_stm32p103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="openbtl_olimex_stm32p103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="openblt_olimex_stm32p103" addressSpace="" />
|
||||
</Memory2>
|
||||
<Memory3>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="openbtl_olimex_stm32p103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="openbtl_olimex_stm32p103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="openblt_olimex_stm32p103" addressSpace="" />
|
||||
</Memory3>
|
||||
<Memory4>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="openbtl_olimex_stm32p103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="openbtl_olimex_stm32p103" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="openblt_olimex_stm32p103" addressSpace="" />
|
||||
</Memory4>
|
||||
<Project>
|
||||
<ProjectSessionItem path="stm32f103_crossworks" name="unnamed" />
|
||||
|
@ -21,18 +30,24 @@
|
|||
<ProjectSessionItem path="stm32f103_crossworks;openblt_olimex_stm32p103;Source Files" name="unnamed" />
|
||||
<ProjectSessionItem path="stm32f103_crossworks;openblt_olimex_stm32p103;Source Files;Demo" name="unnamed" />
|
||||
<ProjectSessionItem path="stm32f103_crossworks;openblt_olimex_stm32p103;Source Files;Demo;Boot" name="unnamed" />
|
||||
<ProjectSessionItem path="stm32f103_crossworks;openblt_olimex_stm32p103;Source Files;Demo;Boot;lib" name="unnamed" />
|
||||
<ProjectSessionItem path="stm32f103_crossworks;openblt_olimex_stm32p103;Source Files;Demo;Boot;lib;cmsis" name="unnamed" />
|
||||
</Project>
|
||||
<Register1>
|
||||
<RegisterWindow openNodes="CPU" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="CPU" decimalNodes="" octalNodes="" asciiNodes="" name="openbtl_olimex_stm32p103" />
|
||||
<RegisterWindow openNodes="CPU" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="openbtl_olimex_stm32p103" />
|
||||
<RegisterWindow openNodes="CPU - Current Context" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="CPU - Current Context/r0;CPU - Current Context/r1;CPU - Current Context/r2;CPU - Current Context/r3;CPU - Current Context/r4;CPU - Current Context/r5;CPU - Current Context/r6;CPU - Current Context/r7;CPU - Current Context/r8;CPU - Current Context/r9;CPU - Current Context/r10;CPU - Current Context/r11;CPU - Current Context/r12;CPU - Current Context/sp(r13);CPU - Current Context/lr(r14);CPU - Current Context/pc(r15);CPU - Current Context/apsr;CPU/r0;CPU/r1;CPU/r2;CPU/r3;CPU/r4;CPU/r5;CPU/r6;CPU/r7;CPU/r8;CPU/r9;CPU/r10;CPU/r11;CPU/r12;CPU/sp(r13);CPU/lr(r14);CPU/pc(r15);CPU/xpsr;CPU/msp;CPU/psp;CPU/cfbp" name="openblt_olimex_stm32p103" />
|
||||
</Register1>
|
||||
<Register2>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="openbtl_olimex_stm32p103" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="openbtl_olimex_stm32p103" />
|
||||
<RegisterWindow openNodes="CPU - Current Context" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="CPU - Current Context/r0;CPU - Current Context/r1;CPU - Current Context/r2;CPU - Current Context/r3;CPU - Current Context/r4;CPU - Current Context/r5;CPU - Current Context/r6;CPU - Current Context/r7;CPU - Current Context/r8;CPU - Current Context/r9;CPU - Current Context/r10;CPU - Current Context/r11;CPU - Current Context/r12;CPU - Current Context/sp(r13);CPU - Current Context/lr(r14);CPU - Current Context/pc(r15);CPU - Current Context/apsr;CPU/r0;CPU/r1;CPU/r2;CPU/r3;CPU/r4;CPU/r5;CPU/r6;CPU/r7;CPU/r8;CPU/r9;CPU/r10;CPU/r11;CPU/r12;CPU/sp(r13);CPU/lr(r14);CPU/pc(r15);CPU/xpsr;CPU/msp;CPU/psp;CPU/cfbp" name="openblt_olimex_stm32p103" />
|
||||
</Register2>
|
||||
<Register3>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="openbtl_olimex_stm32p103" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="openbtl_olimex_stm32p103" />
|
||||
<RegisterWindow openNodes="CPU - Current Context" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="CPU - Current Context/r0;CPU - Current Context/r1;CPU - Current Context/r2;CPU - Current Context/r3;CPU - Current Context/r4;CPU - Current Context/r5;CPU - Current Context/r6;CPU - Current Context/r7;CPU - Current Context/r8;CPU - Current Context/r9;CPU - Current Context/r10;CPU - Current Context/r11;CPU - Current Context/r12;CPU - Current Context/sp(r13);CPU - Current Context/lr(r14);CPU - Current Context/pc(r15);CPU - Current Context/apsr;CPU/r0;CPU/r1;CPU/r2;CPU/r3;CPU/r4;CPU/r5;CPU/r6;CPU/r7;CPU/r8;CPU/r9;CPU/r10;CPU/r11;CPU/r12;CPU/sp(r13);CPU/lr(r14);CPU/pc(r15);CPU/xpsr;CPU/msp;CPU/psp;CPU/cfbp" name="openblt_olimex_stm32p103" />
|
||||
</Register3>
|
||||
<Register4>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="openbtl_olimex_stm32p103" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="openbtl_olimex_stm32p103" />
|
||||
<RegisterWindow openNodes="CPU - Current Context" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="CPU - Current Context/r0;CPU - Current Context/r1;CPU - Current Context/r2;CPU - Current Context/r3;CPU - Current Context/r4;CPU - Current Context/r5;CPU - Current Context/r6;CPU - Current Context/r7;CPU - Current Context/r8;CPU - Current Context/r9;CPU - Current Context/r10;CPU - Current Context/r11;CPU - Current Context/r12;CPU - Current Context/sp(r13);CPU - Current Context/lr(r14);CPU - Current Context/pc(r15);CPU - Current Context/apsr;CPU/r0;CPU/r1;CPU/r2;CPU/r3;CPU/r4;CPU/r5;CPU/r6;CPU/r7;CPU/r8;CPU/r9;CPU/r10;CPU/r11;CPU/r12;CPU/sp(r13);CPU/lr(r14);CPU/pc(r15);CPU/xpsr;CPU/msp;CPU/psp;CPU/cfbp" name="openblt_olimex_stm32p103" />
|
||||
</Register4>
|
||||
<TargetWindow programAction="" uploadFileType="" programLoadAddress="" programSize="" uploadFileName="" uploadMemoryInterface="" programFileName="" uploadStartAddress="" programFileType="" uploadSize="" programMemoryInterface="" />
|
||||
<TraceWindow>
|
||||
|
@ -40,9 +55,9 @@
|
|||
</TraceWindow>
|
||||
<Watch1>
|
||||
<Watches active="1" update="Never" >
|
||||
<Watchpoint linenumber="124" radix="-1" name="free_running_counter_now" expression="free_running_counter_now" filename="d:/usr/feaser/software/openblt/target/source/armcm3_stm32/timer.c" />
|
||||
<Watchpoint linenumber="152" radix="-1" name="free_running_counter_accumulative" expression="free_running_counter_accumulative" filename="d:/usr/feaser/software/openblt/target/source/armcm3_stm32/timer.c" />
|
||||
<Watchpoint linenumber="121" radix="-1" name="free_running_counter_last" expression="free_running_counter_last" filename="d:/usr/feaser/software/openblt/target/source/armcm3_stm32/timer.c" />
|
||||
<Watchpoint evalMode="0" linenumber="124" numelements="0" radix="-1" name="free_running_counter_now" list="" expression="free_running_counter_now" filename="d:/usr/feaser/software/openblt/target/source/armcm3_stm32/timer.c" />
|
||||
<Watchpoint evalMode="0" linenumber="152" numelements="0" radix="-1" name="free_running_counter_accumulative" list="" expression="free_running_counter_accumulative" filename="d:/usr/feaser/software/openblt/target/source/armcm3_stm32/timer.c" />
|
||||
<Watchpoint evalMode="0" linenumber="121" numelements="0" radix="-1" name="free_running_counter_last" list="" expression="free_running_counter_last" filename="d:/usr/feaser/software/openblt/target/source/armcm3_stm32/timer.c" />
|
||||
</Watches>
|
||||
</Watch1>
|
||||
<Watch2>
|
||||
|
@ -55,7 +70,7 @@
|
|||
<Watches active="0" update="Never" />
|
||||
</Watch4>
|
||||
<Files>
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="C:\Work\software\OpenBLT\Target\Demo\ARMCM3_STM32F1_Olimex_STM32P103_Crossworks\Boot\main.c" y="0" path="C:\Work\software\OpenBLT\Target\Demo\ARMCM3_STM32F1_Olimex_STM32P103_Crossworks\Boot\main.c" left="18" selected="1" name="unnamed" top="0" />
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="../main.c" y="51" path="../main.c" left="0" selected="1" name="unnamed" top="31" />
|
||||
</Files>
|
||||
<ARMCrossStudioWindow activeProject="openbtl_olimex_stm32p103" autoConnectTarget="SEGGER J-Link" debugSearchFileMap="" fileDialogInitialDirectory="C:\Work\software\OpenBLT\Target\Source\ARMCM3_STM32F1\Crossworks" fileDialogDefaultFilter="*.c" autoConnectCapabilities="266111" debugSearchPath="" buildConfiguration="THUMB Debug" />
|
||||
<ARMCrossStudioWindow activeProject="openblt_olimex_stm32p103" autoConnectTarget="SEGGER J-Link" debugSearchFileMap="" fileDialogInitialDirectory="C:/Work/software/OpenBLT/Target/Source/ARMCM3_STM32F1/Crossworks" fileDialogDefaultFilter="*.c" autoConnectCapabilities="3711" debugSearchPath="" buildConfiguration="THUMB Debug" />
|
||||
</session>
|
||||
|
|
|
@ -1,784 +0,0 @@
|
|||
/**************************************************************************//**
|
||||
* @file core_cm3.c
|
||||
* @brief CMSIS Cortex-M3 Core Peripheral Access Layer Source File
|
||||
* @version V1.30
|
||||
* @date 30. October 2009
|
||||
*
|
||||
* @note
|
||||
* Copyright (C) 2009 ARM Limited. All rights reserved.
|
||||
*
|
||||
* @par
|
||||
* ARM Limited (ARM) is supplying this software for use with Cortex-M
|
||||
* processor based microcontrollers. This file can be freely distributed
|
||||
* within development tools that are supporting such ARM based processors.
|
||||
*
|
||||
* @par
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||
* OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||
* ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||
* CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* define compiler specific symbols */
|
||||
#if defined ( __CC_ARM )
|
||||
#define __ASM __asm /*!< asm keyword for ARM Compiler */
|
||||
#define __INLINE __inline /*!< inline keyword for ARM Compiler */
|
||||
|
||||
#elif defined ( __ICCARM__ )
|
||||
#define __ASM __asm /*!< asm keyword for IAR Compiler */
|
||||
#define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */
|
||||
|
||||
#elif defined ( __GNUC__ )
|
||||
#define __ASM __asm /*!< asm keyword for GNU Compiler */
|
||||
#define __INLINE inline /*!< inline keyword for GNU Compiler */
|
||||
|
||||
#elif defined ( __TASKING__ )
|
||||
#define __ASM __asm /*!< asm keyword for TASKING Compiler */
|
||||
#define __INLINE inline /*!< inline keyword for TASKING Compiler */
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* ################### Compiler specific Intrinsics ########################### */
|
||||
|
||||
#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/
|
||||
/* ARM armcc specific functions */
|
||||
|
||||
/**
|
||||
* @brief Return the Process Stack Pointer
|
||||
*
|
||||
* @return ProcessStackPointer
|
||||
*
|
||||
* Return the actual process stack pointer
|
||||
*/
|
||||
__ASM uint32_t __get_PSP(void)
|
||||
{
|
||||
mrs r0, psp
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Process Stack Pointer
|
||||
*
|
||||
* @param topOfProcStack Process Stack Pointer
|
||||
*
|
||||
* Assign the value ProcessStackPointer to the MSP
|
||||
* (process stack pointer) Cortex processor register
|
||||
*/
|
||||
__ASM void __set_PSP(uint32_t topOfProcStack)
|
||||
{
|
||||
msr psp, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Main Stack Pointer
|
||||
*
|
||||
* @return Main Stack Pointer
|
||||
*
|
||||
* Return the current value of the MSP (main stack pointer)
|
||||
* Cortex processor register
|
||||
*/
|
||||
__ASM uint32_t __get_MSP(void)
|
||||
{
|
||||
mrs r0, msp
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Main Stack Pointer
|
||||
*
|
||||
* @param topOfMainStack Main Stack Pointer
|
||||
*
|
||||
* Assign the value mainStackPointer to the MSP
|
||||
* (main stack pointer) Cortex processor register
|
||||
*/
|
||||
__ASM void __set_MSP(uint32_t mainStackPointer)
|
||||
{
|
||||
msr msp, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in unsigned short value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in unsigned short value
|
||||
*/
|
||||
__ASM uint32_t __REV16(uint16_t value)
|
||||
{
|
||||
rev16 r0, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in signed short value with sign extension to integer
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in signed short value with sign extension to integer
|
||||
*/
|
||||
__ASM int32_t __REVSH(int16_t value)
|
||||
{
|
||||
revsh r0, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
|
||||
#if (__ARMCC_VERSION < 400000)
|
||||
|
||||
/**
|
||||
* @brief Remove the exclusive lock created by ldrex
|
||||
*
|
||||
* Removes the exclusive lock which is created by ldrex.
|
||||
*/
|
||||
__ASM void __CLREX(void)
|
||||
{
|
||||
clrex
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Base Priority value
|
||||
*
|
||||
* @return BasePriority
|
||||
*
|
||||
* Return the content of the base priority register
|
||||
*/
|
||||
__ASM uint32_t __get_BASEPRI(void)
|
||||
{
|
||||
mrs r0, basepri
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Base Priority value
|
||||
*
|
||||
* @param basePri BasePriority
|
||||
*
|
||||
* Set the base priority register
|
||||
*/
|
||||
__ASM void __set_BASEPRI(uint32_t basePri)
|
||||
{
|
||||
msr basepri, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Priority Mask value
|
||||
*
|
||||
* @return PriMask
|
||||
*
|
||||
* Return state of the priority mask bit from the priority mask register
|
||||
*/
|
||||
__ASM uint32_t __get_PRIMASK(void)
|
||||
{
|
||||
mrs r0, primask
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Priority Mask value
|
||||
*
|
||||
* @param priMask PriMask
|
||||
*
|
||||
* Set the priority mask bit in the priority mask register
|
||||
*/
|
||||
__ASM void __set_PRIMASK(uint32_t priMask)
|
||||
{
|
||||
msr primask, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Fault Mask value
|
||||
*
|
||||
* @return FaultMask
|
||||
*
|
||||
* Return the content of the fault mask register
|
||||
*/
|
||||
__ASM uint32_t __get_FAULTMASK(void)
|
||||
{
|
||||
mrs r0, faultmask
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Fault Mask value
|
||||
*
|
||||
* @param faultMask faultMask value
|
||||
*
|
||||
* Set the fault mask register
|
||||
*/
|
||||
__ASM void __set_FAULTMASK(uint32_t faultMask)
|
||||
{
|
||||
msr faultmask, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Control Register value
|
||||
*
|
||||
* @return Control value
|
||||
*
|
||||
* Return the content of the control register
|
||||
*/
|
||||
__ASM uint32_t __get_CONTROL(void)
|
||||
{
|
||||
mrs r0, control
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Control Register value
|
||||
*
|
||||
* @param control Control value
|
||||
*
|
||||
* Set the control register
|
||||
*/
|
||||
__ASM void __set_CONTROL(uint32_t control)
|
||||
{
|
||||
msr control, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
#endif /* __ARMCC_VERSION */
|
||||
|
||||
|
||||
|
||||
#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/
|
||||
/* IAR iccarm specific functions */
|
||||
#pragma diag_suppress=Pe940
|
||||
|
||||
/**
|
||||
* @brief Return the Process Stack Pointer
|
||||
*
|
||||
* @return ProcessStackPointer
|
||||
*
|
||||
* Return the actual process stack pointer
|
||||
*/
|
||||
uint32_t __get_PSP(void)
|
||||
{
|
||||
__ASM("mrs r0, psp");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Process Stack Pointer
|
||||
*
|
||||
* @param topOfProcStack Process Stack Pointer
|
||||
*
|
||||
* Assign the value ProcessStackPointer to the MSP
|
||||
* (process stack pointer) Cortex processor register
|
||||
*/
|
||||
void __set_PSP(uint32_t topOfProcStack)
|
||||
{
|
||||
__ASM("msr psp, r0");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Main Stack Pointer
|
||||
*
|
||||
* @return Main Stack Pointer
|
||||
*
|
||||
* Return the current value of the MSP (main stack pointer)
|
||||
* Cortex processor register
|
||||
*/
|
||||
uint32_t __get_MSP(void)
|
||||
{
|
||||
__ASM("mrs r0, msp");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Main Stack Pointer
|
||||
*
|
||||
* @param topOfMainStack Main Stack Pointer
|
||||
*
|
||||
* Assign the value mainStackPointer to the MSP
|
||||
* (main stack pointer) Cortex processor register
|
||||
*/
|
||||
void __set_MSP(uint32_t topOfMainStack)
|
||||
{
|
||||
__ASM("msr msp, r0");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in unsigned short value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in unsigned short value
|
||||
*/
|
||||
uint32_t __REV16(uint16_t value)
|
||||
{
|
||||
__ASM("rev16 r0, r0");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse bit order of value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse bit order of value
|
||||
*/
|
||||
uint32_t __RBIT(uint32_t value)
|
||||
{
|
||||
__ASM("rbit r0, r0");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (8 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 8 bit values)
|
||||
*/
|
||||
uint8_t __LDREXB(uint8_t *addr)
|
||||
{
|
||||
__ASM("ldrexb r0, [r0]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (16 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 16 bit values
|
||||
*/
|
||||
uint16_t __LDREXH(uint16_t *addr)
|
||||
{
|
||||
__ASM("ldrexh r0, [r0]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (32 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 32 bit values
|
||||
*/
|
||||
uint32_t __LDREXW(uint32_t *addr)
|
||||
{
|
||||
__ASM("ldrex r0, [r0]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (8 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 8 bit values
|
||||
*/
|
||||
uint32_t __STREXB(uint8_t value, uint8_t *addr)
|
||||
{
|
||||
__ASM("strexb r0, r0, [r1]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (16 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 16 bit values
|
||||
*/
|
||||
uint32_t __STREXH(uint16_t value, uint16_t *addr)
|
||||
{
|
||||
__ASM("strexh r0, r0, [r1]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (32 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 32 bit values
|
||||
*/
|
||||
uint32_t __STREXW(uint32_t value, uint32_t *addr)
|
||||
{
|
||||
__ASM("strex r0, r0, [r1]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
#pragma diag_default=Pe940
|
||||
|
||||
|
||||
#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/
|
||||
/* GNU gcc specific functions */
|
||||
|
||||
/**
|
||||
* @brief Return the Process Stack Pointer
|
||||
*
|
||||
* @return ProcessStackPointer
|
||||
*
|
||||
* Return the actual process stack pointer
|
||||
*/
|
||||
uint32_t __get_PSP(void) __attribute__( ( naked ) );
|
||||
uint32_t __get_PSP(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, psp\n\t"
|
||||
"MOV r0, %0 \n\t"
|
||||
"BX lr \n\t" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Process Stack Pointer
|
||||
*
|
||||
* @param topOfProcStack Process Stack Pointer
|
||||
*
|
||||
* Assign the value ProcessStackPointer to the MSP
|
||||
* (process stack pointer) Cortex processor register
|
||||
*/
|
||||
void __set_PSP(uint32_t topOfProcStack) __attribute__( ( naked ) );
|
||||
void __set_PSP(uint32_t topOfProcStack)
|
||||
{
|
||||
__ASM volatile ("MSR psp, %0\n\t"
|
||||
"BX lr \n\t" : : "r" (topOfProcStack) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Main Stack Pointer
|
||||
*
|
||||
* @return Main Stack Pointer
|
||||
*
|
||||
* Return the current value of the MSP (main stack pointer)
|
||||
* Cortex processor register
|
||||
*/
|
||||
uint32_t __get_MSP(void) __attribute__( ( naked ) );
|
||||
uint32_t __get_MSP(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, msp\n\t"
|
||||
"MOV r0, %0 \n\t"
|
||||
"BX lr \n\t" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Main Stack Pointer
|
||||
*
|
||||
* @param topOfMainStack Main Stack Pointer
|
||||
*
|
||||
* Assign the value mainStackPointer to the MSP
|
||||
* (main stack pointer) Cortex processor register
|
||||
*/
|
||||
void __set_MSP(uint32_t topOfMainStack) __attribute__( ( naked ) );
|
||||
void __set_MSP(uint32_t topOfMainStack)
|
||||
{
|
||||
__ASM volatile ("MSR msp, %0\n\t"
|
||||
"BX lr \n\t" : : "r" (topOfMainStack) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Base Priority value
|
||||
*
|
||||
* @return BasePriority
|
||||
*
|
||||
* Return the content of the base priority register
|
||||
*/
|
||||
uint32_t __get_BASEPRI(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, basepri_max" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Base Priority value
|
||||
*
|
||||
* @param basePri BasePriority
|
||||
*
|
||||
* Set the base priority register
|
||||
*/
|
||||
void __set_BASEPRI(uint32_t value)
|
||||
{
|
||||
__ASM volatile ("MSR basepri, %0" : : "r" (value) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Priority Mask value
|
||||
*
|
||||
* @return PriMask
|
||||
*
|
||||
* Return state of the priority mask bit from the priority mask register
|
||||
*/
|
||||
uint32_t __get_PRIMASK(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, primask" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Priority Mask value
|
||||
*
|
||||
* @param priMask PriMask
|
||||
*
|
||||
* Set the priority mask bit in the priority mask register
|
||||
*/
|
||||
void __set_PRIMASK(uint32_t priMask)
|
||||
{
|
||||
__ASM volatile ("MSR primask, %0" : : "r" (priMask) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Fault Mask value
|
||||
*
|
||||
* @return FaultMask
|
||||
*
|
||||
* Return the content of the fault mask register
|
||||
*/
|
||||
uint32_t __get_FAULTMASK(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, faultmask" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Fault Mask value
|
||||
*
|
||||
* @param faultMask faultMask value
|
||||
*
|
||||
* Set the fault mask register
|
||||
*/
|
||||
void __set_FAULTMASK(uint32_t faultMask)
|
||||
{
|
||||
__ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Control Register value
|
||||
*
|
||||
* @return Control value
|
||||
*
|
||||
* Return the content of the control register
|
||||
*/
|
||||
uint32_t __get_CONTROL(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, control" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Control Register value
|
||||
*
|
||||
* @param control Control value
|
||||
*
|
||||
* Set the control register
|
||||
*/
|
||||
void __set_CONTROL(uint32_t control)
|
||||
{
|
||||
__ASM volatile ("MSR control, %0" : : "r" (control) );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in integer value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in integer value
|
||||
*/
|
||||
uint32_t __REV(uint32_t value)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in unsigned short value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in unsigned short value
|
||||
*/
|
||||
uint32_t __REV16(uint16_t value)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in signed short value with sign extension to integer
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in signed short value with sign extension to integer
|
||||
*/
|
||||
int32_t __REVSH(int16_t value)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse bit order of value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse bit order of value
|
||||
*/
|
||||
uint32_t __RBIT(uint32_t value)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (8 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 8 bit value
|
||||
*/
|
||||
uint8_t __LDREXB(uint8_t *addr)
|
||||
{
|
||||
uint8_t result=0;
|
||||
|
||||
__ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (16 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 16 bit values
|
||||
*/
|
||||
uint16_t __LDREXH(uint16_t *addr)
|
||||
{
|
||||
uint16_t result=0;
|
||||
|
||||
__ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (32 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 32 bit values
|
||||
*/
|
||||
uint32_t __LDREXW(uint32_t *addr)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (8 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 8 bit values
|
||||
*/
|
||||
uint32_t __STREXB(uint8_t value, uint8_t *addr)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (16 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 16 bit values
|
||||
*/
|
||||
uint32_t __STREXH(uint16_t value, uint16_t *addr)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("strexh %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (32 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 32 bit values
|
||||
*/
|
||||
uint32_t __STREXW(uint32_t value, uint32_t *addr)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("strex %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/
|
||||
/* TASKING carm specific functions */
|
||||
|
||||
/*
|
||||
* The CMSIS functions have been implemented as intrinsics in the compiler.
|
||||
* Please use "carm -?i" to get an up to date list of all instrinsics,
|
||||
* Including the CMSIS ones.
|
||||
*/
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,616 @@
|
|||
/**************************************************************************//**
|
||||
* @file core_cmFunc.h
|
||||
* @brief CMSIS Cortex-M Core Function Access Header File
|
||||
* @version V3.01
|
||||
* @date 06. March 2012
|
||||
*
|
||||
* @note
|
||||
* Copyright (C) 2009-2012 ARM Limited. All rights reserved.
|
||||
*
|
||||
* @par
|
||||
* ARM Limited (ARM) is supplying this software for use with Cortex-M
|
||||
* processor based microcontrollers. This file can be freely distributed
|
||||
* within development tools that are supporting such ARM based processors.
|
||||
*
|
||||
* @par
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||
* OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||
* ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||
* CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __CORE_CMFUNC_H
|
||||
#define __CORE_CMFUNC_H
|
||||
|
||||
|
||||
/* ########################### Core Function Access ########################### */
|
||||
/** \ingroup CMSIS_Core_FunctionInterface
|
||||
\defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
|
||||
@{
|
||||
*/
|
||||
|
||||
#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/
|
||||
/* ARM armcc specific functions */
|
||||
|
||||
#if (__ARMCC_VERSION < 400677)
|
||||
#error "Please use ARM Compiler Toolchain V4.0.677 or later!"
|
||||
#endif
|
||||
|
||||
/* intrinsic void __enable_irq(); */
|
||||
/* intrinsic void __disable_irq(); */
|
||||
|
||||
/** \brief Get Control Register
|
||||
|
||||
This function returns the content of the Control Register.
|
||||
|
||||
\return Control Register value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_CONTROL(void)
|
||||
{
|
||||
register uint32_t __regControl __ASM("control");
|
||||
return(__regControl);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Control Register
|
||||
|
||||
This function writes the given value to the Control Register.
|
||||
|
||||
\param [in] control Control Register value to set
|
||||
*/
|
||||
__STATIC_INLINE void __set_CONTROL(uint32_t control)
|
||||
{
|
||||
register uint32_t __regControl __ASM("control");
|
||||
__regControl = control;
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get IPSR Register
|
||||
|
||||
This function returns the content of the IPSR Register.
|
||||
|
||||
\return IPSR Register value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_IPSR(void)
|
||||
{
|
||||
register uint32_t __regIPSR __ASM("ipsr");
|
||||
return(__regIPSR);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get APSR Register
|
||||
|
||||
This function returns the content of the APSR Register.
|
||||
|
||||
\return APSR Register value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_APSR(void)
|
||||
{
|
||||
register uint32_t __regAPSR __ASM("apsr");
|
||||
return(__regAPSR);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get xPSR Register
|
||||
|
||||
This function returns the content of the xPSR Register.
|
||||
|
||||
\return xPSR Register value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_xPSR(void)
|
||||
{
|
||||
register uint32_t __regXPSR __ASM("xpsr");
|
||||
return(__regXPSR);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Process Stack Pointer
|
||||
|
||||
This function returns the current value of the Process Stack Pointer (PSP).
|
||||
|
||||
\return PSP Register value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_PSP(void)
|
||||
{
|
||||
register uint32_t __regProcessStackPointer __ASM("psp");
|
||||
return(__regProcessStackPointer);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Process Stack Pointer
|
||||
|
||||
This function assigns the given value to the Process Stack Pointer (PSP).
|
||||
|
||||
\param [in] topOfProcStack Process Stack Pointer value to set
|
||||
*/
|
||||
__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
|
||||
{
|
||||
register uint32_t __regProcessStackPointer __ASM("psp");
|
||||
__regProcessStackPointer = topOfProcStack;
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Main Stack Pointer
|
||||
|
||||
This function returns the current value of the Main Stack Pointer (MSP).
|
||||
|
||||
\return MSP Register value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_MSP(void)
|
||||
{
|
||||
register uint32_t __regMainStackPointer __ASM("msp");
|
||||
return(__regMainStackPointer);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Main Stack Pointer
|
||||
|
||||
This function assigns the given value to the Main Stack Pointer (MSP).
|
||||
|
||||
\param [in] topOfMainStack Main Stack Pointer value to set
|
||||
*/
|
||||
__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
|
||||
{
|
||||
register uint32_t __regMainStackPointer __ASM("msp");
|
||||
__regMainStackPointer = topOfMainStack;
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Priority Mask
|
||||
|
||||
This function returns the current state of the priority mask bit from the Priority Mask Register.
|
||||
|
||||
\return Priority Mask value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_PRIMASK(void)
|
||||
{
|
||||
register uint32_t __regPriMask __ASM("primask");
|
||||
return(__regPriMask);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Priority Mask
|
||||
|
||||
This function assigns the given value to the Priority Mask Register.
|
||||
|
||||
\param [in] priMask Priority Mask
|
||||
*/
|
||||
__STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
|
||||
{
|
||||
register uint32_t __regPriMask __ASM("primask");
|
||||
__regPriMask = (priMask);
|
||||
}
|
||||
|
||||
|
||||
#if (__CORTEX_M >= 0x03)
|
||||
|
||||
/** \brief Enable FIQ
|
||||
|
||||
This function enables FIQ interrupts by clearing the F-bit in the CPSR.
|
||||
Can only be executed in Privileged modes.
|
||||
*/
|
||||
#define __enable_fault_irq __enable_fiq
|
||||
|
||||
|
||||
/** \brief Disable FIQ
|
||||
|
||||
This function disables FIQ interrupts by setting the F-bit in the CPSR.
|
||||
Can only be executed in Privileged modes.
|
||||
*/
|
||||
#define __disable_fault_irq __disable_fiq
|
||||
|
||||
|
||||
/** \brief Get Base Priority
|
||||
|
||||
This function returns the current value of the Base Priority register.
|
||||
|
||||
\return Base Priority register value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_BASEPRI(void)
|
||||
{
|
||||
register uint32_t __regBasePri __ASM("basepri");
|
||||
return(__regBasePri);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Base Priority
|
||||
|
||||
This function assigns the given value to the Base Priority register.
|
||||
|
||||
\param [in] basePri Base Priority value to set
|
||||
*/
|
||||
__STATIC_INLINE void __set_BASEPRI(uint32_t basePri)
|
||||
{
|
||||
register uint32_t __regBasePri __ASM("basepri");
|
||||
__regBasePri = (basePri & 0xff);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Fault Mask
|
||||
|
||||
This function returns the current value of the Fault Mask register.
|
||||
|
||||
\return Fault Mask register value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_FAULTMASK(void)
|
||||
{
|
||||
register uint32_t __regFaultMask __ASM("faultmask");
|
||||
return(__regFaultMask);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Fault Mask
|
||||
|
||||
This function assigns the given value to the Fault Mask register.
|
||||
|
||||
\param [in] faultMask Fault Mask value to set
|
||||
*/
|
||||
__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
|
||||
{
|
||||
register uint32_t __regFaultMask __ASM("faultmask");
|
||||
__regFaultMask = (faultMask & (uint32_t)1);
|
||||
}
|
||||
|
||||
#endif /* (__CORTEX_M >= 0x03) */
|
||||
|
||||
|
||||
#if (__CORTEX_M == 0x04)
|
||||
|
||||
/** \brief Get FPSCR
|
||||
|
||||
This function returns the current value of the Floating Point Status/Control register.
|
||||
|
||||
\return Floating Point Status/Control register value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_FPSCR(void)
|
||||
{
|
||||
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
|
||||
register uint32_t __regfpscr __ASM("fpscr");
|
||||
return(__regfpscr);
|
||||
#else
|
||||
return(0);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set FPSCR
|
||||
|
||||
This function assigns the given value to the Floating Point Status/Control register.
|
||||
|
||||
\param [in] fpscr Floating Point Status/Control value to set
|
||||
*/
|
||||
__STATIC_INLINE void __set_FPSCR(uint32_t fpscr)
|
||||
{
|
||||
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
|
||||
register uint32_t __regfpscr __ASM("fpscr");
|
||||
__regfpscr = (fpscr);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* (__CORTEX_M == 0x04) */
|
||||
|
||||
|
||||
#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/
|
||||
/* IAR iccarm specific functions */
|
||||
|
||||
#include <cmsis_iar.h>
|
||||
|
||||
|
||||
#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/
|
||||
/* TI CCS specific functions */
|
||||
|
||||
#include <cmsis_ccs.h>
|
||||
|
||||
|
||||
#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/
|
||||
/* GNU gcc specific functions */
|
||||
|
||||
/** \brief Enable IRQ Interrupts
|
||||
|
||||
This function enables IRQ interrupts by clearing the I-bit in the CPSR.
|
||||
Can only be executed in Privileged modes.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void)
|
||||
{
|
||||
__ASM volatile ("cpsie i");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Disable IRQ Interrupts
|
||||
|
||||
This function disables IRQ interrupts by setting the I-bit in the CPSR.
|
||||
Can only be executed in Privileged modes.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void)
|
||||
{
|
||||
__ASM volatile ("cpsid i");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Control Register
|
||||
|
||||
This function returns the content of the Control Register.
|
||||
|
||||
\return Control Register value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_CONTROL(void)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, control" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Control Register
|
||||
|
||||
This function writes the given value to the Control Register.
|
||||
|
||||
\param [in] control Control Register value to set
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_CONTROL(uint32_t control)
|
||||
{
|
||||
__ASM volatile ("MSR control, %0" : : "r" (control) );
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get IPSR Register
|
||||
|
||||
This function returns the content of the IPSR Register.
|
||||
|
||||
\return IPSR Register value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_IPSR(void)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, ipsr" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get APSR Register
|
||||
|
||||
This function returns the content of the APSR Register.
|
||||
|
||||
\return APSR Register value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_APSR(void)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, apsr" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get xPSR Register
|
||||
|
||||
This function returns the content of the xPSR Register.
|
||||
|
||||
\return xPSR Register value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_xPSR(void)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, xpsr" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Process Stack Pointer
|
||||
|
||||
This function returns the current value of the Process Stack Pointer (PSP).
|
||||
|
||||
\return PSP Register value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PSP(void)
|
||||
{
|
||||
register uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, psp\n" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Process Stack Pointer
|
||||
|
||||
This function assigns the given value to the Process Stack Pointer (PSP).
|
||||
|
||||
\param [in] topOfProcStack Process Stack Pointer value to set
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
|
||||
{
|
||||
__ASM volatile ("MSR psp, %0\n" : : "r" (topOfProcStack) );
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Main Stack Pointer
|
||||
|
||||
This function returns the current value of the Main Stack Pointer (MSP).
|
||||
|
||||
\return MSP Register value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_MSP(void)
|
||||
{
|
||||
register uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, msp\n" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Main Stack Pointer
|
||||
|
||||
This function assigns the given value to the Main Stack Pointer (MSP).
|
||||
|
||||
\param [in] topOfMainStack Main Stack Pointer value to set
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
|
||||
{
|
||||
__ASM volatile ("MSR msp, %0\n" : : "r" (topOfMainStack) );
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Priority Mask
|
||||
|
||||
This function returns the current state of the priority mask bit from the Priority Mask Register.
|
||||
|
||||
\return Priority Mask value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PRIMASK(void)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, primask" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Priority Mask
|
||||
|
||||
This function assigns the given value to the Priority Mask Register.
|
||||
|
||||
\param [in] priMask Priority Mask
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
|
||||
{
|
||||
__ASM volatile ("MSR primask, %0" : : "r" (priMask) );
|
||||
}
|
||||
|
||||
|
||||
#if (__CORTEX_M >= 0x03)
|
||||
|
||||
/** \brief Enable FIQ
|
||||
|
||||
This function enables FIQ interrupts by clearing the F-bit in the CPSR.
|
||||
Can only be executed in Privileged modes.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_fault_irq(void)
|
||||
{
|
||||
__ASM volatile ("cpsie f");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Disable FIQ
|
||||
|
||||
This function disables FIQ interrupts by setting the F-bit in the CPSR.
|
||||
Can only be executed in Privileged modes.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_fault_irq(void)
|
||||
{
|
||||
__ASM volatile ("cpsid f");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Base Priority
|
||||
|
||||
This function returns the current value of the Base Priority register.
|
||||
|
||||
\return Base Priority register value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_BASEPRI(void)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, basepri_max" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Base Priority
|
||||
|
||||
This function assigns the given value to the Base Priority register.
|
||||
|
||||
\param [in] basePri Base Priority value to set
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_BASEPRI(uint32_t value)
|
||||
{
|
||||
__ASM volatile ("MSR basepri, %0" : : "r" (value) );
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Fault Mask
|
||||
|
||||
This function returns the current value of the Fault Mask register.
|
||||
|
||||
\return Fault Mask register value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FAULTMASK(void)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, faultmask" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Fault Mask
|
||||
|
||||
This function assigns the given value to the Fault Mask register.
|
||||
|
||||
\param [in] faultMask Fault Mask value to set
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
|
||||
{
|
||||
__ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) );
|
||||
}
|
||||
|
||||
#endif /* (__CORTEX_M >= 0x03) */
|
||||
|
||||
|
||||
#if (__CORTEX_M == 0x04)
|
||||
|
||||
/** \brief Get FPSCR
|
||||
|
||||
This function returns the current value of the Floating Point Status/Control register.
|
||||
|
||||
\return Floating Point Status/Control register value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FPSCR(void)
|
||||
{
|
||||
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("VMRS %0, fpscr" : "=r" (result) );
|
||||
return(result);
|
||||
#else
|
||||
return(0);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set FPSCR
|
||||
|
||||
This function assigns the given value to the Floating Point Status/Control register.
|
||||
|
||||
\param [in] fpscr Floating Point Status/Control value to set
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FPSCR(uint32_t fpscr)
|
||||
{
|
||||
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
|
||||
__ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) );
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* (__CORTEX_M == 0x04) */
|
||||
|
||||
|
||||
#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/
|
||||
/* TASKING carm specific functions */
|
||||
|
||||
/*
|
||||
* The CMSIS functions have been implemented as intrinsics in the compiler.
|
||||
* Please use "carm -?i" to get an up to date list of all instrinsics,
|
||||
* Including the CMSIS ones.
|
||||
*/
|
||||
|
||||
#endif
|
||||
|
||||
/*@} end of CMSIS_Core_RegAccFunctions */
|
||||
|
||||
|
||||
#endif /* __CORE_CMFUNC_H */
|
|
@ -0,0 +1,618 @@
|
|||
/**************************************************************************//**
|
||||
* @file core_cmInstr.h
|
||||
* @brief CMSIS Cortex-M Core Instruction Access Header File
|
||||
* @version V3.01
|
||||
* @date 06. March 2012
|
||||
*
|
||||
* @note
|
||||
* Copyright (C) 2009-2012 ARM Limited. All rights reserved.
|
||||
*
|
||||
* @par
|
||||
* ARM Limited (ARM) is supplying this software for use with Cortex-M
|
||||
* processor based microcontrollers. This file can be freely distributed
|
||||
* within development tools that are supporting such ARM based processors.
|
||||
*
|
||||
* @par
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||
* OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||
* ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||
* CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __CORE_CMINSTR_H
|
||||
#define __CORE_CMINSTR_H
|
||||
|
||||
|
||||
/* ########################## Core Instruction Access ######################### */
|
||||
/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
|
||||
Access to dedicated instructions
|
||||
@{
|
||||
*/
|
||||
|
||||
#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/
|
||||
/* ARM armcc specific functions */
|
||||
|
||||
#if (__ARMCC_VERSION < 400677)
|
||||
#error "Please use ARM Compiler Toolchain V4.0.677 or later!"
|
||||
#endif
|
||||
|
||||
|
||||
/** \brief No Operation
|
||||
|
||||
No Operation does nothing. This instruction can be used for code alignment purposes.
|
||||
*/
|
||||
#define __NOP __nop
|
||||
|
||||
|
||||
/** \brief Wait For Interrupt
|
||||
|
||||
Wait For Interrupt is a hint instruction that suspends execution
|
||||
until one of a number of events occurs.
|
||||
*/
|
||||
#define __WFI __wfi
|
||||
|
||||
|
||||
/** \brief Wait For Event
|
||||
|
||||
Wait For Event is a hint instruction that permits the processor to enter
|
||||
a low-power state until one of a number of events occurs.
|
||||
*/
|
||||
#define __WFE __wfe
|
||||
|
||||
|
||||
/** \brief Send Event
|
||||
|
||||
Send Event is a hint instruction. It causes an event to be signaled to the CPU.
|
||||
*/
|
||||
#define __SEV __sev
|
||||
|
||||
|
||||
/** \brief Instruction Synchronization Barrier
|
||||
|
||||
Instruction Synchronization Barrier flushes the pipeline in the processor,
|
||||
so that all instructions following the ISB are fetched from cache or
|
||||
memory, after the instruction has been completed.
|
||||
*/
|
||||
#define __ISB() __isb(0xF)
|
||||
|
||||
|
||||
/** \brief Data Synchronization Barrier
|
||||
|
||||
This function acts as a special kind of Data Memory Barrier.
|
||||
It completes when all explicit memory accesses before this instruction complete.
|
||||
*/
|
||||
#define __DSB() __dsb(0xF)
|
||||
|
||||
|
||||
/** \brief Data Memory Barrier
|
||||
|
||||
This function ensures the apparent order of the explicit memory operations before
|
||||
and after the instruction, without ensuring their completion.
|
||||
*/
|
||||
#define __DMB() __dmb(0xF)
|
||||
|
||||
|
||||
/** \brief Reverse byte order (32 bit)
|
||||
|
||||
This function reverses the byte order in integer value.
|
||||
|
||||
\param [in] value Value to reverse
|
||||
\return Reversed value
|
||||
*/
|
||||
#define __REV __rev
|
||||
|
||||
|
||||
/** \brief Reverse byte order (16 bit)
|
||||
|
||||
This function reverses the byte order in two unsigned short values.
|
||||
|
||||
\param [in] value Value to reverse
|
||||
\return Reversed value
|
||||
*/
|
||||
__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)
|
||||
{
|
||||
rev16 r0, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
|
||||
/** \brief Reverse byte order in signed short value
|
||||
|
||||
This function reverses the byte order in a signed short value with sign extension to integer.
|
||||
|
||||
\param [in] value Value to reverse
|
||||
\return Reversed value
|
||||
*/
|
||||
__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(int32_t value)
|
||||
{
|
||||
revsh r0, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
|
||||
/** \brief Rotate Right in unsigned value (32 bit)
|
||||
|
||||
This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
|
||||
|
||||
\param [in] value Value to rotate
|
||||
\param [in] value Number of Bits to rotate
|
||||
\return Rotated value
|
||||
*/
|
||||
#define __ROR __ror
|
||||
|
||||
|
||||
#if (__CORTEX_M >= 0x03)
|
||||
|
||||
/** \brief Reverse bit order of value
|
||||
|
||||
This function reverses the bit order of the given value.
|
||||
|
||||
\param [in] value Value to reverse
|
||||
\return Reversed value
|
||||
*/
|
||||
#define __RBIT __rbit
|
||||
|
||||
|
||||
/** \brief LDR Exclusive (8 bit)
|
||||
|
||||
This function performs a exclusive LDR command for 8 bit value.
|
||||
|
||||
\param [in] ptr Pointer to data
|
||||
\return value of type uint8_t at (*ptr)
|
||||
*/
|
||||
#define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr))
|
||||
|
||||
|
||||
/** \brief LDR Exclusive (16 bit)
|
||||
|
||||
This function performs a exclusive LDR command for 16 bit values.
|
||||
|
||||
\param [in] ptr Pointer to data
|
||||
\return value of type uint16_t at (*ptr)
|
||||
*/
|
||||
#define __LDREXH(ptr) ((uint16_t) __ldrex(ptr))
|
||||
|
||||
|
||||
/** \brief LDR Exclusive (32 bit)
|
||||
|
||||
This function performs a exclusive LDR command for 32 bit values.
|
||||
|
||||
\param [in] ptr Pointer to data
|
||||
\return value of type uint32_t at (*ptr)
|
||||
*/
|
||||
#define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr))
|
||||
|
||||
|
||||
/** \brief STR Exclusive (8 bit)
|
||||
|
||||
This function performs a exclusive STR command for 8 bit values.
|
||||
|
||||
\param [in] value Value to store
|
||||
\param [in] ptr Pointer to location
|
||||
\return 0 Function succeeded
|
||||
\return 1 Function failed
|
||||
*/
|
||||
#define __STREXB(value, ptr) __strex(value, ptr)
|
||||
|
||||
|
||||
/** \brief STR Exclusive (16 bit)
|
||||
|
||||
This function performs a exclusive STR command for 16 bit values.
|
||||
|
||||
\param [in] value Value to store
|
||||
\param [in] ptr Pointer to location
|
||||
\return 0 Function succeeded
|
||||
\return 1 Function failed
|
||||
*/
|
||||
#define __STREXH(value, ptr) __strex(value, ptr)
|
||||
|
||||
|
||||
/** \brief STR Exclusive (32 bit)
|
||||
|
||||
This function performs a exclusive STR command for 32 bit values.
|
||||
|
||||
\param [in] value Value to store
|
||||
\param [in] ptr Pointer to location
|
||||
\return 0 Function succeeded
|
||||
\return 1 Function failed
|
||||
*/
|
||||
#define __STREXW(value, ptr) __strex(value, ptr)
|
||||
|
||||
|
||||
/** \brief Remove the exclusive lock
|
||||
|
||||
This function removes the exclusive lock which is created by LDREX.
|
||||
|
||||
*/
|
||||
#define __CLREX __clrex
|
||||
|
||||
|
||||
/** \brief Signed Saturate
|
||||
|
||||
This function saturates a signed value.
|
||||
|
||||
\param [in] value Value to be saturated
|
||||
\param [in] sat Bit position to saturate to (1..32)
|
||||
\return Saturated value
|
||||
*/
|
||||
#define __SSAT __ssat
|
||||
|
||||
|
||||
/** \brief Unsigned Saturate
|
||||
|
||||
This function saturates an unsigned value.
|
||||
|
||||
\param [in] value Value to be saturated
|
||||
\param [in] sat Bit position to saturate to (0..31)
|
||||
\return Saturated value
|
||||
*/
|
||||
#define __USAT __usat
|
||||
|
||||
|
||||
/** \brief Count leading zeros
|
||||
|
||||
This function counts the number of leading zeros of a data value.
|
||||
|
||||
\param [in] value Value to count the leading zeros
|
||||
\return number of leading zeros in value
|
||||
*/
|
||||
#define __CLZ __clz
|
||||
|
||||
#endif /* (__CORTEX_M >= 0x03) */
|
||||
|
||||
|
||||
|
||||
#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/
|
||||
/* IAR iccarm specific functions */
|
||||
|
||||
#include <cmsis_iar.h>
|
||||
|
||||
|
||||
#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/
|
||||
/* TI CCS specific functions */
|
||||
|
||||
#include <cmsis_ccs.h>
|
||||
|
||||
|
||||
#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/
|
||||
/* GNU gcc specific functions */
|
||||
|
||||
/** \brief No Operation
|
||||
|
||||
No Operation does nothing. This instruction can be used for code alignment purposes.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __NOP(void)
|
||||
{
|
||||
__ASM volatile ("nop");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Wait For Interrupt
|
||||
|
||||
Wait For Interrupt is a hint instruction that suspends execution
|
||||
until one of a number of events occurs.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFI(void)
|
||||
{
|
||||
__ASM volatile ("wfi");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Wait For Event
|
||||
|
||||
Wait For Event is a hint instruction that permits the processor to enter
|
||||
a low-power state until one of a number of events occurs.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFE(void)
|
||||
{
|
||||
__ASM volatile ("wfe");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Send Event
|
||||
|
||||
Send Event is a hint instruction. It causes an event to be signaled to the CPU.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __SEV(void)
|
||||
{
|
||||
__ASM volatile ("sev");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Instruction Synchronization Barrier
|
||||
|
||||
Instruction Synchronization Barrier flushes the pipeline in the processor,
|
||||
so that all instructions following the ISB are fetched from cache or
|
||||
memory, after the instruction has been completed.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __ISB(void)
|
||||
{
|
||||
__ASM volatile ("isb");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Data Synchronization Barrier
|
||||
|
||||
This function acts as a special kind of Data Memory Barrier.
|
||||
It completes when all explicit memory accesses before this instruction complete.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __DSB(void)
|
||||
{
|
||||
__ASM volatile ("dsb");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Data Memory Barrier
|
||||
|
||||
This function ensures the apparent order of the explicit memory operations before
|
||||
and after the instruction, without ensuring their completion.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __DMB(void)
|
||||
{
|
||||
__ASM volatile ("dmb");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Reverse byte order (32 bit)
|
||||
|
||||
This function reverses the byte order in integer value.
|
||||
|
||||
\param [in] value Value to reverse
|
||||
\return Reversed value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV(uint32_t value)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Reverse byte order (16 bit)
|
||||
|
||||
This function reverses the byte order in two unsigned short values.
|
||||
|
||||
\param [in] value Value to reverse
|
||||
\return Reversed value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV16(uint32_t value)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Reverse byte order in signed short value
|
||||
|
||||
This function reverses the byte order in a signed short value with sign extension to integer.
|
||||
|
||||
\param [in] value Value to reverse
|
||||
\return Reversed value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE int32_t __REVSH(int32_t value)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Rotate Right in unsigned value (32 bit)
|
||||
|
||||
This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
|
||||
|
||||
\param [in] value Value to rotate
|
||||
\param [in] value Number of Bits to rotate
|
||||
\return Rotated value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
|
||||
{
|
||||
|
||||
__ASM volatile ("ror %0, %0, %1" : "+r" (op1) : "r" (op2) );
|
||||
return(op1);
|
||||
}
|
||||
|
||||
|
||||
#if (__CORTEX_M >= 0x03)
|
||||
|
||||
/** \brief Reverse bit order of value
|
||||
|
||||
This function reverses the bit order of the given value.
|
||||
|
||||
\param [in] value Value to reverse
|
||||
\return Reversed value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __RBIT(uint32_t value)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief LDR Exclusive (8 bit)
|
||||
|
||||
This function performs a exclusive LDR command for 8 bit value.
|
||||
|
||||
\param [in] ptr Pointer to data
|
||||
\return value of type uint8_t at (*ptr)
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __LDREXB(volatile uint8_t *addr)
|
||||
{
|
||||
uint8_t result;
|
||||
|
||||
__ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief LDR Exclusive (16 bit)
|
||||
|
||||
This function performs a exclusive LDR command for 16 bit values.
|
||||
|
||||
\param [in] ptr Pointer to data
|
||||
\return value of type uint16_t at (*ptr)
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint16_t __LDREXH(volatile uint16_t *addr)
|
||||
{
|
||||
uint16_t result;
|
||||
|
||||
__ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief LDR Exclusive (32 bit)
|
||||
|
||||
This function performs a exclusive LDR command for 32 bit values.
|
||||
|
||||
\param [in] ptr Pointer to data
|
||||
\return value of type uint32_t at (*ptr)
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __LDREXW(volatile uint32_t *addr)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief STR Exclusive (8 bit)
|
||||
|
||||
This function performs a exclusive STR command for 8 bit values.
|
||||
|
||||
\param [in] value Value to store
|
||||
\param [in] ptr Pointer to location
|
||||
\return 0 Function succeeded
|
||||
\return 1 Function failed
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("strexb %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief STR Exclusive (16 bit)
|
||||
|
||||
This function performs a exclusive STR command for 16 bit values.
|
||||
|
||||
\param [in] value Value to store
|
||||
\param [in] ptr Pointer to location
|
||||
\return 0 Function succeeded
|
||||
\return 1 Function failed
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("strexh %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief STR Exclusive (32 bit)
|
||||
|
||||
This function performs a exclusive STR command for 32 bit values.
|
||||
|
||||
\param [in] value Value to store
|
||||
\param [in] ptr Pointer to location
|
||||
\return 0 Function succeeded
|
||||
\return 1 Function failed
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("strex %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Remove the exclusive lock
|
||||
|
||||
This function removes the exclusive lock which is created by LDREX.
|
||||
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __CLREX(void)
|
||||
{
|
||||
__ASM volatile ("clrex");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Signed Saturate
|
||||
|
||||
This function saturates a signed value.
|
||||
|
||||
\param [in] value Value to be saturated
|
||||
\param [in] sat Bit position to saturate to (1..32)
|
||||
\return Saturated value
|
||||
*/
|
||||
#define __SSAT(ARG1,ARG2) \
|
||||
({ \
|
||||
uint32_t __RES, __ARG1 = (ARG1); \
|
||||
__ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \
|
||||
__RES; \
|
||||
})
|
||||
|
||||
|
||||
/** \brief Unsigned Saturate
|
||||
|
||||
This function saturates an unsigned value.
|
||||
|
||||
\param [in] value Value to be saturated
|
||||
\param [in] sat Bit position to saturate to (0..31)
|
||||
\return Saturated value
|
||||
*/
|
||||
#define __USAT(ARG1,ARG2) \
|
||||
({ \
|
||||
uint32_t __RES, __ARG1 = (ARG1); \
|
||||
__ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \
|
||||
__RES; \
|
||||
})
|
||||
|
||||
|
||||
/** \brief Count leading zeros
|
||||
|
||||
This function counts the number of leading zeros of a data value.
|
||||
|
||||
\param [in] value Value to count the leading zeros
|
||||
\return number of leading zeros in value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __CLZ(uint32_t value)
|
||||
{
|
||||
uint8_t result;
|
||||
|
||||
__ASM volatile ("clz %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
#endif /* (__CORTEX_M >= 0x03) */
|
||||
|
||||
|
||||
|
||||
|
||||
#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/
|
||||
/* TASKING carm specific functions */
|
||||
|
||||
/*
|
||||
* The CMSIS functions have been implemented as intrinsics in the compiler.
|
||||
* Please use "carm -?i" to get an up to date list of all intrinsics,
|
||||
* Including the CMSIS ones.
|
||||
*/
|
||||
|
||||
#endif
|
||||
|
||||
/*@}*/ /* end of group CMSIS_Core_InstructionInterface */
|
||||
|
||||
#endif /* __CORE_CMINSTR_H */
|
|
@ -1,243 +0,0 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
<title>CMSIS Debug Support</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
|
||||
<meta name="ProgId" content="FrontPage.Editor.Document">
|
||||
<style>
|
||||
<!--
|
||||
/*-----------------------------------------------------------
|
||||
Keil Software CHM Style Sheet
|
||||
-----------------------------------------------------------*/
|
||||
body { color: #000000; background-color: #FFFFFF; font-size: 75%; font-family:
|
||||
Verdana, Arial, 'Sans Serif' }
|
||||
a:link { color: #0000FF; text-decoration: underline }
|
||||
a:visited { color: #0000FF; text-decoration: underline }
|
||||
a:active { color: #FF0000; text-decoration: underline }
|
||||
a:hover { color: #FF0000; text-decoration: underline }
|
||||
h1 { font-family: Verdana; font-size: 18pt; color: #000080; font-weight: bold;
|
||||
text-align: Center; margin-right: 3 }
|
||||
h2 { font-family: Verdana; font-size: 14pt; color: #000080; font-weight: bold;
|
||||
background-color: #CCCCCC; margin-top: 24; margin-bottom: 3;
|
||||
padding: 6 }
|
||||
h3 { font-family: Verdana; font-size: 10pt; font-weight: bold; background-color:
|
||||
#CCCCCC; margin-top: 24; margin-bottom: 3; padding: 6 }
|
||||
pre { font-family: Courier New; font-size: 10pt; background-color: #CCFFCC;
|
||||
margin-left: 24; margin-right: 24 }
|
||||
ul { list-style-type: square; margin-top: 6pt; margin-bottom: 0 }
|
||||
ol { margin-top: 6pt; margin-bottom: 0 }
|
||||
li { clear: both; margin-bottom: 6pt }
|
||||
table { font-size: 100%; border-width: 0; padding: 0 }
|
||||
th { color: #FFFFFF; background-color: #000080; text-align: left; vertical-align:
|
||||
bottom; padding-right: 6pt }
|
||||
tr { text-align: left; vertical-align: top }
|
||||
td { text-align: left; vertical-align: top; padding-right: 6pt }
|
||||
.ToolT { font-size: 8pt; color: #808080 }
|
||||
.TinyT { font-size: 8pt; text-align: Center }
|
||||
code { color: #000000; background-color: #E0E0E0; font-family: 'Courier New', Courier;
|
||||
line-height: 120%; font-style: normal }
|
||||
/*-----------------------------------------------------------
|
||||
Notes
|
||||
-----------------------------------------------------------*/
|
||||
p.note { font-weight: bold; clear: both; margin-bottom: 3pt; padding-top: 6pt }
|
||||
/*-----------------------------------------------------------
|
||||
Expanding/Contracting Divisions
|
||||
-----------------------------------------------------------*/
|
||||
#expand { text-decoration: none; margin-bottom: 3pt }
|
||||
img.expand { border-style: none; border-width: medium }
|
||||
div.expand { display: none; margin-left: 9pt; margin-top: 0 }
|
||||
/*-----------------------------------------------------------
|
||||
Where List Tags
|
||||
-----------------------------------------------------------*/
|
||||
p.wh { font-weight: bold; clear: both; margin-top: 6pt; margin-bottom: 3pt }
|
||||
table.wh { width: 100% }
|
||||
td.whItem { white-space: nowrap; font-style: italic; padding-right: 6pt; padding-bottom:
|
||||
6pt }
|
||||
td.whDesc { padding-bottom: 6pt }
|
||||
/*-----------------------------------------------------------
|
||||
Keil Table Tags
|
||||
-----------------------------------------------------------*/
|
||||
table.kt { border: 1pt solid #000000 }
|
||||
th.kt { white-space: nowrap; border-bottom: 1pt solid #000000; padding-left: 6pt;
|
||||
padding-right: 6pt; padding-top: 4pt; padding-bottom: 4pt }
|
||||
tr.kt { }
|
||||
td.kt { color: #000000; background-color: #E0E0E0; border-top: 1pt solid #A0A0A0;
|
||||
padding-left: 6pt; padding-right: 6pt; padding-top: 2pt;
|
||||
padding-bottom: 2pt }
|
||||
/*-----------------------------------------------------------
|
||||
-----------------------------------------------------------*/
|
||||
-->
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>CMSIS Debug Support</h1>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>Cortex-M3 ITM Debug Access</h2>
|
||||
<p>
|
||||
The Cortex-M3 incorporates the Instrumented Trace Macrocell (ITM) that provides together with
|
||||
the Serial Viewer Output trace capabilities for the microcontroller system. The ITM has
|
||||
32 communication channels which are able to transmit 32 / 16 / 8 bit values; two ITM
|
||||
communication channels are used by CMSIS to output the following information:
|
||||
</p>
|
||||
<ul>
|
||||
<li>ITM Channel 0: used for printf-style output via the debug interface.</li>
|
||||
<li>ITM Channel 31: is reserved for RTOS kernel awareness debugging.</li>
|
||||
</ul>
|
||||
|
||||
<h2>Debug IN / OUT functions</h2>
|
||||
<p>CMSIS provides following debug functions:</p>
|
||||
<ul>
|
||||
<li>ITM_SendChar (uses ITM channel 0)</li>
|
||||
<li>ITM_ReceiveChar (uses global variable)</li>
|
||||
<li>ITM_CheckChar (uses global variable)</li>
|
||||
</ul>
|
||||
|
||||
<h3>ITM_SendChar</h3>
|
||||
<p>
|
||||
<strong>ITM_SendChar</strong> is used to transmit a character over ITM channel 0 from
|
||||
the microcontroller system to the debug system. <br>
|
||||
Only a 8 bit value is transmitted.
|
||||
</p>
|
||||
<pre>
|
||||
static __INLINE uint32_t ITM_SendChar (uint32_t ch)
|
||||
{
|
||||
/* check if debugger connected and ITM channel enabled for tracing */
|
||||
if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA) &&
|
||||
(ITM->TCR & ITM_TCR_ITMENA) &&
|
||||
(ITM->TER & (1UL << 0)) )
|
||||
{
|
||||
while (ITM->PORT[0].u32 == 0);
|
||||
ITM->PORT[0].u8 = (uint8_t)ch;
|
||||
}
|
||||
return (ch);
|
||||
}</pre>
|
||||
|
||||
<h3>ITM_ReceiveChar</h3>
|
||||
<p>
|
||||
ITM communication channel is only capable for OUT direction. For IN direction
|
||||
a globel variable is used. A simple mechansim detects if a character is received.
|
||||
The project to test need to be build with debug information.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The globale variable <strong>ITM_RxBuffer</strong> is used to transmit a 8 bit value from debug system
|
||||
to microcontroller system. <strong>ITM_RxBuffer</strong> is 32 bit wide to enshure a proper handshake.
|
||||
</p>
|
||||
<pre>
|
||||
extern volatile int ITM_RxBuffer; /* variable to receive characters */
|
||||
</pre>
|
||||
<p>
|
||||
A dedicated bit pattern is used to determin if <strong>ITM_RxBuffer</strong> is empty
|
||||
or contains a valid value.
|
||||
</p>
|
||||
<pre>
|
||||
#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /* value identifying ITM_RxBuffer is ready for next character */
|
||||
</pre>
|
||||
<p>
|
||||
<strong>ITM_ReceiveChar</strong> is used to receive a 8 bit value from the debug system. The function is nonblocking.
|
||||
It returns the received character or '-1' if no character was available.
|
||||
</p>
|
||||
<pre>
|
||||
static __INLINE int ITM_ReceiveChar (void) {
|
||||
int ch = -1; /* no character available */
|
||||
|
||||
if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) {
|
||||
ch = ITM_RxBuffer;
|
||||
ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */
|
||||
}
|
||||
|
||||
return (ch);
|
||||
}
|
||||
</pre>
|
||||
|
||||
<h3>ITM_CheckChar</h3>
|
||||
<p>
|
||||
<strong>ITM_CheckChar</strong> is used to check if a character is received.
|
||||
</p>
|
||||
<pre>
|
||||
static __INLINE int ITM_CheckChar (void) {
|
||||
|
||||
if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) {
|
||||
return (0); /* no character available */
|
||||
} else {
|
||||
return (1); /* character available */
|
||||
}
|
||||
}</pre>
|
||||
|
||||
|
||||
<h2>ITM Debug Support in uVision</h2>
|
||||
<p>
|
||||
uVision uses in a debug session the <strong>Debug (printf) Viewer</strong> window to
|
||||
display the debug data.
|
||||
</p>
|
||||
<p>Direction microcontroller system -> uVision:</p>
|
||||
<ul>
|
||||
<li>
|
||||
Characters received via ITM communication channel 0 are written in a printf style
|
||||
to <strong>Debug (printf) Viewer</strong> window.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>Direction uVision -> microcontroller system:</p>
|
||||
<ul>
|
||||
<li>Check if <strong>ITM_RxBuffer</strong> variable is available (only performed once).</li>
|
||||
<li>Read character from <strong>Debug (printf) Viewer</strong> window.</li>
|
||||
<li>If <strong>ITM_RxBuffer</strong> empty write character to <strong>ITM_RxBuffer</strong>.</li>
|
||||
</ul>
|
||||
|
||||
<p class="Note">Note</p>
|
||||
<ul>
|
||||
<li><p>Current solution does not use a buffer machanism for trasmitting the characters.</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>RTX Kernel awareness in uVision</h2>
|
||||
<p>
|
||||
uVision / RTX are using a simple and efficient solution for RTX Kernel awareness.
|
||||
No format overhead is necessary.<br>
|
||||
uVsion debugger decodes the RTX events via the 32 / 16 / 8 bit ITM write access
|
||||
to ITM communication channel 31.
|
||||
</p>
|
||||
|
||||
<p>Following RTX events are traced:</p>
|
||||
<ul>
|
||||
<li>Task Create / Delete event
|
||||
<ol>
|
||||
<li>32 bit access. Task start address is transmitted</li>
|
||||
<li>16 bit access. Task ID and Create/Delete flag are transmitted<br>
|
||||
High byte holds Create/Delete flag, Low byte holds TASK ID.
|
||||
</li>
|
||||
</ol>
|
||||
</li>
|
||||
<li>Task switch event
|
||||
<ol>
|
||||
<li>8 bit access. Task ID of current task is transmitted</li>
|
||||
</ol>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p class="Note">Note</p>
|
||||
<ul>
|
||||
<li><p>Other RTOS information could be retrieved via memory read access in a polling mode manner.</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
|
||||
|
||||
<hr>
|
||||
|
||||
<p class="TinyT">Copyright © KEIL - An ARM Company.<br>
|
||||
All rights reserved.<br>
|
||||
Visit our web site at <a href="http://www.keil.com">www.keil.com</a>.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -1,320 +0,0 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
<title>CMSIS Changes</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
|
||||
<meta name="ProgId" content="FrontPage.Editor.Document">
|
||||
<style>
|
||||
<!--
|
||||
/*-----------------------------------------------------------
|
||||
Keil Software CHM Style Sheet
|
||||
-----------------------------------------------------------*/
|
||||
body { color: #000000; background-color: #FFFFFF; font-size: 75%; font-family:
|
||||
Verdana, Arial, 'Sans Serif' }
|
||||
a:link { color: #0000FF; text-decoration: underline }
|
||||
a:visited { color: #0000FF; text-decoration: underline }
|
||||
a:active { color: #FF0000; text-decoration: underline }
|
||||
a:hover { color: #FF0000; text-decoration: underline }
|
||||
h1 { font-family: Verdana; font-size: 18pt; color: #000080; font-weight: bold;
|
||||
text-align: Center; margin-right: 3 }
|
||||
h2 { font-family: Verdana; font-size: 14pt; color: #000080; font-weight: bold;
|
||||
background-color: #CCCCCC; margin-top: 24; margin-bottom: 3;
|
||||
padding: 6 }
|
||||
h3 { font-family: Verdana; font-size: 10pt; font-weight: bold; background-color:
|
||||
#CCCCCC; margin-top: 24; margin-bottom: 3; padding: 6 }
|
||||
pre { font-family: Courier New; font-size: 10pt; background-color: #CCFFCC;
|
||||
margin-left: 24; margin-right: 24 }
|
||||
ul { list-style-type: square; margin-top: 6pt; margin-bottom: 0 }
|
||||
ol { margin-top: 6pt; margin-bottom: 0 }
|
||||
li { clear: both; margin-bottom: 6pt }
|
||||
table { font-size: 100%; border-width: 0; padding: 0 }
|
||||
th { color: #FFFFFF; background-color: #000080; text-align: left; vertical-align:
|
||||
bottom; padding-right: 6pt }
|
||||
tr { text-align: left; vertical-align: top }
|
||||
td { text-align: left; vertical-align: top; padding-right: 6pt }
|
||||
.ToolT { font-size: 8pt; color: #808080 }
|
||||
.TinyT { font-size: 8pt; text-align: Center }
|
||||
code { color: #000000; background-color: #E0E0E0; font-family: 'Courier New', Courier;
|
||||
line-height: 120%; font-style: normal }
|
||||
/*-----------------------------------------------------------
|
||||
Notes
|
||||
-----------------------------------------------------------*/
|
||||
p.note { font-weight: bold; clear: both; margin-bottom: 3pt; padding-top: 6pt }
|
||||
/*-----------------------------------------------------------
|
||||
Expanding/Contracting Divisions
|
||||
-----------------------------------------------------------*/
|
||||
#expand { text-decoration: none; margin-bottom: 3pt }
|
||||
img.expand { border-style: none; border-width: medium }
|
||||
div.expand { display: none; margin-left: 9pt; margin-top: 0 }
|
||||
/*-----------------------------------------------------------
|
||||
Where List Tags
|
||||
-----------------------------------------------------------*/
|
||||
p.wh { font-weight: bold; clear: both; margin-top: 6pt; margin-bottom: 3pt }
|
||||
table.wh { width: 100% }
|
||||
td.whItem { white-space: nowrap; font-style: italic; padding-right: 6pt; padding-bottom:
|
||||
6pt }
|
||||
td.whDesc { padding-bottom: 6pt }
|
||||
/*-----------------------------------------------------------
|
||||
Keil Table Tags
|
||||
-----------------------------------------------------------*/
|
||||
table.kt { border: 1pt solid #000000 }
|
||||
th.kt { white-space: nowrap; border-bottom: 1pt solid #000000; padding-left: 6pt;
|
||||
padding-right: 6pt; padding-top: 4pt; padding-bottom: 4pt }
|
||||
tr.kt { }
|
||||
td.kt { color: #000000; background-color: #E0E0E0; border-top: 1pt solid #A0A0A0;
|
||||
padding-left: 6pt; padding-right: 6pt; padding-top: 2pt;
|
||||
padding-bottom: 2pt }
|
||||
/*-----------------------------------------------------------
|
||||
-----------------------------------------------------------*/
|
||||
-->
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>Changes to CMSIS version V1.20</h1>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>1. Removed CMSIS Middelware packages</h2>
|
||||
<p>
|
||||
CMSIS Middleware is on hold from ARM side until a agreement between all CMSIS partners is found.
|
||||
</p>
|
||||
|
||||
<h2>2. SystemFrequency renamed to SystemCoreClock</h2>
|
||||
<p>
|
||||
The variable name <strong>SystemCoreClock</strong> is more precise than <strong>SystemFrequency</strong>
|
||||
because the variable holds the clock value at which the core is running.
|
||||
</p>
|
||||
|
||||
<h2>3. Changed startup concept</h2>
|
||||
<p>
|
||||
The old startup concept (calling SystemInit_ExtMemCtl from startup file and calling SystemInit
|
||||
from main) has the weakness that it does not work for controllers which need a already
|
||||
configuerd clock system to configure the external memory controller.
|
||||
</p>
|
||||
|
||||
<h3>Changed startup concept</h3>
|
||||
<ul>
|
||||
<li>
|
||||
SystemInit() is called from startup file before <strong>premain</strong>.
|
||||
</li>
|
||||
<li>
|
||||
<strong>SystemInit()</strong> configures the clock system and also configures
|
||||
an existing external memory controller.
|
||||
</li>
|
||||
<li>
|
||||
<strong>SystemInit()</strong> must not use global variables.
|
||||
</li>
|
||||
<li>
|
||||
<strong>SystemCoreClock</strong> is initialized with a correct predefined value.
|
||||
</li>
|
||||
<li>
|
||||
Additional function <strong>void SystemCoreClockUpdate (void)</strong> is provided.<br>
|
||||
<strong>SystemCoreClockUpdate()</strong> updates the variable <strong>SystemCoreClock</strong>
|
||||
and must be called whenever the core clock is changed.<br>
|
||||
<strong>SystemCoreClockUpdate()</strong> evaluates the clock register settings and calculates
|
||||
the current core clock.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>4. Advanced Debug Functions</h2>
|
||||
<p>
|
||||
ITM communication channel is only capable for OUT direction. To allow also communication for
|
||||
IN direction a simple concept is provided.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Global variable <strong>volatile int ITM_RxBuffer</strong> used for IN data.
|
||||
</li>
|
||||
<li>
|
||||
Function <strong>int ITM_CheckChar (void)</strong> checks if a new character is available.
|
||||
</li>
|
||||
<li>
|
||||
Function <strong>int ITM_ReceiveChar (void)</strong> retrieves the new character.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
For detailed explanation see file <strong>CMSIS debug support.htm</strong>.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>5. Core Register Bit Definitions</h2>
|
||||
<p>
|
||||
Files core_cm3.h and core_cm0.h contain now bit definitions for Core Registers. The name for the
|
||||
defines correspond with the Cortex-M Technical Reference Manual.
|
||||
</p>
|
||||
<p>
|
||||
e.g. SysTick structure with bit definitions
|
||||
</p>
|
||||
<pre>
|
||||
/** @addtogroup CMSIS_CM3_SysTick CMSIS CM3 SysTick
|
||||
memory mapped structure for SysTick
|
||||
@{
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
__IO uint32_t CTRL; /*!< Offset: 0x00 SysTick Control and Status Register */
|
||||
__IO uint32_t LOAD; /*!< Offset: 0x04 SysTick Reload Value Register */
|
||||
__IO uint32_t VAL; /*!< Offset: 0x08 SysTick Current Value Register */
|
||||
__I uint32_t CALIB; /*!< Offset: 0x0C SysTick Calibration Register */
|
||||
} SysTick_Type;
|
||||
|
||||
/* SysTick Control / Status Register Definitions */
|
||||
#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */
|
||||
#define SysTick_CTRL_COUNTFLAG_Msk (1ul << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */
|
||||
|
||||
#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */
|
||||
#define SysTick_CTRL_CLKSOURCE_Msk (1ul << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */
|
||||
|
||||
#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */
|
||||
#define SysTick_CTRL_TICKINT_Msk (1ul << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */
|
||||
|
||||
#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */
|
||||
#define SysTick_CTRL_ENABLE_Msk (1ul << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */
|
||||
|
||||
/* SysTick Reload Register Definitions */
|
||||
#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */
|
||||
#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */
|
||||
|
||||
/* SysTick Current Register Definitions */
|
||||
#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */
|
||||
#define SysTick_VAL_CURRENT_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */
|
||||
|
||||
/* SysTick Calibration Register Definitions */
|
||||
#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */
|
||||
#define SysTick_CALIB_NOREF_Msk (1ul << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */
|
||||
|
||||
#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */
|
||||
#define SysTick_CALIB_SKEW_Msk (1ul << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */
|
||||
|
||||
#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */
|
||||
#define SysTick_CALIB_TENMS_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */
|
||||
/*@}*/ /* end of group CMSIS_CM3_SysTick */</pre>
|
||||
|
||||
<h2>7. DoxyGen Tags</h2>
|
||||
<p>
|
||||
DoxyGen tags in files core_cm3.[c,h] and core_cm0.[c,h] are reworked to create proper documentation
|
||||
using DoxyGen.
|
||||
</p>
|
||||
|
||||
<h2>8. Folder Structure</h2>
|
||||
<p>
|
||||
The folder structure is changed to differentiate the single support packages.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>CM0</li>
|
||||
<li>CM3
|
||||
<ul>
|
||||
<li>CoreSupport</li>
|
||||
<li>DeviceSupport</li>
|
||||
<ul>
|
||||
<li>Vendor
|
||||
<ul>
|
||||
<li>Device
|
||||
<ul>
|
||||
<li>Startup
|
||||
<ul>
|
||||
<li>Toolchain</li>
|
||||
<li>Toolchain</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Device</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Vendor</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Example
|
||||
<ul>
|
||||
<li>Toolchain
|
||||
<ul>
|
||||
<li>Device</li>
|
||||
<li>Device</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Toolchain</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li>Documentation</li>
|
||||
</ul>
|
||||
|
||||
<h2>9. Open Points</h2>
|
||||
<p>
|
||||
Following points need to be clarified and solved:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>
|
||||
Equivalent C and Assembler startup files.
|
||||
</p>
|
||||
<p>
|
||||
Is there a need for having C startup files although assembler startup files are
|
||||
very efficient and do not need to be changed?
|
||||
<p/>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
Placing of HEAP in external RAM.
|
||||
</p>
|
||||
<p>
|
||||
It must be possible to place HEAP in external RAM if the device supports an
|
||||
external memory controller.
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
Placing of STACK /HEAP.
|
||||
</p>
|
||||
<p>
|
||||
STACK should always be placed at the end of internal RAM.
|
||||
</p>
|
||||
<p>
|
||||
If HEAP is placed in internal RAM than it should be placed after RW ZI section.
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
Removing core_cm3.c and core_cm0.c.
|
||||
</p>
|
||||
<p>
|
||||
On a long term the functions in core_cm3.c and core_cm0.c must be replaced with
|
||||
appropriate compiler intrinsics.
|
||||
</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>10. Limitations</h2>
|
||||
<p>
|
||||
The following limitations are not covered with the current CMSIS version:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
No <strong>C startup files</strong> for ARM toolchain are provided.
|
||||
</li>
|
||||
<li>
|
||||
No <strong>C startup files</strong> for GNU toolchain are provided.
|
||||
</li>
|
||||
<li>
|
||||
No <strong>C startup files</strong> for IAR toolchain are provided.
|
||||
</li>
|
||||
<li>
|
||||
No <strong>Tasking</strong> projects are provided yet.
|
||||
</li>
|
||||
</ul>
|
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -1,452 +1,358 @@
|
|||
S02B0000433A2F576F726B2F736F6674776172652F4F70656E424C542F5461726765742F44656D6F2F41524DEF
|
||||
S31508006000F4010020F76100082D6700082D670008D5
|
||||
S315080060102D6700082D6700082D6700082D67000802
|
||||
S315080060202D6700082D6700082D6700082D670008F2
|
||||
S315080060302D6700082D6700082D6700080967000806
|
||||
S315080060402D6700082D6700082D6700082D670008D2
|
||||
S315080060502D6700082D6700082D6700082D670008C2
|
||||
S315080060602D6700082D6700082D6700082D670008B2
|
||||
S315080060702D6700082D6700082D6700082D670008A2
|
||||
S315080060802D6700082D6700082D6700082D67000892
|
||||
S315080060902D6700082D6700082D6700082D67000882
|
||||
S315080060A02D6700082D6700082D6700082D67000872
|
||||
S315080060B02D6700082D6700082D6700082D67000862
|
||||
S315080060C02D6700082D6700082D6700082D67000852
|
||||
S315080060D02D6700082D6700082D6700082D67000842
|
||||
S315080060E02D6700082D6700082D6700082D67000832
|
||||
S315080060F02D6700082D6700082D6700082D67000822
|
||||
S315080061002D6700082D6700082D6700082D67000811
|
||||
S315080061102D6700082D6700082D6700082D67000801
|
||||
S315080061202D6700082D6700082D6700082D670008F1
|
||||
S315080061302D6700082D6700082D6700082D670008E1
|
||||
S315080061402D6700082D6700082D6700082D670008D1
|
||||
S31508006000E8010020FB610008B1650008B1650008D9
|
||||
S31508006010B1650008B1650008B1650008B1650008FA
|
||||
S31508006020B1650008B1650008B1650008B1650008EA
|
||||
S31508006030B1650008B1650008B165000895650008F6
|
||||
S31508006040B1650008B1650008B1650008B1650008CA
|
||||
S31508006050B1650008B1650008B1650008B1650008BA
|
||||
S31508006060B1650008B1650008B1650008B1650008AA
|
||||
S31508006070B1650008B1650008B1650008B16500089A
|
||||
S31508006080B1650008B1650008B1650008B16500088A
|
||||
S31508006090B1650008B1650008B1650008B16500087A
|
||||
S315080060A0B1650008B1650008B1650008B16500086A
|
||||
S315080060B0B1650008B1650008B1650008B16500085A
|
||||
S315080060C0B1650008B1650008B1650008B16500084A
|
||||
S315080060D0B1650008B1650008B1650008B16500083A
|
||||
S315080060E0B1650008B1650008B1650008B16500082A
|
||||
S315080060F0B1650008B1650008B1650008B16500081A
|
||||
S31508006100B1650008B1650008B1650008B165000809
|
||||
S31508006110B1650008B1650008B1650008B1650008F9
|
||||
S31508006120B1650008B1650008B1650008B1650008E9
|
||||
S31508006130B1650008B1650008B1650008B1650008D9
|
||||
S31508006140B1650008B1650008B1650008B1650008C9
|
||||
S30908006150EE11AA553F
|
||||
S315080061542A498D462A482B492B4A00F039F82B48F8
|
||||
S315080061642B492C4A00F034F82B482C492C4A00F0C9
|
||||
S315080061742FF82C482C492D4A00F02AF82C482D498A
|
||||
S315080061842D4A00F025F82D482D492E4A00F020F80E
|
||||
S315080061942D482E49002200F026F82D482D49091AC3
|
||||
S315080061A4082903DB00220260043001601E481F49E7
|
||||
S315080061B4884205D00268043003B4904703BCF7E765
|
||||
S315080061C400208646EC4600200021234A9047FEE735
|
||||
S315080061D4884207D0521A05D0037801300B70013172
|
||||
S315080061E4013AF9D17047884202D002700130FAE7C1
|
||||
S315080061F470471A481A490160AAE70000F40100200A
|
||||
S31508006204D47B0008000000201400002068620008FF
|
||||
S31508006214686200088C7B0008D47B00080000002014
|
||||
S31508006224000000208C7B00088C7B00088C7B00080F
|
||||
S315080062348C7B00088C7B00088C7B00088C7B000810
|
||||
S315080062448C7B0008D47B000814000020740000200E
|
||||
S3150800625474000020F40000206563000808ED00E0DF
|
||||
S3090800626400600008C0
|
||||
S3150800626880B583B000AF4FF010004FF0010147F634
|
||||
S315080062780D03C0F6000398474FF480533B804FF050
|
||||
S3150800628803037B604FF01003BB603B464FF4805016
|
||||
S31508006298C4F20100194647F23533C0F60003984799
|
||||
S315080062A84FF48050C4F201004FF4805147F2E54399
|
||||
S315080062B8C0F60003984707F10C07BD4680BD00BF26
|
||||
S315080062C880B581B000AF46F2F163C0F6000398477F
|
||||
S315080062D803463B6040F21403C2F200031B683A689F
|
||||
S315080062E8D21A40F2F3139A4232D940F21803C2F28C
|
||||
S315080062F800031B78002B12D140F21803C2F20003E0
|
||||
S315080063084FF001021A704FF48050C4F201004FF49E
|
||||
S31508006318805147F20153C0F60003984711E040F24E
|
||||
S315080063281803C2F200034FF000021A704FF48050A7
|
||||
S31508006338C4F201004FF4805147F2E543C0F6000362
|
||||
S31508006348984740F21403C2F200033A681A6000E05C
|
||||
S3150800635800BF07F10407BD4680BD00BF80B500AF82
|
||||
S3150800636846F29533C0F60003984746F27973C0F6A5
|
||||
S315080063780003984746F2C923C0F60003984746F231
|
||||
S315080063889573C0F600039847F4E700BF80B583B055
|
||||
S3150800639800AF4FF000037B604FF000033B604FF4FB
|
||||
S315080063A88053C4F202034FF48052C4F20202126800
|
||||
S315080063B842F001021A604FF48052C4F202024FF406
|
||||
S315080063C88053C4F2020359684FF00003CFF6FF035F
|
||||
S315080063D80B4053604FF48053C4F202034FF48052C3
|
||||
S315080063E8C4F20202126822F0847222F480321A6019
|
||||
S315080063F84FF48053C4F202034FF48052C4F20202E7
|
||||
S31508006408126822F480221A604FF48053C4F20203F9
|
||||
S315080064184FF48052C4F20202526822F4FE025A600D
|
||||
S315080064284FF48053C4F202034FF41F029A604FF4E4
|
||||
S315080064388053C4F202034FF48052C4F2020212686F
|
||||
S3150800644842F480321A604FF48053C4F202031B6880
|
||||
S3150800645803F400333B607B6803F101037B603B6808
|
||||
S31508006468002B04D17A6840F2DC539A42EBD14FF4F8
|
||||
S315080064788053C4F202031B6803F40033002B00D1CF
|
||||
S31508006488FEE74FF40053C4F202034FF40052C4F275
|
||||
S315080064980202126842F010021A604FF40053C4F25E
|
||||
S315080064A802034FF40052C4F20202126822F00302F1
|
||||
S315080064B81A604FF40053C4F202034FF40052C4F2B0
|
||||
S315080064C80202126842F002021A604FF48053C4F2BC
|
||||
S315080064D802034FF48052C4F2020252685A604FF41B
|
||||
S315080064E88053C4F202034FF48052C4F2020252687F
|
||||
S315080064F842F400525A604FF48053C4F202034FF430
|
||||
S315080065088052C4F20202526842F480625A604FF41A
|
||||
S315080065188053C4F202034FF48052C4F2020252684E
|
||||
S3150800652822F47C125A604FF00903BB60BB68A3F1DA
|
||||
S3150800653802034FEA8343BB604FF48053C4F2020355
|
||||
S315080065484FF48052C4F202025168BA680A4342F408
|
||||
S3150800655880325A604FF48053C4F202034FF48052D3
|
||||
S31508006568C4F20202126842F080721A6000BF4FF441
|
||||
S315080065788053C4F202031B6803F00073002BF6D09D
|
||||
S315080065884FF48053C4F202034FF48052C4F2020255
|
||||
S31508006598526822F003025A604FF48053C4F2020389
|
||||
S315080065A84FF48052C4F20202526842F002025A605C
|
||||
S315080065B800BF4FF48053C4F202035B6803F00C0370
|
||||
S315080065C8082BF6D146F26923C0F60003984746F227
|
||||
S315080065D8A963C0F60003984707F10C07BD4680BDB6
|
||||
S315080065E880B482B000AF786039607B68002B10DA17
|
||||
S315080065F84FF46D43CEF200037A6802F00F02A2F157
|
||||
S3150800660804013A68D2B24FEA0212D2B25B181A7675
|
||||
S315080066180CE04FF46143CEF2000379683A68D2B2C7
|
||||
S315080066284FEA0212D2B25B1883F8002307F108076B
|
||||
S31508006638BD4680BC704700BF80B581B000AF3860E2
|
||||
S315080066483A686FF07F439A4202D94FF0010322E075
|
||||
S315080066584EF21003CEF200033A6822F07F4202F1A6
|
||||
S31508006668FF325A604FF0FF304FF00F0146F2E953F8
|
||||
S31508006678C0F6000398474EF21003CEF200034FF017
|
||||
S3150800668800029A604EF21003CEF200034FF007029A
|
||||
S315080066981A604FF00003184607F10407BD4680BD87
|
||||
S315080066A880B500AF4FF4CA50C0F2010046F2416304
|
||||
S315080066B8C0F6000398474FF0000046F2D163C0F6CB
|
||||
S315080066C80003984780BD00BF80B481B000AF38602A
|
||||
S315080066D840F21C03C2F200033A681A6007F104077D
|
||||
S315080066E8BD4680BC704700BF80B400AF40F21C03AB
|
||||
S315080066F8C2F200031B681846BD4680BC704700BF37
|
||||
S3150800670880B400AF40F21C03C2F200031B6803F111
|
||||
S31508006718010240F21C03C2F200031A60BD4680BC9F
|
||||
S31508006728704700BF80B400AFFEE700BF80B400AF73
|
||||
S31508006738BFF34F8FBD4680BC704700BF80B500AF1A
|
||||
S315080067484FF46D42CEF200024FF46D43CEF20003C9
|
||||
S31508006758DB6803F4E0614FF00403C0F2FA530B4315
|
||||
S31508006768D36046F23573C0F600039847FEE700BFC4
|
||||
S3150800677880B500AF46F2C173C0F60003984746F6DF
|
||||
S31508006788B523C0F60003984780BD00BF80B500AFA3
|
||||
S3150800679846F69103C0F60003984746F63943C0F60D
|
||||
S315080067A80003984780BD00BF80B500AF46F2457321
|
||||
S315080067B8C0F60003984780BD80B587B000AF4FF490
|
||||
S315080067C800304FF0010147F65D03C0F6000398470D
|
||||
S315080067D84FF005004FF0010147F60D03C0F6000318
|
||||
S315080067E898474FF01803BB614FF004033B824FF0FC
|
||||
S315080067F803037B6107F110034FF40060C4F201003C
|
||||
S31508006808194647F23533C0F6000398474FF0040394
|
||||
S31508006818BB614FF008033B8207F110034FF4006091
|
||||
S31508006828C4F20100194647F23533C0F60003984703
|
||||
S315080068384FF461433B604FF00003BB804FF0000301
|
||||
S31508006848FB804FF000033B814FF00003BB814FF0FC
|
||||
S315080068580C037B813B464FF48840C4F20000194676
|
||||
S3150800686847F6FD03C0F6000398474FF48840C4F27C
|
||||
S3150800687800004FF0010147F6AD23C0F6000398471C
|
||||
S3150800688807F11C07BD4680BD80B500AF40F220035E
|
||||
S31508006898C2F200031B78002B1AD140F22400C2F278
|
||||
S315080068A8000046F66D13C0F6000398470346012B09
|
||||
S315080068B856D140F22003C2F200034FF001021A70C3
|
||||
S315080068C840F26803C2F200034FF000021A7047E06C
|
||||
S315080068D840F26803C2F200031B7803F1010240F292
|
||||
S315080068E82403C2F20003D318184646F66D13C0F6F9
|
||||
S315080068F8000398470346012B32D140F26803C2F2D7
|
||||
S3150800690800031B7803F10103DAB240F26803C2F206
|
||||
S3150800691800031A7040F22403C2F200031A7840F200
|
||||
S315080069286803C2F200031B789A4219D140F2200381
|
||||
S31508006938C2F200034FF000021A7040F22403C2F2B2
|
||||
S3150800694800035B78FF2B0BD140F22403C2F2000345
|
||||
S315080069589B78002B04D146F2B173C0F6000398471A
|
||||
S3150800696880BD00BF80B581B000AF38604FF488405D
|
||||
S31508006978C4F200004FF0200147F60D33C0F60003B5
|
||||
S3150800698898470346012B0FD14FF48840C4F20000FC
|
||||
S3150800699847F6E923C0F6000398470346DAB23B6888
|
||||
S315080069A81A704FF0010301E04FF00003184607F18B
|
||||
S315080069B80407BD4680BD00BF80B485B000AFB96086
|
||||
S315080069C87A603B600346BB814FF00003FB7461E0C5
|
||||
S315080069D8B989FA7C47F68C33C0F6000313F82230D7
|
||||
S315080069E81846FB7C47F68C32C0F600024FEA83034A
|
||||
S315080069F8D3185B78C31803F1010303FB01F248F6C1
|
||||
S31508006A08A04393FBF2F102FB01F29B1A002B3DD13E
|
||||
S31508006A18B989FA7C47F68C33C0F6000313F8223096
|
||||
S31508006A281846FB7C47F68C32C0F600024FEA830309
|
||||
S31508006A38D3185B78C31803F1010303FB01F348F67F
|
||||
S31508006A48A04292FBF3F39AB2BB681A80BB681B880C
|
||||
S31508006A58002B1BD0BB681B88B3F5806F16D8FA7C49
|
||||
S31508006A6847F68C33C0F6000313F822207B681A70A1
|
||||
S31508006A78FB7C47F68C32C0F600024FEA8303D3182C
|
||||
S31508006A885A783B681A704FF0010308E0FB7C03F15B
|
||||
S31508006A980103FB74FB7C112B9AD94FF000031846A7
|
||||
S31508006AA807F11407BD4680BC704700BF90B591B082
|
||||
S31508006AB800AF4FF001004FF0010147F60D03C0F68D
|
||||
S31508006AC8000398474FF008004FF0010147F60D03F9
|
||||
S31508006AD8C0F6000398474FF480733B874FF0480386
|
||||
S31508006AE83B6407F138034FF44060C4F201001946C5
|
||||
S31508006AF847F23533C0F6000398474FF400733B87CF
|
||||
S31508006B084FF018033B644FF00303FB6307F13803A0
|
||||
S31508006B184FF44060C4F20100194647F23533C0F60F
|
||||
S31508006B28000398474FF4EA104FF0010147F21D5346
|
||||
S31508006B38C0F6000398474FF000704FF0010147F67A
|
||||
S31508006B485D03C0F6000398474FF4C840C4F2000036
|
||||
S31508006B5846F69D43C0F60003984707F118031846FA
|
||||
S31508006B6847F2D103C0F60003984707F1020107F177
|
||||
S31508006B7801023B464FF4FA7046F6C114C0F6000403
|
||||
S31508006B88A0474FF000033B624FF000037B624FF0CB
|
||||
S31508006B980003BB624FF00003FB624FF000033B6340
|
||||
S31508006BA84FF000037B634FF00003BB764FF00003FA
|
||||
S31508006BB8FB767B7803F1FF33DBB23B773B7803F14F
|
||||
S31508006BC8FF33DBB27B777B883B8307F118034FF4E7
|
||||
S31508006BD8C840C4F20000194646F60553C0F6000335
|
||||
S31508006BE898474FF00003BB734FF00003FB734FF051
|
||||
S31508006BF801033B744FF00003BB804FF00003FB8092
|
||||
S31508006C084FF000033B814FF000037B814FF00003F0
|
||||
S31508006C18BB814FF001037B6107F10403184646F66A
|
||||
S31508006C28C563C0F60003984707F14407BD4690BDFB
|
||||
S31508006C3880B585B000AF4FF4C840C4F200004FF0E5
|
||||
S31508006C48000147F2E523C0F6000398470346002BE0
|
||||
S31508006C581CD03B464FF4C840C4F200004FF0000170
|
||||
S31508006C681A4647F23D13C0F6000398473A6840F2B9
|
||||
S31508006C7867639A420AD1FB7AFF2B07D13B7B002B25
|
||||
S31508006C8804D146F2B173C0F60003984707F1140712
|
||||
S31508006C98BD4680BD80B581B000AF38603A684FF40C
|
||||
S31508006CA8C843C4F200039A4212D14FF000704FF05D
|
||||
S31508006CB8010147F6AD03C0F6000398474FF0007088
|
||||
S31508006CC84FF0000147F6AD03C0F60003984711E0F8
|
||||
S31508006CD84FF080604FF0010147F6AD03C0F6000398
|
||||
S31508006CE898474FF080604FF0000147F6AD03C0F6AD
|
||||
S31508006CF80003984707F10407BD4680BD80B484B0F1
|
||||
S31508006D0800AF786039604FF00003FB734FF000035B
|
||||
S31508006D18BB607B681B6823F002027B681A607B6885
|
||||
S31508006D281B6843F001027B681A6003E0BB6803F13D
|
||||
S31508006D380103BB607B685B6803F00103002B04D181
|
||||
S31508006D48BA684FF6FF739A42F0D17B685B6803F01E
|
||||
S31508006D580103002B03D14FF00003FB73A7E03B6840
|
||||
S31508006D689B68012B06D17B681B6843F080027B6809
|
||||
S31508006D781A6005E07B681B6823F080027B681A6046
|
||||
S31508006D883B68DB68012B06D17B681B6843F0400229
|
||||
S31508006D987B681A6005E07B681B6823F040027B68FD
|
||||
S31508006DA81A603B681B69012B06D17B681B6843F090
|
||||
S31508006DB820027B681A6005E07B681B6823F02002BE
|
||||
S31508006DC87B681A603B685B69012B06D17B681B6880
|
||||
S31508006DD843F010027B681A6005E07B681B6823F09D
|
||||
S31508006DE810027B681A603B689B69012B06D17B6891
|
||||
S31508006DF81B6843F008027B681A6005E07B681B6815
|
||||
S31508006E0823F008027B681A603B68DB69012B06D108
|
||||
S31508006E187B681B6843F004027B681A6005E07B6898
|
||||
S31508006E281B6823F004027B681A603B689B784FEA64
|
||||
S31508006E3883723B68DB784FEA03631A433B681B791E
|
||||
S31508006E484FEA03431A433B685B794FEA03531A43ED
|
||||
S31508006E583B681B8803F1FF331A437B68DA617B6852
|
||||
S31508006E681B6823F001027B681A604FF00003BB60B9
|
||||
S31508006E7803E0BB6803F10103BB607B685B6803F04A
|
||||
S31508006E880103DBB2002B04D0BA684FF6FF739A42A7
|
||||
S31508006E98EFD17B685B6803F00103DBB2002B03D0F4
|
||||
S31508006EA84FF00003FB7302E04FF00103FB73FB7B13
|
||||
S31508006EB8184607F11007BD4680BC704780B482B0F3
|
||||
S31508006EC800AF38604FF000037B603B689B7A4FF051
|
||||
S31508006ED8010202FA03F37B604FF4C843C4F20003C5
|
||||
S31508006EE84FF4C842C4F20002D2F8002242F0010266
|
||||
S31508006EF8C3F800224FF4C843C4F200034FF4C8424B
|
||||
S31508006F08C4F20002D2F81C127A686FEA02020A4032
|
||||
S31508006F18C3F81C223B681B7B002B32D14FF4C843AD
|
||||
S31508006F28C4F200034FF4C842C4F20002D2F80C12A5
|
||||
S31508006F387A686FEA02020A40C3F80C224FF4C8437B
|
||||
S31508006F48C4F200033A68927A3968C9884FEA014058
|
||||
S31508006F5839684988014302F1480243F832104FF468
|
||||
S31508006F68C842C4F200023B689B7A396889884FEAA6
|
||||
S31508006F7801403968098801434FEAC303D318C3F89F
|
||||
S31508006F8844123B681B7B012B30D14FF4C843C4F22B
|
||||
S31508006F9800034FF4C842C4F20002D2F80C127A6809
|
||||
S31508006FA80A43C3F80C224FF4C843C4F200033A68EC
|
||||
S31508006FB8927A396809884FEA01403968498801434D
|
||||
S31508006FC802F1480243F832104FF4C842C4F20002EC
|
||||
S31508006FD83B689B7A396889884FEA01403968C988C5
|
||||
S31508006FE801434FEAC303D318C3F844123B68DB7A54
|
||||
S31508006FF8002B10D14FF4C843C4F200034FF4C8421B
|
||||
S31508007008C4F20002D2F804127A686FEA02020A4049
|
||||
S31508007018C3F804220DE04FF4C843C4F200034FF442
|
||||
S31508007028C842C4F20002D2F804127A680A43C3F8BE
|
||||
S3150800703804223B681B89002B0FD14FF4C843C4F2BE
|
||||
S3150800704800034FF4C842C4F20002D2F814127A6850
|
||||
S315080070586FEA02020A40C3F814223B681B89012B0F
|
||||
S315080070680DD14FF4C843C4F200034FF4C842C4F222
|
||||
S315080070780002D2F814127A680A43C3F814223B6845
|
||||
S315080070881B69012B0DD14FF4C843C4F200034FF412
|
||||
S31508007098C842C4F20002D2F81C127A680A43C3F836
|
||||
S315080070A81C224FF4C843C4F200034FF4C842C4F282
|
||||
S315080070B80002D2F8002222F00102C3F8002207F1E2
|
||||
S315080070C80807BD4680BC704780B481B000AF3860F9
|
||||
S315080070D83B684FF000029A603B684FF00002DA609E
|
||||
S315080070E83B684FF000021A613B684FF000025A618C
|
||||
S315080070F83B684FF000029A613B684FF00002DA617C
|
||||
S315080071083B684FF000029A703B684FF00002DA704D
|
||||
S315080071183B684FF003021A713B684FF002025A7136
|
||||
S315080071283B684FF001021A8007F10407BD4680BC88
|
||||
S31508007138704700BF80B483B000AFB8600B463A60AA
|
||||
S315080071483B713B79BA6803F11B034FEA0313D3185B
|
||||
S315080071581B68DBB203F00403DAB23B681A723B68B1
|
||||
S315080071681B7A002B0CD13B79BA6803F11B034FEA4B
|
||||
S315080071780313D3181B684FEA53523B681A600BE08F
|
||||
S315080071883B79BA6803F11B034FEA0313D3181B6844
|
||||
S315080071984FEAD3023B685A603B79BA6803F11B0386
|
||||
S315080071A84FEA0313D3181B68DBB203F00203DAB2FB
|
||||
S315080071B83B685A723B79BA684FEA0313D31803F542
|
||||
S315080071C8DA731B68DBB203F00F03DAB23B689A720C
|
||||
S315080071D83B79BA684FEA0313D31803F5DA731B68C1
|
||||
S315080071E84FEA1323DAB23B68DA743B79BA684FEA8E
|
||||
S315080071F80313D31803F5DC731B68DAB23B68DA7233
|
||||
S315080072083B79BA684FEA0313D31803F5DC731B688E
|
||||
S315080072184FEA1323DAB23B681A733B79BA684FEA1E
|
||||
S315080072280313D31803F5DC731B684FEA1343DAB262
|
||||
S315080072383B685A733B79BA684FEA0313D31803F5C0
|
||||
S31508007248DC731B684FEA1363DAB23B689A733B79B7
|
||||
S31508007258BA684FEA0313D31803F5DE731B68DAB264
|
||||
S315080072683B68DA733B79BA684FEA0313D31803F510
|
||||
S31508007278DE731B684FEA1323DAB23B681A743B7944
|
||||
S31508007288BA684FEA0313D31803F5DE731B684FEA87
|
||||
S315080072981343DAB23B685A743B79BA684FEA031360
|
||||
S315080072A8D31803F5DE731B684FEA1363DAB23B6833
|
||||
S315080072B89A743B79002B06D1BB68DB6843F0200239
|
||||
S315080072C8BB68DA6005E0BB681B6943F02002BB6847
|
||||
S315080072D81A6107F10C07BD4680BC704780B483B0B5
|
||||
S315080072E800AF78600B463B704FF00003FB723B78A3
|
||||
S315080072F8002B06D17B68DB68DBB203F00303FB725D
|
||||
S315080073080CE03B78012B06D17B681B69DBB203F0DE
|
||||
S315080073180303FB7202E04FF00003FB72FB7A184680
|
||||
S3150800732807F10C07BD4680BC704700BF80B488B01B
|
||||
S3150800733800AF786039604FF00003FB614FF0000337
|
||||
S315080073483B614FF00003BB614FF00003FB604FF051
|
||||
S3150800735800037B614FF00003BB603B689B6803F042
|
||||
S315080073680F03FB613B689B6803F01003002B04D0EE
|
||||
S315080073783B685B68FA691343FB613B681B88DBB2A9
|
||||
S31508007388002B4ED07B681B687B614FF00003BB61FE
|
||||
S3150800739841E0BB694FF0010202FA03F3FB603B6860
|
||||
S315080073A81B881A46FB6813403B613A69FB689A4290
|
||||
S315080073B82DD1BB694FEA8303FB60FB684FF00F02C8
|
||||
S315080073C802FA03F3BB60BB686FEA03037A691340E2
|
||||
S315080073D87B61FB68FA6902FA03F37A6913437B61EE
|
||||
S315080073E83B689B68282B07D1BB694FF0010202FA54
|
||||
S315080073F803F27B685A610AE03B689B68482B06D10A
|
||||
S31508007408BB694FF0010202FA03F27B681A61BB698D
|
||||
S3150800741803F10103BB61BB69072BBAD97B687A6993
|
||||
S315080074281A603B681B88FF2B53D97B685B687B61AE
|
||||
S315080074384FF00003BB6146E0BB6903F108034FF050
|
||||
S31508007448010202FA03F3FB603B681B881A46FB68CD
|
||||
S3150800745813403B613A69FB689A4230D1BB694FEAE7
|
||||
S315080074688303FB60FB684FF00F0202FA03F3BB6065
|
||||
S31508007478BB686FEA03037A6913407B61FB68FA699C
|
||||
S3150800748802FA03F37A6913437B613B689B68282BE6
|
||||
S3150800749808D1BB6903F108034FF0010202FA03F2A7
|
||||
S315080074A87B685A613B689B68482B08D1BB6903F11E
|
||||
S315080074B808034FF0010202FA03F27B681A61BB69F6
|
||||
S315080074C803F10103BB61BB69072BB5D97B687A69E8
|
||||
S315080074D85A6007F12007BD4680BC704780B482B061
|
||||
S315080074E800AF78600B463B803A887B681A6107F1DB
|
||||
S315080074F80807BD4680BC704780B482B000AF786084
|
||||
S315080075080B463B803A887B685A6107F10807BD46EF
|
||||
S3150800751880BC704780B486B000AF786039604FF099
|
||||
S3150800752800033B614FF00003FB604FF000037B61EB
|
||||
S315080075384FF00003BB607B68002B06DA4FF00003A8
|
||||
S31508007548C4F20103DB697B6105E04FF00003C4F26E
|
||||
S3150800755801035B687B617B6803F470234FEA134376
|
||||
S31508007568BB607B684FEA03434FEA13433B617B687A
|
||||
S3150800757803F44013B3F5401F10D17B6923F07063F9
|
||||
S315080075887B614FF00003C4F201034FF00002C4F216
|
||||
S315080075980102526822F070625A6026E07B6803F49A
|
||||
S315080075A88013002B10D0BB684FF0030202FA03F3CE
|
||||
S315080075B8FB60FB686FEA03037A6913407B617B69A2
|
||||
S315080075C843F070637B6110E07B684FEA53534FEAD8
|
||||
S315080075D803133A6902FA03F36FEA03037A69134055
|
||||
S315080075E87B617B6943F070637B613B68002B0AD03B
|
||||
S315080075F87B684FEA53534FEA03133A6902FA03F3CF
|
||||
S315080076087A6913437B617B68002B06DA4FF000031F
|
||||
S31508007618C4F201037A69DA6105E04FF00003C4F29F
|
||||
S3150800762801037A695A6007F11807BD4680BC704796
|
||||
S3150800763880B485B000AF38604FF000033B614FF067
|
||||
S315080076480003FB604FF00003BB604FF000037B604C
|
||||
S315080076584FF48053C4F202035B6803F00C033B61E2
|
||||
S315080076683B69042B0AD0082B0FD0002B4DD13A685A
|
||||
S315080076784FF49053C0F27A0313604DE03A684FF41A
|
||||
S315080076889053C0F27A03136046E04FF48053C4F26D
|
||||
S3150800769802035B6803F47013FB604FF48053C4F26B
|
||||
S315080076A802035B6803F48033BB60FB684FEA9343C5
|
||||
S315080076B803F10203FB60BB68002B09D1FA684FF493
|
||||
S315080076C81063C0F23D0303FB02F23B681A6023E02D
|
||||
S315080076D84FF48053C4F202035B6803F40033002BAB
|
||||
S315080076E809D0FA684FF41063C0F23D0303FB02F2AF
|
||||
S315080076F83B681A6010E0FA684FF49053C0F27A03B0
|
||||
S3150800770803FB02F23B681A6006E03A684FF49053A6
|
||||
S31508007718C0F27A03136000BF4FF48053C4F2020321
|
||||
S315080077285B6803F0F0033B613B694FEA13133B615F
|
||||
S3150800773840F20003C2F200033A699B181B78DBB2D1
|
||||
S315080077487B603B681A687B6822FA03F23B685A60D2
|
||||
S315080077584FF48053C4F202035B6803F4E0633B61A9
|
||||
S315080077683B694FEA13233B6140F20003C2F2000368
|
||||
S315080077783A699B181B78DBB27B603B685A687B685A
|
||||
S3150800778822FA03F23B689A604FF48053C4F2020364
|
||||
S315080077985B6803F460533B613B694FEAD3233B615B
|
||||
S315080077A840F20003C2F200033A699B181B78DBB261
|
||||
S315080077B87B603B685A687B6822FA03F23B68DA60A2
|
||||
S315080077C84FF48053C4F202035B6803F440433B61F9
|
||||
S315080077D83B694FEA93333B6140F21003C2F2000358
|
||||
S315080077E83A699B181B78DBB27B603B68DA687B686A
|
||||
S315080077F8B2FBF3F23B681A6107F11407BD4680BC71
|
||||
S31508007808704700BF80B482B000AF786039603B68C3
|
||||
S31508007818002B0CD04FF48053C4F202034FF4805265
|
||||
S31508007828C4F2020291697A680A439A610DE04FF434
|
||||
S315080078388053C4F202034FF48052C4F202029169DB
|
||||
S315080078487A686FEA02020A409A6107F10807BD4694
|
||||
S3150800785880BC704780B482B000AF786039603B68F6
|
||||
S31508007868002B0CD04FF48053C4F202034FF4805215
|
||||
S31508007878C4F20202D1697A680A43DA610DE04FF464
|
||||
S315080078888053C4F202034FF48052C4F20202D1694B
|
||||
S315080078987A686FEA02020A40DA6107F10807BD4604
|
||||
S315080078A880BC704780B482B000AF786039603B68A6
|
||||
S315080078B8002B0CD04FF48053C4F202034FF48052C5
|
||||
S315080078C8C4F2020211697A680A431A610DE04FF494
|
||||
S315080078D88053C4F202034FF48052C4F202021169BB
|
||||
S315080078E87A686FEA02020A401A6107F10807BD4674
|
||||
S315080078F880BC704780B58CB000AF786039604FF0AF
|
||||
S315080079080003FB624FF00003BB624FF000037B6283
|
||||
S315080079184FF000033B624FF00003FB617B68FB6195
|
||||
S315080079287B681B8A9BB2FB62FA6A4CF6FF731340A4
|
||||
S31508007938FB623B68DB88FA6A1343FB62FB6A9AB206
|
||||
S315080079487B681A827B689B899BB2FB62FA6A4EF649
|
||||
S31508007958F3131340FB623B689A883B681B891343F9
|
||||
S315080079689AB23B685B8913439BB2FA6A1343FB6274
|
||||
S31508007978FB6A9AB27B689A817B689B8A9BB2FB6290
|
||||
S31508007988FA6A4FF6FF431340FB623B689B89FA6A1B
|
||||
S315080079981343FB62FB6A9AB27B689A8207F108036B
|
||||
S315080079A8184647F23963C0F600039847FA694FF450
|
||||
S315080079B86053C4F201039A4202D17B69BB6201E0B3
|
||||
S315080079C83B69BB627B689B899BB29BB21BB2002B47
|
||||
S315080079D80FDABA6A13464FEA83039B184FEA8302FB
|
||||
S315080079E89A183B681B684FEA4303B2FBF3F37B62BA
|
||||
S315080079F80EE0BA6A13464FEA83039B184FEA8302D6
|
||||
S31508007A089A183B681B684FEA8303B2FBF3F37B6259
|
||||
S31508007A187A6A48F21F53C5F2EB13A3FB02134FEA1F
|
||||
S31508007A2853134FEA0313FB62FB6A4FEA13134FF02B
|
||||
S31508007A38640202FB03F37A6AD31A3B627B689B8962
|
||||
S31508007A489BB29BB21BB2002B12DA3B6A4FEAC303FE
|
||||
S31508007A5803F1320248F21F53C5F2EB13A3FB0213D4
|
||||
S31508007A684FEA531303F00703FA6A1343FB6211E05C
|
||||
S31508007A783B6A4FEA031303F1320248F21F53C5F271
|
||||
S31508007A88EB13A3FB02134FEA531303F00F03FA6A27
|
||||
S31508007A981343FB62FB6A9AB27B681A8107F13007BF
|
||||
S31508007AA8BD4680BD80B482B000AF786039603B6857
|
||||
S31508007AB8002B08D07B689B899BB243F400539AB283
|
||||
S31508007AC87B689A8107E07B689B899BB223F40053FD
|
||||
S31508007AD89AB27B689A8107F10807BD4680BC704749
|
||||
S31508007AE880B481B000AF38603B689B889BB24FEA88
|
||||
S31508007AF8C3534FEAD3539BB2184607F10407BD464A
|
||||
S31508007B0880BC704780B483B000AF78600B463B8072
|
||||
S31508007B184FF00003BB607B681B889AB23B8813400A
|
||||
S31508007B289BB2002B03D04FF00103BB6002E04FF075
|
||||
S31508007B380003BB60BB68184607F10C07BD4680BC46
|
||||
S31508007B48704700BF30B504460D4600F017F840F2F6
|
||||
S31508007B586C03C2F200031D6040F27003C2F2000310
|
||||
S31508007B681C601A461368002BFCD100F009F840F28D
|
||||
S31508007B786C03C2F20003186830BD00BF704700BF27
|
||||
S30908007B88704700BF75
|
||||
S31508007B8C05020000060200000603000007030000B9
|
||||
S31508007B9C0803000009030000090400000A04000099
|
||||
S31508007BAC0B0400000C0400000C0500000D05000079
|
||||
S31508007BBC0E0500000F0500000F0600001006000059
|
||||
S30D08007BCC100700001008000074
|
||||
S31508007BD40000000001020304010203040607080961
|
||||
S30908007BE4020406087B
|
||||
S705080061F79A
|
||||
S315080061542B49072291438D462A482B492B4A00F09E
|
||||
S3150800616439F82B482B492C4A00F034F82B482C498B
|
||||
S315080061742C4A00F02FF82C482C492D4A00F02AF80E
|
||||
S315080061842C482D492D4A00F025F82D482D492E4A2C
|
||||
S3150800619400F020F82D482E49002200F026F82D4854
|
||||
S315080061A42D49091A082903DB00220260043001601C
|
||||
S315080061B41E481F49884205D00268043003B4904734
|
||||
S315080061C403BCF7E700208646EC4600200021234A54
|
||||
S315080061D49047FEE7884207D0521A05D00378013063
|
||||
S315080061E40B700131013AF9D17047884202D0027026
|
||||
S315080061F40130FAE770471A481A490160A8E700000F
|
||||
S31508006204E8010020007600080000002014000020A1
|
||||
S315080062146C6200086C620008DC75000800760008E9
|
||||
S315080062240000002000000020DC750008DC7500086A
|
||||
S31508006234DC750008DC750008DC750008DC750008E8
|
||||
S31508006244DC750008DC7500080076000814000020D8
|
||||
S315080062546600002068000020E8000020216300088A
|
||||
S30D0800626408ED00E000600008E7
|
||||
S3150800626C80B582B000AF012110200B4B98474FF434
|
||||
S3150800627C8053BB800323BB711023FB713B1D19464E
|
||||
S3150800628C0648074B98474FF480510448054B9847E6
|
||||
S3150800629C00BF0837BD4680BD1973000800100140C1
|
||||
S315080062AC296F0008A170000880B582B000AF134BA7
|
||||
S315080062BC98477860124B1B687A68D31AB3F5FA7F3D
|
||||
S315080062CC18D3104B1B78002B08D10E4B01221A70D1
|
||||
S315080062DC4FF480510C480D4B984707E0094B0022A8
|
||||
S315080062EC1A704FF480510848094B9847044A7B6842
|
||||
S315080062FC136000E000BF0837BD4680BD8165000805
|
||||
S3150800630C140000201800002000100140BD70000881
|
||||
S3150800631CA170000880B500AF044B9847044B98470A
|
||||
S3150800632C044B9847044B9847FAE700BF49630008A3
|
||||
S3150800633CE1650008B5620008F965000880B584B007
|
||||
S3150800634C00AF0023BB6000237B604F4A4E4B1B6893
|
||||
S3150800635C43F0010313604C494B4B5A684B4B1340A3
|
||||
S3150800636C4B60494A484B1B6823F0847323F48033EB
|
||||
S3150800637C1360454A444B1B6823F480231360424A36
|
||||
S3150800638C414B5B6823F4FE0353603F4B4FF41F02EB
|
||||
S3150800639C9A603D4A3C4B1B6843F4803313603A4B76
|
||||
S315080063AC1B6803F400337B60BB680133BB607B68F6
|
||||
S315080063BC002B04D1BB6840F2DC529342EFD1324B2E
|
||||
S315080063CC1B6803F40033002B00D1FEE7304A304B30
|
||||
S315080063DC1B6843F0100313602D4A2D4B1B6823F0E2
|
||||
S315080063EC030313602A4A2A4B1B6843F00203136003
|
||||
S315080063FC254A254B5B685360234A234B5B6843F459
|
||||
S3150800640C00535360204A204B5B6843F48063536007
|
||||
S3150800641C1D4A1D4B5B6823F47C1353600923FB60F0
|
||||
S3150800642CFB68023B9B04FB601749174B5A68FB68D1
|
||||
S3150800643C134343F480334B60134A134B1B6843F0E6
|
||||
S3150800644C8073136000BF104B1B6803F00073002B9E
|
||||
S3150800645CF9D00D4A0C4B5B6823F0030353600A4AC8
|
||||
S3150800646C094B5B6843F00203536000BF064B5B683D
|
||||
S3150800647C03F00C03082BF9D1064B9847064B9847A3
|
||||
S3150800648C00BF1037BD4680BD001002400000FFF863
|
||||
S3150800649C002002406D6200084565000880B483B090
|
||||
S315080064AC00AF03463960FB7197F90730002B0BDAFE
|
||||
S315080064BC0D49FB7903F00F03043B3A68D2B212017B
|
||||
S315080064CCD2B20B441A7609E0084997F907303A68AC
|
||||
S315080064DCD2B21201D2B20B4483F8002300BF0C3798
|
||||
S315080064ECBD4680BC704700BF00ED00E000E100E04F
|
||||
S315080064FC80B582B000AF78607B68B3F1807F01D33A
|
||||
S3150800650C012311E00A4A7B6823F07F43013B536061
|
||||
S3150800651C0F214FF0FF30074B9847054B00229A6026
|
||||
S3150800652C034B07221A60002318460837BD4680BD60
|
||||
S3150800653C10E000E0A964000880B500AF0348044BDE
|
||||
S3150800654C98470020034B984700BF80BD40190100AF
|
||||
S3150800655CFD6400086565000880B483B000AF7860F8
|
||||
S3150800656C034A7B68136000BF0C37BD4680BC704776
|
||||
S3150800657C1C00002080B400AF024B1B681846BD46B1
|
||||
S3150800658C80BC70471C00002080B400AF044B1B680D
|
||||
S3150800659C0133034A136000BFBD4680BC704700BF79
|
||||
S315080065AC1C00002080B400AFFEE700BF80B400AF2B
|
||||
S315080065BCBFF34F8F0549054BDB6803F4E062044BC8
|
||||
S315080065CC1343CB60BFF34F8FFEE700BF00ED00E02F
|
||||
S315080065DC0400FA0580B500AF024B9847024B984762
|
||||
S315080065EC00BF80BD216600083D68000880B500AF75
|
||||
S315080065FC024B9847024B984700BF80BDB56600080A
|
||||
S3150800660C6569000880B500AF014B984700BF80BD8F
|
||||
S3150800661CB965000880B586B000AF01214FF400308B
|
||||
S3150800662C1A4B984701210520194B98471823FB75D7
|
||||
S3150800663C0423BB820323BB7507F1140319461548BB
|
||||
S3150800664C154B98470423FB750823BB8207F11403E3
|
||||
S3150800665C19461048104B98474FF461437B6000234A
|
||||
S3150800666C3B8100237B810023BB8100233B820C23C7
|
||||
S3150800667CFB813B1D19460948094B984701210748D8
|
||||
S3150800668C084B984700BF1837BD4680BD55730008A0
|
||||
S3150800669C1973000800080140296F000800440040DF
|
||||
S315080066ACCD7300084575000880B500AF1B4B1B78E9
|
||||
S315080066BC002B0CD11A481B4B98470346012B2AD1A1
|
||||
S315080066CC164B01221A70184B00221A7023E0164B2F
|
||||
S315080066DC1B780133124A13441846124B9847034643
|
||||
S315080066EC012B18D1104B1B780133DAB20E4B1A70EA
|
||||
S315080066FC0B4B1A780C4B1B789A420CD1074B002281
|
||||
S3150800670C1A70074B5B78FF2B05D1054B9B78002B32
|
||||
S3150800671C01D1064B984700BF80BD00BF2000002062
|
||||
S3150800672C240000203D67000865000020116600085B
|
||||
S3150800673C80B582B000AF786020210A480A4B98478A
|
||||
S3150800674C0346012B08D10748084B98470346DAB28B
|
||||
S3150800675C7B681A70012300E0002318460837BD46EB
|
||||
S3150800676C80BD00BF00440040A5750008857500086B
|
||||
S3150800677C80B487B000AFB9607A603B600346FB8192
|
||||
S3150800678C0023FB7548E0FA89FB7D284911F813307C
|
||||
S3150800679C1846FB7D25495B000B445B7803440133A3
|
||||
S315080067AC03FB02F348F6A04292FBF3F103FB01F359
|
||||
S315080067BCD31A002B2DD1FA89FB7D1C4911F81330FD
|
||||
S315080067CC1846FB7D19495B000B445B78034401337F
|
||||
S315080067DC03FB02F348F6A04292FBF3F39AB2BB68AA
|
||||
S315080067EC1A80BB681B88002B13D0BB681B88B3F5B3
|
||||
S315080067FC806F0ED8FB7D0D4A12F813207B681A7031
|
||||
S3150800680CFB7D0A4A5B0013445A783B681A700123CD
|
||||
S3150800681C06E0FB7D0133FB75FB7D112BB3D90023F9
|
||||
S3150800682C18461C37BD4680BC704700BFDC7500088F
|
||||
S3150800683C90B58BB000AF012101203C4B9847012144
|
||||
S3150800684C08203A4B98474FF48073BB84482387F843
|
||||
S3150800685C273007F1240319463548364B98474FF429
|
||||
S3150800686C0073BB84182387F82730032387F8263050
|
||||
S3150800687C07F1240319462E482E4B984701214FF44D
|
||||
S3150800688CEA102D4B984701214FF000702B4B984777
|
||||
S3150800689C2B482C4B984707F1180318462A4B984750
|
||||
S315080068AC3B1D7A1DB91D4FF4FA70284CA0470023DE
|
||||
S315080068BCBB770023FB77002387F82030002387F863
|
||||
S315080068CC2130002387F82230002387F82330002351
|
||||
S315080068DCBB760023FB767B79013BDBB23B773B79B6
|
||||
S315080068EC013BDBB27B77FB883B8307F11803194620
|
||||
S315080068FC1348174B98470023BB740023FB740123DA
|
||||
S3150800690C3B7500233B8100237B810023BB8100233D
|
||||
S3150800691CFB8100233B8201237B7507F1080318468C
|
||||
S3150800692C0C4B984700BF2C37BD4690BD1973000811
|
||||
S3150800693C000C0140296F0008D9700008557300082F
|
||||
S3150800694C00640040B9690008196D00087D670008E5
|
||||
S3150800695C056A0008A56B000880B586B000AF002153
|
||||
S3150800696C0E480F4B98470346002B12D03B1D1A4670
|
||||
S3150800697C00210A480B4B98477B6840F267629342A2
|
||||
S3150800698C07D1FB7BFF2B04D13B7C002B01D1064B9B
|
||||
S3150800699C984700BF1837BD4680BD00BF006400404D
|
||||
S315080069ACE16E00086D6D00081166000880B582B0AE
|
||||
S315080069BC00AF78607B680E4A93420AD101214FF0EA
|
||||
S315080069CC00700C4B984700214FF00070094B984704
|
||||
S315080069DC09E001214FF08060064B984700214FF0E3
|
||||
S315080069EC8060044B984700BF0837BD4680BD00BF82
|
||||
S315080069FC006400409173000880B485B000AF7860DD
|
||||
S31508006A0C39600023FB730023BB607B681B6823F08B
|
||||
S31508006A1C02027B681A607B681B6843F001027B687C
|
||||
S31508006A2C1A6002E0BB680133BB607B685B6803F0E5
|
||||
S31508006A3C0103002B04D1BB684FF6FF729342F1D1C8
|
||||
S31508006A4C7B685B6803F00103002B02D10023FB7300
|
||||
S31508006A5C9CE03B689B79012B06D17B681B6843F04D
|
||||
S31508006A6C80027B681A6005E07B681B6823F080024D
|
||||
S31508006A7C7B681A603B68DB79012B06D17B681B683F
|
||||
S31508006A8C43F040027B681A6005E07B681B6823F0BC
|
||||
S31508006A9C40027B681A603B681B7A012B06D17B681F
|
||||
S31508006AAC1B6843F020027B681A6005E07B681B684C
|
||||
S31508006ABC23F020027B681A603B685B7A012B06D1AF
|
||||
S31508006ACC7B681B6843F010027B681A6005E07B68DC
|
||||
S31508006ADC1B6823F010027B681A603B689B7A012BB3
|
||||
S31508006AEC06D17B681B6843F008027B681A6005E0D0
|
||||
S31508006AFC7B681B6823F008027B681A603B68DB7AA4
|
||||
S31508006B0C012B06D17B681B6843F004027B681A606C
|
||||
S31508006B1C05E07B681B6823F004027B681A603B68F7
|
||||
S31508006B2C9B789A073B68DB781B061A433B681B79EC
|
||||
S31508006B3C1B041A433B685B791B051A433B681B8885
|
||||
S31508006B4C013B1A437B68DA617B681B6823F00102F8
|
||||
S31508006B5C7B681A600023BB6002E0BB680133BB602C
|
||||
S31508006B6C7B685B6803F00103002B04D0BB684FF607
|
||||
S31508006B7CFF729342F1D17B685B6803F00103002B2B
|
||||
S31508006B8C02D00023FB7301E00123FB73FB7B184641
|
||||
S31508006B9C1437BD4680BC704780B485B000AF7860AA
|
||||
S31508006BAC0023FB607B689B7A1A4601239340FB60A3
|
||||
S31508006BBC554A554BD3F8003243F00103C2F800325C
|
||||
S31508006BCC5149514BD3F81C22FB68DB431340C1F8DF
|
||||
S31508006BDC1C327B681B7B002B25D14B494A4BD3F8BF
|
||||
S31508006BEC0C22FB68DB431340C1F80C3246497B6820
|
||||
S31508006BFC9B7A18467B68DB881B047A6852881A438A
|
||||
S31508006C0C00F1480341F833203F497B689B7A1846C4
|
||||
S31508006C1C7B689B881B047A6812881A4300F1480320
|
||||
S31508006C2CDB000B445A607B681B7B012B24D136494D
|
||||
S31508006C3C354BD3F80C22FB681343C1F80C32324996
|
||||
S31508006C4C7B689B7A18467B681B881B047A68528873
|
||||
S31508006C5C1A4300F1480341F833202B497B689B7A89
|
||||
S31508006C6C18467B689B881B047A68D2881A4300F1FD
|
||||
S31508006C7C4803DB000B445A607B68DB7A002B09D18E
|
||||
S31508006C8C2149214BD3F80422FB68DB431340C1F896
|
||||
S31508006C9C043207E01C491C4BD3F80422FB68134347
|
||||
S31508006CACC1F804327B681B89002B08D11649164B90
|
||||
S31508006CBCD3F81422FB68DB431340C1F814327B6803
|
||||
S31508006CCC1B89012B07D110490F4BD3F81422FB68EB
|
||||
S31508006CDC1343C1F814327B685B7B012B07D10A4935
|
||||
S31508006CEC094BD3F81C22FB681343C1F81C32064A1D
|
||||
S31508006CFC054BD3F8003223F00103C2F8003200BF6B
|
||||
S31508006D0C1437BD4680BC70470064004080B483B01D
|
||||
S31508006D1C00AF78607B6800229A717B680022DA7172
|
||||
S31508006D2C7B6800221A727B6800225A727B680022E2
|
||||
S31508006D3C9A727B680022DA727B6800229A707B68EA
|
||||
S31508006D4C0022DA707B6803221A717B6802225A7158
|
||||
S31508006D5C7B6801221A8000BF0C37BD4680BC704781
|
||||
S31508006D6C80B485B000AFF8600B467A60FB72FB7A8C
|
||||
S31508006D7CFA681B331B0113441B68DBB203F00403CC
|
||||
S31508006D8CDAB27B681A727B681B7A002B09D1FB7AFC
|
||||
S31508006D9CFA681B331B0113441B685A0D7B681A606F
|
||||
S31508006DAC08E0FB7AFA681B331B0113441B68DA08E4
|
||||
S31508006DBC7B685A60FB7AFA681B331B0113441B6801
|
||||
S31508006DCCDBB203F00203DAB27B685A72FB7AFA6812
|
||||
S31508006DDC1B331B01134404331B68DBB203F00F038C
|
||||
S31508006DECDAB27B689A72FB7AFA681B331B01134476
|
||||
S31508006DFC04331B681B0ADAB27B68DA74FB7AFA6806
|
||||
S31508006E0C1B01134403F5DC731B68DAB27B68DA7270
|
||||
S31508006E1CFB7AFA681B01134403F5DC731B681B0A1F
|
||||
S31508006E2CDAB27B681A73FB7AFA681B01134403F50A
|
||||
S31508006E3CDC731B681B0CDAB27B685A73FB7AFA682C
|
||||
S31508006E4C1B01134403F5DC731B681B0EDAB27B6853
|
||||
S31508006E5C9A73FB7AFA681B01134403F5DE731B68F5
|
||||
S31508006E6CDAB27B68DA73FB7AFA681B01134403F50A
|
||||
S31508006E7CDE731B681B0ADAB27B681A74FB7AFA682B
|
||||
S31508006E8C1B01134403F5DE731B681B0CDAB27B6813
|
||||
S31508006E9C5A74FB7AFA681B01134403F5DE731B68F4
|
||||
S31508006EAC1B0EDAB27B689A74FB7A002B06D1FB6848
|
||||
S31508006EBCDB6843F02002FB68DA6005E0FB681B69B7
|
||||
S31508006ECC43F02002FB681A6100BF1437BD4680BC2C
|
||||
S31508006EDC704700BF80B485B000AF78600B46FB7076
|
||||
S31508006EEC0023FB73FB78002B06D17B68DB68DBB2CF
|
||||
S31508006EFC03F00303FB730BE0FB78012B06D17B68CD
|
||||
S31508006F0C1B69DBB203F00303FB7301E00023FB737D
|
||||
S31508006F1CFB7B18461437BD4680BC704780B489B0D5
|
||||
S31508006F2C00AF786039600023FB6100233B610023C6
|
||||
S31508006F3CBB610023FB6000237B610023BB603B68BD
|
||||
S31508006F4CDB7803F00F03FB613B68DB7803F0100377
|
||||
S31508006F5C002B05D03B689B781A46FB691343FB61EB
|
||||
S31508006F6C3B681B88DBB2002B44D07B681B687B61B3
|
||||
S31508006F7C0023BB6138E00122BB6902FA03F3FB600C
|
||||
S31508006F8C3B681B881A46FB6813403B613A69FB68E9
|
||||
S31508006F9C9A4226D1BB699B00FB600F22FB6802FA5A
|
||||
S31508006FAC03F3BB60BB68DB437A6913407B61FA6900
|
||||
S31508006FBCFB6802FA03F37A6913437B613B68DB7857
|
||||
S31508006FCC282B05D10122BB699A407B685A6108E0D7
|
||||
S31508006FDC3B68DB78482B04D10122BB699A407B6855
|
||||
S31508006FEC1A61BB690133BB61BB69072BC3D97B68C3
|
||||
S31508006FFC7A691A603B681B88FF2B46D97B685B68E5
|
||||
S3150800700C7B610023BB613AE0BB690833012202FAB3
|
||||
S3150800701C03F3FB603B681B881A46FB6813403B610D
|
||||
S3150800702C3A69FB689A4227D1BB699B00FB600F2221
|
||||
S3150800703CFB6802FA03F3BB60BB68DB437A6913404F
|
||||
S3150800704C7B61FA69FB6802FA03F37A6913437B617D
|
||||
S3150800705C3B68DB78282B05D1BB69083301229A409B
|
||||
S3150800706C7B685A613B68DB78482B05D1BB690833CA
|
||||
S3150800707C01229A407B681A61BB690133BB61BB6903
|
||||
S3150800708C072BC1D97B687A695A6000BF2437BD467D
|
||||
S3150800709C80BC704780B483B000AF78600B467B80A9
|
||||
S315080070AC7A887B681A6100BF0C37BD4680BC70476E
|
||||
S315080070BC80B483B000AF78600B467B807A887B6897
|
||||
S315080070CC5A6100BF0C37BD4680BC704780B487B088
|
||||
S315080070DC00AF78600B46FB7000233B610023FB6016
|
||||
S315080070EC00237B610023BB607B68002B03DA2E4BE5
|
||||
S315080070FCDB697B6102E02C4B5B687B617B681B0C54
|
||||
S3150800710C03F00F03BB607B689BB23B617B6803F49F
|
||||
S3150800711C4013B3F5401F0AD17B6923F070637B617A
|
||||
S3150800712C214A214B5B6823F07063536021E07B682E
|
||||
S3150800713C03F48013002B0ED00322BB6802FA03F368
|
||||
S3150800714CFB60FB68DB437A6913407B617B6943F020
|
||||
S3150800715C70637B610DE07B685B0D1B013A6902FA73
|
||||
S3150800716C03F3DB437A6913407B617B6943F07063F5
|
||||
S3150800717C7B61FB78002B08D07B685B0D1B013A6999
|
||||
S3150800718C02FA03F37A6913437B617B68002B03DAF3
|
||||
S3150800719C054A7B69D36102E0034A7B69536000BFE9
|
||||
S315080071AC1C37BD4680BC70470000014080B487B0D0
|
||||
S315080071BC00AF786000237B6100233B610023FB60F2
|
||||
S315080071CC0023BB604C4B5B6803F00C037B617B694B
|
||||
S315080071DC042B07D0082B09D0002B33D17B68474AE0
|
||||
S315080071EC1A6033E07B68454A1A602FE0424B5B68AD
|
||||
S315080071FC03F470133B61404B5B6803F48033FB600C
|
||||
S3150800720C3B699B0C02333B61FB68002B06D13B693F
|
||||
S3150800721C3B4A02FB03F27B681A6017E0364B5B6845
|
||||
S3150800722C03F40033002B06D03B69354A02FB03F204
|
||||
S3150800723C7B681A600AE03B69304A02FB03F27B68FA
|
||||
S3150800724C1A6003E07B682D4A1A6000BF2A4B5B68FC
|
||||
S3150800725C03F0F0037B617B691B097B61294A7B6917
|
||||
S3150800726C13441B78DBB2BB607B681A68BB68DA40D0
|
||||
S3150800727C7B685A60204B5B6803F4E0637B617B692F
|
||||
S3150800728C1B0A7B611F4A7B6913441B78DBB2BB6004
|
||||
S3150800729C7B685A68BB68DA407B689A60164B5B68F1
|
||||
S315080072AC03F460537B617B69DB0A7B61154A7B6956
|
||||
S315080072BC13441B78DBB2BB607B685A68BB68DA4040
|
||||
S315080072CC7B68DA600C4B5B6803F440437B617B6933
|
||||
S315080072DC9B0B7B610C4A7B6913441B78DBB2BB6046
|
||||
S315080072EC7B68DA68BB68B2FBF3F27B681A6100BF8D
|
||||
S315080072FC1C37BD4680BC70470010024000127A004D
|
||||
S3150800730C00093D00000000201000002080B483B066
|
||||
S3150800731C00AF78600B46FB70FB78002B06D009494A
|
||||
S3150800732C084B9A697B6813438B6106E00549054B44
|
||||
S3150800733C9A697B68DB4313408B6100BF0C37BD46EB
|
||||
S3150800734C80BC70470010024080B483B000AF7860F0
|
||||
S3150800735C0B46FB70FB78002B06D00949084BDA69FB
|
||||
S3150800736C7B681343CB6106E00549054BDA697B68F4
|
||||
S3150800737CDB431340CB6100BF0C37BD4680BC70475E
|
||||
S3150800738C0010024080B483B000AF78600B46FB70E7
|
||||
S3150800739CFB78002B06D00949084B1A697B681343FE
|
||||
S315080073AC0B6106E00549054B1A697B68DB431340FC
|
||||
S315080073BC0B6100BF0C37BD4680BC704700100240FD
|
||||
S315080073CC80B58CB000AF786039600023FB6200236F
|
||||
S315080073DCBB6200237B6200233B620023FB617B6854
|
||||
S315080073ECFB617B681B8A9BB2FB62FA6A4CF6FF73DD
|
||||
S315080073FC1340FB623B68DB881A46FB6A1343FB6245
|
||||
S3150800740CFB6A9AB27B681A827B689B899BB2FB6281
|
||||
S3150800741CFA6A4EF6F3131340FB623B689A883B688C
|
||||
S3150800742C1B8913439AB23B685B8913439BB21A4672
|
||||
S3150800743CFB6A1343FB62FB6A9AB27B689A817B6888
|
||||
S3150800744C9B8A9BB2FB62FA6A4FF6FF431340FB62B8
|
||||
S3150800745C3B689B891A46FB6A1343FB62FB6A9AB222
|
||||
S3150800746C7B689A8207F108031846304B9847FB69E4
|
||||
S3150800747C2F4A934202D17B69BB6201E03B69BB622E
|
||||
S3150800748C7B689B899BB21BB2002B0CDABA6A134633
|
||||
S3150800749C9B0013449A001A443B681B685B00B2FBBA
|
||||
S315080074ACF3F37B620BE0BA6A13469B0013449A000B
|
||||
S315080074BC1A443B681B689B00B2FBF3F37B627B6A3E
|
||||
S315080074CC1C4AA2FB03235B091B01FB62FB6A1B0913
|
||||
S315080074DC642202FB03F37A6AD31A3B627B689B89A4
|
||||
S315080074EC9BB21BB2002B0CDA3B6ADB003233114A17
|
||||
S315080074FCA2FB03235B0903F00703FA6A1343FB6237
|
||||
S3150800750C0BE03B6A1B0132330A4AA2FB03235B09D5
|
||||
S3150800751C03F00F03FA6A1343FB62FB6A9AB27B68A1
|
||||
S3150800752C1A8100BF3037BD4680BD00BFB97100084F
|
||||
S3150800753C003801401F85EB5180B483B000AF7860EA
|
||||
S3150800754C0B46FB70FB78002B08D07B689B899BB29B
|
||||
S3150800755C43F400539AB27B689A8107E07B689B894F
|
||||
S3150800756C9BB223F400539AB27B689A8100BF0C37FE
|
||||
S3150800757CBD4680BC704700BF80B483B000AF78604E
|
||||
S3150800758C7B689B889BB2C3F308039BB218460C37DF
|
||||
S3150800759CBD4680BC704700BF80B485B000AF78602C
|
||||
S315080075AC0B467B800023FB737B681B889AB27B880F
|
||||
S315080075BC13409BB2002B02D00123FB7301E000237E
|
||||
S315080075CCFB73FB7B18461437BD4680BC704700BF5F
|
||||
S315080075DC05020602060307030803090309040A043D
|
||||
S315080075EC0B040C040C050D050E050F050F061006ED
|
||||
S309080075FC100710084E
|
||||
S31508007600000000000102030401020304060708093A
|
||||
S309080076100204060854
|
||||
S705080061FB96
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Integrated Development Environment
|
||||
----------------------------------
|
||||
Rowleys CrossWorks (version 2.3.1) was used as the editor during the development of this software program. This directory contains
|
||||
Rowleys CrossWorks (version 3.7.6) was used as the editor during the development of this software program. This directory contains
|
||||
the CrossWorks project and solution files. More info is available at: http://www.rowley.co.uk/
|
|
@ -1,100 +1,146 @@
|
|||
<!DOCTYPE CrossStudio_Project_File>
|
||||
<solution Name="stm32f103_crossworks" target="8" version="2">
|
||||
<project Name="demoprog_olimex_stm32p103">
|
||||
<configuration Name="Common" Placement="Flash" Target="STM32F103RB" arm_architecture="v7M" arm_core_type="Cortex-M3" arm_linker_heap_size="128" arm_linker_jtag_pad_pre_dr="1" arm_linker_jtag_pad_pre_ir="5" arm_linker_process_stack_size="0" arm_linker_stack_size="128" arm_long_calls="Yes" arm_simulator_memory_simulation_filename="$(TargetsDir)/STM32/STM32SimulatorMemory.dll" arm_simulator_memory_simulation_parameter="STM32F103RB;0x20000;0x5000" arm_target_debug_interface_type="ADIv5" arm_target_loader_applicable_loaders="Flash" arm_target_loader_default_loader="Flash" arm_target_loader_parameter="8000000" arm_use_gcc_libraries="Yes" build_intermediate_directory="$(Configuration)/../../obj" build_output_directory="$(ProjectDir)/../bin" c_only_additional_options="" c_preprocessor_definitions="USE_STDPERIPH_DRIVER ;VECT_TAB_FLASH;GCC_ARMCM3" c_user_include_directories="$(ProjectDir)/..;$(ProjectDir)/../lib/stdperiphlib;$(ProjectDir)/../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc;$(ProjectDir)/../lib/stdperiphlib/CMSIS/CM3/CoreSupport;$(ProjectDir)/../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x" gcc_optimization_level="None" link_include_standard_libraries="Yes" linker_keep_symbols="_vectors" linker_memory_map_file="$(TargetsDir)/STM32/STM32F103RB_MemoryMap.xml" linker_output_format="srec" linker_printf_enabled="No" linker_printf_width_precision_supported="No" linker_scanf_enabled="No" linker_section_placement_file="$(StudioDir)/targets/Cortex_M/flash_placement.xml" oscillator_frequency="8MHz" project_directory="" project_type="Executable" property_groups_file_path="$(TargetsDir)/STM32/propertyGroups.xml" target_get_partname_script="GetPartName()" target_match_partname_script="MatchPartName("$(Target)")" target_reset_script="Reset()"/>
|
||||
<configuration Name="Flash" arm_target_flash_loader_file_path="$(TargetsDir)/STM32/Release/Loader_rpc.elf" arm_target_flash_loader_type="LIBMEM RPC Loader" arm_target_loader_can_lock_all="No" arm_target_loader_can_lock_range="No" arm_target_loader_can_unlock_all="No" arm_target_loader_can_unlock_range="No" target_reset_script="FLASHReset()"/>
|
||||
<configuration
|
||||
Name="Common"
|
||||
Placement="Flash"
|
||||
Target="STM32F103RB"
|
||||
arm_architecture="v7M"
|
||||
arm_core_type="Cortex-M3"
|
||||
arm_linker_heap_size="128"
|
||||
arm_linker_jtag_pad_pre_dr="1"
|
||||
arm_linker_jtag_pad_pre_ir="5"
|
||||
arm_linker_process_stack_size="0"
|
||||
arm_linker_stack_size="128"
|
||||
arm_long_calls="Yes"
|
||||
arm_simulator_memory_simulation_filename="$(TargetsDir)/STM32/STM32SimulatorMemory.dll"
|
||||
arm_simulator_memory_simulation_parameter="STM32F103RB;0x20000;0x5000"
|
||||
arm_target_debug_interface_type="ADIv5"
|
||||
arm_target_loader_applicable_loaders="Flash"
|
||||
arm_target_loader_default_loader="Flash"
|
||||
arm_target_loader_parameter="8000000"
|
||||
arm_use_gcc_libraries="Yes"
|
||||
build_intermediate_directory="$(Configuration)/../../obj"
|
||||
build_output_directory="$(ProjectDir)/../bin"
|
||||
c_only_additional_options=""
|
||||
c_preprocessor_definitions="STM32F10X_MD;USE_STDPERIPH_DRIVER ;VECT_TAB_FLASH;GCC_ARMCM3"
|
||||
c_user_include_directories="$(ProjectDir)/..;$(ProjectDir)/../lib/stdperiphlib;$(ProjectDir)/../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc;$(ProjectDir)/../lib/stdperiphlib/CMSIS/CM3/CoreSupport;$(ProjectDir)/../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x"
|
||||
gcc_optimization_level="None"
|
||||
link_include_standard_libraries="Yes"
|
||||
linker_keep_symbols="_vectors"
|
||||
linker_memory_map_file="$(TargetsDir)/STM32/STM32F103RB_MemoryMap.xml"
|
||||
linker_output_format="srec"
|
||||
linker_printf_enabled="No"
|
||||
linker_printf_width_precision_supported="No"
|
||||
linker_scanf_enabled="No"
|
||||
linker_section_placement_file="$(StudioDir)/targets/Cortex_M/flash_placement.xml"
|
||||
oscillator_frequency="8MHz"
|
||||
project_directory=""
|
||||
project_type="Executable"
|
||||
property_groups_file_path="$(TargetsDir)/STM32/propertyGroups.xml"
|
||||
target_get_partname_script="GetPartName()"
|
||||
target_match_partname_script="MatchPartName("$(Target)")"
|
||||
target_reset_script="Reset()" />
|
||||
<configuration
|
||||
Name="Flash"
|
||||
arm_target_flash_loader_file_path="$(TargetsDir)/STM32/Release/Loader_rpc.elf"
|
||||
arm_target_flash_loader_type="LIBMEM RPC Loader"
|
||||
arm_target_loader_can_lock_all="No"
|
||||
arm_target_loader_can_lock_range="No"
|
||||
arm_target_loader_can_unlock_all="No"
|
||||
arm_target_loader_can_unlock_range="No"
|
||||
target_reset_script="FLASHReset()" />
|
||||
<folder Name="Source Files">
|
||||
<configuration Name="Common" filter="c;cpp;cxx;cc;h;s;asm;inc"/>
|
||||
<configuration Name="Common" filter="c;cpp;cxx;cc;h;s;asm;inc" />
|
||||
<folder Name="Demo">
|
||||
<folder Name="Prog">
|
||||
<file file_name="../cstart.s"/>
|
||||
<file file_name="../header.h"/>
|
||||
<file file_name="../led.c"/>
|
||||
<file file_name="../led.h"/>
|
||||
<file file_name="../main.c"/>
|
||||
<file file_name="../timer.c"/>
|
||||
<file file_name="../timer.h"/>
|
||||
<file file_name="../vectors.c"/>
|
||||
<file file_name="../boot.c"/>
|
||||
<file file_name="../boot.h"/>
|
||||
<file file_name="../cstart.s" />
|
||||
<file file_name="../header.h" />
|
||||
<file file_name="../led.c" />
|
||||
<file file_name="../led.h" />
|
||||
<file file_name="../main.c" />
|
||||
<file file_name="../timer.c" />
|
||||
<file file_name="../timer.h" />
|
||||
<file file_name="../vectors.c" />
|
||||
<file file_name="../boot.c" />
|
||||
<file file_name="../boot.h" />
|
||||
</folder>
|
||||
</folder>
|
||||
</folder>
|
||||
<folder Name="System Files">
|
||||
<file file_name="$(TargetsDir)/STM32/STM32_Target.js">
|
||||
<configuration Name="Common" file_type="Reset Script"/>
|
||||
<configuration Name="Common" file_type="Reset Script" />
|
||||
</file>
|
||||
<file file_name="../memory.x">
|
||||
<configuration Name="Common" file_type="Linker Script"/>
|
||||
<configuration Name="Common" file_type="Linker Script" />
|
||||
</file>
|
||||
</folder>
|
||||
<configuration Name="Debug" c_only_additional_options=""/>
|
||||
<configuration Name="Debug" c_only_additional_options="" />
|
||||
<folder Name="Library Files">
|
||||
<file file_name="../lib/stdperiphlib/stm32f10x_conf.h"/>
|
||||
<file file_name="../lib/stdperiphlib/stm32f10x_conf.h" />
|
||||
<folder Name="STM32F10x_StdPeriph_Driver">
|
||||
<folder Name="inc">
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/misc.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_adc.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_bkp.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_can.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_cec.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_crc.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dac.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dbgmcu.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dma.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_exti.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_flash.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_fsmc.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_gpio.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_i2c.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_iwdg.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_pwr.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rcc.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rtc.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_sdio.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_spi.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_tim.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_usart.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_wwdg.h"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/misc.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_adc.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_bkp.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_can.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_cec.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_crc.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dac.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dbgmcu.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dma.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_exti.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_flash.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_fsmc.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_gpio.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_i2c.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_iwdg.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_pwr.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rcc.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rtc.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_sdio.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_spi.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_tim.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_usart.h" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_wwdg.h" />
|
||||
</folder>
|
||||
<folder Name="src">
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c"/>
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c" />
|
||||
<file file_name="../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c" />
|
||||
</folder>
|
||||
</folder>
|
||||
<folder Name="CMSIS">
|
||||
<folder Name="CM3">
|
||||
<folder Name="CoreSupport">
|
||||
<file file_name="../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c"/>
|
||||
<file file_name="../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.h"/>
|
||||
<file file_name="../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.h" />
|
||||
</folder>
|
||||
<folder Name="DeviceSupport">
|
||||
<folder Name="ST">
|
||||
<folder Name="STM32F10x">
|
||||
<file file_name="../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h"/>
|
||||
<file file_name="../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c"/>
|
||||
<file file_name="../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h"/>
|
||||
<file file_name="../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h" />
|
||||
<file file_name="../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c" />
|
||||
<file file_name="../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h" />
|
||||
</folder>
|
||||
</folder>
|
||||
</folder>
|
||||
|
@ -102,9 +148,30 @@
|
|||
</folder>
|
||||
</folder>
|
||||
</project>
|
||||
<configuration Name="THUMB Debug" inherited_configurations="THUMB;Debug"/>
|
||||
<configuration Name="THUMB" Platform="ARM" arm_instruction_set="THUMB" arm_library_instruction_set="THUMB" c_preprocessor_definitions="__THUMB" hidden="Yes"/>
|
||||
<configuration Name="Debug" build_debug_information="Yes" c_preprocessor_definitions="DEBUG" gcc_optimization_level="None" hidden="Yes" link_include_startup_code="No"/>
|
||||
<configuration Name="THUMB Release" inherited_configurations="THUMB;Release"/>
|
||||
<configuration Name="Release" build_debug_information="No" c_additional_options="-g1" c_preprocessor_definitions="NDEBUG" gcc_optimization_level="Level 1" hidden="Yes" link_include_startup_code="No"/>
|
||||
<configuration Name="THUMB Debug" inherited_configurations="THUMB;Debug" />
|
||||
<configuration
|
||||
Name="THUMB"
|
||||
Platform="ARM"
|
||||
arm_instruction_set="THUMB"
|
||||
arm_library_instruction_set="THUMB"
|
||||
c_preprocessor_definitions="__THUMB"
|
||||
hidden="Yes" />
|
||||
<configuration
|
||||
Name="Debug"
|
||||
build_debug_information="Yes"
|
||||
c_preprocessor_definitions="DEBUG"
|
||||
gcc_optimization_level="None"
|
||||
hidden="Yes"
|
||||
link_include_startup_code="No" />
|
||||
<configuration
|
||||
Name="THUMB Release"
|
||||
inherited_configurations="THUMB;Release" />
|
||||
<configuration
|
||||
Name="Release"
|
||||
build_debug_information="No"
|
||||
c_additional_options="-g1"
|
||||
c_preprocessor_definitions="NDEBUG"
|
||||
gcc_optimization_level="Level 1"
|
||||
hidden="Yes"
|
||||
link_include_startup_code="No" />
|
||||
</solution>
|
||||
|
|
|
@ -1,19 +1,22 @@
|
|||
<!DOCTYPE CrossStudio_for_ARM_Session_File>
|
||||
<!DOCTYPE CrossStudio_Session_File>
|
||||
<session>
|
||||
<Bookmarks/>
|
||||
<Breakpoints/>
|
||||
<ExecutionProfileWindow/>
|
||||
<FrameBufferWindow>
|
||||
<FrameBufferWindow addressText="" bufferWidth="-1" bufferHeight="-1" addressSpace="" />
|
||||
</FrameBufferWindow>
|
||||
<Memory1>
|
||||
<MemoryWindow autoEvaluate="0" addressText="0" numColumns="8" sizeText="32" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="0" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="32" viewMode="0" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
</Memory1>
|
||||
<Memory2>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
</Memory2>
|
||||
<Memory3>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
</Memory3>
|
||||
<Memory4>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
<MemoryWindow autoEvaluate="0" addressText="" addressOrder="0" refreshPeriod="0" columnsText="" sizeText="" viewMode="0" dataSize="1" radix="16" name="" addressSpace="" />
|
||||
</Memory4>
|
||||
<Project>
|
||||
<ProjectSessionItem path="stm32f103_crossworks" name="unnamed" />
|
||||
|
@ -23,16 +26,16 @@
|
|||
<ProjectSessionItem path="stm32f103_crossworks;demoprog_olimex_stm32p103;Source Files;Demo;Prog" name="unnamed" />
|
||||
</Project>
|
||||
<Register1>
|
||||
<RegisterWindow openNodes="CPU" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="CPU" decimalNodes="" octalNodes="" asciiNodes="" name="" />
|
||||
<RegisterWindow openNodes="CPU" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="" />
|
||||
</Register1>
|
||||
<Register2>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="" />
|
||||
</Register2>
|
||||
<Register3>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="" />
|
||||
</Register3>
|
||||
<Register4>
|
||||
<RegisterWindow openNodes="" binaryNodes="" hiddenNodes="" unsignedNodes="" visibleGroups="" decimalNodes="" octalNodes="" asciiNodes="" name="" />
|
||||
<RegisterWindow openNodes="" binaryNodes="" unsignedNodes="" decimalNodes="" octalNodes="" asciiNodes="" visibleNodes="" name="" />
|
||||
</Register4>
|
||||
<TargetWindow programAction="" uploadFileType="" programLoadAddress="" programSize="" uploadFileName="" uploadMemoryInterface="" programFileName="" uploadStartAddress="" programFileType="" uploadSize="" programMemoryInterface="" />
|
||||
<TraceWindow>
|
||||
|
@ -51,7 +54,7 @@
|
|||
<Watches active="0" update="Never" />
|
||||
</Watch4>
|
||||
<Files>
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="C:\Work\software\OpenBLT\Target\Demo\ARMCM3_STM32F1_Olimex_STM32P103_Crossworks\Prog\main.c" y="0" path="C:\Work\software\OpenBLT\Target\Demo\ARMCM3_STM32F1_Olimex_STM32P103_Crossworks\Prog\main.c" left="0" selected="1" name="unnamed" top="0" />
|
||||
<SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="../main.c" y="0" path="../main.c" left="0" selected="1" name="unnamed" top="0" />
|
||||
</Files>
|
||||
<ARMCrossStudioWindow activeProject="demoprog_olimex_stm32p103" autoConnectTarget="Olimex ARM-USB-TINY" debugSearchFileMap="" fileDialogInitialDirectory="D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_Crossworks\Prog" fileDialogDefaultFilter="*.c" autoConnectCapabilities="266111" debugSearchPath="" buildConfiguration="THUMB Debug" />
|
||||
<ARMCrossStudioWindow activeProject="demoprog_olimex_stm32p103" autoConnectTarget="Olimex ARM-USB-TINY" debugSearchFileMap="" fileDialogInitialDirectory="D:/usr/feaser/software/OpenBLT/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_Crossworks/Prog" fileDialogDefaultFilter="*.c" autoConnectCapabilities="266111" debugSearchPath="" buildConfiguration="THUMB Debug" />
|
||||
</session>
|
||||
|
|
|
@ -1,784 +0,0 @@
|
|||
/**************************************************************************//**
|
||||
* @file core_cm3.c
|
||||
* @brief CMSIS Cortex-M3 Core Peripheral Access Layer Source File
|
||||
* @version V1.30
|
||||
* @date 30. October 2009
|
||||
*
|
||||
* @note
|
||||
* Copyright (C) 2009 ARM Limited. All rights reserved.
|
||||
*
|
||||
* @par
|
||||
* ARM Limited (ARM) is supplying this software for use with Cortex-M
|
||||
* processor based microcontrollers. This file can be freely distributed
|
||||
* within development tools that are supporting such ARM based processors.
|
||||
*
|
||||
* @par
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||
* OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||
* ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||
* CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* define compiler specific symbols */
|
||||
#if defined ( __CC_ARM )
|
||||
#define __ASM __asm /*!< asm keyword for ARM Compiler */
|
||||
#define __INLINE __inline /*!< inline keyword for ARM Compiler */
|
||||
|
||||
#elif defined ( __ICCARM__ )
|
||||
#define __ASM __asm /*!< asm keyword for IAR Compiler */
|
||||
#define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */
|
||||
|
||||
#elif defined ( __GNUC__ )
|
||||
#define __ASM __asm /*!< asm keyword for GNU Compiler */
|
||||
#define __INLINE inline /*!< inline keyword for GNU Compiler */
|
||||
|
||||
#elif defined ( __TASKING__ )
|
||||
#define __ASM __asm /*!< asm keyword for TASKING Compiler */
|
||||
#define __INLINE inline /*!< inline keyword for TASKING Compiler */
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* ################### Compiler specific Intrinsics ########################### */
|
||||
|
||||
#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/
|
||||
/* ARM armcc specific functions */
|
||||
|
||||
/**
|
||||
* @brief Return the Process Stack Pointer
|
||||
*
|
||||
* @return ProcessStackPointer
|
||||
*
|
||||
* Return the actual process stack pointer
|
||||
*/
|
||||
__ASM uint32_t __get_PSP(void)
|
||||
{
|
||||
mrs r0, psp
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Process Stack Pointer
|
||||
*
|
||||
* @param topOfProcStack Process Stack Pointer
|
||||
*
|
||||
* Assign the value ProcessStackPointer to the MSP
|
||||
* (process stack pointer) Cortex processor register
|
||||
*/
|
||||
__ASM void __set_PSP(uint32_t topOfProcStack)
|
||||
{
|
||||
msr psp, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Main Stack Pointer
|
||||
*
|
||||
* @return Main Stack Pointer
|
||||
*
|
||||
* Return the current value of the MSP (main stack pointer)
|
||||
* Cortex processor register
|
||||
*/
|
||||
__ASM uint32_t __get_MSP(void)
|
||||
{
|
||||
mrs r0, msp
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Main Stack Pointer
|
||||
*
|
||||
* @param topOfMainStack Main Stack Pointer
|
||||
*
|
||||
* Assign the value mainStackPointer to the MSP
|
||||
* (main stack pointer) Cortex processor register
|
||||
*/
|
||||
__ASM void __set_MSP(uint32_t mainStackPointer)
|
||||
{
|
||||
msr msp, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in unsigned short value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in unsigned short value
|
||||
*/
|
||||
__ASM uint32_t __REV16(uint16_t value)
|
||||
{
|
||||
rev16 r0, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in signed short value with sign extension to integer
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in signed short value with sign extension to integer
|
||||
*/
|
||||
__ASM int32_t __REVSH(int16_t value)
|
||||
{
|
||||
revsh r0, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
|
||||
#if (__ARMCC_VERSION < 400000)
|
||||
|
||||
/**
|
||||
* @brief Remove the exclusive lock created by ldrex
|
||||
*
|
||||
* Removes the exclusive lock which is created by ldrex.
|
||||
*/
|
||||
__ASM void __CLREX(void)
|
||||
{
|
||||
clrex
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Base Priority value
|
||||
*
|
||||
* @return BasePriority
|
||||
*
|
||||
* Return the content of the base priority register
|
||||
*/
|
||||
__ASM uint32_t __get_BASEPRI(void)
|
||||
{
|
||||
mrs r0, basepri
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Base Priority value
|
||||
*
|
||||
* @param basePri BasePriority
|
||||
*
|
||||
* Set the base priority register
|
||||
*/
|
||||
__ASM void __set_BASEPRI(uint32_t basePri)
|
||||
{
|
||||
msr basepri, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Priority Mask value
|
||||
*
|
||||
* @return PriMask
|
||||
*
|
||||
* Return state of the priority mask bit from the priority mask register
|
||||
*/
|
||||
__ASM uint32_t __get_PRIMASK(void)
|
||||
{
|
||||
mrs r0, primask
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Priority Mask value
|
||||
*
|
||||
* @param priMask PriMask
|
||||
*
|
||||
* Set the priority mask bit in the priority mask register
|
||||
*/
|
||||
__ASM void __set_PRIMASK(uint32_t priMask)
|
||||
{
|
||||
msr primask, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Fault Mask value
|
||||
*
|
||||
* @return FaultMask
|
||||
*
|
||||
* Return the content of the fault mask register
|
||||
*/
|
||||
__ASM uint32_t __get_FAULTMASK(void)
|
||||
{
|
||||
mrs r0, faultmask
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Fault Mask value
|
||||
*
|
||||
* @param faultMask faultMask value
|
||||
*
|
||||
* Set the fault mask register
|
||||
*/
|
||||
__ASM void __set_FAULTMASK(uint32_t faultMask)
|
||||
{
|
||||
msr faultmask, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Control Register value
|
||||
*
|
||||
* @return Control value
|
||||
*
|
||||
* Return the content of the control register
|
||||
*/
|
||||
__ASM uint32_t __get_CONTROL(void)
|
||||
{
|
||||
mrs r0, control
|
||||
bx lr
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Control Register value
|
||||
*
|
||||
* @param control Control value
|
||||
*
|
||||
* Set the control register
|
||||
*/
|
||||
__ASM void __set_CONTROL(uint32_t control)
|
||||
{
|
||||
msr control, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
#endif /* __ARMCC_VERSION */
|
||||
|
||||
|
||||
|
||||
#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/
|
||||
/* IAR iccarm specific functions */
|
||||
#pragma diag_suppress=Pe940
|
||||
|
||||
/**
|
||||
* @brief Return the Process Stack Pointer
|
||||
*
|
||||
* @return ProcessStackPointer
|
||||
*
|
||||
* Return the actual process stack pointer
|
||||
*/
|
||||
uint32_t __get_PSP(void)
|
||||
{
|
||||
__ASM("mrs r0, psp");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Process Stack Pointer
|
||||
*
|
||||
* @param topOfProcStack Process Stack Pointer
|
||||
*
|
||||
* Assign the value ProcessStackPointer to the MSP
|
||||
* (process stack pointer) Cortex processor register
|
||||
*/
|
||||
void __set_PSP(uint32_t topOfProcStack)
|
||||
{
|
||||
__ASM("msr psp, r0");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Main Stack Pointer
|
||||
*
|
||||
* @return Main Stack Pointer
|
||||
*
|
||||
* Return the current value of the MSP (main stack pointer)
|
||||
* Cortex processor register
|
||||
*/
|
||||
uint32_t __get_MSP(void)
|
||||
{
|
||||
__ASM("mrs r0, msp");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Main Stack Pointer
|
||||
*
|
||||
* @param topOfMainStack Main Stack Pointer
|
||||
*
|
||||
* Assign the value mainStackPointer to the MSP
|
||||
* (main stack pointer) Cortex processor register
|
||||
*/
|
||||
void __set_MSP(uint32_t topOfMainStack)
|
||||
{
|
||||
__ASM("msr msp, r0");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in unsigned short value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in unsigned short value
|
||||
*/
|
||||
uint32_t __REV16(uint16_t value)
|
||||
{
|
||||
__ASM("rev16 r0, r0");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse bit order of value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse bit order of value
|
||||
*/
|
||||
uint32_t __RBIT(uint32_t value)
|
||||
{
|
||||
__ASM("rbit r0, r0");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (8 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 8 bit values)
|
||||
*/
|
||||
uint8_t __LDREXB(uint8_t *addr)
|
||||
{
|
||||
__ASM("ldrexb r0, [r0]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (16 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 16 bit values
|
||||
*/
|
||||
uint16_t __LDREXH(uint16_t *addr)
|
||||
{
|
||||
__ASM("ldrexh r0, [r0]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (32 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 32 bit values
|
||||
*/
|
||||
uint32_t __LDREXW(uint32_t *addr)
|
||||
{
|
||||
__ASM("ldrex r0, [r0]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (8 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 8 bit values
|
||||
*/
|
||||
uint32_t __STREXB(uint8_t value, uint8_t *addr)
|
||||
{
|
||||
__ASM("strexb r0, r0, [r1]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (16 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 16 bit values
|
||||
*/
|
||||
uint32_t __STREXH(uint16_t value, uint16_t *addr)
|
||||
{
|
||||
__ASM("strexh r0, r0, [r1]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (32 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 32 bit values
|
||||
*/
|
||||
uint32_t __STREXW(uint32_t value, uint32_t *addr)
|
||||
{
|
||||
__ASM("strex r0, r0, [r1]");
|
||||
__ASM("bx lr");
|
||||
}
|
||||
|
||||
#pragma diag_default=Pe940
|
||||
|
||||
|
||||
#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/
|
||||
/* GNU gcc specific functions */
|
||||
|
||||
/**
|
||||
* @brief Return the Process Stack Pointer
|
||||
*
|
||||
* @return ProcessStackPointer
|
||||
*
|
||||
* Return the actual process stack pointer
|
||||
*/
|
||||
uint32_t __get_PSP(void) __attribute__( ( naked ) );
|
||||
uint32_t __get_PSP(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, psp\n\t"
|
||||
"MOV r0, %0 \n\t"
|
||||
"BX lr \n\t" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Process Stack Pointer
|
||||
*
|
||||
* @param topOfProcStack Process Stack Pointer
|
||||
*
|
||||
* Assign the value ProcessStackPointer to the MSP
|
||||
* (process stack pointer) Cortex processor register
|
||||
*/
|
||||
void __set_PSP(uint32_t topOfProcStack) __attribute__( ( naked ) );
|
||||
void __set_PSP(uint32_t topOfProcStack)
|
||||
{
|
||||
__ASM volatile ("MSR psp, %0\n\t"
|
||||
"BX lr \n\t" : : "r" (topOfProcStack) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Main Stack Pointer
|
||||
*
|
||||
* @return Main Stack Pointer
|
||||
*
|
||||
* Return the current value of the MSP (main stack pointer)
|
||||
* Cortex processor register
|
||||
*/
|
||||
uint32_t __get_MSP(void) __attribute__( ( naked ) );
|
||||
uint32_t __get_MSP(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, msp\n\t"
|
||||
"MOV r0, %0 \n\t"
|
||||
"BX lr \n\t" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Main Stack Pointer
|
||||
*
|
||||
* @param topOfMainStack Main Stack Pointer
|
||||
*
|
||||
* Assign the value mainStackPointer to the MSP
|
||||
* (main stack pointer) Cortex processor register
|
||||
*/
|
||||
void __set_MSP(uint32_t topOfMainStack) __attribute__( ( naked ) );
|
||||
void __set_MSP(uint32_t topOfMainStack)
|
||||
{
|
||||
__ASM volatile ("MSR msp, %0\n\t"
|
||||
"BX lr \n\t" : : "r" (topOfMainStack) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Base Priority value
|
||||
*
|
||||
* @return BasePriority
|
||||
*
|
||||
* Return the content of the base priority register
|
||||
*/
|
||||
uint32_t __get_BASEPRI(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, basepri_max" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Base Priority value
|
||||
*
|
||||
* @param basePri BasePriority
|
||||
*
|
||||
* Set the base priority register
|
||||
*/
|
||||
void __set_BASEPRI(uint32_t value)
|
||||
{
|
||||
__ASM volatile ("MSR basepri, %0" : : "r" (value) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Priority Mask value
|
||||
*
|
||||
* @return PriMask
|
||||
*
|
||||
* Return state of the priority mask bit from the priority mask register
|
||||
*/
|
||||
uint32_t __get_PRIMASK(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, primask" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Priority Mask value
|
||||
*
|
||||
* @param priMask PriMask
|
||||
*
|
||||
* Set the priority mask bit in the priority mask register
|
||||
*/
|
||||
void __set_PRIMASK(uint32_t priMask)
|
||||
{
|
||||
__ASM volatile ("MSR primask, %0" : : "r" (priMask) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Fault Mask value
|
||||
*
|
||||
* @return FaultMask
|
||||
*
|
||||
* Return the content of the fault mask register
|
||||
*/
|
||||
uint32_t __get_FAULTMASK(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, faultmask" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Fault Mask value
|
||||
*
|
||||
* @param faultMask faultMask value
|
||||
*
|
||||
* Set the fault mask register
|
||||
*/
|
||||
void __set_FAULTMASK(uint32_t faultMask)
|
||||
{
|
||||
__ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the Control Register value
|
||||
*
|
||||
* @return Control value
|
||||
*
|
||||
* Return the content of the control register
|
||||
*/
|
||||
uint32_t __get_CONTROL(void)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("MRS %0, control" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the Control Register value
|
||||
*
|
||||
* @param control Control value
|
||||
*
|
||||
* Set the control register
|
||||
*/
|
||||
void __set_CONTROL(uint32_t control)
|
||||
{
|
||||
__ASM volatile ("MSR control, %0" : : "r" (control) );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in integer value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in integer value
|
||||
*/
|
||||
uint32_t __REV(uint32_t value)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in unsigned short value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in unsigned short value
|
||||
*/
|
||||
uint32_t __REV16(uint16_t value)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse byte order in signed short value with sign extension to integer
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse byte order in signed short value with sign extension to integer
|
||||
*/
|
||||
int32_t __REVSH(int16_t value)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reverse bit order of value
|
||||
*
|
||||
* @param value value to reverse
|
||||
* @return reversed value
|
||||
*
|
||||
* Reverse bit order of value
|
||||
*/
|
||||
uint32_t __RBIT(uint32_t value)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (8 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 8 bit value
|
||||
*/
|
||||
uint8_t __LDREXB(uint8_t *addr)
|
||||
{
|
||||
uint8_t result=0;
|
||||
|
||||
__ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (16 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 16 bit values
|
||||
*/
|
||||
uint16_t __LDREXH(uint16_t *addr)
|
||||
{
|
||||
uint16_t result=0;
|
||||
|
||||
__ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDR Exclusive (32 bit)
|
||||
*
|
||||
* @param *addr address pointer
|
||||
* @return value of (*address)
|
||||
*
|
||||
* Exclusive LDR command for 32 bit values
|
||||
*/
|
||||
uint32_t __LDREXW(uint32_t *addr)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (8 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 8 bit values
|
||||
*/
|
||||
uint32_t __STREXB(uint8_t value, uint8_t *addr)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (16 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 16 bit values
|
||||
*/
|
||||
uint32_t __STREXH(uint16_t value, uint16_t *addr)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("strexh %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief STR Exclusive (32 bit)
|
||||
*
|
||||
* @param value value to store
|
||||
* @param *addr address pointer
|
||||
* @return successful / failed
|
||||
*
|
||||
* Exclusive STR command for 32 bit values
|
||||
*/
|
||||
uint32_t __STREXW(uint32_t value, uint32_t *addr)
|
||||
{
|
||||
uint32_t result=0;
|
||||
|
||||
__ASM volatile ("strex %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/
|
||||
/* TASKING carm specific functions */
|
||||
|
||||
/*
|
||||
* The CMSIS functions have been implemented as intrinsics in the compiler.
|
||||
* Please use "carm -?i" to get an up to date list of all instrinsics,
|
||||
* Including the CMSIS ones.
|
||||
*/
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,616 @@
|
|||
/**************************************************************************//**
|
||||
* @file core_cmFunc.h
|
||||
* @brief CMSIS Cortex-M Core Function Access Header File
|
||||
* @version V3.01
|
||||
* @date 06. March 2012
|
||||
*
|
||||
* @note
|
||||
* Copyright (C) 2009-2012 ARM Limited. All rights reserved.
|
||||
*
|
||||
* @par
|
||||
* ARM Limited (ARM) is supplying this software for use with Cortex-M
|
||||
* processor based microcontrollers. This file can be freely distributed
|
||||
* within development tools that are supporting such ARM based processors.
|
||||
*
|
||||
* @par
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||
* OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||
* ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||
* CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __CORE_CMFUNC_H
|
||||
#define __CORE_CMFUNC_H
|
||||
|
||||
|
||||
/* ########################### Core Function Access ########################### */
|
||||
/** \ingroup CMSIS_Core_FunctionInterface
|
||||
\defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
|
||||
@{
|
||||
*/
|
||||
|
||||
#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/
|
||||
/* ARM armcc specific functions */
|
||||
|
||||
#if (__ARMCC_VERSION < 400677)
|
||||
#error "Please use ARM Compiler Toolchain V4.0.677 or later!"
|
||||
#endif
|
||||
|
||||
/* intrinsic void __enable_irq(); */
|
||||
/* intrinsic void __disable_irq(); */
|
||||
|
||||
/** \brief Get Control Register
|
||||
|
||||
This function returns the content of the Control Register.
|
||||
|
||||
\return Control Register value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_CONTROL(void)
|
||||
{
|
||||
register uint32_t __regControl __ASM("control");
|
||||
return(__regControl);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Control Register
|
||||
|
||||
This function writes the given value to the Control Register.
|
||||
|
||||
\param [in] control Control Register value to set
|
||||
*/
|
||||
__STATIC_INLINE void __set_CONTROL(uint32_t control)
|
||||
{
|
||||
register uint32_t __regControl __ASM("control");
|
||||
__regControl = control;
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get IPSR Register
|
||||
|
||||
This function returns the content of the IPSR Register.
|
||||
|
||||
\return IPSR Register value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_IPSR(void)
|
||||
{
|
||||
register uint32_t __regIPSR __ASM("ipsr");
|
||||
return(__regIPSR);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get APSR Register
|
||||
|
||||
This function returns the content of the APSR Register.
|
||||
|
||||
\return APSR Register value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_APSR(void)
|
||||
{
|
||||
register uint32_t __regAPSR __ASM("apsr");
|
||||
return(__regAPSR);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get xPSR Register
|
||||
|
||||
This function returns the content of the xPSR Register.
|
||||
|
||||
\return xPSR Register value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_xPSR(void)
|
||||
{
|
||||
register uint32_t __regXPSR __ASM("xpsr");
|
||||
return(__regXPSR);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Process Stack Pointer
|
||||
|
||||
This function returns the current value of the Process Stack Pointer (PSP).
|
||||
|
||||
\return PSP Register value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_PSP(void)
|
||||
{
|
||||
register uint32_t __regProcessStackPointer __ASM("psp");
|
||||
return(__regProcessStackPointer);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Process Stack Pointer
|
||||
|
||||
This function assigns the given value to the Process Stack Pointer (PSP).
|
||||
|
||||
\param [in] topOfProcStack Process Stack Pointer value to set
|
||||
*/
|
||||
__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
|
||||
{
|
||||
register uint32_t __regProcessStackPointer __ASM("psp");
|
||||
__regProcessStackPointer = topOfProcStack;
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Main Stack Pointer
|
||||
|
||||
This function returns the current value of the Main Stack Pointer (MSP).
|
||||
|
||||
\return MSP Register value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_MSP(void)
|
||||
{
|
||||
register uint32_t __regMainStackPointer __ASM("msp");
|
||||
return(__regMainStackPointer);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Main Stack Pointer
|
||||
|
||||
This function assigns the given value to the Main Stack Pointer (MSP).
|
||||
|
||||
\param [in] topOfMainStack Main Stack Pointer value to set
|
||||
*/
|
||||
__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
|
||||
{
|
||||
register uint32_t __regMainStackPointer __ASM("msp");
|
||||
__regMainStackPointer = topOfMainStack;
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Priority Mask
|
||||
|
||||
This function returns the current state of the priority mask bit from the Priority Mask Register.
|
||||
|
||||
\return Priority Mask value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_PRIMASK(void)
|
||||
{
|
||||
register uint32_t __regPriMask __ASM("primask");
|
||||
return(__regPriMask);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Priority Mask
|
||||
|
||||
This function assigns the given value to the Priority Mask Register.
|
||||
|
||||
\param [in] priMask Priority Mask
|
||||
*/
|
||||
__STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
|
||||
{
|
||||
register uint32_t __regPriMask __ASM("primask");
|
||||
__regPriMask = (priMask);
|
||||
}
|
||||
|
||||
|
||||
#if (__CORTEX_M >= 0x03)
|
||||
|
||||
/** \brief Enable FIQ
|
||||
|
||||
This function enables FIQ interrupts by clearing the F-bit in the CPSR.
|
||||
Can only be executed in Privileged modes.
|
||||
*/
|
||||
#define __enable_fault_irq __enable_fiq
|
||||
|
||||
|
||||
/** \brief Disable FIQ
|
||||
|
||||
This function disables FIQ interrupts by setting the F-bit in the CPSR.
|
||||
Can only be executed in Privileged modes.
|
||||
*/
|
||||
#define __disable_fault_irq __disable_fiq
|
||||
|
||||
|
||||
/** \brief Get Base Priority
|
||||
|
||||
This function returns the current value of the Base Priority register.
|
||||
|
||||
\return Base Priority register value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_BASEPRI(void)
|
||||
{
|
||||
register uint32_t __regBasePri __ASM("basepri");
|
||||
return(__regBasePri);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Base Priority
|
||||
|
||||
This function assigns the given value to the Base Priority register.
|
||||
|
||||
\param [in] basePri Base Priority value to set
|
||||
*/
|
||||
__STATIC_INLINE void __set_BASEPRI(uint32_t basePri)
|
||||
{
|
||||
register uint32_t __regBasePri __ASM("basepri");
|
||||
__regBasePri = (basePri & 0xff);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Fault Mask
|
||||
|
||||
This function returns the current value of the Fault Mask register.
|
||||
|
||||
\return Fault Mask register value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_FAULTMASK(void)
|
||||
{
|
||||
register uint32_t __regFaultMask __ASM("faultmask");
|
||||
return(__regFaultMask);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Fault Mask
|
||||
|
||||
This function assigns the given value to the Fault Mask register.
|
||||
|
||||
\param [in] faultMask Fault Mask value to set
|
||||
*/
|
||||
__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
|
||||
{
|
||||
register uint32_t __regFaultMask __ASM("faultmask");
|
||||
__regFaultMask = (faultMask & (uint32_t)1);
|
||||
}
|
||||
|
||||
#endif /* (__CORTEX_M >= 0x03) */
|
||||
|
||||
|
||||
#if (__CORTEX_M == 0x04)
|
||||
|
||||
/** \brief Get FPSCR
|
||||
|
||||
This function returns the current value of the Floating Point Status/Control register.
|
||||
|
||||
\return Floating Point Status/Control register value
|
||||
*/
|
||||
__STATIC_INLINE uint32_t __get_FPSCR(void)
|
||||
{
|
||||
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
|
||||
register uint32_t __regfpscr __ASM("fpscr");
|
||||
return(__regfpscr);
|
||||
#else
|
||||
return(0);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set FPSCR
|
||||
|
||||
This function assigns the given value to the Floating Point Status/Control register.
|
||||
|
||||
\param [in] fpscr Floating Point Status/Control value to set
|
||||
*/
|
||||
__STATIC_INLINE void __set_FPSCR(uint32_t fpscr)
|
||||
{
|
||||
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
|
||||
register uint32_t __regfpscr __ASM("fpscr");
|
||||
__regfpscr = (fpscr);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* (__CORTEX_M == 0x04) */
|
||||
|
||||
|
||||
#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/
|
||||
/* IAR iccarm specific functions */
|
||||
|
||||
#include <cmsis_iar.h>
|
||||
|
||||
|
||||
#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/
|
||||
/* TI CCS specific functions */
|
||||
|
||||
#include <cmsis_ccs.h>
|
||||
|
||||
|
||||
#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/
|
||||
/* GNU gcc specific functions */
|
||||
|
||||
/** \brief Enable IRQ Interrupts
|
||||
|
||||
This function enables IRQ interrupts by clearing the I-bit in the CPSR.
|
||||
Can only be executed in Privileged modes.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void)
|
||||
{
|
||||
__ASM volatile ("cpsie i");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Disable IRQ Interrupts
|
||||
|
||||
This function disables IRQ interrupts by setting the I-bit in the CPSR.
|
||||
Can only be executed in Privileged modes.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void)
|
||||
{
|
||||
__ASM volatile ("cpsid i");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Control Register
|
||||
|
||||
This function returns the content of the Control Register.
|
||||
|
||||
\return Control Register value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_CONTROL(void)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, control" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Control Register
|
||||
|
||||
This function writes the given value to the Control Register.
|
||||
|
||||
\param [in] control Control Register value to set
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_CONTROL(uint32_t control)
|
||||
{
|
||||
__ASM volatile ("MSR control, %0" : : "r" (control) );
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get IPSR Register
|
||||
|
||||
This function returns the content of the IPSR Register.
|
||||
|
||||
\return IPSR Register value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_IPSR(void)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, ipsr" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get APSR Register
|
||||
|
||||
This function returns the content of the APSR Register.
|
||||
|
||||
\return APSR Register value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_APSR(void)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, apsr" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get xPSR Register
|
||||
|
||||
This function returns the content of the xPSR Register.
|
||||
|
||||
\return xPSR Register value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_xPSR(void)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, xpsr" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Process Stack Pointer
|
||||
|
||||
This function returns the current value of the Process Stack Pointer (PSP).
|
||||
|
||||
\return PSP Register value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PSP(void)
|
||||
{
|
||||
register uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, psp\n" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Process Stack Pointer
|
||||
|
||||
This function assigns the given value to the Process Stack Pointer (PSP).
|
||||
|
||||
\param [in] topOfProcStack Process Stack Pointer value to set
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
|
||||
{
|
||||
__ASM volatile ("MSR psp, %0\n" : : "r" (topOfProcStack) );
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Main Stack Pointer
|
||||
|
||||
This function returns the current value of the Main Stack Pointer (MSP).
|
||||
|
||||
\return MSP Register value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_MSP(void)
|
||||
{
|
||||
register uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, msp\n" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Main Stack Pointer
|
||||
|
||||
This function assigns the given value to the Main Stack Pointer (MSP).
|
||||
|
||||
\param [in] topOfMainStack Main Stack Pointer value to set
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
|
||||
{
|
||||
__ASM volatile ("MSR msp, %0\n" : : "r" (topOfMainStack) );
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Priority Mask
|
||||
|
||||
This function returns the current state of the priority mask bit from the Priority Mask Register.
|
||||
|
||||
\return Priority Mask value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PRIMASK(void)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, primask" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Priority Mask
|
||||
|
||||
This function assigns the given value to the Priority Mask Register.
|
||||
|
||||
\param [in] priMask Priority Mask
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
|
||||
{
|
||||
__ASM volatile ("MSR primask, %0" : : "r" (priMask) );
|
||||
}
|
||||
|
||||
|
||||
#if (__CORTEX_M >= 0x03)
|
||||
|
||||
/** \brief Enable FIQ
|
||||
|
||||
This function enables FIQ interrupts by clearing the F-bit in the CPSR.
|
||||
Can only be executed in Privileged modes.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_fault_irq(void)
|
||||
{
|
||||
__ASM volatile ("cpsie f");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Disable FIQ
|
||||
|
||||
This function disables FIQ interrupts by setting the F-bit in the CPSR.
|
||||
Can only be executed in Privileged modes.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_fault_irq(void)
|
||||
{
|
||||
__ASM volatile ("cpsid f");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Base Priority
|
||||
|
||||
This function returns the current value of the Base Priority register.
|
||||
|
||||
\return Base Priority register value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_BASEPRI(void)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, basepri_max" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Base Priority
|
||||
|
||||
This function assigns the given value to the Base Priority register.
|
||||
|
||||
\param [in] basePri Base Priority value to set
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_BASEPRI(uint32_t value)
|
||||
{
|
||||
__ASM volatile ("MSR basepri, %0" : : "r" (value) );
|
||||
}
|
||||
|
||||
|
||||
/** \brief Get Fault Mask
|
||||
|
||||
This function returns the current value of the Fault Mask register.
|
||||
|
||||
\return Fault Mask register value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FAULTMASK(void)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, faultmask" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set Fault Mask
|
||||
|
||||
This function assigns the given value to the Fault Mask register.
|
||||
|
||||
\param [in] faultMask Fault Mask value to set
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
|
||||
{
|
||||
__ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) );
|
||||
}
|
||||
|
||||
#endif /* (__CORTEX_M >= 0x03) */
|
||||
|
||||
|
||||
#if (__CORTEX_M == 0x04)
|
||||
|
||||
/** \brief Get FPSCR
|
||||
|
||||
This function returns the current value of the Floating Point Status/Control register.
|
||||
|
||||
\return Floating Point Status/Control register value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FPSCR(void)
|
||||
{
|
||||
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("VMRS %0, fpscr" : "=r" (result) );
|
||||
return(result);
|
||||
#else
|
||||
return(0);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/** \brief Set FPSCR
|
||||
|
||||
This function assigns the given value to the Floating Point Status/Control register.
|
||||
|
||||
\param [in] fpscr Floating Point Status/Control value to set
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FPSCR(uint32_t fpscr)
|
||||
{
|
||||
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
|
||||
__ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) );
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* (__CORTEX_M == 0x04) */
|
||||
|
||||
|
||||
#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/
|
||||
/* TASKING carm specific functions */
|
||||
|
||||
/*
|
||||
* The CMSIS functions have been implemented as intrinsics in the compiler.
|
||||
* Please use "carm -?i" to get an up to date list of all instrinsics,
|
||||
* Including the CMSIS ones.
|
||||
*/
|
||||
|
||||
#endif
|
||||
|
||||
/*@} end of CMSIS_Core_RegAccFunctions */
|
||||
|
||||
|
||||
#endif /* __CORE_CMFUNC_H */
|
|
@ -0,0 +1,618 @@
|
|||
/**************************************************************************//**
|
||||
* @file core_cmInstr.h
|
||||
* @brief CMSIS Cortex-M Core Instruction Access Header File
|
||||
* @version V3.01
|
||||
* @date 06. March 2012
|
||||
*
|
||||
* @note
|
||||
* Copyright (C) 2009-2012 ARM Limited. All rights reserved.
|
||||
*
|
||||
* @par
|
||||
* ARM Limited (ARM) is supplying this software for use with Cortex-M
|
||||
* processor based microcontrollers. This file can be freely distributed
|
||||
* within development tools that are supporting such ARM based processors.
|
||||
*
|
||||
* @par
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||
* OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||
* ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||
* CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __CORE_CMINSTR_H
|
||||
#define __CORE_CMINSTR_H
|
||||
|
||||
|
||||
/* ########################## Core Instruction Access ######################### */
|
||||
/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
|
||||
Access to dedicated instructions
|
||||
@{
|
||||
*/
|
||||
|
||||
#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/
|
||||
/* ARM armcc specific functions */
|
||||
|
||||
#if (__ARMCC_VERSION < 400677)
|
||||
#error "Please use ARM Compiler Toolchain V4.0.677 or later!"
|
||||
#endif
|
||||
|
||||
|
||||
/** \brief No Operation
|
||||
|
||||
No Operation does nothing. This instruction can be used for code alignment purposes.
|
||||
*/
|
||||
#define __NOP __nop
|
||||
|
||||
|
||||
/** \brief Wait For Interrupt
|
||||
|
||||
Wait For Interrupt is a hint instruction that suspends execution
|
||||
until one of a number of events occurs.
|
||||
*/
|
||||
#define __WFI __wfi
|
||||
|
||||
|
||||
/** \brief Wait For Event
|
||||
|
||||
Wait For Event is a hint instruction that permits the processor to enter
|
||||
a low-power state until one of a number of events occurs.
|
||||
*/
|
||||
#define __WFE __wfe
|
||||
|
||||
|
||||
/** \brief Send Event
|
||||
|
||||
Send Event is a hint instruction. It causes an event to be signaled to the CPU.
|
||||
*/
|
||||
#define __SEV __sev
|
||||
|
||||
|
||||
/** \brief Instruction Synchronization Barrier
|
||||
|
||||
Instruction Synchronization Barrier flushes the pipeline in the processor,
|
||||
so that all instructions following the ISB are fetched from cache or
|
||||
memory, after the instruction has been completed.
|
||||
*/
|
||||
#define __ISB() __isb(0xF)
|
||||
|
||||
|
||||
/** \brief Data Synchronization Barrier
|
||||
|
||||
This function acts as a special kind of Data Memory Barrier.
|
||||
It completes when all explicit memory accesses before this instruction complete.
|
||||
*/
|
||||
#define __DSB() __dsb(0xF)
|
||||
|
||||
|
||||
/** \brief Data Memory Barrier
|
||||
|
||||
This function ensures the apparent order of the explicit memory operations before
|
||||
and after the instruction, without ensuring their completion.
|
||||
*/
|
||||
#define __DMB() __dmb(0xF)
|
||||
|
||||
|
||||
/** \brief Reverse byte order (32 bit)
|
||||
|
||||
This function reverses the byte order in integer value.
|
||||
|
||||
\param [in] value Value to reverse
|
||||
\return Reversed value
|
||||
*/
|
||||
#define __REV __rev
|
||||
|
||||
|
||||
/** \brief Reverse byte order (16 bit)
|
||||
|
||||
This function reverses the byte order in two unsigned short values.
|
||||
|
||||
\param [in] value Value to reverse
|
||||
\return Reversed value
|
||||
*/
|
||||
__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)
|
||||
{
|
||||
rev16 r0, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
|
||||
/** \brief Reverse byte order in signed short value
|
||||
|
||||
This function reverses the byte order in a signed short value with sign extension to integer.
|
||||
|
||||
\param [in] value Value to reverse
|
||||
\return Reversed value
|
||||
*/
|
||||
__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(int32_t value)
|
||||
{
|
||||
revsh r0, r0
|
||||
bx lr
|
||||
}
|
||||
|
||||
|
||||
/** \brief Rotate Right in unsigned value (32 bit)
|
||||
|
||||
This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
|
||||
|
||||
\param [in] value Value to rotate
|
||||
\param [in] value Number of Bits to rotate
|
||||
\return Rotated value
|
||||
*/
|
||||
#define __ROR __ror
|
||||
|
||||
|
||||
#if (__CORTEX_M >= 0x03)
|
||||
|
||||
/** \brief Reverse bit order of value
|
||||
|
||||
This function reverses the bit order of the given value.
|
||||
|
||||
\param [in] value Value to reverse
|
||||
\return Reversed value
|
||||
*/
|
||||
#define __RBIT __rbit
|
||||
|
||||
|
||||
/** \brief LDR Exclusive (8 bit)
|
||||
|
||||
This function performs a exclusive LDR command for 8 bit value.
|
||||
|
||||
\param [in] ptr Pointer to data
|
||||
\return value of type uint8_t at (*ptr)
|
||||
*/
|
||||
#define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr))
|
||||
|
||||
|
||||
/** \brief LDR Exclusive (16 bit)
|
||||
|
||||
This function performs a exclusive LDR command for 16 bit values.
|
||||
|
||||
\param [in] ptr Pointer to data
|
||||
\return value of type uint16_t at (*ptr)
|
||||
*/
|
||||
#define __LDREXH(ptr) ((uint16_t) __ldrex(ptr))
|
||||
|
||||
|
||||
/** \brief LDR Exclusive (32 bit)
|
||||
|
||||
This function performs a exclusive LDR command for 32 bit values.
|
||||
|
||||
\param [in] ptr Pointer to data
|
||||
\return value of type uint32_t at (*ptr)
|
||||
*/
|
||||
#define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr))
|
||||
|
||||
|
||||
/** \brief STR Exclusive (8 bit)
|
||||
|
||||
This function performs a exclusive STR command for 8 bit values.
|
||||
|
||||
\param [in] value Value to store
|
||||
\param [in] ptr Pointer to location
|
||||
\return 0 Function succeeded
|
||||
\return 1 Function failed
|
||||
*/
|
||||
#define __STREXB(value, ptr) __strex(value, ptr)
|
||||
|
||||
|
||||
/** \brief STR Exclusive (16 bit)
|
||||
|
||||
This function performs a exclusive STR command for 16 bit values.
|
||||
|
||||
\param [in] value Value to store
|
||||
\param [in] ptr Pointer to location
|
||||
\return 0 Function succeeded
|
||||
\return 1 Function failed
|
||||
*/
|
||||
#define __STREXH(value, ptr) __strex(value, ptr)
|
||||
|
||||
|
||||
/** \brief STR Exclusive (32 bit)
|
||||
|
||||
This function performs a exclusive STR command for 32 bit values.
|
||||
|
||||
\param [in] value Value to store
|
||||
\param [in] ptr Pointer to location
|
||||
\return 0 Function succeeded
|
||||
\return 1 Function failed
|
||||
*/
|
||||
#define __STREXW(value, ptr) __strex(value, ptr)
|
||||
|
||||
|
||||
/** \brief Remove the exclusive lock
|
||||
|
||||
This function removes the exclusive lock which is created by LDREX.
|
||||
|
||||
*/
|
||||
#define __CLREX __clrex
|
||||
|
||||
|
||||
/** \brief Signed Saturate
|
||||
|
||||
This function saturates a signed value.
|
||||
|
||||
\param [in] value Value to be saturated
|
||||
\param [in] sat Bit position to saturate to (1..32)
|
||||
\return Saturated value
|
||||
*/
|
||||
#define __SSAT __ssat
|
||||
|
||||
|
||||
/** \brief Unsigned Saturate
|
||||
|
||||
This function saturates an unsigned value.
|
||||
|
||||
\param [in] value Value to be saturated
|
||||
\param [in] sat Bit position to saturate to (0..31)
|
||||
\return Saturated value
|
||||
*/
|
||||
#define __USAT __usat
|
||||
|
||||
|
||||
/** \brief Count leading zeros
|
||||
|
||||
This function counts the number of leading zeros of a data value.
|
||||
|
||||
\param [in] value Value to count the leading zeros
|
||||
\return number of leading zeros in value
|
||||
*/
|
||||
#define __CLZ __clz
|
||||
|
||||
#endif /* (__CORTEX_M >= 0x03) */
|
||||
|
||||
|
||||
|
||||
#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/
|
||||
/* IAR iccarm specific functions */
|
||||
|
||||
#include <cmsis_iar.h>
|
||||
|
||||
|
||||
#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/
|
||||
/* TI CCS specific functions */
|
||||
|
||||
#include <cmsis_ccs.h>
|
||||
|
||||
|
||||
#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/
|
||||
/* GNU gcc specific functions */
|
||||
|
||||
/** \brief No Operation
|
||||
|
||||
No Operation does nothing. This instruction can be used for code alignment purposes.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __NOP(void)
|
||||
{
|
||||
__ASM volatile ("nop");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Wait For Interrupt
|
||||
|
||||
Wait For Interrupt is a hint instruction that suspends execution
|
||||
until one of a number of events occurs.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFI(void)
|
||||
{
|
||||
__ASM volatile ("wfi");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Wait For Event
|
||||
|
||||
Wait For Event is a hint instruction that permits the processor to enter
|
||||
a low-power state until one of a number of events occurs.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFE(void)
|
||||
{
|
||||
__ASM volatile ("wfe");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Send Event
|
||||
|
||||
Send Event is a hint instruction. It causes an event to be signaled to the CPU.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __SEV(void)
|
||||
{
|
||||
__ASM volatile ("sev");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Instruction Synchronization Barrier
|
||||
|
||||
Instruction Synchronization Barrier flushes the pipeline in the processor,
|
||||
so that all instructions following the ISB are fetched from cache or
|
||||
memory, after the instruction has been completed.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __ISB(void)
|
||||
{
|
||||
__ASM volatile ("isb");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Data Synchronization Barrier
|
||||
|
||||
This function acts as a special kind of Data Memory Barrier.
|
||||
It completes when all explicit memory accesses before this instruction complete.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __DSB(void)
|
||||
{
|
||||
__ASM volatile ("dsb");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Data Memory Barrier
|
||||
|
||||
This function ensures the apparent order of the explicit memory operations before
|
||||
and after the instruction, without ensuring their completion.
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __DMB(void)
|
||||
{
|
||||
__ASM volatile ("dmb");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Reverse byte order (32 bit)
|
||||
|
||||
This function reverses the byte order in integer value.
|
||||
|
||||
\param [in] value Value to reverse
|
||||
\return Reversed value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV(uint32_t value)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Reverse byte order (16 bit)
|
||||
|
||||
This function reverses the byte order in two unsigned short values.
|
||||
|
||||
\param [in] value Value to reverse
|
||||
\return Reversed value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV16(uint32_t value)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Reverse byte order in signed short value
|
||||
|
||||
This function reverses the byte order in a signed short value with sign extension to integer.
|
||||
|
||||
\param [in] value Value to reverse
|
||||
\return Reversed value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE int32_t __REVSH(int32_t value)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Rotate Right in unsigned value (32 bit)
|
||||
|
||||
This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
|
||||
|
||||
\param [in] value Value to rotate
|
||||
\param [in] value Number of Bits to rotate
|
||||
\return Rotated value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
|
||||
{
|
||||
|
||||
__ASM volatile ("ror %0, %0, %1" : "+r" (op1) : "r" (op2) );
|
||||
return(op1);
|
||||
}
|
||||
|
||||
|
||||
#if (__CORTEX_M >= 0x03)
|
||||
|
||||
/** \brief Reverse bit order of value
|
||||
|
||||
This function reverses the bit order of the given value.
|
||||
|
||||
\param [in] value Value to reverse
|
||||
\return Reversed value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __RBIT(uint32_t value)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief LDR Exclusive (8 bit)
|
||||
|
||||
This function performs a exclusive LDR command for 8 bit value.
|
||||
|
||||
\param [in] ptr Pointer to data
|
||||
\return value of type uint8_t at (*ptr)
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __LDREXB(volatile uint8_t *addr)
|
||||
{
|
||||
uint8_t result;
|
||||
|
||||
__ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief LDR Exclusive (16 bit)
|
||||
|
||||
This function performs a exclusive LDR command for 16 bit values.
|
||||
|
||||
\param [in] ptr Pointer to data
|
||||
\return value of type uint16_t at (*ptr)
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint16_t __LDREXH(volatile uint16_t *addr)
|
||||
{
|
||||
uint16_t result;
|
||||
|
||||
__ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief LDR Exclusive (32 bit)
|
||||
|
||||
This function performs a exclusive LDR command for 32 bit values.
|
||||
|
||||
\param [in] ptr Pointer to data
|
||||
\return value of type uint32_t at (*ptr)
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __LDREXW(volatile uint32_t *addr)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief STR Exclusive (8 bit)
|
||||
|
||||
This function performs a exclusive STR command for 8 bit values.
|
||||
|
||||
\param [in] value Value to store
|
||||
\param [in] ptr Pointer to location
|
||||
\return 0 Function succeeded
|
||||
\return 1 Function failed
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("strexb %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief STR Exclusive (16 bit)
|
||||
|
||||
This function performs a exclusive STR command for 16 bit values.
|
||||
|
||||
\param [in] value Value to store
|
||||
\param [in] ptr Pointer to location
|
||||
\return 0 Function succeeded
|
||||
\return 1 Function failed
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("strexh %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief STR Exclusive (32 bit)
|
||||
|
||||
This function performs a exclusive STR command for 32 bit values.
|
||||
|
||||
\param [in] value Value to store
|
||||
\param [in] ptr Pointer to location
|
||||
\return 0 Function succeeded
|
||||
\return 1 Function failed
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("strex %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
/** \brief Remove the exclusive lock
|
||||
|
||||
This function removes the exclusive lock which is created by LDREX.
|
||||
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE void __CLREX(void)
|
||||
{
|
||||
__ASM volatile ("clrex");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Signed Saturate
|
||||
|
||||
This function saturates a signed value.
|
||||
|
||||
\param [in] value Value to be saturated
|
||||
\param [in] sat Bit position to saturate to (1..32)
|
||||
\return Saturated value
|
||||
*/
|
||||
#define __SSAT(ARG1,ARG2) \
|
||||
({ \
|
||||
uint32_t __RES, __ARG1 = (ARG1); \
|
||||
__ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \
|
||||
__RES; \
|
||||
})
|
||||
|
||||
|
||||
/** \brief Unsigned Saturate
|
||||
|
||||
This function saturates an unsigned value.
|
||||
|
||||
\param [in] value Value to be saturated
|
||||
\param [in] sat Bit position to saturate to (0..31)
|
||||
\return Saturated value
|
||||
*/
|
||||
#define __USAT(ARG1,ARG2) \
|
||||
({ \
|
||||
uint32_t __RES, __ARG1 = (ARG1); \
|
||||
__ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \
|
||||
__RES; \
|
||||
})
|
||||
|
||||
|
||||
/** \brief Count leading zeros
|
||||
|
||||
This function counts the number of leading zeros of a data value.
|
||||
|
||||
\param [in] value Value to count the leading zeros
|
||||
\return number of leading zeros in value
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __CLZ(uint32_t value)
|
||||
{
|
||||
uint8_t result;
|
||||
|
||||
__ASM volatile ("clz %0, %1" : "=r" (result) : "r" (value) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
#endif /* (__CORTEX_M >= 0x03) */
|
||||
|
||||
|
||||
|
||||
|
||||
#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/
|
||||
/* TASKING carm specific functions */
|
||||
|
||||
/*
|
||||
* The CMSIS functions have been implemented as intrinsics in the compiler.
|
||||
* Please use "carm -?i" to get an up to date list of all intrinsics,
|
||||
* Including the CMSIS ones.
|
||||
*/
|
||||
|
||||
#endif
|
||||
|
||||
/*@}*/ /* end of group CMSIS_Core_InstructionInterface */
|
||||
|
||||
#endif /* __CORE_CMINSTR_H */
|
|
@ -1,243 +0,0 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
<title>CMSIS Debug Support</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
|
||||
<meta name="ProgId" content="FrontPage.Editor.Document">
|
||||
<style>
|
||||
<!--
|
||||
/*-----------------------------------------------------------
|
||||
Keil Software CHM Style Sheet
|
||||
-----------------------------------------------------------*/
|
||||
body { color: #000000; background-color: #FFFFFF; font-size: 75%; font-family:
|
||||
Verdana, Arial, 'Sans Serif' }
|
||||
a:link { color: #0000FF; text-decoration: underline }
|
||||
a:visited { color: #0000FF; text-decoration: underline }
|
||||
a:active { color: #FF0000; text-decoration: underline }
|
||||
a:hover { color: #FF0000; text-decoration: underline }
|
||||
h1 { font-family: Verdana; font-size: 18pt; color: #000080; font-weight: bold;
|
||||
text-align: Center; margin-right: 3 }
|
||||
h2 { font-family: Verdana; font-size: 14pt; color: #000080; font-weight: bold;
|
||||
background-color: #CCCCCC; margin-top: 24; margin-bottom: 3;
|
||||
padding: 6 }
|
||||
h3 { font-family: Verdana; font-size: 10pt; font-weight: bold; background-color:
|
||||
#CCCCCC; margin-top: 24; margin-bottom: 3; padding: 6 }
|
||||
pre { font-family: Courier New; font-size: 10pt; background-color: #CCFFCC;
|
||||
margin-left: 24; margin-right: 24 }
|
||||
ul { list-style-type: square; margin-top: 6pt; margin-bottom: 0 }
|
||||
ol { margin-top: 6pt; margin-bottom: 0 }
|
||||
li { clear: both; margin-bottom: 6pt }
|
||||
table { font-size: 100%; border-width: 0; padding: 0 }
|
||||
th { color: #FFFFFF; background-color: #000080; text-align: left; vertical-align:
|
||||
bottom; padding-right: 6pt }
|
||||
tr { text-align: left; vertical-align: top }
|
||||
td { text-align: left; vertical-align: top; padding-right: 6pt }
|
||||
.ToolT { font-size: 8pt; color: #808080 }
|
||||
.TinyT { font-size: 8pt; text-align: Center }
|
||||
code { color: #000000; background-color: #E0E0E0; font-family: 'Courier New', Courier;
|
||||
line-height: 120%; font-style: normal }
|
||||
/*-----------------------------------------------------------
|
||||
Notes
|
||||
-----------------------------------------------------------*/
|
||||
p.note { font-weight: bold; clear: both; margin-bottom: 3pt; padding-top: 6pt }
|
||||
/*-----------------------------------------------------------
|
||||
Expanding/Contracting Divisions
|
||||
-----------------------------------------------------------*/
|
||||
#expand { text-decoration: none; margin-bottom: 3pt }
|
||||
img.expand { border-style: none; border-width: medium }
|
||||
div.expand { display: none; margin-left: 9pt; margin-top: 0 }
|
||||
/*-----------------------------------------------------------
|
||||
Where List Tags
|
||||
-----------------------------------------------------------*/
|
||||
p.wh { font-weight: bold; clear: both; margin-top: 6pt; margin-bottom: 3pt }
|
||||
table.wh { width: 100% }
|
||||
td.whItem { white-space: nowrap; font-style: italic; padding-right: 6pt; padding-bottom:
|
||||
6pt }
|
||||
td.whDesc { padding-bottom: 6pt }
|
||||
/*-----------------------------------------------------------
|
||||
Keil Table Tags
|
||||
-----------------------------------------------------------*/
|
||||
table.kt { border: 1pt solid #000000 }
|
||||
th.kt { white-space: nowrap; border-bottom: 1pt solid #000000; padding-left: 6pt;
|
||||
padding-right: 6pt; padding-top: 4pt; padding-bottom: 4pt }
|
||||
tr.kt { }
|
||||
td.kt { color: #000000; background-color: #E0E0E0; border-top: 1pt solid #A0A0A0;
|
||||
padding-left: 6pt; padding-right: 6pt; padding-top: 2pt;
|
||||
padding-bottom: 2pt }
|
||||
/*-----------------------------------------------------------
|
||||
-----------------------------------------------------------*/
|
||||
-->
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>CMSIS Debug Support</h1>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>Cortex-M3 ITM Debug Access</h2>
|
||||
<p>
|
||||
The Cortex-M3 incorporates the Instrumented Trace Macrocell (ITM) that provides together with
|
||||
the Serial Viewer Output trace capabilities for the microcontroller system. The ITM has
|
||||
32 communication channels which are able to transmit 32 / 16 / 8 bit values; two ITM
|
||||
communication channels are used by CMSIS to output the following information:
|
||||
</p>
|
||||
<ul>
|
||||
<li>ITM Channel 0: used for printf-style output via the debug interface.</li>
|
||||
<li>ITM Channel 31: is reserved for RTOS kernel awareness debugging.</li>
|
||||
</ul>
|
||||
|
||||
<h2>Debug IN / OUT functions</h2>
|
||||
<p>CMSIS provides following debug functions:</p>
|
||||
<ul>
|
||||
<li>ITM_SendChar (uses ITM channel 0)</li>
|
||||
<li>ITM_ReceiveChar (uses global variable)</li>
|
||||
<li>ITM_CheckChar (uses global variable)</li>
|
||||
</ul>
|
||||
|
||||
<h3>ITM_SendChar</h3>
|
||||
<p>
|
||||
<strong>ITM_SendChar</strong> is used to transmit a character over ITM channel 0 from
|
||||
the microcontroller system to the debug system. <br>
|
||||
Only a 8 bit value is transmitted.
|
||||
</p>
|
||||
<pre>
|
||||
static __INLINE uint32_t ITM_SendChar (uint32_t ch)
|
||||
{
|
||||
/* check if debugger connected and ITM channel enabled for tracing */
|
||||
if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA) &&
|
||||
(ITM->TCR & ITM_TCR_ITMENA) &&
|
||||
(ITM->TER & (1UL << 0)) )
|
||||
{
|
||||
while (ITM->PORT[0].u32 == 0);
|
||||
ITM->PORT[0].u8 = (uint8_t)ch;
|
||||
}
|
||||
return (ch);
|
||||
}</pre>
|
||||
|
||||
<h3>ITM_ReceiveChar</h3>
|
||||
<p>
|
||||
ITM communication channel is only capable for OUT direction. For IN direction
|
||||
a globel variable is used. A simple mechansim detects if a character is received.
|
||||
The project to test need to be build with debug information.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The globale variable <strong>ITM_RxBuffer</strong> is used to transmit a 8 bit value from debug system
|
||||
to microcontroller system. <strong>ITM_RxBuffer</strong> is 32 bit wide to enshure a proper handshake.
|
||||
</p>
|
||||
<pre>
|
||||
extern volatile int ITM_RxBuffer; /* variable to receive characters */
|
||||
</pre>
|
||||
<p>
|
||||
A dedicated bit pattern is used to determin if <strong>ITM_RxBuffer</strong> is empty
|
||||
or contains a valid value.
|
||||
</p>
|
||||
<pre>
|
||||
#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /* value identifying ITM_RxBuffer is ready for next character */
|
||||
</pre>
|
||||
<p>
|
||||
<strong>ITM_ReceiveChar</strong> is used to receive a 8 bit value from the debug system. The function is nonblocking.
|
||||
It returns the received character or '-1' if no character was available.
|
||||
</p>
|
||||
<pre>
|
||||
static __INLINE int ITM_ReceiveChar (void) {
|
||||
int ch = -1; /* no character available */
|
||||
|
||||
if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) {
|
||||
ch = ITM_RxBuffer;
|
||||
ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */
|
||||
}
|
||||
|
||||
return (ch);
|
||||
}
|
||||
</pre>
|
||||
|
||||
<h3>ITM_CheckChar</h3>
|
||||
<p>
|
||||
<strong>ITM_CheckChar</strong> is used to check if a character is received.
|
||||
</p>
|
||||
<pre>
|
||||
static __INLINE int ITM_CheckChar (void) {
|
||||
|
||||
if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) {
|
||||
return (0); /* no character available */
|
||||
} else {
|
||||
return (1); /* character available */
|
||||
}
|
||||
}</pre>
|
||||
|
||||
|
||||
<h2>ITM Debug Support in uVision</h2>
|
||||
<p>
|
||||
uVision uses in a debug session the <strong>Debug (printf) Viewer</strong> window to
|
||||
display the debug data.
|
||||
</p>
|
||||
<p>Direction microcontroller system -> uVision:</p>
|
||||
<ul>
|
||||
<li>
|
||||
Characters received via ITM communication channel 0 are written in a printf style
|
||||
to <strong>Debug (printf) Viewer</strong> window.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>Direction uVision -> microcontroller system:</p>
|
||||
<ul>
|
||||
<li>Check if <strong>ITM_RxBuffer</strong> variable is available (only performed once).</li>
|
||||
<li>Read character from <strong>Debug (printf) Viewer</strong> window.</li>
|
||||
<li>If <strong>ITM_RxBuffer</strong> empty write character to <strong>ITM_RxBuffer</strong>.</li>
|
||||
</ul>
|
||||
|
||||
<p class="Note">Note</p>
|
||||
<ul>
|
||||
<li><p>Current solution does not use a buffer machanism for trasmitting the characters.</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>RTX Kernel awareness in uVision</h2>
|
||||
<p>
|
||||
uVision / RTX are using a simple and efficient solution for RTX Kernel awareness.
|
||||
No format overhead is necessary.<br>
|
||||
uVsion debugger decodes the RTX events via the 32 / 16 / 8 bit ITM write access
|
||||
to ITM communication channel 31.
|
||||
</p>
|
||||
|
||||
<p>Following RTX events are traced:</p>
|
||||
<ul>
|
||||
<li>Task Create / Delete event
|
||||
<ol>
|
||||
<li>32 bit access. Task start address is transmitted</li>
|
||||
<li>16 bit access. Task ID and Create/Delete flag are transmitted<br>
|
||||
High byte holds Create/Delete flag, Low byte holds TASK ID.
|
||||
</li>
|
||||
</ol>
|
||||
</li>
|
||||
<li>Task switch event
|
||||
<ol>
|
||||
<li>8 bit access. Task ID of current task is transmitted</li>
|
||||
</ol>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p class="Note">Note</p>
|
||||
<ul>
|
||||
<li><p>Other RTOS information could be retrieved via memory read access in a polling mode manner.</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
|
||||
|
||||
<hr>
|
||||
|
||||
<p class="TinyT">Copyright © KEIL - An ARM Company.<br>
|
||||
All rights reserved.<br>
|
||||
Visit our web site at <a href="http://www.keil.com">www.keil.com</a>.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -1,320 +0,0 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
<title>CMSIS Changes</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
|
||||
<meta name="ProgId" content="FrontPage.Editor.Document">
|
||||
<style>
|
||||
<!--
|
||||
/*-----------------------------------------------------------
|
||||
Keil Software CHM Style Sheet
|
||||
-----------------------------------------------------------*/
|
||||
body { color: #000000; background-color: #FFFFFF; font-size: 75%; font-family:
|
||||
Verdana, Arial, 'Sans Serif' }
|
||||
a:link { color: #0000FF; text-decoration: underline }
|
||||
a:visited { color: #0000FF; text-decoration: underline }
|
||||
a:active { color: #FF0000; text-decoration: underline }
|
||||
a:hover { color: #FF0000; text-decoration: underline }
|
||||
h1 { font-family: Verdana; font-size: 18pt; color: #000080; font-weight: bold;
|
||||
text-align: Center; margin-right: 3 }
|
||||
h2 { font-family: Verdana; font-size: 14pt; color: #000080; font-weight: bold;
|
||||
background-color: #CCCCCC; margin-top: 24; margin-bottom: 3;
|
||||
padding: 6 }
|
||||
h3 { font-family: Verdana; font-size: 10pt; font-weight: bold; background-color:
|
||||
#CCCCCC; margin-top: 24; margin-bottom: 3; padding: 6 }
|
||||
pre { font-family: Courier New; font-size: 10pt; background-color: #CCFFCC;
|
||||
margin-left: 24; margin-right: 24 }
|
||||
ul { list-style-type: square; margin-top: 6pt; margin-bottom: 0 }
|
||||
ol { margin-top: 6pt; margin-bottom: 0 }
|
||||
li { clear: both; margin-bottom: 6pt }
|
||||
table { font-size: 100%; border-width: 0; padding: 0 }
|
||||
th { color: #FFFFFF; background-color: #000080; text-align: left; vertical-align:
|
||||
bottom; padding-right: 6pt }
|
||||
tr { text-align: left; vertical-align: top }
|
||||
td { text-align: left; vertical-align: top; padding-right: 6pt }
|
||||
.ToolT { font-size: 8pt; color: #808080 }
|
||||
.TinyT { font-size: 8pt; text-align: Center }
|
||||
code { color: #000000; background-color: #E0E0E0; font-family: 'Courier New', Courier;
|
||||
line-height: 120%; font-style: normal }
|
||||
/*-----------------------------------------------------------
|
||||
Notes
|
||||
-----------------------------------------------------------*/
|
||||
p.note { font-weight: bold; clear: both; margin-bottom: 3pt; padding-top: 6pt }
|
||||
/*-----------------------------------------------------------
|
||||
Expanding/Contracting Divisions
|
||||
-----------------------------------------------------------*/
|
||||
#expand { text-decoration: none; margin-bottom: 3pt }
|
||||
img.expand { border-style: none; border-width: medium }
|
||||
div.expand { display: none; margin-left: 9pt; margin-top: 0 }
|
||||
/*-----------------------------------------------------------
|
||||
Where List Tags
|
||||
-----------------------------------------------------------*/
|
||||
p.wh { font-weight: bold; clear: both; margin-top: 6pt; margin-bottom: 3pt }
|
||||
table.wh { width: 100% }
|
||||
td.whItem { white-space: nowrap; font-style: italic; padding-right: 6pt; padding-bottom:
|
||||
6pt }
|
||||
td.whDesc { padding-bottom: 6pt }
|
||||
/*-----------------------------------------------------------
|
||||
Keil Table Tags
|
||||
-----------------------------------------------------------*/
|
||||
table.kt { border: 1pt solid #000000 }
|
||||
th.kt { white-space: nowrap; border-bottom: 1pt solid #000000; padding-left: 6pt;
|
||||
padding-right: 6pt; padding-top: 4pt; padding-bottom: 4pt }
|
||||
tr.kt { }
|
||||
td.kt { color: #000000; background-color: #E0E0E0; border-top: 1pt solid #A0A0A0;
|
||||
padding-left: 6pt; padding-right: 6pt; padding-top: 2pt;
|
||||
padding-bottom: 2pt }
|
||||
/*-----------------------------------------------------------
|
||||
-----------------------------------------------------------*/
|
||||
-->
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>Changes to CMSIS version V1.20</h1>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>1. Removed CMSIS Middelware packages</h2>
|
||||
<p>
|
||||
CMSIS Middleware is on hold from ARM side until a agreement between all CMSIS partners is found.
|
||||
</p>
|
||||
|
||||
<h2>2. SystemFrequency renamed to SystemCoreClock</h2>
|
||||
<p>
|
||||
The variable name <strong>SystemCoreClock</strong> is more precise than <strong>SystemFrequency</strong>
|
||||
because the variable holds the clock value at which the core is running.
|
||||
</p>
|
||||
|
||||
<h2>3. Changed startup concept</h2>
|
||||
<p>
|
||||
The old startup concept (calling SystemInit_ExtMemCtl from startup file and calling SystemInit
|
||||
from main) has the weakness that it does not work for controllers which need a already
|
||||
configuerd clock system to configure the external memory controller.
|
||||
</p>
|
||||
|
||||
<h3>Changed startup concept</h3>
|
||||
<ul>
|
||||
<li>
|
||||
SystemInit() is called from startup file before <strong>premain</strong>.
|
||||
</li>
|
||||
<li>
|
||||
<strong>SystemInit()</strong> configures the clock system and also configures
|
||||
an existing external memory controller.
|
||||
</li>
|
||||
<li>
|
||||
<strong>SystemInit()</strong> must not use global variables.
|
||||
</li>
|
||||
<li>
|
||||
<strong>SystemCoreClock</strong> is initialized with a correct predefined value.
|
||||
</li>
|
||||
<li>
|
||||
Additional function <strong>void SystemCoreClockUpdate (void)</strong> is provided.<br>
|
||||
<strong>SystemCoreClockUpdate()</strong> updates the variable <strong>SystemCoreClock</strong>
|
||||
and must be called whenever the core clock is changed.<br>
|
||||
<strong>SystemCoreClockUpdate()</strong> evaluates the clock register settings and calculates
|
||||
the current core clock.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>4. Advanced Debug Functions</h2>
|
||||
<p>
|
||||
ITM communication channel is only capable for OUT direction. To allow also communication for
|
||||
IN direction a simple concept is provided.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Global variable <strong>volatile int ITM_RxBuffer</strong> used for IN data.
|
||||
</li>
|
||||
<li>
|
||||
Function <strong>int ITM_CheckChar (void)</strong> checks if a new character is available.
|
||||
</li>
|
||||
<li>
|
||||
Function <strong>int ITM_ReceiveChar (void)</strong> retrieves the new character.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
For detailed explanation see file <strong>CMSIS debug support.htm</strong>.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>5. Core Register Bit Definitions</h2>
|
||||
<p>
|
||||
Files core_cm3.h and core_cm0.h contain now bit definitions for Core Registers. The name for the
|
||||
defines correspond with the Cortex-M Technical Reference Manual.
|
||||
</p>
|
||||
<p>
|
||||
e.g. SysTick structure with bit definitions
|
||||
</p>
|
||||
<pre>
|
||||
/** @addtogroup CMSIS_CM3_SysTick CMSIS CM3 SysTick
|
||||
memory mapped structure for SysTick
|
||||
@{
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
__IO uint32_t CTRL; /*!< Offset: 0x00 SysTick Control and Status Register */
|
||||
__IO uint32_t LOAD; /*!< Offset: 0x04 SysTick Reload Value Register */
|
||||
__IO uint32_t VAL; /*!< Offset: 0x08 SysTick Current Value Register */
|
||||
__I uint32_t CALIB; /*!< Offset: 0x0C SysTick Calibration Register */
|
||||
} SysTick_Type;
|
||||
|
||||
/* SysTick Control / Status Register Definitions */
|
||||
#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */
|
||||
#define SysTick_CTRL_COUNTFLAG_Msk (1ul << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */
|
||||
|
||||
#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */
|
||||
#define SysTick_CTRL_CLKSOURCE_Msk (1ul << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */
|
||||
|
||||
#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */
|
||||
#define SysTick_CTRL_TICKINT_Msk (1ul << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */
|
||||
|
||||
#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */
|
||||
#define SysTick_CTRL_ENABLE_Msk (1ul << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */
|
||||
|
||||
/* SysTick Reload Register Definitions */
|
||||
#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */
|
||||
#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */
|
||||
|
||||
/* SysTick Current Register Definitions */
|
||||
#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */
|
||||
#define SysTick_VAL_CURRENT_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */
|
||||
|
||||
/* SysTick Calibration Register Definitions */
|
||||
#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */
|
||||
#define SysTick_CALIB_NOREF_Msk (1ul << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */
|
||||
|
||||
#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */
|
||||
#define SysTick_CALIB_SKEW_Msk (1ul << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */
|
||||
|
||||
#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */
|
||||
#define SysTick_CALIB_TENMS_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */
|
||||
/*@}*/ /* end of group CMSIS_CM3_SysTick */</pre>
|
||||
|
||||
<h2>7. DoxyGen Tags</h2>
|
||||
<p>
|
||||
DoxyGen tags in files core_cm3.[c,h] and core_cm0.[c,h] are reworked to create proper documentation
|
||||
using DoxyGen.
|
||||
</p>
|
||||
|
||||
<h2>8. Folder Structure</h2>
|
||||
<p>
|
||||
The folder structure is changed to differentiate the single support packages.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>CM0</li>
|
||||
<li>CM3
|
||||
<ul>
|
||||
<li>CoreSupport</li>
|
||||
<li>DeviceSupport</li>
|
||||
<ul>
|
||||
<li>Vendor
|
||||
<ul>
|
||||
<li>Device
|
||||
<ul>
|
||||
<li>Startup
|
||||
<ul>
|
||||
<li>Toolchain</li>
|
||||
<li>Toolchain</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Device</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Vendor</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Example
|
||||
<ul>
|
||||
<li>Toolchain
|
||||
<ul>
|
||||
<li>Device</li>
|
||||
<li>Device</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Toolchain</li>
|
||||
<li>...</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li>Documentation</li>
|
||||
</ul>
|
||||
|
||||
<h2>9. Open Points</h2>
|
||||
<p>
|
||||
Following points need to be clarified and solved:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>
|
||||
Equivalent C and Assembler startup files.
|
||||
</p>
|
||||
<p>
|
||||
Is there a need for having C startup files although assembler startup files are
|
||||
very efficient and do not need to be changed?
|
||||
<p/>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
Placing of HEAP in external RAM.
|
||||
</p>
|
||||
<p>
|
||||
It must be possible to place HEAP in external RAM if the device supports an
|
||||
external memory controller.
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
Placing of STACK /HEAP.
|
||||
</p>
|
||||
<p>
|
||||
STACK should always be placed at the end of internal RAM.
|
||||
</p>
|
||||
<p>
|
||||
If HEAP is placed in internal RAM than it should be placed after RW ZI section.
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
Removing core_cm3.c and core_cm0.c.
|
||||
</p>
|
||||
<p>
|
||||
On a long term the functions in core_cm3.c and core_cm0.c must be replaced with
|
||||
appropriate compiler intrinsics.
|
||||
</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>10. Limitations</h2>
|
||||
<p>
|
||||
The following limitations are not covered with the current CMSIS version:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
No <strong>C startup files</strong> for ARM toolchain are provided.
|
||||
</li>
|
||||
<li>
|
||||
No <strong>C startup files</strong> for GNU toolchain are provided.
|
||||
</li>
|
||||
<li>
|
||||
No <strong>C startup files</strong> for IAR toolchain are provided.
|
||||
</li>
|
||||
<li>
|
||||
No <strong>Tasking</strong> projects are provided yet.
|
||||
</li>
|
||||
</ul>
|
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue