¿Alternativas de código abierto estilo BSD a CMSIS?
8
Dado que las licencias en CMSIS no están claras cuando se trata de código abierto, probablemente sea una violación incluir el CMSIS en un proyecto de código abierto, independientemente de si utiliza una licencia de estilo GPL o BSD.
¿Existe alguna alternativa de CMSIS para los MCU basados en Cortex M que sean compatibles con una licencia BSD o Apache2.0?
¿O alguien sabe si está bien incluir el CMSIS en un proyecto de código abierto?
Muchos de los componentes del software CMSIS ahora se lanzan bajo una licencia BSD.
En el paquete oficial de CMSIS, este es el contenido relevante del "ACUERDO DE LICENCIA DE USUARIO FINAL DE CMSIS.pdf":
The package also includes the components contained in the following directories:(a)./CMSIS/DSP_Lib - DSP Library sources and examples;(B)./CMSIS/Include-Header files;(c)./CMSIS/Lib- DSP Library build for various toolchains;(d)./CMSIS/RTOS -Header file templatefor CMSIS-RTOS implementation; and(e)./Device-Template files and implementations forCortex-M class processors.All of the above components are licensed to you under the terms of the BSD licence,
which is incorporated within or alongside the above components.
De la lectura de la licencia actual de CMSIS 2.0 , parece que la intención no es evitar que desarrolle su software como código abierto o de otro tipo, sino más bien sobre cubrir el trasero de ARM. Es decir, quieren asegurarse de que no reclame la propiedad del código en sí o de cualquier IP que pueda estar en él, y también que se use para desarrollar código que cumpla con CMSIS y no para algún otro propósito.
Sujeto a las disposiciones de las Cláusulas 2, 3, 4 y 5, ARM le otorga en virtud de este documento cualquier propiedad intelectual que sea (a) propiedad de ARM o que sea libre de licencia sin pago a terceros no afiliados y (b) incorporada en uno o ambos el Código fuente y la Especificación, según corresponda, o Necesario (definido en la Cláusula 4 a continuación) para copiar o implementar una interfaz binaria de aplicaciones que cumpla con la Especificación, una licencia mundial perpetua, no exclusiva, no transferible, libre de regalías para:
( i) usar y copiar la Especificación con el propósito de desarrollar, desarrollar, fabricar, fabricar, ofrecer vender, vender, suministrar o distribuir productos que cumplan con la Especificación;
(ii) usar, copiar, modificar y sublicenciar el Código Fuente (en forma de código fuente u objeto) con el único fin de desarrollar, desarrollar, fabricar, fabricar, ofrecer vender, vender, suministrar o distribuir productos que cumplan con la Especificación, siempre que conserve todos los avisos de derechos de autor incluidos en el Código fuente.
El Código fuente y la Especificación son propiedad de ARM o sus licenciantes y están protegidos por las leyes de derechos de autor y los tratados internacionales de derechos de autor, así como otras leyes y tratados de propiedad intelectual. El Código fuente y la Especificación tienen licencia, no se venden. Salvo que esté específicamente licenciado de acuerdo con la Cláusula 1, usted no adquiere ningún derecho, título o interés en el Código fuente y la Especificación ni en ninguna propiedad intelectual incorporada en el mismo. En ningún caso, las licencias otorgadas de conformidad con la Cláusula 1 se interpretarán como una concesión, expresa o implícita, de impedimento o de otro modo, de una licencia para usar cualquier tecnología ARM, excepto el Código fuente y la Especificación. Salvo lo dispuesto en la Cláusula 1, no se le otorga ningún derecho a sublicenciar los derechos que se le otorgan en virtud de esta Licencia.
Dicho esto, si aún no se siente cómodo con esos términos, puede tomar la hoja de datos y hacer los encabezados usted mismo. Los chicos de microbuilder.eu han hecho exactamente eso, y lanzaron su base de código LPC1114 y LPC1343 bajo BSD.
No creo que haya un problema. Los archivos individuales tienen esta declaración:
"* ARM Limited (ARM) suministra este software para su uso con microcontroladores basados en procesadores Cortex-M *. Este archivo se puede distribuir libremente * dentro de las herramientas de desarrollo que son compatibles con dichos procesadores basados en ARM".
y tampoco veo nada en la licencia que lo impida.
Hay un directorio gcc en la distribución CMSIS, lo que implica que se puede suministrar con herramientas de código abierto.
Esta declaración:
(i) use y copie la Especificación CMSIS con el propósito de desarrollar, desarrollar, fabricar, fabricar, ofrecer vender, vender, suministrar o distribuir productos que cumplan con la Especificación CMSIS, siempre que conserve cualquier aviso de copyright que esté incluido con, o en, la Especificación CMSIS y siempre que no utilice el nombre, logotipo o marcas registradas de ARM para comercializar dichos productos;
implica que puede incorporar CMSIS en su proyecto de código abierto.
¿Pero es un proyecto de código abierto una "herramienta de desarrollo"? Digamos que estoy escribiendo un programa blinky de código abierto, e inserto ese código en github. ¿Puede eso realmente definirse como "distribuido dentro de las herramientas de desarrollo"?
Johan
Y abajo en "(iii) usar, copiar, modificar y sublicenciar el Código de ejemplo". Creo que la palabra mágica es sublicencia, ya que eso debe significar que puedo modificar y redistribuir con una licencia de código abierto.
Johan
1
La parte importante es 'para usar con Cortex-M *'. ¡Los fabricantes de chips quieren que uses sus chips! La licencia lo permite, como notó en el subpunto iii. La parte importante es que todo lo que venda con él o cualquier sublicencia que haga debe incorporar chips ARM Cortex *. Así que no modifique los archivos para que funcionen con un MSP430 y redistribuirlos y ya está.
AngryEE
1
Creo que la primera cita es absolutamente contra GPL (en espíritu) ya que limita su libertad de usar y distribuir el software.
No creo que haya un problema. Los archivos individuales tienen esta declaración:
"* ARM Limited (ARM) suministra este software para su uso con microcontroladores basados en procesadores Cortex-M *. Este archivo se puede distribuir libremente * dentro de las herramientas de desarrollo que son compatibles con dichos procesadores basados en ARM".
y tampoco veo nada en la licencia que lo impida.
Hay un directorio gcc en la distribución CMSIS, lo que implica que se puede suministrar con herramientas de código abierto.
Esta declaración:
(i) use y copie la Especificación CMSIS con el propósito de desarrollar, desarrollar, fabricar, fabricar, ofrecer vender, vender, suministrar o distribuir productos que cumplan con la Especificación CMSIS, siempre que conserve cualquier aviso de copyright que esté incluido con, o en, la Especificación CMSIS y siempre que no utilice el nombre, logotipo o marcas registradas de ARM para comercializar dichos productos;
implica que puede incorporar CMSIS en su proyecto de código abierto.
fuente