Brennan, Ah, I see. The data files all have their own individual licenses, yes, some are not open source. Ugh.
Yeah, I wouldn't use a tool to generate it unless the data file was using a compatible license... -adam On Fri, Jul 3, 2020 at 3:30 PM Brennan Ashton <bash...@brennanashton.com> wrote: > They are not all Apache 2.0. The NXP ones are a mixed bag, some call > out BSD, some just liability disclaimer, looks like the example I gave > was not the best one. > > For STM this file is restricted in a way that is not compatible. > Personally I think that is a mistake on the part of STM, but here we > are... > > https://raw.githubusercontent.com/posborne/cmsis-svd/master/data/STMicro/License.html > > TI is another example with further restrictions. > > https://github.com/posborne/cmsis-svd/blob/master/data/TexasInstruments/TM4C123GH6ZRB.svd > > --Brennan > > On Fri, Jul 3, 2020 at 3:19 PM Adam Feuer <a...@starcat.io> wrote: > > > > Brennan, > > > > All the files in this repo are Apache 2.0 licensed: > > > > https://github.com/posborne/cmsis-svd/blob/master/LICENSE-APACHE > > > > Doesn't that cover the license issue? The header is only a liability > > disclaimer. > > > > -adam > > > > > > > > On Fri, Jul 3, 2020 at 2:25 PM Brennan Ashton <bash...@brennanashton.com > > > > wrote: > > > > > Just a warning on generating code from these files. Many of the have > > > explicit restrictions on using them which may not be compatible with > BSD or > > > Apache. For example NXP > > > > https://github.com/posborne/cmsis-svd/blob/master/data/NXP/LPC1102_4_v4.svd > > > > > > I'm not sure on the legal side about this but it is why I have avoiding > > > using them to generate headers. Maybe Apache Legal could give us > guidance. > > > > > > --Brennan > > > > > > On Fri, Jul 3, 2020, 1:45 PM Matias N. <mat...@imap.cc> wrote: > > > > > > > Hi, > > > > I thought about doing this for a long time and I just did it, wasn't > > > > really hard. > > > > If you're not aware, CMSIS-SVD file format is an XML based > definitions of > > > > peripherals and registers available in a given MCU. This is typically > > > used > > > > for debugging but it is quite useful for generating header > definitions. I > > > > wrote a quick python script that is able to generate register > definitions > > > > and base addresses of peripherals. It is based on > > > > https://github.com/posborne/cmsis-svd which includes both the SVD > python > > > > parser and a really complete database of SVD files. > > > > The tool is available here: https://gitlab.com/nuttx_projects/svdgen > (be > > > > sure to check the README on how to use) > > > > > > > > Example output (the console output properly tabulates data, format > may > > > > look broken in the email): > > > > > > > > Generate memory map: > > > > $ ./gen.py -v Nordic -d nrf51 -p map -x NRF51 > > > > > > > > #define NRF51_POWER_BASE 0x40000000 /* Power Control.*/ > > > > #define NRF51_CLOCK_BASE 0x40000000 /* Clock control.*/ > > > > #define NRF51_MPU_BASE 0x40000000 /* Memory Protection Unit.*/ > > > > #define NRF51_AMLI_BASE 0x40000000 /* AHB Multi-Layer Interface.*/ > > > > ... etc > > > > > > > > Register definitions: > > > > $ ./gen.py -v Nordic -d nrf51 -p RADIO -x NRF51 > > > > > > > > /* Register offsets > > > > *********************************************************/ > > > > > > > > #define NRF51_RADIO_TASKS_TXEN_OFFSET 0x000000 /* Enable radio in TX > > > > mode.*/ > > > > #define NRF51_RADIO_TASKS_RXEN_OFFSET 0x000004 /* Enable radio in RX > > > > mode.*/ > > > > #define NRF51_RADIO_TASKS_START_OFFSET 0x000008 /* Start radio.*/ > > > > #define NRF51_RADIO_TASKS_STOP_OFFSET 0x00000c /* Stop radio.*/ > > > > #define NRF51_RADIO_TASKS_DISABLE_OFFSET 0x000010 /* Disable radio.*/ > > > > ... etc > > > > > > > > /* Register definitions > > > > *****************************************************/ > > > > > > > > #define NRF51_RADIO_TASKS_TXEN (NRF51_RADIO_BASE + > > > > NRF51_RADIO_TASKS_TXEN_OFFSET) > > > > #define NRF51_RADIO_TASKS_RXEN (NRF51_RADIO_BASE + > > > > NRF51_RADIO_TASKS_RXEN_OFFSET) > > > > #define NRF51_RADIO_TASKS_START (NRF51_RADIO_BASE + > > > > NRF51_RADIO_TASKS_START_OFFSET) > > > > #define NRF51_RADIO_TASKS_STOP (NRF51_RADIO_BASE + > > > > NRF51_RADIO_TASKS_STOP_OFFSET) > > > > #define NRF51_RADIO_TASKS_DISABLE (NRF51_RADIO_BASE + > > > > NRF51_RADIO_TASKS_DISABLE_OFFSET) > > > > #define NRF51_RADIO_TASKS_RSSISTART (NRF51_RADIO_BASE + > > > > NRF51_RADIO_TASKS_RSSISTART_OFFSET) > > > > #define NRF51_RADIO_TASKS_RSSISTOP (NRF51_RADIO_BASE + > > > > NRF51_RADIO_TASKS_RSSISTOP_OFFSET) > > > > ... etc > > > > > > > > Best, > > > > Matias > > > > > > > > > -- > > Adam Feuer <a...@starcat.io> > -- Adam Feuer <a...@starcat.io>