Mm-iot-sdk-2_5_2-esp32: Cannot find mf10220 BCF in the SDK

I’m testing AsiaRF MM610X-H06 board using mm-iot-sdk-2_5_2-esp32.

According to information provided by AsiaRF, this board is using mf10220.bcf.
But I cannot find the mf10220 BCF in the SDK.
Can someone help to address this issue?

1 Like

Axel-

BCF files are specific to the indiviual module and should be provided by the module vendor.

Let me know if you aren’t able to get the BCF from them and I can follow up with our contacts.

-Zandr

Hi Zandr,

I cannot get the BCF file.
Please help me to get it.
Also note I’m testing on ESP32S3.

Thank you,
Axel.

That file is available In our GitHub BCF repository. Version 2.5.2 of the IoT SDK uses version 1.11.4 of the Morse Micro firmware, so the correct BCF binaries are in this release: Release Morse Micro 1.11.4 release · MorseMicro/bcf_binaries · GitHub

Note that these are .bin files, and you will need to use the script in tools/buildsystem/convert-bin-to-mbin.py to create the required .mbin version of the BCF file.

Hi Zandr,
Thanks, but I cannot find the script in tools/buildsystem/convert-bin-to-mbin.py in
bcf_binaries github or in mm-iot-sdk-2_5_2-esp32.

Hi Zandr,

One more question:
In mm-iot-sdk-2.4.5-esp32, take bcf_mf08251.mbin.o as an example:
$ file framework/mm_shims/bcf_mf08251.mbin.o
framework/mm_shims/bcf_mf08251.mbin.o: ELF 32-bit LSB relocatable, Tensilica Xtensa, version 1 (SYSV), not stripped

I would expect to get similar file for mf10220, something like bcf_mf10220.mbin.o
But I’m not sure if the convert-bin-to-mbin.py can generate this file because it should be ELF for Tensilica Xtensa.
(I still cannot find convert-bin-to-mbin.py, so I cannot verify it now.)

Hi Axel,

Do you have access to mm-iot-sdk-2.5.2 (the non ESP32 variant)? You can find the convert-bin-to-mbin.py tool in the framework/tools/buildsystem directory of that package.

As you note, we have provided the BCFs for ESP32 in object format. If you want to convert your own BCF to this format you can use objcopy. In doing this, you need to ensure that there are two symbols in the object: bcf_binary_start and bcf_binary_end. Try the following steps and let us know if it works for you:

  1. Rename your BCF to bcf.mbin
  2. Execute:
xtensa-esp32s3-elf-objcopy -I binary -O elf32-xtensa-le -B xtensa bcf.mbin bcf.mbin.o --redefine-sym _binary_bcf_mbin_start=bcf_binary_start --redefine-sym _binary_bcf_mbin_end=bcf_binary_end --rename-section .data=.rodata,contents,alloc,load,readonly,data

If you then run xtensa-esp32s3-elf-objdump -t bcf.mbin.o you should see bcf_binary_start and bcf_binary_end in the symbol table. If not, then you may need to check the arguments to --redefine-sym.

1 Like

Hi @matt

My ubuntu version: Ubuntu 24.04.1 LTS

I have download the mm-iot-sdk-2.5.2 (the non ESP32 variant).
But I hit error when executing
./framework/tools/setupscripts/ubuntu-setup.sh

E: Unable to locate package libncurses5
An error occurred and the requested operation did not complete
(Can I bypass this error? or some other package can be use instead in Ubuntu24.04?)

Also note: I hit below error:
$ ./framework/tools/buildsystem/convert-bin-to-mbin.py -h
Traceback (most recent call last):
File “/home/axel/git/mm/mm-iot-sdk-2_5_2/./framework/tools/buildsystem/convert-bin-to-mbin.py”, line 21, in
from elftools.elf.elffile import ELFFile
ModuleNotFoundError: No module named ‘elftools’

@Zandr @matt

Thanks for your help.
Fixed ModuleNotFoundError: No module named ‘elftools’ issue by installing python3-pyelftools package.
I can generate the bcf_mf10220.mbin.o now.

$ file framework/mm_shims/bcf_mf10220.mbin.o
framework/mm_shims/bcf_mf10220.mbin.o: ELF 32-bit LSB relocatable, Tensilica Xtensa, version 1 (SYSV), not stripped

$ xtensa-esp32s3-elf-objdump -t framework/mm_shims/bcf_mf10220.mbin.o

framework/mm_shims/bcf_mf10220.mbin.o: file format elf32-xtensa-le

SYMBOL TABLE:
00000000 g .rodata 00000000 bcf_binary_start
000000f8 g .rodata 00000000 bcf_binary_end
000000f8 g ABS 00000000 _binary_bcf_mbin_size

Great. Thanks for the update.