Another minimum size report. If the text size after
subtracting the FDT blob is below 64K, the BSP is not
in the report. The adjusted size is reported.

It looks like some significant percentage of those over 64k
are managing to pull in printf or something in the family. I
wonder if we should ban printf() from BSPs and drivers in favor
of printk?

--joel

On Wed, May 26, 2021 at 1:14 PM Christian Mauderer <o...@c-mauderer.de>
wrote:

>
>
> On 26/05/2021 19:23, Joel Sherrill wrote:
> >
> >
> > On Wed, May 26, 2021 at 6:02 AM Sebastian Huber
> > <sebastian.hu...@embedded-brains.de
> > <mailto:sebastian.hu...@embedded-brains.de>> wrote:
> >
> >     On 25/05/2021 20:33, Christian Mauderer wrote:
> >      >
> >      >>
> >      >> I thought Sebastian added a "malloc" for the BSP to use before
> the
> >      >> heap was initialized. But I don't remember the name. Am I
> >     remembering
> >      >> correctly?
> >      >
> >      > I don't really know that malloc. But I doubt that it works that
> >     early.
> >      > Again: Copying the FDT is one of the first things that these BSPs
> >     do. If
> >      > you want to know the exact location: For ARM it's here:
> >      >
> >      >
> >     https://git.rtems.org/rtems/tree/bsps/arm/shared/start/start.S#n325
> >     <https://git.rtems.org/rtems/tree/bsps/arm/shared/start/start.S#n325
> >
> >      >
> >      > So it's really basic setup before that. It's interrupt stack,
> >     switching
> >      > modes, setup stack pointer and then it's already copy FDT.
> >
> >     Yes, there is an early "malloc". This is _Memory_Allocate() using
> >     _Memory_Get(). However, for the device tree copy this is not early
> >     enough. We don't know the device tree location provided by the boot
> >     loader. It could be somewhere in the memory area used by the
> >     application. So, it is important to copy this very early into a fixed
> >     location. Also, the device tree may be used to get the size of the
> >     memory provided by _Memory_Get().
> >
> >
> > I assume read-only is only from the perspective of higher level
> > language code. Is it possible that being read-only it could be
> > mapped to Flash?
>
> If the code is mapped to flash, the BSP is broken. I think there are
> options for such a case so that the FDT is placed in another section.
> Not sure whether any BSP is using them.
>
> This kind of copy should be only done on BSPs that run out of RAM. Like
> I said earlier: Normally that's the case for BSPs that are loaded by
> U-Boot.
>
> >
> > For the purposes of minimum size analysis, I will subtract the
> > size of the FDT block from the minimum .text size and if it
> > is still over 64, flag it.
>
> Sounds reasonable.
>
> Best regards
>
> Christian
>
> >
> > --joel
> >
> >
> >     --
> >     embedded brains GmbH
> >     Herr Sebastian HUBER
> >     Dornierstr. 4
> >     82178 Puchheim
> >     Germany
> >     email: sebastian.hu...@embedded-brains.de
> >     <mailto:sebastian.hu...@embedded-brains.de>
> >     phone: +49-89-18 94 741 - 16
> >     fax:   +49-89-18 94 741 - 08
> >
> >     Registergericht: Amtsgericht München
> >     Registernummer: HRB 157899
> >     Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas
> Dörfler
> >     Unsere Datenschutzerklärung finden Sie hier:
> >     https://embedded-brains.de/datenschutzerklaerung/
> >     <https://embedded-brains.de/datenschutzerklaerung/>
> >
>
======= arm-beagleboardorig-minimum.exe  354960 in text =====
   text    data     bss     dec     hex filename
 354960    1368 263884740       264241068       fbfffac 
arm-beagleboardorig-minimum.exe
Text Size Adjusted for bsp_fdt_blob:  92816
80006b94 00000d2c T _IO_Vprintf
801016c0 00001000 B _ISR_Stack_area_begin
800543a8 0000157c r ti_padconf_devmap
8000e688 0000170c T _dtoa_r
8000bdbc 0000270c T _svfprintf_r
======= arm-beagleboardxm-minimum.exe  354960 in text =====
   text    data     bss     dec     hex filename
 354960    1368 263884740       264241068       fbfffac 
arm-beagleboardxm-minimum.exe
Text Size Adjusted for bsp_fdt_blob:  92816
80006b94 00000d2c T _IO_Vprintf
801016c0 00001000 B _ISR_Stack_area_begin
800543a8 0000157c r ti_padconf_devmap
8000e688 0000170c T _dtoa_r
8000bdbc 0000270c T _svfprintf_r
======= arm-beagleboneblack-minimum.exe  354960 in text =====
   text    data     bss     dec     hex filename
 354960    1368 263884740       264241068       fbfffac 
