Update: Similar issue to Ethernet can also happen with USB, although currently it might not be a problem yet. See: https://developer.mbed.org/users/mbed_official/code/USBDevice/file/f3cad7e6984e/USBDevice/USBEndpoints.h, someone could for example also add for the Freescale ones simply #ifdef TARGET_Freescale. And then my code would see the KL05 as having USB. So something I need to think about if I would add it and hope no one does it, or not add it at all. Or a better solution if someone has it :P.
@Wim, that would be nice indeed. Then it could also be included in the targets.py file for more data, for example if a target has USB peripheral.
Regarding the actual processor type and vendor, the irritating part is that it is not standardized. The information is there, but can be anywhere. For example the mbuino:
class OC_MBUINO(LPC11U24):
def __init__(self):
LPC11U24.__init__(self)
self.core = "Cortex-M0"
self.extra_labels = ['NXP', 'LPC11UXX']
self.macros = ['TARGET_LPC11U24']
self.supported_toolchains = ["ARM", "uARM", "GCC_ARM", "IAR"]
self.default_toolchain = "uARM"
This makes it a child-class of the LPC11u24, and in the extra labels it says it is from NXP. Now most (maybe all), put the first extra label as the vendor, but there is nothing preventing them from putting the second label as the vendor.
Another one with a fancy name:
class MAXWSNENV(Target):
def __init__(self):
Target.__init__(self)
self.core = "Cortex-M3"
self.extra_labels = ['Maxim', 'MAX32610']
self.macros = ['__SYSTEM_HFX=24000000']
self.supported_toolchains = ["GCC_ARM", "IAR", "ARM"]
self.default_toolchain = "ARM"
Here it is not a child class, but is the name of the actual MCU the second extra label.
Something to explore is getting it from the exporters, since they need the actual MCU name. It also has the vendor name, but I already saw that NXP for starters is being irritating with having "NXP (Founded by Philips)" as vendor name for many :P. (Problem is it takes too much space in tables).
Edit: Scroll down to my latest posts to get the latest version.
Since it is time to share it, even though it is far from perfect, time for a topic.
Ever wondered which platform you should take for a project? Only to find out that the mbed platform main page has extremely limitted filtering abilities? Want to know which platforms support CAN and have an RTC on board? Or you want to use the new low-power timer, but you would like to know which boards besides the Gecko boards support it? (Hint: not many). The solution is here :P
https://developer.mbed.org/media/uploads/Sissors/supported_NnZtQEm.htm
The RAM/ROM sizes and core type are not sortable/filterable, but all others columns are (click on the column header). Also at left top you have a search box, if you only want to see LPC devices for example.
Some background and other notes:
This is all automatically generated using a python script from the mbed source code, see for the python code: https://github.com/Sissors/mbed/tree/master/workspace_tools/data_scrape. Now this is my first time using python, javascript, html and css (hopefully also last time css, seriously what a horrible abomination that is), so it won't exactly be nice code. Especially the html since that is also generated code.
The good part: Since this is automatically generated from the mbed source code, no one can cheat (to be fair, it is not perfect, I believe the RZ A1H has a wrong RAM size extracted, it uses a completely different memory structure, making it a bit a pain in the ass). Some Nucleo boards have CAN, yet it shows for all no CAN in the table. Why? Because none of them have it enabled within the mbed code. The NRF51822 boards have 16k RAM, yet show 6k. Because that is the actual usable amount of RAM by the user.
And last but not least: Also https://developer.mbed.org/users/sarahmarshy/ helped with writing the python code (she can actually write p