This fixes a bug in x86-64 where it was trying to default align
input sections on 16 byte boundaries, which was screwing up the
padding between structures.
This allows for individual modules to extend the main linker script,
primarily to add their own sections to interate over.
Remove the main shared_* linker scripts.
This picks up the major work of allowing multiple heap implementations
and enable dlmalloc as an alternate heap to the simple existing one
(now called 'miniheap').
Also added a novm page allocator for memory management on systems too small
or missing an mmu to have a vm. Not much more than a simple bitmap allocator
that the heap pulls from. Allows for other heaps and/or users of physical
memory to coexist and span multiple banks of memory.
- Fix a bug when doing bounds checking
- Don't run elf if the entrypoint is out of bounds
- Allow to specify the memory slot to download (slot is 512K)
- Default slot for elf is 1, 3 and for data is 0, 2
Introduces two commands:
load any <filename>
load elf <filename>
Then from another system in the network you can:
tftp -i <ip-addr> put <filename>
Which for the 'any' case just loads the file into DRAM and for the 'elf'
case it parses the file and if correct it spawns a thread to run the
entrypoint.
Only allows writting files. Needs a per-file handler to be wired and
provisionally has a test handler wired to "tftp_test.txt" which prints
the crc32 of the complete file pushed via
tftp -i 192.169.0.xx tftp_test.txt
Some error conditions are yet to be fully handled.
- sample input just after the falling clock edge, since the target
output changes with the rising clock edge
- bump retry max from 32 to 8192, since stm32f4 targets are observed
to issue WAITs for 1500+ txns at 4MHz if CPU is not halted
- (disabled) option to report retries back to m4
If the host receives the IN response packet but the ACK from the host
is lost, we'd be stuck until the next IN, which wouldn't come because
the host does a simple send-request / read-response thing. Instead,
don't wait for IN txns to complete unless there's already one outstanding.
This allows us to read the next request, at which point the host will
start an IN txn for the response, which will cause the previous IN txn
to complete.
- compatible with m3dev lpcboot tool
- supports lpc43xx with external spi flash right now
- suitable for acting as a second stage flash agent after rom dfu download
Modify the existing ptable code to pay attention to bio device erase
geometry if present. Significant changes include...
+ Partitions must be allocated on both program and erase block
boundaries.
+ Partitions lengths must be multiples of both program and erase block
sizes.
+ Partitions may not span non-homogeneous regions of erase geometry.
+ ptable_allocate as been made private.
+ Users may no longer explicitly select a position for partitions to
be added, they may only ask for the partition to be allocated at the
begining or the end of the block device.
+ A bio subdevice will be registered for each active partition in the
system. Users are encouraged to add their partition using
ptable_add, and then open a handle to the subdevice using bio_open.
The bio subdevice will prevent accidental scribbling outside of the
partition lines, and also advertise the partition erase size.
Signed-off-by: John Grossman <johngro@google.com>
Change-Id: I09bf9038d210ff8be42d44166ab92c789872e036