Commit graph

122 commits

Author SHA1 Message Date
Aidan MacDonald
a80911a0ce plugins: clean up IRAM memory region definitions
Check for USE_IRAM to determine if IRAM should be used.
SoCs that don't define USE_IRAM no longer need to define
IRAMSIZE to 0 either.

When IRAM is not used, any symbols bound for IRAM will
be discarded instead of linking them in DRAM. In theory
these symbols shouldn't exist, since nothing should be
placed into IRAM sections to begin with for !USE_IRAM.
If an IRAM section attribute leaks into the plugin/codec
anyway, it should now cause a link time error.

Change-Id: I55c1854cfe8beb5cb09b865336906f9945084b33
2026-03-06 16:26:35 -05:00
Aidan MacDonald
c9172d4ff8 plugins: clean up target DRAM/IRAM mapping defines
Move the definition of DRAMSIZE into the SoC-specific
ifdef block below. This keeps the memory map defines
for a SoC together in one place and as a result it is
much easier to understand.

Change-Id: Ie7293616a3c572b381cfeab3531751562c19a9c4
2026-03-06 16:26:04 -05:00
Aidan MacDonald
a24142b234 firmware: cleanup duplicated DM320 LCD memory defines
Move the rather large block of code that's been copied
in three separate linker scripts into the CPU header.

Change-Id: I9f38e4901fa4ff699f00d97064a9cdaf7cfd6aab
2026-03-06 15:55:35 -05:00
Aidan MacDonald
99dd797169 firmware: cleanup PortalPlayer NOCACHE_BASE defines
Move the definition of NOCACHE_BASE to the CPU headers
instead of having them copy-and-pasted in a few places.

Change-Id: Ibbab27a5a07906d46dbd4dd9065f2238bc885d6b
2026-03-06 14:15:29 -05:00
Aidan MacDonald
7eeb4e4302 firmware: refactor CACHEALIGN_BITS/SIZE defines
Mostly motivated by PP needing CACHEALIGN_SIZE in linker
scripts, which can't include system.h, so move these to
cpu.h instead. Also gets rid of the default 32 byte line
size that was used if the target didn't define alignment
itself. RK24xx, DM320, and JZ4740 were missing this but
have been confirmed (from datasheets) to use 32-byte cache
lines.

Add checks to make sure the macros are appropriately
(un)defined based on the HAVE_CPU_CACHE_ALIGN define,
and make sure their values are consistent when they
are defined.

Disable HAVE_CPU_CACHE_ALIGN for hosted targets since it
arguably doesn't matter if there's a cache, if we aren't
responsible for cache maintenance.

A few files in rbcodec use CACHEALIGN_SIZE, but these
can be converted to MEM_ALIGN_SIZE, which is identical
to CACHEALIGN_SIZE if the latter is defined. On other
targets, it aligns to at least sizeof(intptr_t).

Change-Id: If8cf8f6ec327dc3732f4cd5022a858546b9e63d6
2026-03-06 14:49:00 +00:00
Aidan MacDonald
676d3b6432 plugins: always include cpu.h in linker script
Change-Id: I5a5dad0c6094735fa3af676667232571bf0efdf3
2026-03-05 21:13:50 +00:00
Aidan MacDonald
cf1e3fd5a3 misc: remove leftover pnx0101 support code
Remove now-unused stuff related to the PNX0101 processor,
which was missed during the removal of the IFP-7xx port.

Change-Id: I5ff248b3e83cb67a357743130c3e51ed84a720e5
2026-03-05 15:41:06 +00:00
Aidan MacDonald
58ffe7bc34 plugins: remove default value of DRAMORIG
Change-Id: Ia5efdbef207890682bfd8aa8cacce32d7e79c2b2
2026-03-05 10:31:35 -05:00
Aidan MacDonald
a6c290e8e5 jz47xx: fix plugins/codec link address
Removing STUBOFFSET in commit 78542df466 caused DRAMSIZE
to be computed incorrectly, not taking into account the
16k offset used for 'IRAM'. As a result plugins & codecs
got shifted 16k upwards from their intended load address,
making them unable to load.

Change-Id: I6c338e04506e12fa2b8a69286a1ed785a2f8042d
2026-02-05 20:33:51 +00:00
Aidan MacDonald
92b0bf7a27 Clean up .ncdata/ncbss hackery in plugin linker script
The mess here can be reduced by paying careful attention to
how the linker allocates LMAs/VMAs within MEMORY regions.

