Given the talk of reorganizing the libcpu and libbsp structure, I would personally ignore the cache definitions BUT they feel VERY wrong to be defined in a bsp. They should be more related to a CPU core.
Bsp_reset should be defined by every bsp. That is a fairly recent addition and maybe those need the infinite loop stub added. It is also possible some had reset code at the bottom of start.S. double check .. May be a script issue missing some. Otherwise, we need to address. I am suspicious of the bspprederiverhook missings. The bsp would not compile and link if this was missing. I also don't like the explicit heap calls in gen5200. That is wrong. Every bsp must have bspgetworkarea. So that must be a script issue. It wouldn't link. _BSP_put_char is just a bad name choice. We should change those. Calling _ fatal error routines seems wrong. Probably a mistake. And why is a bsp directly calling _Thread _Start_multitasking. That seems wrong. _BSP... Print exception frame has to be named incorrectly. If we ignore the cache and isr CPU dependent helpers, I would worry about bsp reset and getworkarea. The latter almost certainly is a false positive. The first could be some false positives. But as I mentioned, some are likely indicative of naming problems and can be fixed. Gedare Bloom <[email protected]> wrote: You can add the script to rtems-testing.git (there is already check_bsp there i think). Check for using internal rtems functions versus defining them, e.g. by checking for a semicolon. Some of the uses you flag like the _CPU_Cache_xxx are defining those functions, which i think is ok.. Joel? -Gedare On Sep 8, 2013 5:59 AM, "Vipul Nayyar" <[email protected]<mailto:[email protected]>> wrote: Hello Gedare, I reviewed the current documentation for bsp development as you suggested. I didn't find any major discrepancies present already, but will look again closely. As far I think, the part about the PIC support which is available to every BSP is currently not present in the documentation, so I'll submit the addition to docs regarding this if you also agree to it. My current script gives results on a per bsp basis. However, as you requested to classify the problems, I've done that by tweaking it a little. I've added the functionality to search for RTEMS internal functions being used in the bsp. From what I understood, these internal functions I've looked for in BSPs are taken from libcpu & cpukit. My aim in developing this bash script was to identify flaws in BSPs , and also to provide a simple tool for future BSP developers so that they can check the file organization for their BSP. So, is it fine if I submit a patch to add this script to the RTEMS tree ?? Following, you'll find discrepancies found in current RTEMS tree regarding some serious flaws. The attached file all_warnings.txt classifies the flaws found in all bsps, either it being serious or not. The attached file 'per_bsp_observation.txt' contains result of the script showing serious flaws in all the bsps. **** RTEMS Internal functions being used in BSPs **** arm/csb336 : _BSP_poll_char() arm/edb7312 : _CPU_ISR_install_vector() arm/gp32 : _BSP_put_char() arm/lpc24xx : _CPU_ISR_install_vector() _Heap_Extend() arm/rtl22xx : _BSP_put_char() m68k/av5282 : _CPU_cache_disable_instruction() _CPU_cache_enable_instruction() _CPU_cache_invalidate_entire_instruction() _CPU_cache_disable_data() _CPU_cache_enable_data() _CPU_cache_invalidate_entire_data() _CPU_cache_flush_entire_data() _CPU_cache_unfreeze_instruction() _CPU_cache_freeze_instruction() _CPU_cache_invalidate_1_instruction_line() _CPU_cache_unfreeze_data() _CPU_cache_freeze_data() _CPU_cache_invalidate_1_data_line() _CPU_cache_flush_1_data_line() m68k/gen68340 : _CPU_ISR_install_raw_handler() m68k/genmcf548x : _CPU_cache_disable_instruction() _CPU_cache_enable_instruction() _CPU_cache_invalidate_entire_instruction() _CPU_cache_disable_data() _CPU_cache_enable_data() _CPU_cache_invalidate_entire_data() _CPU_cache_flush_entire_data() _CPU_cache_unfreeze_instruction() _CPU_cache_freeze_instruction() _CPU_cache_invalidate_1_instruction_line() _CPU_cache_unfreeze_data() _CPU_cache_freeze_data() _CPU_cache_invalidate_1_data_line() _CPU_cache_flush_1_data_line() _Thread_Start_multitasking() m68k/mcf5225x : _CPU_cache_disable_instruction() _CPU_cache_enable_instruction() _CPU_cache_invalidate_entire_instruction() _CPU_cache_disable_data() _CPU_cache_enable_data() _CPU_cache_invalidate_entire_data() _CPU_cache_flush_entire_data() _CPU_cache_unfreeze_instruction() _CPU_cache_freeze_instruction() _CPU_cache_invalidate_1_instruction_line() _CPU_cache_unfreeze_data() _CPU_cache_freeze_data() _CPU_cache_invalidate_1_data_line() _CPU_cache_flush_1_data_line() m68k/mrm332 : _CPU_ISR_Set_level() _CPU_Fatal_halt() m68k/uC5282 : _CPU_cache_disable_instruction() _CPU_cache_enable_instruction() _CPU_cache_invalidate_entire_instruction() _CPU_cache_disable_data() _CPU_cache_enable_data() _CPU_cache_invalidate_entire_data() _CPU_cache_flush_entire_data() _CPU_cache_unfreeze_instruction() _CPU_cache_freeze_instruction() _CPU_cache_invalidate_1_instruction_line() _CPU_cache_unfreeze_data() _CPU_cache_freeze_data() _CPU_cache_invalidate_1_data_line() _CPU_cache_flush_1_data_line() powerpc/gen5200 : _Heap_Free() _Heap_Initialize() _Heap_Allocate() powerpc/qoriq : _CPU_SMP_Send_interrupt() sparc/erc32 : _BSP_Exception_frame_print() _CPU_ISR_install_raw_handler() sparc/leon2 : _BSP_Exception_frame_print() _CPU_ISR_install_raw_handler() sparc/leon3 : _BSP_Exception_frame_print() _CPU_ISR_install_raw_handler() _CPU_SMP_Send_interrupt() **** bsggetworkarea not compiled **** powerpc/mpc55xxevb **** bspreset.c not compiled **** arm/gumstix avr/avrtest bfin/bf537Stamp bfin/eZKit533 bfin/TLL6527M h8300/h8sim lm32/milkymist m32c/m32cbsp m68k/av5282 m68k/csb360 m68k/gen68302 m68k/gen68340 m68k/gen68360 m68k/genmcf548x m68k/idp m68k/mcf5206elite m68k/mcf52235 m68k/mcf5225x m68k/mcf5235 m68k/mcf5329 m68k/mrm332 m68k/mvme136 m68k/mvme147 m68k/mvme147s m68k/mvme162 m68k/mvme167 m68k/ods68302 m68k/sim68000 mips/genmongoosev mips/hurricane mips/jmr3904 mips/rbtx4925 mips/rbtx4938 moxie/moxiesim nios2/nios2_iss powerpc/beatnik powerpc/ep1a powerpc/haleakala powerpc/mbx8xx powerpc/mpc55xxevb powerpc/mpc8260ads powerpc/mvme3100 powerpc/psim powerpc/qemuppc powerpc/score603e powerpc/ss555 powerpc/tqm8xx powerpc/virtex4 powerpc/virtex5 powerpc/virtex sh/gensh1 sh/gensh2 sh/gensh4 sh/shsim sparc64/niagara sparc64/usiii sparc/erc32 sparc/leon2 sparc/leon3 **** start.S not compiled **** m68k/ods68302 powerpc/haleakala **** bsppredriverhook.c not compiled **** lm32/lm32_evr lm32/milkymist powerpc/mvme3100 powerpc/score603e powerpc/virtex4 powerpc/virtex5 sparc/erc32 sparc/leon2 sparc/leon3 **** PIC Support not included ***** arm/gdbarmsim avr/avrtest bfin/bf537Stamp bfin/eZKit533 bfin/TLL6527M h8300/h8sim lm32/lm32_evr lm32/milkymist m32c/m32cbsp m32r/m32rsim m68k/av5282 m68k/csb360 m68k/gen68302 m68k/gen68340 m68k/gen68360 m68k/genmcf548x m68k/idp m68k/mcf5206elite m68k/mcf52235 m68k/mcf5225x m68k/mcf5235 m68k/mcf5329 m68k/mrm332 m68k/mvme136 m68k/mvme147 m68k/mvme147s m68k/mvme162 m68k/mvme167 m68k/ods68302 m68k/sim68000 m68k/uC5282 moxie/moxiesim nios2/nios2_iss powerpc/beatnik powerpc/ep1a powerpc/haleakala powerpc/motorola_powerpc powerpc/mvme3100 powerpc/mvme5500 powerpc/score603e powerpc/ss555 powerpc/virtex4 powerpc/virtex5 sh/gensh1 sh/gensh2 sh/gensh4 sh/shsim sparc64/niagara sparc64/usiii v850/gdbv850sim Hoping to hear from you soon !! Regards Vipul Nayyar
_______________________________________________ rtems-devel mailing list [email protected] http://www.rtems.org/mailman/listinfo/rtems-devel
