Autor Tema: c - assembler  (Leído 4037 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado andy_andy

  • PIC10
  • *
  • Mensajes: 15
c - assembler
« en: 14 de Enero de 2012, 11:25:53 »
hola a todos!, primero quisiera felicitarles por el foro me ayudo con algunas dudas q tenia sobre comunicacion usb con el pic 18f2550.
estoy haciendo un proyecto con ibuttons y comunicacion usb, la parte del ibutton ya la tengo hecha en assembler y a la parte q me estoy introduciendo es a usb el cual vi q es mas sencillo en c q en assembler, mi pregunta es si es posible hacer en c la parte de usb y luego usarlo como libreria para llamar desde mi programa pricipal q esta en assembler   :D.
para assembler programo en el mplab, y para c en el ccs.

saludos.

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: c - assembler
« Respuesta #1 en: 14 de Enero de 2012, 13:10:58 »
Hola amigo, yo utilicé assembler mucho tiempo y cuando requerí USB tuve que pasarme a CCS, es muy fácil, revisa esto

En el foro hay demasiada información, pero revisa este ejemplo

Saludos.

Desconectado andy_andy

  • PIC10
  • *
  • Mensajes: 15
Re: c - assembler
« Respuesta #2 en: 14 de Enero de 2012, 13:36:49 »
Gracias Diego!!, me sirvio de mucho, si tengo alguna otra duda les avisare!

Desconectado JBQ

  • PIC16
  • ***
  • Mensajes: 118
Re: c - assembler
« Respuesta #3 en: 15 de Enero de 2012, 03:37:56 »
Pero la duda quedo pendiente... será posible jalar la libreria del usb hecha en C por un firmware hecho en assembly???
De repente introduciendo el archivo objeto de la libreria del usb desarrollada en C, o como *.lib (claro, siempre y cuando se este trabajando en código recoletable)... o definitivamente no es posible...

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: c - assembler
« Respuesta #4 en: 16 de Enero de 2012, 16:26:15 »
Hola JBQ, la verdad no entendí mucho tu pregunta, pero creo que definitivamente no... vamos a ver, tu preguntabas si se podía utilizar una librería hecha en C, en un proyecto que estas realizando en asm o que el compilador sea de asm???... la única forma es que realices un proyecto en donde el compilador este en C y el  proyecto lo escriba en asm (que si se puede), y agregues todas las librerías en C que quieras.

Desconectado JBQ

  • PIC16
  • ***
  • Mensajes: 118
Re: c - assembler
« Respuesta #5 en: 17 de Enero de 2012, 04:48:17 »
... si se podía utilizar una librería hecha en C, en un proyecto que estas realizando en asm ???...

Exacto, pongamolos más detallado...

Como se sabe, cuando se desarrolla un firmware en MPLAB en lenguaje assmebly, el ensamblador genera muchos archivos... entre ellos (si se trabaja con el metodo de código recoletable) *.o *.coff *.hex; y si queremos generara una libreria, *.lib. Pues bien, en las pruebas que he realizado en este tipo de método de programación, he notado que al programar en assembly se pueden añadir archivos del tipo *.o, *.asm, *.lib, y ensambla perfectamente; es más, el manual del linker recomienda generar la mayor cantidad de *.asm y/o *.lib para mantener el orden en el firmware.

Ahora, yo suponia que el compilador del C, de repente genera algunos de estos archivos (*.o, *.lib), ya que entre los pasos del compilador está la de generar el texto escrito en C en lenguaje assembler; de esta manera podríamos añadir a nuestro proyecto que se esta desarrollando en lenguaje assembly con el método del código recoletable, las rutinas ya desarrolladas en C.

Exactamente a eso me refería...saludos.

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: c - assembler
« Respuesta #6 en: 17 de Enero de 2012, 09:57:40 »
Osea realizar las rutinas en C que necesitas, las compilas y luego buscar el archivo asm generado y lo agregas a tu proyecto... si es asi, pues claro es una buena idea para realizar rutinas difíciles y no tengas tiempo  :D

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: c - assembler
« Respuesta #7 en: 17 de Enero de 2012, 11:27:43 »
Podes compilar el código escrito en C, lo que genera su correspondiente código objeto, luego compilar el código escrito en ASM, obteniendo así otro código objeto, y luego enlazarlos en un único archivo binario, donde las funciones escritas en C pueden ser llamadas desde las funciones escritas en ASM y viceversa. En teoría esto permite mezclar muchos lenguajes y sacar provecho a sus características particulares, pero infelizmente las convenciones de llamadas y el formato de los objetos no es estándar, lo que entre muchos otros problemas, hacen que esto no sea siempre posible. Casi todos los compiladores permiten hacer esto, tienes que leer un poco el manual, por sobre todo por el tema del paso de parámetros.
Te paso un ejemplo para SDCC.
@fabianjsm is on twitter

Desconectado rina

  • PIC10
  • *
  • Mensajes: 45
Re: c - assembler
« Respuesta #8 en: 17 de Enero de 2012, 17:40:06 »
si el rpograma tendrias que acerlo ya sea en c o en basic que son compiladores muy faciles.. ero dentro del programa tienes que agregar las partes en codigo ams. esto telo permiten los compiladores para poder sacar mayor rendimiento a algunas partes del programa.

pero aun asi anadie sele dio por preguntarse como funcionan esas bibliotecas. y dico como funcionan es al completo. por que cuando cargar una biblioteca de esas lo unico que estas aciendo es copiar una parte de programa ya creado en ams.
y bueno yo tampoco estoy muy aplicado en usar y leer en mplab..

Desconectado JBQ

  • PIC16
  • ***
  • Mensajes: 118
Re: c - assembler
« Respuesta #9 en: 17 de Enero de 2012, 22:55:53 »
Ya veo, eso quiere decir que los compiladores de C si crean un archivo objeto y es posible añadirlos... ya corre por cuenta de uno saber diseñar un buen algoritmo que permita llamar a esa especifica función tratandola como si fuera un objeto. Es una buena prueba que hare más adelante... saludos.

Desconectado rina

  • PIC10
  • *
  • Mensajes: 45
Re: c - assembler
« Respuesta #10 en: 17 de Enero de 2012, 23:45:02 »
exactamente, pero que esos ficheros en el fondo tambien los hay para agregar en mplab en la pajina de http://www.microchip.com/ lo que no me acuerdo muy bien en que parte... la verdad que tienen archivos objeto (mas bien bibliotecas ya echas) para todos sus productos).
para facilitar el trabajo con sus productos me imagino.

un saludo
« Última modificación: 17 de Enero de 2012, 23:47:41 por rina »

Desconectado JBQ

  • PIC16
  • ***
  • Mensajes: 118
Re: c - assembler
« Respuesta #11 en: 18 de Enero de 2012, 00:37:14 »
exactamente, pero que esos ficheros en el fondo tambien los hay para agregar en mplab en la pajina de http://www.microchip.com/ lo que no me acuerdo muy bien en que parte... la verdad que tienen archivos objeto (mas bien bibliotecas ya echas) para todos sus productos).
para facilitar el trabajo con sus productos me imagino.

un saludo

Claro que los hay, dependiendo de la aplicación, pero la mayoria (y creo que todos en realidad), no estan escritos como para añadirlos directamente al proyecto, hay que analizarlos, interpretarlos y adecuarlos a una función tipo objeto para poder recién trabajarlos. De ahi la idea de hacerlos con las rutinas hechas en C.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: c - assembler
« Respuesta #12 en: 18 de Enero de 2012, 01:28:38 »
en el mplab puedes añadir al proyecto el .c y el .s luego el linkeador se encarga de unirte todo junto, eso si, debes declarar las funciones externas que uses tanto en uno como en otro para que al compilarlo no te de error.

Desconectado JBQ

  • PIC16
  • ***
  • Mensajes: 118
Re: c - assembler
« Respuesta #13 en: 18 de Enero de 2012, 06:51:50 »
en el mplab puedes añadir al proyecto el .c y el .s luego el linkeador se encarga de unirte todo junto, eso si, debes declarar las funciones externas que uses tanto en uno como en otro para que al compilarlo no te de error.

Eso quiere decir que tranquilamente puedo añadir el *.c al proyecto tranquilamente??? recuerda que se esta trabajando en assembler (con el MPASM y todo eso).

Por cierto, eso de declarar las funciones como externas, y las de la funcion como global lo tenia controlado, de todas maneras gracias por la sugerencia.

Desconectado rina

  • PIC10
  • *
  • Mensajes: 45
Re: c - assembler
« Respuesta #14 en: 18 de Enero de 2012, 08:52:52 »
pues posiblemente. yo las tengo bistas y no es mas que una partde de mplab. pero ya te digo que nolo entiendo bien..  por eso nunca entendi muy bien como funcionan. tansolo te indican que asi asa y por aya con esos comandos y ba. tampoco puedo decir mucho por que nunca ice nada.. pero que me prestaba intentar usar un pic normal sin usb e intentar acer algo aunque fuera muchisimo mas lento. pero para mandar 4 datos.. y envez de por el puerto com intentar acer alti pito usb.. pero que la verdad nisiquiera se como se envia la informacion por el puerto usb. bamos electricamente

un saludo