Opened on 03/10/11 at 08:54:13
Last modified on 01/22/15 at 21:19:17
#1761 closed enhancement
2kB of memory are lost in the SpaceWire Driver — at Initial Version
Reported by: | Cláudio Silva | Owned by: | Joel Sherrill |
---|---|---|---|
Priority: | highest | Milestone: | 4.11 |
Component: | bsps | Version: | 4.10 |
Severity: | minor | Keywords: | |
Cc: | Blocked By: | ||
Blocking: |
Description
The structure GRSPW_DEV has two members that are the Descriptor Tables
used for the DMA engines. These members are allocated statically (char
_txtable[SPACEWIRE_BDTABLE_SIZE*2]; ) with twice the size they need
to be. They should have 1024 bytes of size and have 2048. This extra
size is needed because the descriptor table needs to be 1024 aligned
(0x400).
In the function grspw_hw_init these memory areas are passed to the
function SPW_ALIGN which returns the first aligned address in the
memory area. This way the driver is allocating twice the memory
needed in order to find an aligned base address for the table inside
the memory area.
For example if the _txtable start address is 0x40000001, the address
returned by SPW_ALIGN will be 0x40000400 and the used memory area
will be 0x40000400-0x40000800. Addresses in the range 0x80000001-
0x40000399 will not be used, but will remain allocated.
This way we are losing 2kB in the descriptor tables.