[GSOC] lpc24xx observations
Vipul Nayyar
nayyar_vipul at yahoo.com
Sun Aug 25 10:36:12 UTC 2013
Hello,
Covering for earlier incomplete work left..
I've compiled a bit of information related to how the lpc24xx BSP is organized. The details can also be found here https://docs.google.com/document/d/1W9DMnpocXUKXiQMxHbbp0aG-ecuh94P-3N7hxEJmcgs/edit.
I've tried to cover as much as files as possible. Since the aim here is to note how a unified way for a BSP implementaion should be, therefore the rules will cover those modules of BSP that are present or should be present in every BSP. Please have a look & tell if I've missed any common file that is common across all BSPs or I've included something extra that is only present in lpc24xx.
The following structure & rules need to be accepted by the community & improved, so that I can automate checking of these rules.
So that the following info is also present on the list & everyone can review it, I'm posting it below :
/* Startup Files*/
File : startup/bspstart.c
bsp_start() // Performs BSP specific initializations
bsp_pretasking_hook() // Empty fo routines using shared framework
initialize_console() // (Static function, used in bsp_start())
File : startup/bspstarthooks.c
bsp_start_hook_0()
bsp_start_hook_1()
File : startup/bspreset.c
bsp_reset() // Reset
/* Interrupt related files*/
File : irq/irq.c
bsp_interrupt_vector_enable() // Enable interrupt
bsp_interrupt_vector_disable() // Disable interrupt
bsp_interrupt_facility_initialize() // Initialize Interrupt Controller , Do other BSP specific initialization.
bspxx_irq_get_priority() // Set priority for a vector
bspxx_irq_is_valid() // Returns true or false depending on whether a vector is valid or not.
I think the inline function bsp_interrupt_is_valid_vector() present in irq-generic.h should be used instead
of this. Since, the latter function checks both the lower & upper bounds.
File : irq/irq-dispatch.c
bsp_interrupt_dispatch() // Reads vector number & calls bsp_interrupt_handler_dispatch() , so as to service the interrupt with the appropriate handler.
/* Miscellaneous*/
File : misc/timer.c
benchmark_timer_initialize() // Initialize benchmark timer
benchmark_timer_read() // Returns benchmark time units
benchmark_timer_disable_subtracting_average_overhead()
File : misc/restart.c
bsp_restart() // Restart
File : misc/system-clocks.c
bspxx_timer_initialize() // Initialize standard timer
/* These above files should be moved to a more proper location, rather than keeping in a miscellaneous folder */
/* Real time clock */
File : rtc/rtc-config.c
bspxx_rtc_initialize() // Initialize RTC chip
bspxx_rtc_get_time() //Get time
bspxx_rtc_set_time() //Set time
bspxx_rtc_probe() //Returns true if device configured by this entry in the RTC_Table is present.
/* As per BSP Device Driver Development Guide, the names of above function should be setRealTimeToRTEMS()
and setRealTimeFromRTEMS(). I think so.. */
/***********************************************************************************************************/
/* Generic interrupt framework source files*/
File : libbsp/shared/src/irq-default-handler.c// Contains default interrupt handler
File : libbsp/shared/src/irq-generic.c// Generic BSP interrupt support implementation
File : libbsp/shared/src/irq-info.c//Generic BSP interrupt information implementation
File : libbsp/shared/src/irq-legacy.c// Generic BSP interrupt support legacy implementation
File : libbsp/shared/src/irq-server.c// Generic BSP interrupt server implementation
File : libbsp/shared/src/irq-shell.c// Generic BSP interrupt shell implementation
/* Standard Source files that need to be compiledfor all BSPs (hopefully all..) */
File : libbsp/shared/bootcard.c
File : libbsp/shared/bspclean.c
File : libbsp/shared/bspgetworkarea.c
File : libbsp/shared/bsplibc.c
File : libbsp/shared/bsppost.c
File : libbsp/shared/bsppredriverhook.c
File : libbsp/shared/gnatinstallhandler.c
File : libbsp/shared/sbrk.c
File : libbsp/shared/src/stackalloc.c
/*************************************************************************************************************/
/*Header files being installed according to Makefile.am*/
/*BSP specific Header files( Should be named the same across all BSPs) : All BSP specific header files like irq.h , bsp.h etc should be present in the bsp/include folder only. */
File : include/bsp.h// Global Definitions
File : include/bspopts.h
File : include/irq.h // Interrupt Definitions
File : include/system-clocks.h// Declarations for standard timer in system clock
File : include/lpc24xx.h // Register Definitions
File : include/start-config.h// BSP start configuration
File : include/lpc-clock-config.h // Clock driver configuration
/* The list of installed headers from above can be more, depending on what extra support a BSP offers. The above present list can be said as a must-install list of bsp specific headers */
/*Generic Interrupt related header files*/
File : libbsp/shared/shared/include/irq-generic.h// Generic BSP interrupt support API
File : libbsp/shared/include/irq-info.h// Generic BSP interrupt information API.
/*Standard Header Files*/
File : libbsp/shared/include/bootcard.h// Standard system startup.
File : libbsp/shared/include/coverhd.h// Defines to represent the overhead associated with calling a particular directive from C
File : libbsp/shared/include/utility.h// Utility macros
File : libbsp/shared/include/stackalloc.h// Task stack initialization, allocation and free functions
File : libbsp/shared/tod.h // Real Time Clock Declrations
File : libbsp/shared/include/tm27.h// Timing test
Hoping to hear your views & suggestions...
Regards
Vipul Nayyar
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20130825/db1b939e/attachment.html>
More information about the devel
mailing list