Changing the way .ncdata and .ncbss are defined so that they
reserve the LMA/VMA ranges they use in PLUGIN_RAM removes the
need to explicitly set the VMAs of other sections, cutting
down on the number of ifdefs needed and making the script a
bit simpler.

Change-Id: I316fc6e8dedd621537261d52c1ec7c20ec09438a
2026-02-05 09:38:51 -05:00
Aidan MacDonald
7b91b81e49 stm32h7: define correct DRAM origin for plugins
Change-Id: I7fab9da0e99f328ce602607057f52620812476a8
2026-02-05 10:08:45 +00:00
Aidan MacDonald
78542df466 Nuke GDB stub
It looks like the GDB stub only ever worked for the Archos
Recorder and iRiver IFP-7xx, neither of which are in-tree
any more.

Change-Id: If1910675b88b4707d26df9bc095818902af2d25b
2026-02-03 10:55:53 +00:00
Vencislav Atanasov
d7b57e33d9 Add support for S5L8720 in various places
Due to its similarity with S5L8702, clickwheel support and sleep can be used as-is on S5L8720. DRAM and IRAM are also configured.

Change-Id: I52f8a3417e6a25c7360b1cae2fb5eed621e2e0db
2024-11-22 16:45:29 -05:00
Tomasz Moń
60e2cd6de9 DM320: Regorganize LCD and TTB memory layout
Do not introduce any change for M:Robe 500 as it uses the two LCD frames
in non-obvious way.

Sansa Connect and Creative ZVM use only single front framebuffer.
Place TTB at DRAM end to minimize memory loss due to alignment.
Reserve as little as possible memory for the LCD frames.
On Sansa Connect this change extends audio buffer by 858 KiB.

Change-Id: I21bdeec4cfba86d71803a39acd651a87e73767e6
2021-07-09 09:24:38 +00:00
Aidan MacDonald
20fc928221 x1000: Centralize common definitions, memory layout
Change-Id: I8daad058ae55d4b750b1ae407153e4917de5d095
2021-04-28 20:04:10 +01:00
Aidan MacDonald
d5695822a7 MIPS: remove .MIPS.abiflags section
The abiflags data is only used to communicate ABI information to a
program loader -- you can see what info is stored with readelf -A.
Dropping it shaves 24 bytes off of every binary (including plugins).

Change-Id: Iae78eeffe5c840ff67717707fb94821d24aac8ec
2021-04-26 12:41:06 +00:00
Solomon Peachy
3ba2f6e5c7 Nuke all TCC77x targets: iAudio 7, Sansa C100, M200(v1-3), Logik DAX
They were never finished, never saw any release ever, and haven't
compiled for the better part of a decade.  Given their HW capabilities [1],
they are not worth trying to fix.

[1] 1-2MB RAM, ~256MB onboard flash, no expandability

Change-Id: I7b2a5806d687114c22156bb0458d4a10a9734190
2021-04-26 07:41:51 -04:00
Aidan MacDonald
3ec66893e3 New port: FiiO M3K on bare metal
Change-Id: I7517e7d5459e129dcfc9465c6fbd708619888fbe
2021-03-28 00:01:37 +00:00
Solomon Peachy
092c340a20 [1/4] Remove SH support and all archos targets
This removes all code specific to SH targets

Change-Id: I7980523785d2596e65c06430f4638eec74a06061
2020-07-24 21:20:13 +00:00
Cástor Muñoz
7442742208 iPod Classic: disable IRAM1
On Classic, IRAM1 (second 128Kb of a total of 256KB available IRAM) is
slower than DRAM. Codecs that actually are using regions of IRAM1 runs
faster when DRAM is used, so IRAM1 is disabled and only IRAM0 remains
enabled: 48KB for core and 80KB for codecs/plugins.

The next test_codec results shows how decode time is decreased:

file           boosted     unboosted
*.ra           ~1.5%       ~0.5%
*.mpc          ~21%        ~4.5%
*.ogg          ~0.5%       ~0%
nero_he*.m4a   ~8%         ~1%
nero*.m4a      ~25%        ~7%
wmapro*.wma    ~4.5%       ~0%
wma*.wma       ~25%        ~7%

In addition there is a small power save when IRAM1 HW is disabled.

Change-Id: I102adee11458e82037f23076d5d5956e23235de8
2018-07-30 18:50:27 -04:00
Solomon Peachy
0662793ca0 Add cleaned-up xDuoo X3 support
Cleaned up, rebased, and forward-ported from the xvortex fork.

(original credit to vsoftster@gmail.com)

