large bss size for sample applications
chrisj at rtems.org
Wed Sep 23 07:16:28 UTC 2015
On 23/09/2015 8:27 am, Jeff Webb wrote:
> I am new to RTEMS, and I am interested in getting a an ARM-based
> development system up an running. Ultimately, I would like to use RTEMS
> on a Zynq-based board with no external RAM. Is it possible to do
> anything useful in a few hundred kilobytes of RAM on the Zynq platform?
Yes I suspect so. It will depend on you application.
> The sample applications I have generated have very large bss sizes that
> do not seem to be in line with the reported values for other platforms
> that I have found in web searches.
> I found an excellent tutorial  (thanks!) for getting started with
> RTEMS on the Raspberry Pi. I followed the instructions and successfully
> built and ran the ticker.exe sample application on the Pi. I was
> curious about the memory usage, so I attempted to determine how much
> memory this application required.
> $ arm-rtems4.11-size ticker.exe
> text data bss dec hex filename
> 94196 1692 134077844 134173732 7ff5424 ticker.exe
> The executable size is 3.1M, which is reduced to 95K after running
> arm-rtems4.11-strip on it.
> When I used objcopy to create an image for copying to the raspberry pi
> SD card, the resulting image was 999K:
> $ arm-rtems4.11-objcopy -Obinary ticker.exe ticker.img
> Since I had success with the Pi, I decided to try the Zedboard. I
> successfully got the ticker application built using this configure command:
> ../rtems-git/configure --target=arm-rtems4.11 \
> --enable-rtemsbsp=xilinx_zynq_zedboard \
> --enable-tests=samples \
> --enable-networking \
> --enable-posix \
> --prefix=/opt/rtems/bsps/4.11 BSP_ARM_A9MPCORE_PERIPHCLK=333333333U
> The bss size of the resulting executable was also large:
> $ arm-rtems4.11-size ticker_zed.exe
> text data bss dec hex filename
> 72588 1780 535731528 535805896 1fefbfc8 ticker_zed.exe
> $ ls -lh ticker_zed*
> 3.2M Sep 22 17:16 ticker_zed.exe
> 74K Sep 22 17:18 ticker_zed_stripped.exe
> I tried shrinking the memory map for the zedboard using various
> techniques, but it looks like I'm running out of memory. One technique
> I attempted was to add something like "BSP_ZYNQ_RAM_LENGTH=1536K
> BSP_ZYNQ_NOCACHE_LENGTH=128K" to the configure command, which would
> yield an error message like this:
> arm-rtems4.11-gcc -B../../../../../xilinx_zynq_zedboard/lib/ -specs
> bsp_specs -qrtems -march=armv7-a -mthumb -mfpu=neon -mfloat-abi=hard
> -mtune=cortex-a9 -O2 -g -Wall -Wmissing-prototypes
> -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs
> -march=armv7-a -mthumb -mfpu=neon -mfloat-abi=hard -mtune=cortex-a9 -o
> hello.exe init.o
> linkcmds.base:383 cannot move location counter backwards (from
> 0000000000203c34 to 0000000000160000)
> Can anyone point me in the right direction?
This is a very interesting design challenge. I assume you are looking to
use just the OCM ?
I am not sure what is needed to get this to link for you without digging
in and looking. I suspect you will need a custom MMU configuration to
get the OCM at mapped correctly.
A challenge will be getting the FSBL to load the bitfile. It has been a
while but I seem to remember it needing DDR to load the bit file into
before send it over the PCAP interface to the PL.
More information about the users