arm-beagleboneblack-minimum.exe
Text Size Adjusted for bsp_fdt_blob:  92816
80006b94 00000d2c T _IO_Vprintf
801016c0 00001000 B _ISR_Stack_area_begin
800543a8 0000157c r ti_padconf_devmap
8000e688 0000170c T _dtoa_r
8000bdbc 0000270c T _svfprintf_r
======= arm-beaglebonewhite-minimum.exe  354960 in text =====
   text    data     bss     dec     hex filename
 354960    1368 263884740       264241068       fbfffac 
arm-beaglebonewhite-minimum.exe
Text Size Adjusted for bsp_fdt_blob:  92816
80006b94 00000d2c T _IO_Vprintf
801016c0 00001000 B _ISR_Stack_area_begin
800543a8 0000157c r ti_padconf_devmap
8000e688 0000170c T _dtoa_r
8000bdbc 0000270c T _svfprintf_r
======= arm-nucleo-h743zi-minimum.exe   73680 in text =====
   text    data     bss     dec     hex filename
  73680     504 34135552        34209736        209ffc8 
arm-nucleo-h743zi-minimum.exe
70004499 000007b8 T _IO_Vprintf
70003095 00000a6c T HAL_RCCEx_PeriphCLKConfig
700126d8 00000f00 B bsp_interrupt_handler_table
700138c0 00001000 B _ISR_Stack_area_begin
700065e1 00001528 T UART_SetConfig
======= arm-stm32h7-minimum.exe   73680 in text =====
   text    data     bss     dec     hex filename
  73680     504 34135552        34209736        209ffc8 arm-stm32h7-minimum.exe
70004499 000007b8 T _IO_Vprintf
70003095 00000a6c T HAL_RCCEx_PeriphCLKConfig
700126d8 00000f00 B bsp_interrupt_handler_table
700138c0 00001000 B _ISR_Stack_area_begin
700065e1 00001528 T UART_SetConfig
======= i386-pc386-minimum.exe  100328 in text =====
   text    data     bss     dec     hex filename
 100328    9148   24320  133796   20aa4 i386-pc386-minimum.exe
00120b00 00001000 B _ISR_Stack_area_begin
001128dc 000011dd T _dtoa_r
0011c520 00001400 b idtHdl
0011de20 00002710 B i386_gdb_remcomStack
0010fd50 000029e3 T _svfprintf_r
======= i386-pc486-minimum.exe  108836 in text =====
   text    data     bss     dec     hex filename
 108836    9148   24320  142304   22be0 i386-pc486-minimum.exe
00122c40 00001000 B _ISR_Stack_area_begin
00114a0c 000011dd T _dtoa_r
0011e660 00001400 b idtHdl
0011ff60 00002710 B i386_gdb_remcomStack
00111e80 000029e3 T _svfprintf_r
======= i386-pc586-minimum.exe  111956 in text =====
   text    data     bss     dec     hex filename
 111956    9148   24320  145424   23810 i386-pc586-minimum.exe
00123880 00001000 B _ISR_Stack_area_begin
00115290 0000138f T _dtoa_r
0011f280 00001400 b idtHdl
00120b80 00002710 B i386_gdb_remcomStack
00112490 00002be8 T _svfprintf_r
======= i386-pc586-sse-minimum.exe  112148 in text =====
   text    data     bss     dec     hex filename
 112148    9372   24256  145776   23970 i386-pc586-sse-minimum.exe
001239c0 00001000 B _ISR_Stack_area_begin
00115310 0000138f T _dtoa_r
0011f3a0 00001400 b idtHdl
00120ca0 00002710 B i386_gdb_remcomStack
00112510 00002be8 T _svfprintf_r
======= i386-pc686-minimum.exe  114612 in text =====
   text    data     bss     dec     hex filename
 114612    9148   24320  148080   24270 i386-pc686-minimum.exe
00123300 00001000 B _ISR_Stack_area_begin
00115ca0 0000138f T _dtoa_r
0011ed00 00001400 b idtHdl
00120600 00002710 B i386_gdb_remcomStack
00112ea0 00002be8 T _svfprintf_r
======= i386-pcp4-minimum.exe  103344 in text =====
   text    data     bss     dec     hex filename
 103344    9436   24256  137036   2174c i386-pcp4-minimum.exe
001217c0 00001000 B _ISR_Stack_area_begin
001134ec 000011dd T _dtoa_r
0011d180 00001400 b idtHdl
0011ea80 00002710 B i386_gdb_remcomStack
00110960 000029e3 T _svfprintf_r
======= mips-malta-minimum.exe  129820 in text =====
   text    data     bss     dec     hex filename
 129820    1024   11872  142716   22d7c mips-malta-minimum.exe
8002bc14 000005d4 T rtems_termios_enqueue_raw_characters
80018938 00000788 t RBTree_Control_RB_REMOVE_COLOR
8001ed08 00000e88 T _IO_Vprintf
80030d80 00002000 B _ISR_Stack_area_begin
80032d80 00002000 B _ISR_Stack_area_end
======= powerpc-beatnik-minimum.exe  154493 in text =====
   text    data     bss     dec     hex filename
 154493   23912   92876  271281   423b1 powerpc-beatnik-minimum.exe
