Hi Alfred, On Fri, Jun 16, 2017 at 07:02:47PM +0200, Alfred Schilken wrote: > Hello all, I’m experimenting with mynewt for several weeks now and I’m > especially impressed by the statistics, logging and image update > functionality. > I’m having problems with getting all the statistics using newtmgr via BLE. > > I took bleprph as base, added ADC and enabled several stats, logs and so on. > To reduce flash size I had to switch off debug and reduce the logging. > > When I started the program I got an Assert-reboot-loop. > The target board is a bbc microbit. > > This seems to be cause of the error: > ble_att_svr_entry_mem = malloc( > OS_MEMPOOL_BYTES(ble_hs_max_attrs, sizeof (struct ble_att_svr_entry))); > if (ble_att_svr_entry_mem == NULL) { > rc = BLE_HS_ENOMEM; > goto err; > }
Fitting BLE and newtmgr into 16kB requires some creativity :). There are certainly some memory and mbuf optimizations that could be made, we just need to go through the exercise of scouring the code. > I tweaked these four config values to fix the crash-loop. > BLE_ACL_BUF_COUNT: 4 # was 4 > BLE_ACL_BUF_SIZE: 128 # was 255 > MSYS_1_BLOCK_COUNT: 4 # was 12 > MSYS_1_BLOCK_SIZE: 292 # was 292 > > The program boots now, I can see and connect to the BLE services and all this > is fine. > > If I use newtmgr via ble transport to read the statistics, some of them are > responding, others return just Error: 2. > mpstat and taskstat also don’t work. > But „image list“ is working, I could even upload a new image. > > > My question is: > What are the best config settings to reduce ram usage, so that an app runs in > 16 kb with least impact on functionality? I was able to get mpstats working on a 16kB device with the following mbuf settings: MSYS_1_BLOCK_COUNT: 11 MSYS_1_BLOCK_SIZE: 200 > Some hints to reduce flash size would also be appreciated :-) You might want to look into the split image functionality: https://mynewt.apache.org/latest/os/modules/split/split. This allows you dedicate more flash space to your application code. I don't think this will help with your immediates issues, however, since BLE and newtmgr would both need to go into the loader image. Chris