Change-Id: Ibcc023a0271ea81e901450a88317708c2683236d
Signed-off-by: Solomon Peachy <pizza@shaftnet.org>
2018-07-28 10:56:31 -04:00
Michael Sevakis
1329cc29de Fix .ncbss from possibly overlapping .ncdata in plugins/codecs.
(Take #2)

If .bss wasn't large enough, and .ncdata was empty, .ncbss would be
at an address overlapping the alignment-padded end of .ncdata and
and linking would fail with an overlap error.

Adds plugin load end address that accounts for IRAM going past
the final .bss sections, making IRAM overlay compatible. load_code
could also use this instead of the file size.

The .lds becomes a bit more straightforward and explicit when
assigning addresses.

Change-Id: Id0c33f257710e97ece2c831e0feaaa32c1a14e05
2013-07-11 04:32:23 -04:00
Michael Sevakis
2948cb42ae Revert "Fix .ncbss from possibly overlapping .ncdata in plugins/codecs."
This reverts commit 5c2ad2fd36.

The .ncbss bug is still showing up. Will try again shortly.
2013-07-11 00:28:39 -04:00
Michael Sevakis
5c2ad2fd36 Fix .ncbss from possibly overlapping .ncdata in plugins/codecs.
If .bss wasn't large enough, and .ncdata was empty, .ncbss would be
at an address overlapping the alignment-padded end of .ncdata and
and linking would fail with an overlap error.

There also should no longer be an issue that needs special correction
with iramcopy and empty .bss. The .maps look good in that case.

Change-Id: I02bf73a0acef2c0c04b5d135ecf4e18fb97ee339
2013-07-10 22:37:17 -04:00
Michael Sevakis
4928810354 M5/X5 (MCF5250): Scoot the core/plugin IRAM boundary forward by 0x800.
Change-Id: I482fe3f4f2f59a3f17026e796c245c4efa8279f3
2012-04-29 14:35:53 -04:00
Tomasz Moń
e8a8a1be43 Sandisk Sansa Connect port (FS #12363)
Included are drivers for buttons, backlight, lcd, audio and storage.



git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31000 a1c6a512-1295-4272-9138-f99709370657
2011-11-16 14:08:01 +00:00
Amaury Pouly
7e8877e871 imx233/fuze+: enable plugins
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30700 a1c6a512-1295-4272-9138-f99709370657
2011-10-02 20:33:14 +00:00
Amaury Pouly
4157c23c6f imx233/fuze+: don't use iram in plugins and in codecs
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30641 a1c6a512-1295-4272-9138-f99709370657
2011-10-02 15:39:30 +00:00
Marcin Bukat
6d5671a8d8 rk27xx - enable a few test plugins
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30459 a1c6a512-1295-4272-9138-f99709370657
2011-09-06 12:39:49 +00:00
Michael Sparmann
152847977a New port: iPod Classic (also known as iPod 6G/6.5G/7G)
Major known issues:
- No bootloader yet
- No support for the first-generation 160GB CE-ATA hard disk drive yet
- Audio playback is slow, only FLAC seems to reach realtime


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28953 a1c6a512-1295-4272-9138-f99709370657
2011-01-02 23:16:27 +00:00
Teruaki Kawashima
e5b1a7d423 FS#6321: Universal Image Viewer
This unifies jpeg viewer, png viewer, and bmp viewer to one plugin, image viewer, so that you can navigate through different image formats.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28626 a1c6a512-1295-4272-9138-f99709370657
2010-11-21 13:47:56 +00:00
Andree Buschmann
57a683fc7d Reconfigure IRAM for S5L870x. S5L8700 has 256 KB of IRAM, use a 48 KB / 208 KB split for core/codec. S5L8701 has 176 KB of IRAM, use a 48 KB / 128 KB split for core/codec. This will allow further speed optimization of codecs.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28463 a1c6a512-1295-4272-9138-f99709370657
2010-11-02 22:56:31 +00:00
Thomas Martitz
194174a371 2nd try: Introduce a small api for loading code (codecs,plugins) from disk/memory.
It's a used by codec/plugin loading and vastly reduces code duplication. It's also a step forward in getting rid of libuisimulator in the application ports.

Apparently sh needs linker symbols prefixed with _ even if they're referenced without from C code.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27902 a1c6a512-1295-4272-9138-f99709370657
2010-08-27 00:29:50 +00:00
Rob Purchase
a6c1b54d46 Enable IRAM on TCC7801 (Cowon D2) for a 6-12% speedup in codecs that use it, and a small increase in battery life.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26436 a1c6a512-1295-4272-9138-f99709370657
2010-05-31 21:00:25 +00:00
Karl Kurbjun
b2f1e53608 Fix M:Robe Plugins and Codecs.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26279 a1c6a512-1295-4272-9138-f99709370657
2010-05-25 05:17:08 +00:00
Michael Sevakis
a420561bf8 Gigabeat S: Reclaim about 800K of memory that was laying unused. Get rid of DEVBSS_ATTR for this target and implement as NOCACHEBSS_ATTR. Plugin and codec buffers move so all that is now incompatible (do full update). No version increase for plugins/codecs because the loader will reject them.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25895 a1c6a512-1295-4272-9138-f99709370657
2010-05-08 07:45:34 +00:00
Jens Arnold
4f551a00df FS #11153 by Marcin Bukat: Make memory layout for plugins and codecs only depend on SoC for coldfire as well, in preparation for the MPIO HD200 port.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25598 a1c6a512-1295-4272-9138-f99709370657
2010-04-11 20:53:18 +00:00
Thomas Martitz
02afc271c9 as3525v2: Move codec into iram freeing 1MB for the audio buffer and also a small decoding speedup (iram seems to be 50% faster than dram when boosted and the same when unboosed). 32k is still reserved for the core and can be readjusted if needed. Codecs don't appear to ever need the 1MB (usually <350k only).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25491 a1c6a512-1295-4272-9138-f99709370657
2010-04-05 19:18:15 +00:00
Andree Buschmann
260c0184de Set IRAM split to 48KB / 80KB (apps / plugins) for M5 and X5. This way codecs can be optimized further.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25057 a1c6a512-1295-4272-9138-f99709370657
2010-03-07 20:22:49 +00:00
Rafaël Carré
31eda59720 as3525v2: build normal firmware properly (Clipv2/+)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24840 a1c6a512-1295-4272-9138-f99709370657
2010-02-22 02:42:58 +00:00
Michael Sparmann
04ea85fb88 Revert accidental changes from r24723
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24724 a1c6a512-1295-4272-9138-f99709370657
2010-02-17 16:12:21 +00:00
Michael Sparmann
e5c815272d Add more information to the battery debug screen for Nano2G
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24723 a1c6a512-1295-4272-9138-f99709370657
2010-02-17 15:57:53 +00:00
Maurus Cuelenaere
6acbff4673 Onda VX747/VX777: cleanup linker files a bit
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24169 a1c6a512-1295-4272-9138-f99709370657
2010-01-03 16:34:56 +00:00
Andrew Mahone
19eb26a2d7 Fix codec and plugin issues on ARM EABI caused by .iram sometimes being assigned an incorrect load address.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23674 a1c6a512-1295-4272-9138-f99709370657
2009-11-20 07:38:57 +00:00
Dave Chapman
98d7203eca Correct the IRAM definitions for the S5L8700/8701 and add definitions for plugins/codecs. The current split (64/64 core/plugins for S5L8700 and 96/80 core/plugins for S5L8701) is arbitrary and should probably be tweaked later
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22905 a1c6a512-1295-4272-9138-f99709370657
2009-10-04 02:04:49 +00:00
Rob Purchase
19a5dfea28 D2: Enable ARM cache coherency functions (eg. during codec load), which should eliminate data aborts/freezes on track changes. NOTE: The linker script reserves space at the end of DRAM for the TTB, but this is not currently used.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22595 a1c6a512-1295-4272-9138-f99709370657
2009-09-01 21:35:37 +00:00
Maurus Cuelenaere
a616f49f04 Ingenic Jz4740 targets: don't use IRAM in plugins as there's almost none available
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22089 a1c6a512-1295-4272-9138-f99709370657
2009-07-30 17:07:39 +00:00
Karl Kurbjun
2bb7c422ea Fix red
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21281 a1c6a512-1295-4272-9138-f99709370657
2009-06-13 21:26:50 +00:00
Karl Kurbjun
4d41886caa M:Robe 500: Fix up 256 color blitting when in portrait mode, fix a mistake in the plugin linker script, reduce the amount of memory used by overwriting IRAM with bss after program has started, clean up some tabs and formatting, resize the simulator when building for 640x480
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21280 a1c6a512-1295-4272-9138-f99709370657
2009-06-13 20:59:03 +00:00
Thomas Martitz
a9fdf86459 Fix reds and yellows. The targets that showed have more that just #define (like inline functions) in their soc specific header, which the linker doesn't like of course.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21002 a1c6a512-1295-4272-9138-f99709370657
2009-05-20 23:30:24 +00:00