00009954 00000bfc t setbat
000193dc 0000106c T _IO_Vprintf
0001f5fc 00001398 T _dtoa_r
0001c66c 000029c8 T _vfprintf_r
000412a0 00004000 B _ISR_Stack_area_begin
FOUND: __wrap_printf()
FOUND: close()
======= powerpc-mcp750-minimum.exe  130977 in text =====
   text    data     bss     dec     hex filename
 130977   24380  380496  535853   82d2d powerpc-mcp750-minimum.exe
0008aee0 00002000 B _ISR_Stack_area_begin
00016dc8 000029bc T _vfprintf_r
00086de0 00003000 b log_page_pool
00080050 00006a0c B residualCopy
00060000 00020000 b cc_memory
FOUND: __wrap_printf()
FOUND: close()
======= powerpc-mtx603e-minimum.exe  130673 in text =====
   text    data     bss     dec     hex filename
 130673   24324  380496  535493   82bc5 powerpc-mtx603e-minimum.exe
0008aee0 00002000 B _ISR_Stack_area_begin
00016d4c 00002988 T _vfprintf_r
00086de0 00003000 b log_page_pool
00080050 00006a0c B residualCopy
00060000 00020000 b cc_memory
FOUND: __wrap_printf()
FOUND: close()
======= powerpc-mvme2100-minimum.exe  124253 in text =====
   text    data     bss     dec     hex filename
 124253   22916  380484  527653   80d25 powerpc-mvme2100-minimum.exe
0008aec0 00002000 B _ISR_Stack_area_begin
000156ec 00002988 T _vfprintf_r
00086de0 00003000 b log_page_pool
00080050 00006a0c B residualCopy
00060000 00020000 b cc_memory
FOUND: __wrap_printf()
FOUND: close()
======= powerpc-mvme2307-minimum.exe  131029 in text =====
   text    data     bss     dec     hex filename
 131029   24240  380496  535765   82cd5 powerpc-mvme2307-minimum.exe
0008aee0 00002000 B _ISR_Stack_area_begin
00016ea8 000029e8 T _vfprintf_r
00086de0 00003000 b log_page_pool
00080050 00006a0c B residualCopy
00060000 00020000 b cc_memory
FOUND: __wrap_printf()
FOUND: close()
======= powerpc-mvme3100-minimum.exe  168173 in text =====
   text    data     bss     dec     hex filename
 168173   27216   25081  220470   35d36 powerpc-mvme3100-minimum.exe
00016174 0000107c T _IO_Vprintf
0001f9dc 0000171c T _dtoa_r
00019ea4 00002a50 T _svfprintf_r
0001c8fc 00002b18 T _vfprintf_r
00035a80 00004000 B _ISR_Stack_area_begin
FOUND: __wrap_printf()
FOUND: close()
======= powerpc-mvme5500-minimum.exe  121013 in text =====
   text    data     bss     dec     hex filename
 121013   19128   93696  233837   3916d powerpc-mvme5500-minimum.exe
00036d54 00000de4 b rtemsIrq
000136a4 00001088 T _IO_Vprintf
00018ca4 00001398 T _dtoa_r
00015d14 000029c8 T _vfprintf_r
000386a0 00004000 B _ISR_Stack_area_begin
FOUND: __wrap_printf()
FOUND: close()
======= powerpc-qemuprep-altivec-minimum.exe  126669 in text =====
   text    data     bss     dec     hex filename
 126669   23060  379760  529489   81451 powerpc-qemuprep-altivec-minimum.exe
0008ac00 00002000 B _ISR_Stack_area_begin
00015ed0 000029c8 T _vfprintf_r
00086de0 00003000 b log_page_pool
00080050 00006a0c B residualCopy
00060000 00020000 b cc_memory
FOUND: __wrap_printf()
FOUND: close()
======= powerpc-qemuprep-minimum.exe  123765 in text =====
   text    data     bss     dec     hex filename
 123765   22980  379760  526505   808a9 powerpc-qemuprep-minimum.exe
0008ac00 00002000 B _ISR_Stack_area_begin
000154c0 000029bc T _vfprintf_r
00086de0 00003000 b log_page_pool
00080050 00006a0c B residualCopy
00060000 00020000 b cc_memory
FOUND: __wrap_printf()
FOUND: close()
======= powerpc-qoriq_e6500_64-minimum.exe  331076 in text =====
   text    data     bss     dec     hex filename
 331076    1304 519814736       520147116       1f00d0ac        
powerpc-qoriq_e6500_64-minimum.exe
Text Size Adjusted for bsp_fdt_blob:  68932
00000000050105e0 00000000000005d0 b _Thread_Objects
0000000000009e10 0000000000000700 T _CPU_Exception_frame_print
000000000000b7f0 0000000000000ee4 T _IO_Vprintf
0000000005013600 0000000000002000 B _ISR_Stack_area_begin
0000000005010d68 0000000000002500 B bsp_interrupt_handler_table
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to