Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WP9000 - Optimisation #27

Open
drowe67 opened this issue Nov 1, 2023 · 0 comments
Open

WP9000 - Optimisation #27

drowe67 opened this issue Nov 1, 2023 · 0 comments
Labels
Work Package A chunk of work for the FreeDV project

Comments

@drowe67
Copy link
Owner

drowe67 commented Nov 1, 2023

Place holder for the WP9000 CPU Load Optimsations WP, which we can extend to other optimisations such as run-time memory.

We are currently designing against a minimum spec of a generic stm32f405 like we use on the SM1000, which IIRC is 192k RAM/512kbytes flash.

Via email @silseva has provided some fine guidelines for RAM optimisation, something I hadn't considered until now:

  1. The current codec2 implementation takes around 32kB of heap and 15kB of stack; this means we have to dedicate 48kB of RAM only for the codec itself. (Note this is probably Codec2 3200)
  2. Flash usage is not of great concern because MCUs tend to have way more flash space than RAM space (Note this is good - as we would like to use large VQs in new Codec modes)
  3. If possible, it'd be good to have the encode and decode functions to use as less stack as possible. This because some RTOSes does not allow for dynamic allocation of the threads stack, which means that we'd need to reserve a 16kB chunk in the .bss section (which is statically allocated at compile time) for the codec2 thread stack and this leads to an inefficient usage of the RAM space.
@drowe67 drowe67 added the Work Package A chunk of work for the FreeDV project label Nov 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Work Package A chunk of work for the FreeDV project
Projects
None yet
Development

No branches or pull requests

1 participant