-
Notifications
You must be signed in to change notification settings - Fork 72
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merge de cambios realizados #4
Conversation
…t/ e inclusion de ejemplo LPCOpen "blinky-input"
…pararlo al resto de ejemplos (se uso para comprobar compilacion limpia con -Wall)"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Veo bien lo de -Wall (siempre y cuando se pueda deshabilitar por variable de makefile)
Te hice algunos comentarios sobre el PR. El mas fundamental es el de la licencia. No podemos poner codigo GPL aca... Primero porque es virico y segundo porque es incompatible con lpcopen
This program is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation, either version 3 of the License, or | ||
(at your option) any later version. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
La licencia de LPCOpen y la GPL son incompatibles. Los aportes al proyecto se hacen con licencia BSD.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, la cambio!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Si, esto está aclarado en al docuwiky de la CIAA, es BSD 3 clausulas.
El tema es que si no les vuelve GPL todo el repo y queremos que lo pueda usar cualquier empresa sin obligarlos a abrir el código.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Entiendo, gracias Eric. Ya tengo todos los cambios acordados, solo resta la resolucion de un par en donde aguardo comentarios.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
¿Falta aclarar algo más?
Propongo un Pull request con las modificaciones al board (sacando lo de pragma y con comentarios en ingles). Luego vayamos discutiendo las otras cosas.
Otra vez gracias por el aporte!
|
||
#ifndef __BOARD_H_ | ||
#define __BOARD_H_ | ||
#pragma once |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Esto no es codigo conforme. Es C99 pero no es aceptable existiendo una forma legacy perfectamente compatible con todos los compiladores. Ademas, pragma once, al ser implementation-defined puede andar mal en distintas plataformas de compilación. Si existe una forma portable y segura como son los guard-defined debemos usarla
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Entiendo que en el contexto actual, los compiladores soportados por LPCOpen son Kei, IAR, Code Red y por extension GCC, no habria otros. En todos hace mas de una decada que #pragma once funciona perfecto. Igual veo que es extendido el uso de la forma clasica. Lo modifico, no hay problema.
|
||
---------------------------------------------------------------------------- | ||
|
||
Objetivo y alcance: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No hacer comentarios en español en el codigo. Usar el ingles de lengua franca.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Crei haber leido que el lenguaje oficial del proyecto CIAA era Castellano? Eso no aplica al codigo? Que raro... Hay dos opciones que puedo proponer: puedo eliminar los comentarios o bien, podria alguien prestarse a traducirlos aclarando siempre que es una traduccion del castellano y el nombre del traductor?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Es así el tema, en el proyecto CIAA acordamos que la documentación sería en castellano y en lo posible en inglés también, mientras que en el código fuente los comentarios sean en inglés, eso es para ayudar a contribuciones extrangeras.
Algunas cosa de la documentación están en ambos idiomas, pero no contamos con traductores oficiales dentro del proyecto CIAA con lo cual escribimos ingles lo mejor que podemos cada uno. A lo sumo si alguien nos propone un mejor uso del idioma lo cambiamos.
Te propongo traducirlos voslo mejor que te parezca y lo miramos después. No tengas verguenza...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok aclarado entonces! pense que esta vez podria usar Castellano jaja :)
Ingleseo los comentarios.
Board_SPI_Init (); | ||
Board_GPIO_Init (); | ||
Board_I2C_Init (); | ||
Board_ADC_Init (); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
El identado luego del nombre de la funcion rompe el estilo usado. Es discutible pero visualmente no aporta nada.
En especial la critica va por el lado de uniformidad de codigo. Si usamos este estilo de codigo tenemos que reformatear todos los archivos, ademas, no hay una regla clara de identado.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, lo modifico. Como comentario al margen (sin debatir estilos) a mi en particular me ayuda mucho el indentado vertical.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
En esto estamos usando el estilo de código de Kernigan & Ritchie.
- En astyle el parámetro es --style=k&r
- En Eclipse el template de codigo se llama de igual manera: Kernigan & Ritchie.
- En embedded IDE usamos el estilo Linux.
- En otros IDE puede variar, pero siempre esta relacionado al estilo de llaves java, es decir, attached braces.
La única desviación del estándar es el uso de 3 espacios en lugar de 1 tab.
Ver la documentacion de aspell:
http://astyle.sourceforge.net/astyle.html#_Brace_Style_Options
#define UNUSED(...) ((void) (__VA_ARGS__)) | ||
#define UNUSED1(x) (void)x | ||
#define UNUSED2(x,y) UNUSED1(x); UNUSED1(y) | ||
#define UNUSED3(x,y,z) UNUSED2(x,y); UNUSED1(z) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No estoy convencido que sea la mejor manera de hacer esto, mas que nada porque fuerza a usar varias macros en vez de una.
Prefiero usar el UNUSED(exp)
varias veces
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A mi tampoco me gusto del todo. Cambio a UNUSED(exp) por cada una.
(La solucion correcta con VA_ARGS tokenizando parametros demanda 6 o 7 macros y me parecio exagerado para este uso)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tratamos de no tocar tanto LPCOpen, la capa board está bien que la cambiemos, acá deberíamos tener 2, una para la CIAA-NXP y otra para la EDU-CIAA. Luego el tema dle arranque del clock. Peor más allá de eso no queremos cambiarla tanto porque si no en cada nueva versión que sale hay que tomarse el trabajo de hacerle estos cambios.
Los de la variable tmp:
(void) temp;
están para forzar que se lea la variable. No la pusieron en vano. Nosotros le agregamos el void para que no aparezca como warning.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Eric, las variables tmp funcionan exactamente igual que antes. Las dos lineas agregadas "(void) tmp;" solo sirven para marcar que tu intencion realmente es usarla como la usaste y asi el compilador no tira warnings en modo -Wall. Esto no tiene efectos secundarios en la generacion del codigo.
Lo correcto seria avisar a la gente de LPCOpen para que no tengamos que hacerlo de vuelta en cada nuevo release de ellos. Hace rato hice lo propio en ST y hubo muy buena respuesta.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Habría que probar según las opciones de optimización que no rompa en alguna combinación...
Makefile
Outdated
ASRC=$(wildcard $(PROJECT_PATH_AND_NAME)/src/*.s) | ||
ASRC+=$(foreach m, $(MODULES), $(wildcard $(m)/src/*.s)) | ||
ASRC=$(wildcard $(PROJECT_PATH_AND_NAME)/src/*.S) | ||
ASRC+=$(foreach m, $(MODULES), $(wildcard $(m)/src/*.S)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Esto puede traer problemas en los sistemas de archivos case-insensitive. Podriamos usar en su lugar la extención *.sx que segun la documentacion de gcc hace lo mismo.
De todas formas, no encuentro problemas al compilar los archivos *.s del proyecto actual. Solo tienen comentarios que son parte de gnu-as (aunque parescan de cpp)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
La cosa no seria al reves? O sea, incluir .s o .S en case insensitive no traeria ningun problema ya que GAS siempre asume .S en esos sistemas?
Pero en Linux, por ejemplo, examples/lpcOpen/asm/first/src/zeros.S no compila con la makefile actual. Y si uno cambia .S por .s, tampoco compila ya que utiliza directivas del preprocesador.
Y como comente en el issue #3, en clase se vio justo el ejemplo que comento que no compila. Y se tuvo que hacer exactamente este cambio en la makefile, .s por .S.
La verdad, .sx no suena muy standard. Pero queda a tu decision.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Estoy de acuerdo, usemos .sx y .s para evitar confusiones.
Igual cundo pueda voy a probar bien que pasa si rompe algo en windows tener .s y .S.
También por qué compiló bien los .s con el cambioa .S en el makefile.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bueno, descarto este cambio. Si desean pueden dejar el issue #3 para hacer el seguimiento.
Aclaro lo de -Wall: Actualmente, en este framework no hay forma estandar de elegirlo o no, eso no cambio con mis aportes. Si quiero -Wall, lo que hago en mi codigo es OPT=g -Wall en el config.mk del proyecto. |
Lo de -Wall deberíamos pensar la forma de ponerlo elegantemente. Ese archivo config.mk esta hecho como está para que sea fácilmente generable en forma automática como hacemos con Embedded IDE. |
Ahi pushie modificaciones, creo que estarian resueltas todas las observaciones. |
Yo lo veo perfecto! Por mi podemos mergear sin problema. Las modificaciones de -Wall parametrizable y otros detalles (P.Ej *.s vs *.S vs *.sx) pueden quedar para futuros commits. |
Si Martin, aquello quedara para definir a futuro. Sobre -Wall, algo raro que note es que la makefile de firmware_v2 siempre compilo por defecto con -Wall (y expone unos cuantos warnings de LPCOpen cuando se compila para el core M0!) |
Como hablamos en la lista embebidos32, les envio los cambios propuestos y otra serie de cambios menores como consecuencia:
En cuanto al punto 3, considero que -Wall es una herramienta fundamental. Los cambios realizados permiten compilar limpio proyectos LPCOpen con -Wall. Ignoro si proyectos con sAPI compila limpios con -Wall, pero podria ejercerse esa practica si lo consideran correcto.