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

Reply via email to