forked from Imagelibrary/rtems
@@ -4,6 +4,8 @@ AC_DEFUN([RTEMS_CHECK_BSPDIR],
|
||||
case "$1" in
|
||||
altera-cyclone-v )
|
||||
AC_CONFIG_SUBDIRS([altera-cyclone-v]);;
|
||||
atsam )
|
||||
AC_CONFIG_SUBDIRS([atsam]);;
|
||||
beagle )
|
||||
AC_CONFIG_SUBDIRS([beagle]);;
|
||||
csb336 )
|
||||
|
||||
439
c/src/lib/libbsp/arm/atsam/Makefile.am
Normal file
439
c/src/lib/libbsp/arm/atsam/Makefile.am
Normal file
@@ -0,0 +1,439 @@
|
||||
ACLOCAL_AMFLAGS = -I ../../../../aclocal
|
||||
|
||||
include $(top_srcdir)/../../../../automake/compile.am
|
||||
|
||||
###############################################################################
|
||||
# Data #
|
||||
###############################################################################
|
||||
|
||||
dist_project_lib_DATA = bsp_specs
|
||||
|
||||
noinst_LIBRARIES = libbspstart.a
|
||||
|
||||
libbspstart_a_SOURCES = ../shared/start/start.S
|
||||
|
||||
project_lib_DATA =
|
||||
project_lib_DATA += start.$(OBJEXT)
|
||||
project_lib_DATA += startup/linkcmds
|
||||
project_lib_DATA += startup/linkcmds.memory
|
||||
project_lib_DATA += startup/linkcmds.intsram
|
||||
project_lib_DATA += startup/linkcmds.sdram
|
||||
|
||||
###############################################################################
|
||||
# Header #
|
||||
###############################################################################
|
||||
|
||||
include_HEADERS =
|
||||
include_HEADERS += ../../shared/include/tm27.h
|
||||
include_HEADERS += ../shared/CMSIS/Include/core_cm7.h
|
||||
include_HEADERS += ../shared/CMSIS/Include/core_cmInstr.h
|
||||
include_HEADERS += ../shared/CMSIS/Include/core_cmFunc.h
|
||||
include_HEADERS += ../shared/CMSIS/Include/core_cmSimd.h
|
||||
include_HEADERS += ../shared/CMSIS/Include/cmsis_gcc.h
|
||||
include_HEADERS += include/bsp.h
|
||||
|
||||
nodist_include_HEADERS =
|
||||
nodist_include_HEADERS += ../../shared/include/coverhd.h
|
||||
nodist_include_HEADERS += include/bspopts.h
|
||||
|
||||
include_bspdir = $(includedir)/bsp
|
||||
|
||||
nodist_include_bsp_HEADERS =
|
||||
nodist_include_bsp_HEADERS += ../../shared/include/bootcard.h
|
||||
|
||||
include_bsp_HEADERS =
|
||||
include_bsp_HEADERS += ../../shared/include/utility.h
|
||||
include_bsp_HEADERS += ../../shared/include/irq-generic.h
|
||||
include_bsp_HEADERS += ../../shared/include/irq-info.h
|
||||
include_bsp_HEADERS += ../../shared/include/stackalloc.h
|
||||
include_bsp_HEADERS += ../shared/include/start.h
|
||||
include_bsp_HEADERS += ../shared/armv7m/include/armv7m-irq.h
|
||||
include_bsp_HEADERS += include/irq.h
|
||||
include_bsp_HEADERS += include/pin-config.h
|
||||
|
||||
include_libchipdir = $(includedir)/libchip
|
||||
|
||||
include_libchip_HEADERS =
|
||||
include_libchip_HEADERS += libraries/libchip/chip.h
|
||||
include_libchip_HEADERS += libraries/libchip/compiler.h
|
||||
|
||||
include_libchip_includedir = $(includedir)/libchip/include
|
||||
|
||||
include_libchip_include_HEADERS =
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/acc.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/adc.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/aes.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/afec.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/afe_dma.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/chip.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/dac_dma.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/efc.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/exceptions.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/flashd.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/gmacd.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/gmac.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/hsmci.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/icm.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/isi.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/iso7816_4.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/mcan.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/mcid.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/mediaLB.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/mpu.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/pio_capture.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/pio.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/pio_it.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/pmc.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/pwmc.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/qspi_dma.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/qspi.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/rstc.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/rtc.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/rtt.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/sdramc.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/smc.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/spi_dma.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/spi.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/ssc.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/supc.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/tc.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/timetick.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/trace.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/trng.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/twid.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/twi.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/uart_dma.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/uart.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/usart_dma.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/usart.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/usbhs.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/video.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/wdt.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/xdmac.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/xdmad.h
|
||||
include_libchip_include_HEADERS += libraries/libchip/include/xdma_hardware_interface.h
|
||||
|
||||
include_libchip_include_same70dir = $(includedir)/libchip/include/same70
|
||||
|
||||
include_libchip_include_same70_HEADERS =
|
||||
include_libchip_include_same70_HEADERS += libraries/libchip/include/same70/same70.h
|
||||
include_libchip_include_same70_HEADERS += libraries/libchip/include/same70/same70j19.h
|
||||
include_libchip_include_same70_HEADERS += libraries/libchip/include/same70/same70j20.h
|
||||
include_libchip_include_same70_HEADERS += libraries/libchip/include/same70/same70j21.h
|
||||
include_libchip_include_same70_HEADERS += libraries/libchip/include/same70/same70n19.h
|
||||
include_libchip_include_same70_HEADERS += libraries/libchip/include/same70/same70n20.h
|
||||
include_libchip_include_same70_HEADERS += libraries/libchip/include/same70/same70n21.h
|
||||
include_libchip_include_same70_HEADERS += libraries/libchip/include/same70/same70q19.h
|
||||
include_libchip_include_same70_HEADERS += libraries/libchip/include/same70/same70q20.h
|
||||
include_libchip_include_same70_HEADERS += libraries/libchip/include/same70/same70q21.h
|
||||
include_libchip_include_same70_HEADERS += libraries/libchip/include/same70/system_same70.h
|
||||
|
||||
include_libchip_include_same70_componentdir = $(includedir)/libchip/include/same70/component
|
||||
|
||||
include_libchip_include_same70_component_HEADERS =
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_acc.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_aes.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_afec.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_chipid.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_dacc.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_efc.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_gmac.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_gpbr.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_hsmci.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_icm.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_isi.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_matrix.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_mcan.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_pio.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_pmc.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_pwm.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_qspi.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_rstc.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_rswdt.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_rtc.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_rtt.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_sdramc.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_smc.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_spi.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_ssc.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_supc.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_tc.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_trng.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_twihs.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_uart.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_usart.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_usbhs.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_utmi.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_wdt.h
|
||||
include_libchip_include_same70_component_HEADERS += libraries/libchip/include/same70/component/component_xdmac.h
|
||||
|
||||
include_libchip_include_same70_piodir = $(includedir)/libchip/include/same70/pio
|
||||
|
||||
include_libchip_include_same70_pio_HEADERS =
|
||||
include_libchip_include_same70_pio_HEADERS += libraries/libchip/include/same70/pio/pio_same70j19.h
|
||||
include_libchip_include_same70_pio_HEADERS += libraries/libchip/include/same70/pio/pio_same70j20.h
|
||||
include_libchip_include_same70_pio_HEADERS += libraries/libchip/include/same70/pio/pio_same70j21.h
|
||||
include_libchip_include_same70_pio_HEADERS += libraries/libchip/include/same70/pio/pio_same70n19.h
|
||||
include_libchip_include_same70_pio_HEADERS += libraries/libchip/include/same70/pio/pio_same70n20.h
|
||||
include_libchip_include_same70_pio_HEADERS += libraries/libchip/include/same70/pio/pio_same70n21.h
|
||||
include_libchip_include_same70_pio_HEADERS += libraries/libchip/include/same70/pio/pio_same70q19.h
|
||||
include_libchip_include_same70_pio_HEADERS += libraries/libchip/include/same70/pio/pio_same70q20.h
|
||||
include_libchip_include_same70_pio_HEADERS += libraries/libchip/include/same70/pio/pio_same70q21.h
|
||||
|
||||
include_libchip_include_sams70dir = $(includedir)/libchip/include/sams70
|
||||
|
||||
include_libchip_include_sams70_HEADERS =
|
||||
include_libchip_include_sams70_HEADERS += libraries/libchip/include/sams70/sams70.h
|
||||
include_libchip_include_sams70_HEADERS += libraries/libchip/include/sams70/sams70j19.h
|
||||
include_libchip_include_sams70_HEADERS += libraries/libchip/include/sams70/sams70j20.h
|
||||
include_libchip_include_sams70_HEADERS += libraries/libchip/include/sams70/sams70j21.h
|
||||
include_libchip_include_sams70_HEADERS += libraries/libchip/include/sams70/sams70n19.h
|
||||
include_libchip_include_sams70_HEADERS += libraries/libchip/include/sams70/sams70n20.h
|
||||
include_libchip_include_sams70_HEADERS += libraries/libchip/include/sams70/sams70n21.h
|
||||
include_libchip_include_sams70_HEADERS += libraries/libchip/include/sams70/sams70q19.h
|
||||
include_libchip_include_sams70_HEADERS += libraries/libchip/include/sams70/sams70q20.h
|
||||
include_libchip_include_sams70_HEADERS += libraries/libchip/include/sams70/sams70q21.h
|
||||
include_libchip_include_sams70_HEADERS += libraries/libchip/include/sams70/system_sams70.h
|
||||
|
||||
include_libchip_include_sams70_componentdir = $(includedir)/libchip/include/sams70/component
|
||||
|
||||
include_libchip_include_sams70_component_HEADERS =
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_acc.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_aes.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_afec.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_chipid.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_dacc.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_efc.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_gpbr.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_hsmci.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_icm.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_isi.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_matrix.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_pio.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_pmc.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_pwm.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_qspi.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_rstc.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_rswdt.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_rtc.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_rtt.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_sdramc.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_smc.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_spi.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_ssc.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_supc.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_tc.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_trng.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_twihs.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_uart.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_usart.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_usbhs.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_utmi.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_wdt.h
|
||||
include_libchip_include_sams70_component_HEADERS += libraries/libchip/include/sams70/component/component_xdmac.h
|
||||
|
||||
include_libchip_include_sams70_piodir = $(includedir)/libchip/include/sams70/pio
|
||||
|
||||
include_libchip_include_sams70_pio_HEADERS =
|
||||
include_libchip_include_sams70_pio_HEADERS += libraries/libchip/include/sams70/pio/pio_sams70j19.h
|
||||
include_libchip_include_sams70_pio_HEADERS += libraries/libchip/include/sams70/pio/pio_sams70j20.h
|
||||
include_libchip_include_sams70_pio_HEADERS += libraries/libchip/include/sams70/pio/pio_sams70j21.h
|
||||
include_libchip_include_sams70_pio_HEADERS += libraries/libchip/include/sams70/pio/pio_sams70n19.h
|
||||
include_libchip_include_sams70_pio_HEADERS += libraries/libchip/include/sams70/pio/pio_sams70n20.h
|
||||
include_libchip_include_sams70_pio_HEADERS += libraries/libchip/include/sams70/pio/pio_sams70n21.h
|
||||
include_libchip_include_sams70_pio_HEADERS += libraries/libchip/include/sams70/pio/pio_sams70q19.h
|
||||
include_libchip_include_sams70_pio_HEADERS += libraries/libchip/include/sams70/pio/pio_sams70q20.h
|
||||
include_libchip_include_sams70_pio_HEADERS += libraries/libchip/include/sams70/pio/pio_sams70q21.h
|
||||
|
||||
include_libchip_include_samv71dir = $(includedir)/libchip/include/samv71
|
||||
|
||||
include_libchip_include_samv71_HEADERS =
|
||||
include_libchip_include_samv71_HEADERS += libraries/libchip/include/samv71/samv71.h
|
||||
include_libchip_include_samv71_HEADERS += libraries/libchip/include/samv71/samv71j19.h
|
||||
include_libchip_include_samv71_HEADERS += libraries/libchip/include/samv71/samv71j20.h
|
||||
include_libchip_include_samv71_HEADERS += libraries/libchip/include/samv71/samv71j21.h
|
||||
include_libchip_include_samv71_HEADERS += libraries/libchip/include/samv71/samv71n19.h
|
||||
include_libchip_include_samv71_HEADERS += libraries/libchip/include/samv71/samv71n20.h
|
||||
include_libchip_include_samv71_HEADERS += libraries/libchip/include/samv71/samv71n21.h
|
||||
include_libchip_include_samv71_HEADERS += libraries/libchip/include/samv71/samv71q19.h
|
||||
include_libchip_include_samv71_HEADERS += libraries/libchip/include/samv71/samv71q20.h
|
||||
include_libchip_include_samv71_HEADERS += libraries/libchip/include/samv71/samv71q21.h
|
||||
include_libchip_include_samv71_HEADERS += libraries/libchip/include/samv71/system_samv71.h
|
||||
|
||||
include_libchip_include_samv71_componentdir = $(includedir)/libchip/include/samv71/component
|
||||
|
||||
include_libchip_include_samv71_component_HEADERS =
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_acc.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_aes.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_afec.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_chipid.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_dacc.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_efc.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_gmac.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_gpbr.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_hsmci.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_icm.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_isi.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_matrix.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_mcan.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_mlb.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_pio.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_pmc.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_pwm.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_qspi.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_rstc.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_rswdt.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_rtc.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_rtt.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_sdramc.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_smc.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_spi.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_ssc.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_supc.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_tc.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_trng.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_twihs.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_uart.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_usart.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_usbhs.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_utmi.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_wdt.h
|
||||
include_libchip_include_samv71_component_HEADERS += libraries/libchip/include/samv71/component/component_xdmac.h
|
||||
|
||||
include_libchip_include_samv71_piodir = $(includedir)/libchip/include/samv71/pio
|
||||
|
||||
include_libchip_include_samv71_pio_HEADERS =
|
||||
include_libchip_include_samv71_pio_HEADERS += libraries/libchip/include/samv71/pio/pio_samv71j19.h
|
||||
include_libchip_include_samv71_pio_HEADERS += libraries/libchip/include/samv71/pio/pio_samv71j20.h
|
||||
include_libchip_include_samv71_pio_HEADERS += libraries/libchip/include/samv71/pio/pio_samv71j21.h
|
||||
include_libchip_include_samv71_pio_HEADERS += libraries/libchip/include/samv71/pio/pio_samv71n19.h
|
||||
include_libchip_include_samv71_pio_HEADERS += libraries/libchip/include/samv71/pio/pio_samv71n20.h
|
||||
include_libchip_include_samv71_pio_HEADERS += libraries/libchip/include/samv71/pio/pio_samv71n21.h
|
||||
include_libchip_include_samv71_pio_HEADERS += libraries/libchip/include/samv71/pio/pio_samv71q19.h
|
||||
include_libchip_include_samv71_pio_HEADERS += libraries/libchip/include/samv71/pio/pio_samv71q20.h
|
||||
include_libchip_include_samv71_pio_HEADERS += libraries/libchip/include/samv71/pio/pio_samv71q21.h
|
||||
|
||||
###############################################################################
|
||||
# LibBSP #
|
||||
###############################################################################
|
||||
|
||||
noinst_LIBRARIES += libbsp.a
|
||||
|
||||
libbsp_a_SOURCES =
|
||||
libbsp_a_CPPFLAGS =
|
||||
libbsp_a_LIBADD =
|
||||
|
||||
# Shared
|
||||
libbsp_a_SOURCES += ../../shared/bootcard.c
|
||||
libbsp_a_SOURCES += ../../shared/bspclean.c
|
||||
libbsp_a_SOURCES += ../../shared/bspgetworkarea.c
|
||||
libbsp_a_SOURCES += ../../shared/bsplibc.c
|
||||
libbsp_a_SOURCES += ../../shared/bsppost.c
|
||||
libbsp_a_SOURCES += ../../shared/bsppredriverhook.c
|
||||
libbsp_a_SOURCES += ../../shared/cpucounterread.c
|
||||
libbsp_a_SOURCES += ../../shared/cpucounterdiff.c
|
||||
libbsp_a_SOURCES += ../../shared/gnatinstallhandler.c
|
||||
libbsp_a_SOURCES += ../../shared/sbrk.c
|
||||
libbsp_a_SOURCES += ../../shared/src/stackalloc.c
|
||||
|
||||
# libchip
|
||||
libbsp_a_SOURCES += libraries/libchip/source/acc.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/aes.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/afec.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/afe_dma.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/dac_dma.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/efc.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/exceptions.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/flashd.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/gmac.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/gmacd.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/hsmci.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/icm.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/isi.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/mcan.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/mediaLB.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/mpu.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/pio.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/pio_capture.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/pio_it.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/pmc.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/pwmc.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/qspi.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/qspi_dma.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/rstc.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/rtc.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/rtt.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/sdramc.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/spi.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/spi_dma.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/ssc.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/supc.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/tc.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/trng.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/twi.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/twid.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/uart.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/uart_dma.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/usart.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/usart_dma.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/wdt.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/xdmac.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/xdmad.c
|
||||
libbsp_a_SOURCES += libraries/libchip/source/xdma_hardware_interface.c
|
||||
|
||||
# libboard
|
||||
libbsp_a_SOURCES += libraries/libboard/resources_v71/system_samv71.c
|
||||
libbsp_a_SOURCES += libraries/libboard/source/board_lowlevel.c
|
||||
libbsp_a_SOURCES += libraries/libboard/source/board_memories.c
|
||||
libbsp_a_SOURCES += libraries/libboard/source/dbg_console.c
|
||||
|
||||
# Startup
|
||||
libbsp_a_SOURCES += ../shared/startup/bsp-start-memcpy.S
|
||||
libbsp_a_SOURCES += ../shared/armv7m/startup/bspreset.c
|
||||
libbsp_a_SOURCES += startup/bspstart.c
|
||||
libbsp_a_SOURCES += startup/bspstarthooks.c
|
||||
libbsp_a_SOURCES += startup/pin-config.c
|
||||
|
||||
# IRQ
|
||||
libbsp_a_SOURCES += ../../shared/src/irq-default-handler.c
|
||||
libbsp_a_SOURCES += ../../shared/src/irq-generic.c
|
||||
libbsp_a_SOURCES += ../../shared/src/irq-info.c
|
||||
libbsp_a_SOURCES += ../../shared/src/irq-legacy.c
|
||||
libbsp_a_SOURCES += ../../shared/src/irq-server.c
|
||||
libbsp_a_SOURCES += ../../shared/src/irq-shell.c
|
||||
libbsp_a_SOURCES += ../shared/armv7m/irq/armv7m-irq.c
|
||||
libbsp_a_SOURCES += ../shared/armv7m/irq/armv7m-irq-dispatch.c
|
||||
|
||||
# Console
|
||||
libbsp_a_SOURCES += ../../shared/console-termios.c
|
||||
libbsp_a_SOURCES += console/console.c
|
||||
libbsp_a_SOURCES += console/debug-console.c
|
||||
|
||||
# Clock
|
||||
libbsp_a_SOURCES += ../../shared/clockdrv_shell.h
|
||||
libbsp_a_SOURCES += ../shared/armv7m/clock/armv7m-clock-config.c
|
||||
libbsp_a_SOURCES += clock/systick-freq.c
|
||||
|
||||
# Timer
|
||||
libbsp_a_SOURCES += ../../shared/timerstub.c
|
||||
|
||||
# Cache
|
||||
libbsp_a_SOURCES += ../../../libcpu/shared/src/cache_manager.c
|
||||
libbsp_a_SOURCES += ../shared/armv7m/include/cache_.h
|
||||
libbsp_a_CPPFLAGS += -I$(srcdir)/../shared/armv7m/include
|
||||
|
||||
# Includes
|
||||
libbsp_a_CPPFLAGS += -I$(srcdir)/../shared/CMSIS/Include
|
||||
libbsp_a_CPPFLAGS += -I$(srcdir)/libraries/libboard
|
||||
libbsp_a_CPPFLAGS += -I$(srcdir)/libraries/libboard/include
|
||||
libbsp_a_CPPFLAGS += -I$(srcdir)/libraries/libchip
|
||||
libbsp_a_CPPFLAGS += -I$(srcdir)/libraries/libchip/include
|
||||
|
||||
###############################################################################
|
||||
# Special Rules #
|
||||
###############################################################################
|
||||
|
||||
DISTCLEANFILES = include/bspopts.h
|
||||
|
||||
include $(srcdir)/preinstall.am
|
||||
include $(top_srcdir)/../../../../automake/local.am
|
||||
59
c/src/lib/libbsp/arm/atsam/README
Normal file
59
c/src/lib/libbsp/arm/atsam/README
Normal file
@@ -0,0 +1,59 @@
|
||||
Board support package for the Atmel SAM V71/V70/E70/S70 chip platform.
|
||||
|
||||
The BSP is customized to a particular board/chip variant by means of configure
|
||||
command line options.
|
||||
|
||||
Use --enable-chip=XYZ to select the chip variant where XYZ is one of same70j19,
|
||||
same70j20, same70j21, same70n19, same70n20, same70n21, same70q19, same70q20,
|
||||
same70q21, sams70j19, sams70j20, sams70j21, sams70n19, sams70n20, sams70n21,
|
||||
sams70q19, sams70q20, sams70q21, samv71j19, samv71j20, samv71j21, samv71n19,
|
||||
samv71n20, samv71n21, samv71q19, samv71q20 and samv71q21. By default the BSP
|
||||
uses the ATSAMV71Q21 chip. Not all variants are tested.
|
||||
|
||||
Use BOARD_MAINOSC=XYZ to set the main oscillator frequency in Hz (default
|
||||
12MHz).
|
||||
|
||||
Use BOARD_MCK=XYZ to set the Master Clock (MCK) frequency in Hz (default
|
||||
123MHz). The default value enables operation of an external SDRAM, e.g. 150MHz
|
||||
would be too fast.
|
||||
|
||||
Use ATSAM_CONSOLE_BAUD=XYZ to set the initial baud for console devices (default
|
||||
115200).
|
||||
|
||||
Use ATSAM_CONSOLE_DEVICE_TYPE=XYZ to set the device type for /dev/console, use
|
||||
0 for USART and 1 for UART (default USART).
|
||||
|
||||
Use ATSAM_CONSOLE_DEVICE_INDEX=XYZ to set the device index for /dev/console
|
||||
(default 1, e.g. USART1).
|
||||
|
||||
Use ATSAM_CONSOLE_USE_INTERRUPTS=XYZ to set the use interrupt driven mode for
|
||||
console devices (used by default).
|
||||
|
||||
Use ATSAM_MEMORY_TCM_SIZE=XYZ to set the size of tightly coupled memories (TCM)
|
||||
in bytes (default 0x00000000).
|
||||
|
||||
Use ATSAM_MEMORY_INTFLASH_SIZE=XYZ to set the size of internal flash in bytes
|
||||
(default is derived from chip variant).
|
||||
|
||||
Use ATSAM_MEMORY_INTSRAM_SIZE=XYZ to set the size of internal SRAM in bytes
|
||||
(default is derived from chip variant).
|
||||
|
||||
Use ATSAM_MEMORY_SDRAM_SIZE=XYZ to set the size of external SDRAM in bytes
|
||||
(default 0x00200000).
|
||||
|
||||
The pins may be configured by the application at link-time. See
|
||||
<bsp/pin-config.h>.
|
||||
|
||||
The clock driver uses the ARMv7-M Systick.
|
||||
|
||||
The console driver supports the USART and UART devices.
|
||||
|
||||
The default linker command file places the code into the internal flash. Use
|
||||
"LDFLAGS += -qnolinkcmds -T linkcmds.sdram" to place the code into the external
|
||||
SDRAM. Use "LDFLAGS += -qnolinkcmds -T linkcmds.intsram" to place the code
|
||||
into the internal SRAM.
|
||||
|
||||
The fast text section uses the ITCM. The fast data section uses the DTCM.
|
||||
|
||||
Data and instruction cache are enabled during system start. The RTEMS cache
|
||||
manager is supported with exception of the freeze functions.
|
||||
13
c/src/lib/libbsp/arm/atsam/bsp_specs
Normal file
13
c/src/lib/libbsp/arm/atsam/bsp_specs
Normal file
@@ -0,0 +1,13 @@
|
||||
%rename endfile old_endfile
|
||||
%rename startfile old_startfile
|
||||
%rename link old_link
|
||||
|
||||
*startfile:
|
||||
%{!qrtems: %(old_startfile)} \
|
||||
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _start}}
|
||||
|
||||
*link:
|
||||
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
|
||||
|
||||
*endfile:
|
||||
%{!qrtems: %(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }
|
||||
31
c/src/lib/libbsp/arm/atsam/clock/systick-freq.c
Normal file
31
c/src/lib/libbsp/arm/atsam/clock/systick-freq.c
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright (c) 2016 embedded brains GmbH. All rights reserved.
|
||||
*
|
||||
* embedded brains GmbH
|
||||
* Dornierstr. 4
|
||||
* 82178 Puchheim
|
||||
* Germany
|
||||
* <rtems@embedded-brains.de>
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.org/license/LICENSE.
|
||||
*/
|
||||
|
||||
#include <bsp.h>
|
||||
|
||||
#include <chip.h>
|
||||
|
||||
uint32_t atsam_systick_frequency(void)
|
||||
{
|
||||
uint32_t mdiv = (PMC->PMC_MCKR & PMC_MCKR_MDIV_Msk) >> PMC_MCKR_MDIV_Pos;
|
||||
uint32_t fclk;
|
||||
|
||||
if (mdiv == 3) {
|
||||
fclk = BOARD_MCK * mdiv;
|
||||
} else {
|
||||
fclk = BOARD_MCK * (1 << mdiv);
|
||||
}
|
||||
|
||||
return fclk;
|
||||
}
|
||||
85
c/src/lib/libbsp/arm/atsam/configure.ac
Normal file
85
c/src/lib/libbsp/arm/atsam/configure.ac
Normal file
@@ -0,0 +1,85 @@
|
||||
AC_PREREQ([2.69])
|
||||
AC_INIT([rtems-c-src-lib-libbsp-arm-atsam],[_RTEMS_VERSION],[https://devel.rtems.org/newticket])
|
||||
AC_CONFIG_SRCDIR([bsp_specs])
|
||||
RTEMS_TOP(../../../../../..)
|
||||
|
||||
RTEMS_CANONICAL_TARGET_CPU
|
||||
AM_INIT_AUTOMAKE([no-define nostdinc foreign 1.12.2])
|
||||
RTEMS_BSP_CONFIGURE
|
||||
|
||||
RTEMS_PROG_CC_FOR_TARGET
|
||||
RTEMS_CANONICALIZE_TOOLS
|
||||
RTEMS_PROG_CCAS
|
||||
|
||||
RTEMS_CHECK_NETWORKING
|
||||
AM_CONDITIONAL(HAS_NETWORKING,test "$HAS_NETWORKING" = "yes")
|
||||
|
||||
RTEMS_BSP_CLEANUP_OPTIONS(0, 1)
|
||||
AC_ARG_ENABLE(
|
||||
[chip],
|
||||
[AS_HELP_STRING([--enable-chip],[select a chip variant (default samv71q21)])],
|
||||
[case "${enableval}" in
|
||||
same70j19) AC_DEFINE([__SAME70J19__],[1],[chip variant]) INTFLASH=0x00080000 ; INTSRAM=0x00004000 ;;
|
||||
same70j20) AC_DEFINE([__SAME70J20__],[1],[chip variant]) INTFLASH=0x00100000 ; INTSRAM=0x00006000 ;;
|
||||
same70j21) AC_DEFINE([__SAME70J21__],[1],[chip variant]) INTFLASH=0x00200000 ; INTSRAM=0x00006000 ;;
|
||||
same70n19) AC_DEFINE([__SAME70N19__],[1],[chip variant]) INTFLASH=0x00080000 ; INTSRAM=0x00004000 ;;
|
||||
same70n20) AC_DEFINE([__SAME70N20__],[1],[chip variant]) INTFLASH=0x00100000 ; INTSRAM=0x00006000 ;;
|
||||
same70n21) AC_DEFINE([__SAME70N21__],[1],[chip variant]) INTFLASH=0x00200000 ; INTSRAM=0x00006000 ;;
|
||||
same70q19) AC_DEFINE([__SAME70Q19__],[1],[chip variant]) INTFLASH=0x00080000 ; INTSRAM=0x00004000 ;;
|
||||
same70q20) AC_DEFINE([__SAME70Q20__],[1],[chip variant]) INTFLASH=0x00100000 ; INTSRAM=0x00006000 ;;
|
||||
same70q21) AC_DEFINE([__SAME70Q21__],[1],[chip variant]) INTFLASH=0x00200000 ; INTSRAM=0x00006000 ;;
|
||||
sams70j19) AC_DEFINE([__SAMS70J19__],[1],[chip variant]) INTFLASH=0x00080000 ; INTSRAM=0x00004000 ;;
|
||||
sams70j20) AC_DEFINE([__SAMS70J20__],[1],[chip variant]) INTFLASH=0x00100000 ; INTSRAM=0x00006000 ;;
|
||||
sams70j21) AC_DEFINE([__SAMS70J21__],[1],[chip variant]) INTFLASH=0x00200000 ; INTSRAM=0x00006000 ;;
|
||||
sams70n19) AC_DEFINE([__SAMS70N19__],[1],[chip variant]) INTFLASH=0x00080000 ; INTSRAM=0x00004000 ;;
|
||||
sams70n20) AC_DEFINE([__SAMS70N20__],[1],[chip variant]) INTFLASH=0x00100000 ; INTSRAM=0x00006000 ;;
|
||||
sams70n21) AC_DEFINE([__SAMS70N21__],[1],[chip variant]) INTFLASH=0x00200000 ; INTSRAM=0x00006000 ;;
|
||||
sams70q19) AC_DEFINE([__SAMS70Q19__],[1],[chip variant]) INTFLASH=0x00080000 ; INTSRAM=0x00004000 ;;
|
||||
sams70q20) AC_DEFINE([__SAMS70Q20__],[1],[chip variant]) INTFLASH=0x00100000 ; INTSRAM=0x00006000 ;;
|
||||
sams70q21) AC_DEFINE([__SAMS70Q21__],[1],[chip variant]) INTFLASH=0x00200000 ; INTSRAM=0x00006000 ;;
|
||||
samv71j19) AC_DEFINE([__SAMV71J19__],[1],[chip variant]) INTFLASH=0x00080000 ; INTSRAM=0x00004000 ;;
|
||||
samv71j20) AC_DEFINE([__SAMV71J20__],[1],[chip variant]) INTFLASH=0x00100000 ; INTSRAM=0x00006000 ;;
|
||||
samv71j21) AC_DEFINE([__SAMV71J21__],[1],[chip variant]) INTFLASH=0x00200000 ; INTSRAM=0x00006000 ;;
|
||||
samv71n19) AC_DEFINE([__SAMV71N19__],[1],[chip variant]) INTFLASH=0x00080000 ; INTSRAM=0x00004000 ;;
|
||||
samv71n20) AC_DEFINE([__SAMV71N20__],[1],[chip variant]) INTFLASH=0x00100000 ; INTSRAM=0x00006000 ;;
|
||||
samv71n21) AC_DEFINE([__SAMV71N21__],[1],[chip variant]) INTFLASH=0x00200000 ; INTSRAM=0x00006000 ;;
|
||||
samv71q19) AC_DEFINE([__SAMV71Q19__],[1],[chip variant]) INTFLASH=0x00080000 ; INTSRAM=0x00004000 ;;
|
||||
samv71q20) AC_DEFINE([__SAMV71Q20__],[1],[chip variant]) INTFLASH=0x00100000 ; INTSRAM=0x00006000 ;;
|
||||
samv71q21) AC_DEFINE([__SAMV71Q21__],[1],[chip variant]) INTFLASH=0x00200000 ; INTSRAM=0x00006000 ;;
|
||||
*) AC_MSG_ERROR([bad value ${enableval} for chip variant]) ;;
|
||||
esac],
|
||||
[AC_DEFINE([__SAMV71Q21__],[1],[chip variant]) INTFLASH=0x00200000 ; INTSRAM=0x00006000])
|
||||
|
||||
RTEMS_BSPOPTS_SET([BOARD_MAINOSC],[*],[12000000])
|
||||
RTEMS_BSPOPTS_HELP([BOARD_MAINOSC],[Main oscillator frequency in Hz (default 12MHz)])
|
||||
|
||||
RTEMS_BSPOPTS_SET([BOARD_MCK],[*],[123000000])
|
||||
RTEMS_BSPOPTS_HELP([BOARD_MCK],[Master Clock (MCK) frequency in Hz (default 123MHz)])
|
||||
|
||||
RTEMS_BSPOPTS_SET([ATSAM_CONSOLE_BAUD],[*],[115200])
|
||||
RTEMS_BSPOPTS_HELP([ATSAM_CONSOLE_BAUD],[initial baud for console devices (default 115200)])
|
||||
|
||||
RTEMS_BSPOPTS_SET([ATSAM_CONSOLE_DEVICE_TYPE],[*],[0])
|
||||
RTEMS_BSPOPTS_HELP([ATSAM_CONSOLE_DEVICE_TYPE],[device type for /dev/console, use 0 for USART and 1 for UART (default USART)])
|
||||
|
||||
RTEMS_BSPOPTS_SET([ATSAM_CONSOLE_DEVICE_INDEX],[*],[1])
|
||||
RTEMS_BSPOPTS_HELP([ATSAM_CONSOLE_DEVICE_INDEX],[device index for /dev/console (default 1, e.g. USART1)])
|
||||
|
||||
RTEMS_BSPOPTS_SET([ATSAM_CONSOLE_USE_INTERRUPTS],[*],[1])
|
||||
RTEMS_BSPOPTS_HELP([ATSAM_CONSOLE_USE_INTERRUPTS],[use interrupt driven mode for console devices (used by default)])
|
||||
|
||||
AC_DEFUN([ATSAM_LINKCMD],[
|
||||
AC_ARG_VAR([$1],[$2])dnl
|
||||
[$1]=[$]{[$1]:-[$3]}
|
||||
])
|
||||
|
||||
ATSAM_LINKCMD([ATSAM_MEMORY_TCM_SIZE],[size of tightly coupled memories (TCM) in bytes],[0x00000000])
|
||||
ATSAM_LINKCMD([ATSAM_MEMORY_INTFLASH_SIZE],[size of internal flash in bytes],[${INTFLASH}])
|
||||
ATSAM_LINKCMD([ATSAM_MEMORY_INTSRAM_SIZE],[size of internal SRAM in bytes],[${INTSRAM}])
|
||||
ATSAM_LINKCMD([ATSAM_MEMORY_SDRAM_SIZE],[size of external SDRAM in bytes],[0x00200000])
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
startup/linkcmds.memory
|
||||
])
|
||||
AC_OUTPUT
|
||||
531
c/src/lib/libbsp/arm/atsam/console/console.c
Normal file
531
c/src/lib/libbsp/arm/atsam/console/console.c
Normal file
@@ -0,0 +1,531 @@
|
||||
/*
|
||||
* Copyright (c) 2016 embedded brains GmbH. All rights reserved.
|
||||
*
|
||||
* embedded brains GmbH
|
||||
* Dornierstr. 4
|
||||
* 82178 Puchheim
|
||||
* Germany
|
||||
* <rtems@embedded-brains.de>
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.org/license/LICENSE.
|
||||
*/
|
||||
|
||||
#include <bsp.h>
|
||||
#include <bsp/irq.h>
|
||||
#include <bsp/fatal.h>
|
||||
|
||||
#include <rtems/termiostypes.h>
|
||||
|
||||
#include <chip.h>
|
||||
|
||||
typedef struct {
|
||||
rtems_termios_device_context base;
|
||||
Usart *regs;
|
||||
rtems_vector_number irq;
|
||||
uint32_t id;
|
||||
bool console;
|
||||
#ifdef ATSAM_CONSOLE_USE_INTERRUPTS
|
||||
bool transmitting;
|
||||
#endif
|
||||
} atsam_usart_context;
|
||||
|
||||
static atsam_usart_context atsam_usart_instances[] = {
|
||||
{
|
||||
.regs = USART0,
|
||||
.irq = USART0_IRQn,
|
||||
.id = ID_USART0
|
||||
}
|
||||
#ifdef USART1
|
||||
, {
|
||||
.regs = USART1,
|
||||
.irq = USART1_IRQn,
|
||||
.id = ID_USART1
|
||||
}
|
||||
#endif
|
||||
#ifdef USART2
|
||||
, {
|
||||
.regs = USART2,
|
||||
.irq = USART2_IRQn,
|
||||
.id = ID_USART2
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
#ifdef ATSAM_CONSOLE_USE_INTERRUPTS
|
||||
static void atsam_usart_interrupt(void *arg)
|
||||
{
|
||||
rtems_termios_tty *tty = arg;
|
||||
atsam_usart_context *ctx = rtems_termios_get_device_context(tty);
|
||||
Usart *regs = ctx->regs;
|
||||
uint32_t csr = regs->US_CSR;
|
||||
|
||||
while ((csr & US_CSR_RXRDY) != 0) {
|
||||
char c = (char) regs->US_RHR;
|
||||
|
||||
rtems_termios_enqueue_raw_characters(tty, &c, 1);
|
||||
|
||||
csr = regs->US_CSR;
|
||||
}
|
||||
|
||||
if (ctx->transmitting && (csr & US_CSR_TXEMPTY) != 0) {
|
||||
rtems_termios_dequeue_characters(tty, 1);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static bool atsam_usart_set_attributes(
|
||||
rtems_termios_device_context *base,
|
||||
const struct termios *term
|
||||
)
|
||||
{
|
||||
atsam_usart_context *ctx = (atsam_usart_context *) base;
|
||||
Usart *regs = ctx->regs;
|
||||
rtems_termios_baud_t baud;
|
||||
uint32_t mr;
|
||||
|
||||
baud = rtems_termios_baud_to_number(term->c_cflag);
|
||||
regs->US_BRGR = (BOARD_MCK / baud) / 16;
|
||||
|
||||
if ((term->c_cflag & CREAD) != 0) {
|
||||
regs->US_CR = US_CR_RXEN | US_CR_TXEN;
|
||||
} else {
|
||||
regs->US_CR = US_CR_TXEN;
|
||||
}
|
||||
|
||||
mr = US_MR_USART_MODE_NORMAL | US_MR_USCLKS_MCK;
|
||||
|
||||
switch (term->c_cflag & CSIZE) {
|
||||
case CS5:
|
||||
mr |= US_MR_CHRL_5_BIT;
|
||||
break;
|
||||
case CS6:
|
||||
mr |= US_MR_CHRL_6_BIT;
|
||||
break;
|
||||
case CS7:
|
||||
mr |= US_MR_CHRL_7_BIT;
|
||||
break;
|
||||
default:
|
||||
mr |= US_MR_CHRL_8_BIT;
|
||||
break;
|
||||
}
|
||||
|
||||
if ((term->c_cflag & PARENB) != 0) {
|
||||
if ((term->c_cflag & PARODD) != 0) {
|
||||
mr |= US_MR_PAR_ODD;
|
||||
} else {
|
||||
mr |= US_MR_PAR_EVEN;
|
||||
}
|
||||
} else {
|
||||
mr |= US_MR_PAR_NO;
|
||||
}
|
||||
|
||||
if ((term->c_cflag & CSTOPB) != 0) {
|
||||
mr |= US_MR_NBSTOP_2_BIT;
|
||||
} else {
|
||||
mr |= US_MR_NBSTOP_1_BIT;
|
||||
}
|
||||
|
||||
regs->US_MR = mr;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool atsam_usart_first_open(
|
||||
rtems_termios_tty *tty,
|
||||
rtems_termios_device_context *base,
|
||||
struct termios *term,
|
||||
rtems_libio_open_close_args_t *args
|
||||
)
|
||||
{
|
||||
atsam_usart_context *ctx = (atsam_usart_context *) base;
|
||||
Usart *regs = ctx->regs;
|
||||
#ifdef ATSAM_CONSOLE_USE_INTERRUPTS
|
||||
rtems_status_code sc;
|
||||
#endif
|
||||
|
||||
regs->US_CR = US_CR_RSTRX | US_CR_RSTTX | US_CR_RSTSTA;
|
||||
regs->US_IDR = 0xffffffff;
|
||||
|
||||
PMC_EnablePeripheral(ctx->id);
|
||||
|
||||
rtems_termios_set_initial_baud(tty, ATSAM_CONSOLE_BAUD);
|
||||
atsam_usart_set_attributes(base, term);
|
||||
|
||||
#ifdef ATSAM_CONSOLE_USE_INTERRUPTS
|
||||
regs->US_IER = US_IDR_RXRDY;
|
||||
sc = rtems_interrupt_handler_install(
|
||||
ctx->irq,
|
||||
"USART",
|
||||
RTEMS_INTERRUPT_SHARED,
|
||||
atsam_usart_interrupt,
|
||||
tty
|
||||
);
|
||||
if (sc != RTEMS_SUCCESSFUL) {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static void atsam_usart_last_close(
|
||||
rtems_termios_tty *tty,
|
||||
rtems_termios_device_context *base,
|
||||
rtems_libio_open_close_args_t *args
|
||||
)
|
||||
{
|
||||
atsam_usart_context *ctx = (atsam_usart_context *) base;
|
||||
|
||||
#ifdef ATSAM_CONSOLE_USE_INTERRUPTS
|
||||
rtems_interrupt_handler_remove(ctx->irq, atsam_usart_interrupt, tty);
|
||||
#endif
|
||||
|
||||
if (!ctx->console) {
|
||||
PMC_DisablePeripheral(ctx->id);
|
||||
}
|
||||
}
|
||||
|
||||
static void atsam_usart_write(
|
||||
rtems_termios_device_context *base,
|
||||
const char *buf,
|
||||
size_t len
|
||||
)
|
||||
{
|
||||
atsam_usart_context *ctx = (atsam_usart_context *) base;
|
||||
Usart *regs = ctx->regs;
|
||||
|
||||
#ifdef ATSAM_CONSOLE_USE_INTERRUPTS
|
||||
if (len > 0) {
|
||||
ctx->transmitting = true;
|
||||
regs->US_THR = buf[0];
|
||||
regs->US_IER = US_IDR_TXEMPTY;
|
||||
} else {
|
||||
ctx->transmitting = false;
|
||||
regs->US_IDR = US_IDR_TXEMPTY;
|
||||
}
|
||||
#else
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i < len; ++i) {
|
||||
while ((regs->US_CSR & US_CSR_TXEMPTY) == 0) {
|
||||
/* Wait */
|
||||
}
|
||||
|
||||
regs->US_THR = buf[i];
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef ATSAM_CONSOLE_USE_INTERRUPTS
|
||||
static int atsam_usart_read(rtems_termios_device_context *base)
|
||||
{
|
||||
atsam_usart_context *ctx = (atsam_usart_context *) base;
|
||||
Usart *regs = ctx->regs;
|
||||
|
||||
if ((regs->US_CSR & US_CSR_RXRDY) != 0) {
|
||||
return (char) regs->US_RHR;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static const rtems_termios_device_handler atsam_usart_handler = {
|
||||
.first_open = atsam_usart_first_open,
|
||||
.last_close = atsam_usart_last_close,
|
||||
.write = atsam_usart_write,
|
||||
.set_attributes = atsam_usart_set_attributes,
|
||||
#ifdef ATSAM_CONSOLE_USE_INTERRUPTS
|
||||
.mode = TERMIOS_IRQ_DRIVEN
|
||||
#else
|
||||
.poll_read = atsam_usart_read,
|
||||
.mode = TERMIOS_POLLED
|
||||
#endif
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
rtems_termios_device_context base;
|
||||
Uart *regs;
|
||||
rtems_vector_number irq;
|
||||
uint32_t id;
|
||||
bool console;
|
||||
#ifdef ATSAM_CONSOLE_USE_INTERRUPTS
|
||||
bool transmitting;
|
||||
#endif
|
||||
} atsam_uart_context;
|
||||
|
||||
static atsam_uart_context atsam_uart_instances[] = {
|
||||
{
|
||||
.regs = UART0,
|
||||
.irq = UART0_IRQn,
|
||||
.id = ID_UART0
|
||||
}
|
||||
#ifdef UART1
|
||||
, {
|
||||
.regs = UART1,
|
||||
.irq = UART1_IRQn,
|
||||
.id = ID_UART1
|
||||
}
|
||||
#endif
|
||||
#ifdef UART2
|
||||
, {
|
||||
.regs = UART2,
|
||||
.irq = UART2_IRQn,
|
||||
.id = ID_UART2
|
||||
}
|
||||
#endif
|
||||
#ifdef UART3
|
||||
, {
|
||||
.regs = UART3,
|
||||
.irq = UART3_IRQn,
|
||||
.id = ID_UART3
|
||||
}
|
||||
#endif
|
||||
#ifdef UART4
|
||||
, {
|
||||
.regs = UART4,
|
||||
.irq = UART4_IRQn,
|
||||
.id = ID_UART4
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
#ifdef ATSAM_CONSOLE_USE_INTERRUPTS
|
||||
static void atsam_uart_interrupt(void *arg)
|
||||
{
|
||||
rtems_termios_tty *tty = arg;
|
||||
atsam_uart_context *ctx = rtems_termios_get_device_context(tty);
|
||||
Uart *regs = ctx->regs;
|
||||
uint32_t sr = regs->UART_SR;
|
||||
|
||||
while ((sr & UART_SR_RXRDY) != 0) {
|
||||
char c = (char) regs->UART_RHR;
|
||||
|
||||
rtems_termios_enqueue_raw_characters(tty, &c, 1);
|
||||
|
||||
sr = regs->UART_SR;
|
||||
}
|
||||
|
||||
if (ctx->transmitting && (sr & UART_SR_TXEMPTY) != 0) {
|
||||
rtems_termios_dequeue_characters(tty, 1);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static bool atsam_uart_set_attributes(
|
||||
rtems_termios_device_context *base,
|
||||
const struct termios *term
|
||||
)
|
||||
{
|
||||
atsam_uart_context *ctx = (atsam_uart_context *) base;
|
||||
Uart *regs = ctx->regs;
|
||||
rtems_termios_baud_t baud;
|
||||
uint32_t mr;
|
||||
|
||||
baud = rtems_termios_baud_to_number(term->c_cflag);
|
||||
regs->UART_BRGR = (BOARD_MCK / baud) / 16;
|
||||
|
||||
if ((term->c_cflag & CREAD) != 0) {
|
||||
regs->UART_CR = UART_CR_RXEN | UART_CR_TXEN;
|
||||
} else {
|
||||
regs->UART_CR = UART_CR_TXEN;
|
||||
}
|
||||
|
||||
mr = UART_MR_FILTER_DISABLED | UART_MR_BRSRCCK_PERIPH_CLK;
|
||||
|
||||
if ((term->c_cflag & CSIZE) != CS8) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((term->c_cflag & PARENB) != 0) {
|
||||
if ((term->c_cflag & PARODD) != 0) {
|
||||
mr |= UART_MR_PAR_ODD;
|
||||
} else {
|
||||
mr |= UART_MR_PAR_EVEN;
|
||||
}
|
||||
} else {
|
||||
mr |= UART_MR_PAR_NO;
|
||||
}
|
||||
|
||||
if ((term->c_cflag & CSTOPB) != 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
regs->UART_MR = mr;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool atsam_uart_first_open(
|
||||
rtems_termios_tty *tty,
|
||||
rtems_termios_device_context *base,
|
||||
struct termios *term,
|
||||
rtems_libio_open_close_args_t *args
|
||||
)
|
||||
{
|
||||
atsam_uart_context *ctx = (atsam_uart_context *) base;
|
||||
Uart *regs = ctx->regs;
|
||||
#ifdef ATSAM_CONSOLE_USE_INTERRUPTS
|
||||
rtems_status_code sc;
|
||||
#endif
|
||||
|
||||
regs->UART_CR = UART_CR_RSTRX | UART_CR_RSTTX | UART_CR_RSTSTA;
|
||||
regs->UART_IDR = 0xffffffff;
|
||||
|
||||
PMC_EnablePeripheral(ctx->id);
|
||||
|
||||
rtems_termios_set_initial_baud(tty, ATSAM_CONSOLE_BAUD);
|
||||
atsam_uart_set_attributes(base, term);
|
||||
|
||||
#ifdef ATSAM_CONSOLE_USE_INTERRUPTS
|
||||
regs->UART_IER = UART_IDR_RXRDY;
|
||||
sc = rtems_interrupt_handler_install(
|
||||
ctx->irq,
|
||||
"UART",
|
||||
RTEMS_INTERRUPT_SHARED,
|
||||
atsam_uart_interrupt,
|
||||
tty
|
||||
);
|
||||
if (sc != RTEMS_SUCCESSFUL) {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static void atsam_uart_last_close(
|
||||
rtems_termios_tty *tty,
|
||||
rtems_termios_device_context *base,
|
||||
rtems_libio_open_close_args_t *args
|
||||
)
|
||||
{
|
||||
atsam_uart_context *ctx = (atsam_uart_context *) base;
|
||||
|
||||
#ifdef ATSAM_CONSOLE_USE_INTERRUPTS
|
||||
rtems_interrupt_handler_remove(ctx->irq, atsam_uart_interrupt, tty);
|
||||
#endif
|
||||
|
||||
if (!ctx->console) {
|
||||
PMC_DisablePeripheral(ctx->id);
|
||||
}
|
||||
}
|
||||
|
||||
static void atsam_uart_write(
|
||||
rtems_termios_device_context *base,
|
||||
const char *buf,
|
||||
size_t len
|
||||
)
|
||||
{
|
||||
atsam_uart_context *ctx = (atsam_uart_context *) base;
|
||||
Uart *regs = ctx->regs;
|
||||
|
||||
#ifdef ATSAM_CONSOLE_USE_INTERRUPTS
|
||||
if (len > 0) {
|
||||
ctx->transmitting = true;
|
||||
regs->UART_THR = buf[0];
|
||||
regs->UART_IER = UART_IDR_TXEMPTY;
|
||||
} else {
|
||||
ctx->transmitting = false;
|
||||
regs->UART_IDR = UART_IDR_TXEMPTY;
|
||||
}
|
||||
#else
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i < len; ++i) {
|
||||
while ((regs->UART_SR & UART_SR_TXEMPTY) == 0) {
|
||||
/* Wait */
|
||||
}
|
||||
|
||||
regs->UART_THR = buf[i];
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef ATSAM_CONSOLE_USE_INTERRUPTS
|
||||
static int atsam_uart_read(rtems_termios_device_context *base)
|
||||
{
|
||||
atsam_uart_context *ctx = (atsam_uart_context *) base;
|
||||
Uart *regs = ctx->regs;
|
||||
|
||||
if ((regs->UART_SR & UART_SR_RXRDY) != 0) {
|
||||
return (char) regs->UART_RHR;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static const rtems_termios_device_handler atsam_uart_handler = {
|
||||
.first_open = atsam_uart_first_open,
|
||||
.last_close = atsam_uart_last_close,
|
||||
.write = atsam_uart_write,
|
||||
.set_attributes = atsam_uart_set_attributes,
|
||||
#ifdef ATSAM_CONSOLE_USE_INTERRUPTS
|
||||
.mode = TERMIOS_IRQ_DRIVEN
|
||||
#else
|
||||
.poll_read = atsam_uart_read,
|
||||
.mode = TERMIOS_POLLED
|
||||
#endif
|
||||
};
|
||||
|
||||
rtems_status_code console_initialize(
|
||||
rtems_device_major_number major,
|
||||
rtems_device_minor_number minor,
|
||||
void *arg
|
||||
)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
rtems_termios_initialize();
|
||||
|
||||
for (i = 0; i < RTEMS_ARRAY_SIZE(atsam_usart_instances); ++i) {
|
||||
char usart[] = "/dev/ttyUSARTX";
|
||||
|
||||
usart[sizeof(usart) - 2] = (char) ('0' + i);
|
||||
rtems_termios_device_install(
|
||||
&usart[0],
|
||||
major,
|
||||
minor,
|
||||
&atsam_usart_handler,
|
||||
NULL,
|
||||
&atsam_usart_instances[i].base
|
||||
);
|
||||
|
||||
#if ATSAM_CONSOLE_DEVICE_TYPE == 0
|
||||
if (i == ATSAM_CONSOLE_DEVICE_INDEX) {
|
||||
atsam_usart_instances[i].console = true;
|
||||
rtems_io_register_name(CONSOLE_DEVICE_NAME, major, minor);
|
||||
}
|
||||
#endif
|
||||
|
||||
++minor;
|
||||
}
|
||||
|
||||
for (i = 0; i < RTEMS_ARRAY_SIZE(atsam_uart_instances); ++i) {
|
||||
char uart[] = "/dev/ttyUARTX";
|
||||
|
||||
uart[sizeof(uart) - 2] = (char) ('0' + i);
|
||||
rtems_termios_device_install(
|
||||
&uart[0],
|
||||
major,
|
||||
minor,
|
||||
&atsam_uart_handler,
|
||||
NULL,
|
||||
&atsam_uart_instances[i].base
|
||||
);
|
||||
|
||||
#if ATSAM_CONSOLE_DEVICE_TYPE == 1
|
||||
if (i == ATSAM_CONSOLE_DEVICE_INDEX) {
|
||||
atsam_uart_instances[i].console = true;
|
||||
rtems_io_register_name(CONSOLE_DEVICE_NAME, major, minor);
|
||||
}
|
||||
#endif
|
||||
|
||||
++minor;
|
||||
}
|
||||
|
||||
return RTEMS_SUCCESSFUL;
|
||||
}
|
||||
55
c/src/lib/libbsp/arm/atsam/console/debug-console.c
Normal file
55
c/src/lib/libbsp/arm/atsam/console/debug-console.c
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Copyright (c) 2016 embedded brains GmbH. All rights reserved.
|
||||
*
|
||||
* embedded brains GmbH
|
||||
* Dornierstr. 4
|
||||
* 82178 Puchheim
|
||||
* Germany
|
||||
* <rtems@embedded-brains.de>
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.org/license/LICENSE.
|
||||
*/
|
||||
|
||||
#include <rtems/bspIo.h>
|
||||
#include <rtems/sysinit.h>
|
||||
|
||||
#include <chip.h>
|
||||
#include <include/dbg_console.h>
|
||||
|
||||
static void atsam_debug_console_out(char c)
|
||||
{
|
||||
if (c == '\n') {
|
||||
DBG_PutChar('\r');
|
||||
}
|
||||
|
||||
DBG_PutChar((uint8_t) c);
|
||||
}
|
||||
|
||||
static void atsam_debug_console_init(void)
|
||||
{
|
||||
DBG_Configure(115200, BOARD_MCK);
|
||||
BSP_output_char = atsam_debug_console_out;
|
||||
}
|
||||
|
||||
static void atsam_debug_console_early_init(char c)
|
||||
{
|
||||
atsam_debug_console_init();
|
||||
atsam_debug_console_out(c);
|
||||
}
|
||||
|
||||
static int atsam_debug_console_in(void)
|
||||
{
|
||||
return (int) DBG_GetChar();
|
||||
}
|
||||
|
||||
BSP_output_char_function_type BSP_output_char = atsam_debug_console_early_init;
|
||||
|
||||
BSP_polling_getchar_function_type BSP_poll_char = atsam_debug_console_in;
|
||||
|
||||
RTEMS_SYSINIT_ITEM(
|
||||
atsam_debug_console_init,
|
||||
RTEMS_SYSINIT_BSP_START,
|
||||
RTEMS_SYSINIT_ORDER_LAST
|
||||
);
|
||||
45
c/src/lib/libbsp/arm/atsam/include/bsp.h
Normal file
45
c/src/lib/libbsp/arm/atsam/include/bsp.h
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (c) 2016 embedded brains GmbH. All rights reserved.
|
||||
*
|
||||
* embedded brains GmbH
|
||||
* Dornierstr. 4
|
||||
* 82178 Puchheim
|
||||
* Germany
|
||||
* <rtems@embedded-brains.de>
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.org/license/LICENSE.
|
||||
*/
|
||||
|
||||
#ifndef LIBBSP_ARM_ATSAM_BSP_H
|
||||
#define LIBBSP_ARM_ATSAM_BSP_H
|
||||
|
||||
#include <bspopts.h>
|
||||
#include <bsp/default-initial-extension.h>
|
||||
|
||||
#include <rtems.h>
|
||||
#include <rtems/console.h>
|
||||
#include <rtems/clockdrv.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#define BSP_FEATURE_IRQ_EXTENSION
|
||||
|
||||
#define BSP_ARMV7M_IRQ_PRIORITY_DEFAULT (13 << 4)
|
||||
|
||||
#define BSP_ARMV7M_SYSTICK_PRIORITY (14 << 4)
|
||||
|
||||
uint32_t atsam_systick_frequency(void);
|
||||
|
||||
#define BSP_ARMV7M_SYSTICK_FREQUENCY atsam_systick_frequency()
|
||||
|
||||
/** @} */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* LIBBSP_ARM_ATSAM_BSP_H */
|
||||
30
c/src/lib/libbsp/arm/atsam/include/irq.h
Normal file
30
c/src/lib/libbsp/arm/atsam/include/irq.h
Normal file
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Copyright (c) 2016 embedded brains GmbH. All rights reserved.
|
||||
*
|
||||
* embedded brains GmbH
|
||||
* Dornierstr. 4
|
||||
* 82178 Puchheim
|
||||
* Germany
|
||||
* <rtems@embedded-brains.de>
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.org/license/LICENSE.
|
||||
*/
|
||||
|
||||
#ifndef LIBBSP_ARM_ATSAM_ESV_70_IRQ_H
|
||||
#define LIBBSP_ARM_ATSAM_ESV_70_IRQ_H
|
||||
|
||||
#include <bspopts.h>
|
||||
|
||||
#ifndef ASM
|
||||
#include <rtems.h>
|
||||
#include <rtems/irq.h>
|
||||
#include <rtems/irq-extension.h>
|
||||
#endif
|
||||
|
||||
#define BSP_INTERRUPT_VECTOR_MIN 0
|
||||
|
||||
#define BSP_INTERRUPT_VECTOR_MAX 64
|
||||
|
||||
#endif /* LIBBSP_ARM_ATSAM_ESV_70_IRQ_H */
|
||||
36
c/src/lib/libbsp/arm/atsam/include/pin-config.h
Normal file
36
c/src/lib/libbsp/arm/atsam/include/pin-config.h
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (c) 2016 embedded brains GmbH. All rights reserved.
|
||||
*
|
||||
* embedded brains GmbH
|
||||
* Dornierstr. 4
|
||||
* 82178 Puchheim
|
||||
* Germany
|
||||
* <rtems@embedded-brains.de>
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.org/license/LICENSE.
|
||||
*/
|
||||
|
||||
#ifndef LIBBSP_ARM_ATSAM_PIN_CONFIG_H
|
||||
#define LIBBSP_ARM_ATSAM_PIN_CONFIG_H
|
||||
|
||||
#include <libchip/chip.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
extern const Pin atsam_pin_config[];
|
||||
|
||||
extern const size_t atsam_pin_config_count;
|
||||
|
||||
extern const uint32_t atsam_matrix_ccfg_sysio;
|
||||
|
||||
/** @} */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* LIBBSP_ARM_ATSAM_PIN_CONFIG_H */
|
||||
10
c/src/lib/libbsp/arm/atsam/make/custom/atsamv.cfg
Normal file
10
c/src/lib/libbsp/arm/atsam/make/custom/atsamv.cfg
Normal file
@@ -0,0 +1,10 @@
|
||||
include $(RTEMS_ROOT)/make/custom/default.cfg
|
||||
|
||||
RTEMS_CPU = arm
|
||||
|
||||
CPU_CFLAGS = -mthumb -mcpu=cortex-m7 -mfpu=fpv5-d16 -mfloat-abi=hard
|
||||
|
||||
CFLAGS_OPTIMIZE_V = -O2 -g
|
||||
CFLAGS_OPTIMIZE_V += -ffunction-sections -fdata-sections
|
||||
|
||||
LDFLAGS = -Wl,--gc-sections
|
||||
1058
c/src/lib/libbsp/arm/atsam/preinstall.am
Normal file
1058
c/src/lib/libbsp/arm/atsam/preinstall.am
Normal file
File diff suppressed because it is too large
Load Diff
32
c/src/lib/libbsp/arm/atsam/startup/bspstart.c
Normal file
32
c/src/lib/libbsp/arm/atsam/startup/bspstart.c
Normal file
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright (c) 2016 embedded brains GmbH. All rights reserved.
|
||||
*
|
||||
* embedded brains GmbH
|
||||
* Dornierstr. 4
|
||||
* 82178 Puchheim
|
||||
* Germany
|
||||
* <rtems@embedded-brains.de>
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.org/license/LICENSE.
|
||||
*/
|
||||
|
||||
#include <bsp.h>
|
||||
#include <bsp/bootcard.h>
|
||||
#include <bsp/irq.h>
|
||||
#include <bsp/irq-generic.h>
|
||||
|
||||
#include <chip.h>
|
||||
|
||||
RTEMS_STATIC_ASSERT(
|
||||
PERIPH_COUNT_IRQn <= BSP_INTERRUPT_VECTOR_MAX,
|
||||
PERIPH_COUNT_IRQn
|
||||
);
|
||||
|
||||
void bsp_start(void)
|
||||
{
|
||||
bsp_interrupt_initialize();
|
||||
SCB_CleanDCache();
|
||||
SCB_InvalidateICache();
|
||||
}
|
||||
53
c/src/lib/libbsp/arm/atsam/startup/bspstarthooks.c
Normal file
53
c/src/lib/libbsp/arm/atsam/startup/bspstarthooks.c
Normal file
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright (c) 2016 embedded brains GmbH Huber. All rights reserved.
|
||||
*
|
||||
* embedded brains GmbH
|
||||
* Dornierstr. 4
|
||||
* 82178 Puchheim
|
||||
* Germany
|
||||
* <rtems@embedded-brains.de>
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.org/license/LICENSE.
|
||||
*/
|
||||
|
||||
#include <bsp.h>
|
||||
#include <bsp/start.h>
|
||||
#include <bsp/pin-config.h>
|
||||
|
||||
#include <chip.h>
|
||||
#include <include/board_lowlevel.h>
|
||||
#include <include/board_memories.h>
|
||||
|
||||
void BSP_START_TEXT_SECTION bsp_start_hook_0(void)
|
||||
{
|
||||
system_init_flash(BOARD_MCK);
|
||||
SystemInit();
|
||||
|
||||
PIO_Configure(&atsam_pin_config[0], atsam_pin_config_count);
|
||||
MATRIX->CCFG_SYSIO = atsam_matrix_ccfg_sysio;
|
||||
|
||||
if (!PMC_IsPeriphEnabled(ID_SDRAMC)) {
|
||||
BOARD_ConfigureSdram();
|
||||
}
|
||||
|
||||
if ((SCB->CCR & SCB_CCR_IC_Msk) == 0) {
|
||||
SCB_EnableICache();
|
||||
}
|
||||
|
||||
if ((SCB->CCR & SCB_CCR_DC_Msk) == 0) {
|
||||
SCB_EnableDCache();
|
||||
}
|
||||
|
||||
_SetupMemoryRegion();
|
||||
}
|
||||
|
||||
void BSP_START_TEXT_SECTION bsp_start_hook_1(void)
|
||||
{
|
||||
bsp_start_copy_sections_compact();
|
||||
SCB_CleanDCache();
|
||||
SCB_InvalidateICache();
|
||||
bsp_start_clear_bss();
|
||||
WDT_Disable(WDT);
|
||||
}
|
||||
21
c/src/lib/libbsp/arm/atsam/startup/linkcmds
Normal file
21
c/src/lib/libbsp/arm/atsam/startup/linkcmds
Normal file
@@ -0,0 +1,21 @@
|
||||
INCLUDE linkcmds.memory
|
||||
|
||||
REGION_ALIAS ("REGION_START", INTFLASH);
|
||||
REGION_ALIAS ("REGION_VECTOR", INTSRAM);
|
||||
REGION_ALIAS ("REGION_TEXT", INTFLASH);
|
||||
REGION_ALIAS ("REGION_TEXT_LOAD", INTFLASH);
|
||||
REGION_ALIAS ("REGION_RODATA", INTFLASH);
|
||||
REGION_ALIAS ("REGION_RODATA_LOAD", INTFLASH);
|
||||
REGION_ALIAS ("REGION_DATA", INTSRAM);
|
||||
REGION_ALIAS ("REGION_DATA_LOAD", INTFLASH);
|
||||
REGION_ALIAS ("REGION_FAST_TEXT", ITCM);
|
||||
REGION_ALIAS ("REGION_FAST_TEXT_LOAD", INTFLASH);
|
||||
REGION_ALIAS ("REGION_FAST_DATA", DTCM);
|
||||
REGION_ALIAS ("REGION_FAST_DATA_LOAD", INTFLASH);
|
||||
REGION_ALIAS ("REGION_BSS", INTSRAM);
|
||||
REGION_ALIAS ("REGION_WORK", INTSRAM);
|
||||
REGION_ALIAS ("REGION_STACK", INTSRAM);
|
||||
REGION_ALIAS ("REGION_NOCACHE", INTSRAM);
|
||||
REGION_ALIAS ("REGION_NOCACHE_LOAD", INTFLASH);
|
||||
|
||||
INCLUDE linkcmds.armv7m
|
||||
23
c/src/lib/libbsp/arm/atsam/startup/linkcmds.intsram
Normal file
23
c/src/lib/libbsp/arm/atsam/startup/linkcmds.intsram
Normal file
@@ -0,0 +1,23 @@
|
||||
INCLUDE linkcmds.memory
|
||||
|
||||
bsp_vector_table_in_start_section = 1;
|
||||
|
||||
REGION_ALIAS ("REGION_START", INTSRAM);
|
||||
REGION_ALIAS ("REGION_VECTOR", INTSRAM);
|
||||
REGION_ALIAS ("REGION_TEXT", INTSRAM);
|
||||
REGION_ALIAS ("REGION_TEXT_LOAD", INTSRAM);
|
||||
REGION_ALIAS ("REGION_RODATA", INTSRAM);
|
||||
REGION_ALIAS ("REGION_RODATA_LOAD", INTSRAM);
|
||||
REGION_ALIAS ("REGION_DATA", INTSRAM);
|
||||
REGION_ALIAS ("REGION_DATA_LOAD", INTSRAM);
|
||||
REGION_ALIAS ("REGION_FAST_TEXT", ITCM);
|
||||
REGION_ALIAS ("REGION_FAST_TEXT_LOAD", INTSRAM);
|
||||
REGION_ALIAS ("REGION_FAST_DATA", DTCM);
|
||||
REGION_ALIAS ("REGION_FAST_DATA_LOAD", INTSRAM);
|
||||
REGION_ALIAS ("REGION_BSS", INTSRAM);
|
||||
REGION_ALIAS ("REGION_WORK", INTSRAM);
|
||||
REGION_ALIAS ("REGION_STACK", INTSRAM);
|
||||
REGION_ALIAS ("REGION_NOCACHE", INTSRAM);
|
||||
REGION_ALIAS ("REGION_NOCACHE_LOAD", INTSRAM);
|
||||
|
||||
INCLUDE linkcmds.armv7m
|
||||
7
c/src/lib/libbsp/arm/atsam/startup/linkcmds.memory.in
Normal file
7
c/src/lib/libbsp/arm/atsam/startup/linkcmds.memory.in
Normal file
@@ -0,0 +1,7 @@
|
||||
MEMORY {
|
||||
ITCM : ORIGIN = 0x00000000, LENGTH = @ATSAM_MEMORY_TCM_SIZE@
|
||||
INTFLASH : ORIGIN = 0x00400000, LENGTH = @ATSAM_MEMORY_INTFLASH_SIZE@
|
||||
DTCM : ORIGIN = 0x20000000, LENGTH = @ATSAM_MEMORY_TCM_SIZE@
|
||||
INTSRAM : ORIGIN = 0x20400000, LENGTH = @ATSAM_MEMORY_INTSRAM_SIZE@ - 2 * @ATSAM_MEMORY_TCM_SIZE@
|
||||
SDRAM : ORIGIN = 0x70000000, LENGTH = @ATSAM_MEMORY_SDRAM_SIZE@
|
||||
}
|
||||
21
c/src/lib/libbsp/arm/atsam/startup/linkcmds.sdram
Normal file
21
c/src/lib/libbsp/arm/atsam/startup/linkcmds.sdram
Normal file
@@ -0,0 +1,21 @@
|
||||
INCLUDE linkcmds.memory
|
||||
|
||||
REGION_ALIAS ("REGION_START", SDRAM);
|
||||
REGION_ALIAS ("REGION_VECTOR", INTSRAM);
|
||||
REGION_ALIAS ("REGION_TEXT", SDRAM);
|
||||
REGION_ALIAS ("REGION_TEXT_LOAD", SDRAM);
|
||||
REGION_ALIAS ("REGION_RODATA", SDRAM);
|
||||
REGION_ALIAS ("REGION_RODATA_LOAD", SDRAM);
|
||||
REGION_ALIAS ("REGION_DATA", SDRAM);
|
||||
REGION_ALIAS ("REGION_DATA_LOAD", SDRAM);
|
||||
REGION_ALIAS ("REGION_FAST_TEXT", ITCM);
|
||||
REGION_ALIAS ("REGION_FAST_TEXT_LOAD", SDRAM);
|
||||
REGION_ALIAS ("REGION_FAST_DATA", DTCM);
|
||||
REGION_ALIAS ("REGION_FAST_DATA_LOAD", SDRAM);
|
||||
REGION_ALIAS ("REGION_BSS", SDRAM);
|
||||
REGION_ALIAS ("REGION_WORK", SDRAM);
|
||||
REGION_ALIAS ("REGION_STACK", SDRAM);
|
||||
REGION_ALIAS ("REGION_NOCACHE", SDRAM);
|
||||
REGION_ALIAS ("REGION_NOCACHE_LOAD", SDRAM);
|
||||
|
||||
INCLUDE linkcmds.armv7m
|
||||
42
c/src/lib/libbsp/arm/atsam/startup/pin-config.c
Normal file
42
c/src/lib/libbsp/arm/atsam/startup/pin-config.c
Normal file
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (c) 2016 embedded brains GmbH. All rights reserved.
|
||||
*
|
||||
* embedded brains GmbH
|
||||
* Dornierstr. 4
|
||||
* 82178 Puchheim
|
||||
* Germany
|
||||
* <rtems@embedded-brains.de>
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.org/license/LICENSE.
|
||||
*/
|
||||
|
||||
#include <bsp/pin-config.h>
|
||||
|
||||
const Pin atsam_pin_config[] = {
|
||||
/* Console */
|
||||
{PIO_PA21A_RXD1, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT},
|
||||
{PIO_PB4D_TXD1, PIOB, ID_PIOB, PIO_PERIPH_D, PIO_DEFAULT},
|
||||
|
||||
/* SDRAM */
|
||||
|
||||
/* D0_7 */ {0x000000FF, PIOC, ID_PIOC, PIO_PERIPH_A, PIO_DEFAULT},
|
||||
/* D8_13 */ {0x0000003F, PIOE, ID_PIOE, PIO_PERIPH_A, PIO_DEFAULT},
|
||||
/* D14_15 */ {0x00018000, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT},
|
||||
/* A0_9 */ {0x3FF00000, PIOC, ID_PIOC, PIO_PERIPH_A, PIO_DEFAULT},
|
||||
/* SDA10 */ {0x00002000, PIOD, ID_PIOD, PIO_PERIPH_C, PIO_DEFAULT},
|
||||
/* CAS */ {0x00020000, PIOD, ID_PIOD, PIO_PERIPH_C, PIO_DEFAULT},
|
||||
/* RAS */ {0x00010000, PIOD, ID_PIOD, PIO_PERIPH_C, PIO_DEFAULT},
|
||||
/* SDCKE */ {0x00004000, PIOD, ID_PIOD, PIO_PERIPH_C, PIO_DEFAULT},
|
||||
/* SDCK */ {0x00800000, PIOD, ID_PIOD, PIO_PERIPH_C, PIO_DEFAULT},
|
||||
/* SDSC */ {0x00008000, PIOC, ID_PIOC, PIO_PERIPH_A, PIO_DEFAULT},
|
||||
/* NBS0 */ {0x00040000, PIOC, ID_PIOC, PIO_PERIPH_A, PIO_DEFAULT},
|
||||
/* NBS1 */ {0x00008000, PIOD, ID_PIOD, PIO_PERIPH_C, PIO_DEFAULT},
|
||||
/* SDWE */ {0x20000000, PIOD, ID_PIOD, PIO_PERIPH_C, PIO_DEFAULT},
|
||||
/* BA0 */ {0x00100000, PIOA, ID_PIOA, PIO_PERIPH_C, PIO_DEFAULT}
|
||||
};
|
||||
|
||||
const size_t atsam_pin_config_count = PIO_LISTSIZE(atsam_pin_config);
|
||||
|
||||
const uint32_t atsam_matrix_ccfg_sysio = 0x20400010;
|
||||
144
c/src/lib/libbsp/arm/shared/armv7m/include/cache_.h
Normal file
144
c/src/lib/libbsp/arm/shared/armv7m/include/cache_.h
Normal file
@@ -0,0 +1,144 @@
|
||||
/*
|
||||
* Copyright (c) 2016 embedded brains GmbH. All rights reserved.
|
||||
*
|
||||
* embedded brains GmbH
|
||||
* Dornierstr. 4
|
||||
* 82178 Puchheim
|
||||
* Germany
|
||||
* <rtems@embedded-brains.de>
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.org/license/LICENSE.
|
||||
*/
|
||||
|
||||
#ifndef LIBBSP_ARM_ARMV7M_CACHE__H
|
||||
#define LIBBSP_ARM_ARMV7M_CACHE__H
|
||||
|
||||
#include <rtems.h>
|
||||
#include <chip.h>
|
||||
|
||||
#define CPU_DATA_CACHE_ALIGNMENT 32
|
||||
|
||||
#define CPU_INSTRUCTION_CACHE_ALIGNMENT 32
|
||||
|
||||
#define CPU_CACHE_SUPPORT_PROVIDES_RANGE_FUNCTIONS
|
||||
|
||||
static inline void _CPU_cache_flush_data_range(
|
||||
const void *d_addr,
|
||||
size_t n_bytes
|
||||
)
|
||||
{
|
||||
SCB_CleanInvalidateDCache_by_Addr(
|
||||
RTEMS_DECONST(uint32_t *, (const uint32_t *) d_addr),
|
||||
n_bytes
|
||||
);
|
||||
}
|
||||
|
||||
static inline void _CPU_cache_invalidate_data_range(
|
||||
const void *d_addr,
|
||||
size_t n_bytes
|
||||
)
|
||||
{
|
||||
SCB_InvalidateDCache_by_Addr(
|
||||
RTEMS_DECONST(uint32_t *, (const uint32_t *) d_addr),
|
||||
n_bytes
|
||||
);
|
||||
}
|
||||
|
||||
static inline void _CPU_cache_freeze_data(void)
|
||||
{
|
||||
/* TODO */
|
||||
}
|
||||
|
||||
static inline void _CPU_cache_unfreeze_data(void)
|
||||
{
|
||||
/* TODO */
|
||||
}
|
||||
|
||||
static inline void _CPU_cache_invalidate_instruction_range(
|
||||
const void *i_addr,
|
||||
size_t n_bytes
|
||||
)
|
||||
{
|
||||
rtems_interrupt_level level;
|
||||
|
||||
rtems_interrupt_disable(level);
|
||||
SCB_InvalidateICache();
|
||||
rtems_interrupt_enable(level);
|
||||
}
|
||||
|
||||
static inline void _CPU_cache_freeze_instruction(void)
|
||||
{
|
||||
/* TODO */
|
||||
}
|
||||
|
||||
static inline void _CPU_cache_unfreeze_instruction(void)
|
||||
{
|
||||
/* TODO */
|
||||
}
|
||||
|
||||
static inline void _CPU_cache_flush_entire_data(void)
|
||||
{
|
||||
rtems_interrupt_level level;
|
||||
|
||||
rtems_interrupt_disable(level);
|
||||
SCB_CleanDCache();
|
||||
rtems_interrupt_enable(level);
|
||||
}
|
||||
|
||||
static inline void _CPU_cache_invalidate_entire_data(void)
|
||||
{
|
||||
rtems_interrupt_level level;
|
||||
|
||||
rtems_interrupt_disable(level);
|
||||
SCB_InvalidateDCache();
|
||||
rtems_interrupt_enable(level);
|
||||
}
|
||||
|
||||
static inline void _CPU_cache_enable_data(void)
|
||||
{
|
||||
rtems_interrupt_level level;
|
||||
|
||||
rtems_interrupt_disable(level);
|
||||
SCB_EnableDCache();
|
||||
rtems_interrupt_enable(level);
|
||||
}
|
||||
|
||||
static inline void _CPU_cache_disable_data(void)
|
||||
{
|
||||
rtems_interrupt_level level;
|
||||
|
||||
rtems_interrupt_disable(level);
|
||||
SCB_DisableDCache();
|
||||
rtems_interrupt_enable(level);
|
||||
}
|
||||
|
||||
static inline void _CPU_cache_invalidate_entire_instruction(void)
|
||||
{
|
||||
rtems_interrupt_level level;
|
||||
|
||||
rtems_interrupt_disable(level);
|
||||
SCB_InvalidateICache();
|
||||
rtems_interrupt_enable(level);
|
||||
}
|
||||
|
||||
static inline void _CPU_cache_enable_instruction(void)
|
||||
{
|
||||
rtems_interrupt_level level;
|
||||
|
||||
rtems_interrupt_disable(level);
|
||||
SCB_EnableICache();
|
||||
rtems_interrupt_enable(level);
|
||||
}
|
||||
|
||||
static inline void _CPU_cache_disable_instruction(void)
|
||||
{
|
||||
rtems_interrupt_level level;
|
||||
|
||||
rtems_interrupt_disable(level);
|
||||
SCB_DisableICache();
|
||||
rtems_interrupt_enable(level);
|
||||
}
|
||||
|
||||
#endif /* LIBBSP_ARM_ARMV7M_CACHE__H */
|
||||
@@ -121,6 +121,45 @@ BSP_START_TEXT_SECTION static inline void bsp_start_copy_sections(void)
|
||||
);
|
||||
}
|
||||
|
||||
BSP_START_TEXT_SECTION static inline void
|
||||
bsp_start_memcpy_libc(void *dest, const void *src, size_t n)
|
||||
{
|
||||
if (dest != src) {
|
||||
memcpy(dest, src, n);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Copies the .data, .fast_text and .fast_data sections from the load to
|
||||
* the runtime area using the C library memcpy().
|
||||
*
|
||||
* Works only in case the .start, .text and .rodata sections reside in one
|
||||
* memory region.
|
||||
*/
|
||||
BSP_START_TEXT_SECTION static inline void bsp_start_copy_sections_compact(void)
|
||||
{
|
||||
/* Copy .data section */
|
||||
bsp_start_memcpy_libc(
|
||||
bsp_section_data_begin,
|
||||
bsp_section_data_load_begin,
|
||||
(size_t) bsp_section_data_size
|
||||
);
|
||||
|
||||
/* Copy .fast_text section */
|
||||
bsp_start_memcpy_libc(
|
||||
bsp_section_fast_text_begin,
|
||||
bsp_section_fast_text_load_begin,
|
||||
(size_t) bsp_section_fast_text_size
|
||||
);
|
||||
|
||||
/* Copy .fast_data section */
|
||||
bsp_start_memcpy_libc(
|
||||
bsp_section_fast_data_begin,
|
||||
bsp_section_fast_data_load_begin,
|
||||
(size_t) bsp_section_fast_data_size
|
||||
);
|
||||
}
|
||||
|
||||
BSP_START_TEXT_SECTION static inline void bsp_start_clear_bss(void)
|
||||
{
|
||||
memset(bsp_section_bss_begin, 0, (size_t) bsp_section_bss_size);
|
||||
|
||||
Reference in New Issue
Block a user