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

feat(CMSIS): Adding mallinfo function and reworking Cordio memory management. #1179

Merged
merged 20 commits into from
Oct 15, 2024

Conversation

kevin-gillespie
Copy link
Contributor

Description

Adding mallinfo function to give us information on how much heap space is being used and how much is available. Reworking the Cordio memory management so we don't have to request an arbitrarily large block of memory on initialization.

Checklist Before Requesting Review

  • PR Title follows correct guidelines.
  • Description of changes and all other relevant information.

@kevin-gillespie kevin-gillespie added the WIP work in progress label Sep 18, 2024
@github-actions github-actions bot added MAX32655 Related to the MAX32655 (ME17) MAX32665 Related to the MAX32665 (ME14) MAX32690 Related to the MAX32690 (ME18) labels Sep 18, 2024
Need to call this multiple times to allow us to calculate the size
requirements before requesting the heap memory.
This is a significant API change. We need to call WsfHeapAlloc with
the required size before calling WsfHeapGetFreeStartAddress. This
will allow us to do dynamic memory allocation, instead of allocating
a large block of memory on initialization.
@github-actions github-actions bot added the BLE Related to Bluetooth label Sep 18, 2024
@kevin-gillespie
Copy link
Contributor Author

@crsz20 I was just thinking, it would be good to add a LL function for the size calculation. We're copying a lot of code that could be consolidated.

@crsz20
Copy link
Contributor

crsz20 commented Sep 20, 2024

@crsz20 I was just thinking, it would be good to add a LL function for the size calculation. We're copying a lot of code that could be consolidated.

Which part do you think could be consolidated? In the heap.c files?

@kevin-gillespie
Copy link
Contributor Author

@crsz20 I was just thinking, it would be good to add a LL function for the size calculation. We're copying a lot of code that could be consolidated.

Which part do you think could be consolidated? In the heap.c files?

Lines 127 - 133 in the file below. We could add a function with the same parameters as LlInit() that returns the memory requirement.

https://github.com/analogdevicesinc/msdk/pull/1179/files#diff-7c5e05044eb55068c970128b55bc1b31c278e44f82c0d2325b275d4606af3d9fR127

@crsz20
Copy link
Contributor

crsz20 commented Sep 20, 2024

/clang-format-run

@crsz20
Copy link
Contributor

crsz20 commented Sep 24, 2024

Found a bug in the in BLE4_ctr example on ME17 that seems to date back to the following commit:

  • "Reworking HeapAlloc usage" (1a2400e)

The BLE_datc and some other examples seem to run fine, however. I back-traced the error to PalCfgLoadData() in main.c > palCfgLoadBdAddress() > MXC_SYS_GetUSN() failing to an assertion trap in pal_cfg.c.

I am not sure how this may be dependent on the recent changes to the heap memory management.

@kevin-gillespie
Copy link
Contributor Author

Yes it sounds unrelated. I'm not sure why it would only fail on this example. That same procedure is done in most of the examples to get the Bluetooth address. Can you step through the procedure to see how it's failing?

We've seen this before on pre-production parts where the USN isn't programmed properly. This would be a chip specific error that we would always see, not a software error.

@crsz20
Copy link
Contributor

crsz20 commented Sep 24, 2024

Seems to be failing at the checksum verification.

@kevin-gillespie
Copy link
Contributor Author

Seems to be failing at the checksum verification.

This is a common problem with the pre-production parts. Please try a different board to see if we have the same problem.

@crsz20
Copy link
Contributor

crsz20 commented Sep 25, 2024

The USN bug seems to be unrelated and is being resolved in a separate PR. Will proceed to update the rest of the examples.

@crsz20
Copy link
Contributor

crsz20 commented Sep 27, 2024

/clang-format-run

@github-actions github-actions bot added the Workflow Related to Workflow development label Oct 4, 2024
@crsz20
Copy link
Contributor

crsz20 commented Oct 4, 2024

/clang-format-run

@kevin-gillespie kevin-gillespie removed the WIP work in progress label Oct 14, 2024
@yc-adi
Copy link
Contributor

yc-adi commented Oct 14, 2024

In BLE demos, is it necessary to add a CMD to display the contents of struct mallinfo?

@kevin-gillespie
Copy link
Contributor Author

In BLE demos, is it necessary to add a CMD to display the contents of struct mallinfo?

No, I don't think so. The memory management is handled behind the scenes.

@kevin-gillespie kevin-gillespie merged commit b0219d3 into main Oct 15, 2024
1 check passed
@kevin-gillespie kevin-gillespie deleted the feat/cordio-malloc branch October 15, 2024 15:21
sihyung-maxim pushed a commit to analogdevicesinc/hal_adi that referenced this pull request Oct 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BLE Related to Bluetooth MAX32655 Related to the MAX32655 (ME17) MAX32665 Related to the MAX32665 (ME14) MAX32690 Related to the MAX32690 (ME18) Workflow Related to Workflow development
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants