Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: mojo en 14 de Diciembre de 2016, 16:40:23
Título: Problema con os_sys_init en KL46Z
Publicado por: mojo en 14 de Diciembre de 2016, 16:40:23
Hola buenas, estoy tratando de usar la librería rtl.h para trabajar con tareas, mutex, etc... Mi código es el siguiente:
Código: C
#include <MKL46Z4.H>
#include <rtl.h>
__task void init (void){
}
int main (){
os_sys_init(init);
}
Pero cada vez que le doy a build, me da dos errores:
.\P4.axf: Error: L6218E: Undefined symbol os_set_env (referred from p4.o). .\P4.axf: Error: L6218E: Undefined symbol rt_sys_init (referred from p4.o).
¿Podrían decirme a que se debe?
P.D. Estoy usando Keil uVision4
Saludos :-)
Título: Re:Problema con os_sys_init en KL46Z
Publicado por: KILLERJC en 14 de Diciembre de 2016, 16:44:01
Tal ves te falto de incluir la direccion de la libreria, ya que agregar el .h solo no es suficiente. Deberias agregar la liberia que serian los .c a tu proyecto.
Nunca use Keil, pero supongo que es eso.
Título: Re:Problema con os_sys_init en KL46Z
Publicado por: mojo en 14 de Diciembre de 2016, 16:49:05
Hola KILLERJC, acabo de copiar la librería directamente en la carpeta de mi proyecto y ahora pongo:
Código: C
#include "RTL.H"
El problema sigue siendo el mismo... No se si te referías a esto.
** Corrección: no leí bien lo de los .c, ahora miro cuales pueden hacer falta y los meto.
Título: Re:Problema con os_sys_init en KL46Z
Publicado por: KILLERJC en 14 de Diciembre de 2016, 16:56:56
Y yo me explique mal.. No significa "copiar" la libreria.. Sino agregar los .c al arbol de proyecto y ademas para que funcion agregar la ruta de include o direccion C:/dsall/dsadsa/libreria/ a tu proyecto.
Asi cuando la libreria usa los #include, estos buscan de esa ruta.
Obviamente podes copiar la libreria entera, no hay problema en eso, siempre y cuando respetes las carpetas y cosas que tengan, y tambien vas a tener que agregar la ruta de include de la misma.
Título: Re:Problema con os_sys_init en KL46Z
Publicado por: mojo en 14 de Diciembre de 2016, 17:18:44
Tenías razón, tenía que incluír en mi proyecto el archivo RTX_Config.c, pero no sólo bastaba con eso...
Subo todo el proceso por si a alguien le interesa:
1º PASO
Hacer includes necesarios:
Código: C
#include <MKL46Z4.H>
#include "RTL.h"
__task void init (void){
}
int main (){
os_sys_init(init);
}
2º PASO
Añadir fichero RTX_Config.c al proyecto:
Este fichero lo podemos encontrar en un proyecto de ejemplo, de los que trae el Keil uVision4: C:\Keil\ARM\Boards\Freescale\FRDM-KL25Z
Para incluirlo, dentro de Keil hacemos click derecho sobre 'Source Group 1' (puede tener otro nombre el grupo, este es mi caso). Seleccionamos 'Add existing files to Group 'nombre grupo' ..' y examinamos en busca del fichero. Yo lo había copiado previamente a la carpeta del proyecto.
Quedaría tal que así:
- Tienes que ingresar para ver archivos adjuntos -
3º PASO
En la imagen anterior observamos que hay una especie de carpetita encima de 'Source Group 1' que pone 'Target 1', hacemos click derecho sobre ella y seleccionamos 'Options for Target 1 'Target 1'...'
Seleccionamos la pestaña Target y ponemos 'Operating system: RTX Kernel'
- Tienes que ingresar para ver archivos adjuntos -
En mi caso, para que funcione la placa correctamente, también selecciono la pestaña Debug y marco 'Use: CMSIS-DAP Debugger'
- Tienes que ingresar para ver archivos adjuntos -