Autor Tema: Problema con os_sys_init en KL46Z  (Leído 2062 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado mojo

  • PIC10
  • *
  • Mensajes: 23
Problema con os_sys_init en KL46Z
« 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
  1. #include <MKL46Z4.H>
  2. #include <rtl.h>
  3.  
  4. __task void init (void) {
  5.        
  6. }
  7.  
  8. int main () {
  9.         os_sys_init(init);
  10. }

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  :-)

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema con os_sys_init en KL46Z
« Respuesta #1 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.

Desconectado mojo

  • PIC10
  • *
  • Mensajes: 23
Re:Problema con os_sys_init en KL46Z
« Respuesta #2 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
  1. #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.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema con os_sys_init en KL46Z
« Respuesta #3 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.

Desconectado mojo

  • PIC10
  • *
  • Mensajes: 23
Re:Problema con os_sys_init en KL46Z
« Respuesta #4 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
  1. #include <MKL46Z4.H>
  2. #include "RTL.h"
  3.  
  4. __task void init (void) {
  5.        
  6. }
  7.  
  8. int main () {
  9.         os_sys_init(init);
  10. }




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í:


* fff.png
(8.64 kB, 222x299 - visto 413 veces)





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'


* bbbbb.png
(8.16 kB, 362x144 - visto 365 veces)


En mi caso, para que funcione la placa correctamente, también selecciono la pestaña Debug y marco 'Use: CMSIS-DAP Debugger'


* aaaaa.png
(7.66 kB, 627x105 - visto 421 veces)





Saludos y gracias KILLERJC.

« Última modificación: 14 de Diciembre de 2016, 17:30:17 por mojo »