Jump to content

Quien me da una mano con el Comp. de SDCC ????


Eduy2kk
 Share

Recommended Posts

Bueno nuevamente aca estoy peleando con el bendito compilador de SDCC que no logro hacerlo andar, cree un directorio en el C raiz para ese fin pero alguna de las mias estare haciendo ya que no logro hacerlo compilar.

Si alguien me puede dar una manito en la estructura de los directorios para el skeleton y donde tengo que poner los include y demas archivos por que debe ser que en alguno me estoy equivocando y por eso no me compila.

ODIO LA MALDITA CONSOLA Y EL COMP. POR TEXTO DEL SDCC  >:( >:( >:( >:( (muy enojado) Viva el CCS  ;D

Estoy trabajando en base al midibox64E.

Bueno y sino a duras penas voy a tener que migrar al Asm que entiendo muy poco pero bueno de alguna manera tengo que sacarlo adelante. Sino tendre que reescribir partes de las librerias al C del CCS que no es 100% compatible con el ansi. >:(

Como si fuera poco se me ocurre dejar de fumar justo ahora  ::) entre esto y la falta de cigarillos en cualquier momento camino por el techo!!!!!.

Gracias y quedo atento a cualquier empujon.

                                                              Edu

Link to comment
Share on other sites

Thanks nILS Podewski for the link.

Bueno ya logre instalar todo y bueno realice algunas pruebas.

El problema aparece aca jejejeje!!! ;) no logro entender por el momento a que hace referencia cuando pone la palabra "__wparam" en el final de la sentencia

Ej:

/////////////////////////////////////////////////////////////////////////////

// This function is called by MIOS in the mainloop when nothing else is to do

/////////////////////////////////////////////////////////////////////////////

void Tick(void) __wparam

{

}

/////////////////////////////////////////////////////////////////////////////

// This function is periodically called by MIOS. The frequency has to be

// initialized with MIOS_Timer_Set

/////////////////////////////////////////////////////////////////////////////

void Timer(void) __wparam

{

}

Bueno todavia no lo entiendo mucho por que da muchas vueltas este C definiendo cosas que podrian estar en el header del pic pero bueno de a poco voy encaminando.

Link to comment
Share on other sites

Long version:

__wparam is a special, SDCC PIC16 port specific keyword. It should be used in the declaration and definition of a function as you showed above.

It instructs the compiler to output ASM which will pass the first byte of the arguments to the function using the WREG register, rather than the stack (FSR1 (which is swapped in the wrapper with FSR2, so be careful if you try to access it directly)). This has the primary function of reducing argument passing overheads on functions with a single byte argument, but also has side-effects upon the use of the SDCC internal temporary registers (r0x**) and the behaviour of the optimiser, and as such it is usually handy on functions with no arguments (as above).

If you're developing an app and writing custom functions, I recommend it's use... unless you are using inlines (hidden feature ;)), in which case it's mostly OK, but inlines are alpha, so I recommend you just quickly check the output to be sure.

Short version:

Don't mess with it :)  Just leave it where you see it, and leave it out where you see it's left out.

Can someone do an espanole version, please ? :)

Link to comment
Share on other sites

Thanks Stryd_one te entiendo perfectamente  ;D, lamento no poder escribirte en ingles por que mi escritura es muy mala  :-[, pero no asi mi lectura.

Bueno resumiendo no es mas que algo similar al pragma que realmente a este nivel no creo que tenga mucho sentido usarla como dijo el amigo, pero me quedan 2 interrogantes primero por que la implementan a cada rato y segundo no entiendo por que al final y con esa sintaxis.

Seguire investigando y probare a eliminarla ya que el compilador me lo da como error.

Pregunta adicional fuera del tema: que pasa si en el programa tengo declarado 2 DIN4  y de repente uno de los 2 lo elimino del hard por que no lo uso.(obiamente apagando , desconectando y reiniciando el hard).

Per ejemplo supongamos que tengo un modibox con la aplicacion que controla 64 botones pero el segundo modulo DIN4 lo conecto solamente el dia que necesito usar los otros 32 botones,como si fuera un modulo de expancion, la aplicacion corre lo mas bien o se trabaria???? yo por lo que vi como trabaja el programa no habria ningun problema en quitar tanto DIN, DOUT y en el caso de los AIN hay que poner a tierra las entradas libres. Estoy en lo correcto????

Gracias

          Edu

Link to comment
Share on other sites

Thanks Stryd_one te entiendo perfectamente  ;D, lamento no poder escribirte en ingles por que mi escritura es muy mala  :-[, pero no asi mi lectura.

i understand english but i can t write it properly etcetc

Bueno resumiendo no es mas que algo similar al pragma que realmente a este nivel no creo que tenga mucho sentido usarla como dijo el amigo, pero me quedan 2 interrogantes primero por que la implementan a cada rato y segundo no entiendo por que al final y con esa sintaxis.

2 questions:

a)why is it implementing it (the function) all the time?

b)i also don t understand why it implements it always at the end and with that syntax

Seguire investigando y probare a eliminarla ya que el compilador me lo da como error.

i ll keep on searcing and i ll try to eliminate it since the compiler outputs it as an error

Pregunta adicional fuera del tema: que pasa si en el programa tengo declarado 2 DIN4  y de repente uno de los 2 lo elimino del hard por que no lo uso.(obiamente apagando , desconectando y reiniciando el hard).

te contesto yo: no pasa nada

Per ejemplo supongamos que tengo un modibox con la aplicacion que controla 64 botones pero el segundo modulo DIN4 lo conecto solamente el dia que necesito usar los otros 32 botones,como si fuera un modulo de expancion, la aplicacion corre lo mas bien o se trabaria???? yo por lo que vi como trabaja el programa no habria ningun problema en quitar tanto DIN, DOUT y en el caso de los AIN hay que poner a tierra las entradas libres. Estoy en lo correcto????

correcto, por ejemplo yo utilizo unos minijacks estereofonicos para conectar AINs externos, cuando los desenchufo el pin se conecta automaticamente a GND

Simone

Gracias

          Edu

Link to comment
Share on other sites

If the compiler outputs an error about __wparam, then you have done something wrong with the toolchain setup - the code is fine.

I think that you must be running an old version of SDCC, or that the makefile is not working correctly.

Please copy and paste from the command line, everything that you see when you run "make"

Also, type:

sh --version
sdcc --version
gpasm --version
make --version
And paste the output. So, you should paste something like this:
C:\Documents and Settings\stryd_one>sh --version
GNU bash, version 2.04.0(1)-release (i686-pc-msys)
Copyright 1999 Free Software Foundation, Inc.

C:\Documents and Settings\stryd_one>sdcc --version
SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.8.0 #5117 (Mar 23 2008) (MINGW32)

C:\Documents and Settings\stryd_one>gpasm --version
gpasm-0.13.5 beta

C:\Documents and Settings\stryd_one>make --version
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-pc-mingw32

C:\Documents and Settings\stryd_one>

This should help us find the problem :) Good luck!

Link to comment
Share on other sites

Gracias Cimo por la traduccion y las respuestas, este fin de semana no me dio tiempo para trabajar en el projecto ni aparecer en el foro pero bueno trabajo es trabajo :P

Thanks Styd_one I intal step-by-step tutorial sended for you

This is my screen

C:\Documents and Settings\Eduardo>sh --version
GNU bash, version 2.04.0(1)-release (i686-pc-msys)
Copyright 1999 Free Software Foundation, Inc.

C:\Documents and Settings\Eduardo>sdcc --version
SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.8.0 #5
117 (Mar 23 2008) (MINGW32)

C:\Documents and Settings\Eduardo>gpasm --version
gpasm-0.13.5 beta

C:\Documents and Settings\Eduardo>make --version
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-pc-mingw32

C:\Documents and Settings\Eduardo>

;D

Any idea??? alguna idea ya que los datos son iguales. :-[

Otra duda que me la puedes resolver Cimo para compilar siempre tengo que usar el Gpasm o tambien se puede el Mpasmwin de microchips???

bueno seguire investigando.

Gracias a todos

                      Edu

Link to comment
Share on other sites

datos son iguales. :-[

Exactly. All is good there, you have the right tools, and they are correctly found in the path. :)

The problem must be something else....

Gpasm o tambien se puede el Mpasmwin de microchips

Only old projects use MPASM, new projects should use GPASM.

Eduy:

Can you also paste the messages you see, when you run 'make'?

Which code are you compiling? Did you download the .zip file from ucapps.de? Maybe you could attach the code here, or you can email it to me if you would prefer - just PM me for my address :)

I wish I spoke Spanish right now! Sorry Eddie!

Thanks for translating, Cimo!

Link to comment
Share on other sites

Hi Styd_one thanks for help me, sorry I write in spanish beacous is to long for my realy bad eanglish.

Como para programar y desarollar en micros yo trabajo con otros programas de c, estos que usan para el Mios son completamente distintos y realmente tengo que empesar a conocerlos como trabajan por eso mis errores al usarlos.

Mi idea es la siguiente : por el momento estoy utilizando el midibox64e_v2_2b.zip y el mios-autotools-skeleton-1.9f-r1.zip descargado de ucaps (obiamente descomprimido) para realizar las pruebas  de compilacion a ASM y luego a HEX, (supuestamente estos archivos estan correctamente y se deberian compilar sin problemas). La idea es primero convertir esos para saber bien como es la utilisacion de los programas tanto el SDCC, Make, Gpasm, etc para luego comensar a realizar las modificaciones y trabajar en el codigo generado por mi.

Agradeceria que me comenten como es el orden de uso de los programas con sus respectivas letras de opciones y las extenciones de los archivos que se deben aplicar en los mismos.

Por el momento lo que estoy haciendo es usando el SDCC con la opcion -c para compilar del C al ASM que se me generan errores soble todo con los __wparam que todavia no lo pude solucionar, y luego supuestamente uso el Make (todavia no encontre cual es la opcion correcta que debo utilisar -??????)y supuestamente despues debo convertirlo a Hex con el Gpasm.

Seguramente debo estar utilisando los programas en el orden incorrecto o con opciones que no corresponden.

Realmente no si me estoy volviendo viejo e idiota ??? o solamente es falta de vacaciones.

;D

Link to comment
Share on other sites

Si yo tambien para mis desarollos uso el Mplab ide y el Mpasm aunque normalmente desarollo en C y con el compilador de CCS y puedo sacar directamente el Hex desde el ;D.

Pero lamentablemente como no son son compatible con el Mios  :-[ no puedo usarlo y tengo que dejarlo de lado por lo cual practicamente tengo que empesar de 0 con el manejo de estos nuevos programas, asi que agradesco si pueden encaminarme con estos nuvos programas por que estoy mas perdido que chupete en la oreja :P.

Lo que mas me lleva a la locura es el manejo para utilizarlos ya que no puedo compilar una aplicacion desde 0 y por el contenido que tiene el programa interno de la aplicacion ya logre comprenderla como trabaja y no tengo problemas ( por ahora ) en modificarla, pero sin compilarlas hasta tenerlas en el Hex para cargarlo en el micro con el mios no sirve de nada.

Link to comment
Share on other sites

No lo se, yo no lo hago en plan proyecto, porque quiero tenerlo todo en un solo archivo, para tenerlo todo compactado y que con el paso del tiempo no quede todo desparramado y luego necesite cosas que ya no están o no encuentro. Soy muy bruto, y meto todo en un solo asm, no utilizo "include", pongo primero las definiciones, los valores por defecto, luego una secuencia de inicio a modo de test, después el cuerpo de programa, que es lo único que suelo cambiar y por último las funciones y rutinas, de manera que el código en cada uso es mejorado, corregido y optimizado. Luego cuando quiero finalizar la aplicación le doy a: build archivo tal... y ya tengo lo que necesito el hex para el chip y un solo asm con todo lo que necesito, que guardo a buen recaudo para un posible uso futuro.

Link to comment
Share on other sites

Short answers:

Eduy, I don't mind the spanish posts, the translator (foxlingo/autotrans) is doing a good job, I hope my English posts are OK - you seem to be reading them just fine :)

MPLAB/MPASM are no longer used for MIOS. Use GPUtils/GPASM instead.

mios-autotools-skeleton-1.9f-r1.zip

That is not supported, it really should be removed from the wiki. It was an experiment done by one user, and does not really work. Use the skeleton you can download from ucapps.de download page :)

Link to comment
Share on other sites

Hola bueno les agradesco a todos por su gran ayuda y paciensia, ayer con simone en el chat me aclaro varias dudas y ya quedo todo encaminado  ;). Bueno siempre pasa lo mismo busco la manera mas dificil de hacer lo facil  ;D, asi que ahora queda trabajar en el codigo que por el momento no estoy haciendo nada concreto del projecto pero si probando como funcionan cada parte de las funciones asi despues podemos ajustar todo a mi necesidad  :).

OFF TOPIC : Amando por lo menos en mi caso que programo en C cuando el proyecto no es pequeño utiliso los include por que te facilita bastante la estructura del main , asi no tienes partes del codigo de rutinas que te molestan para ver el programa principal, como por ejemplo las rutinas de Lcd, memorias externas, controladores de sens de temp, relojes, etc las coloco fuera asi no me agrandan la cantidad de lineas del main y es mas facil visualisar los saltos y el prog principal.

Igualmente es una cuestion de gusto y programas ya que el C de CCS es muy noble y facil de aministrar los include , los puedes dejar en el dir del proyecto o donde quieras y solo debes especificarle donde se encuentra como si fuera DOS.

Cuanto tenga novedades posteare aqui en el forro la nueva data o las nuevas dudas.

Gracias a todos nuevamente

                                        Edu

Link to comment
Share on other sites

  • 2 years later...

Hola , citaria varios post de "Eduy2kk" porque me pasa lo mismo, basicamente programo en C con el CCS y me gustaria poder programar con "MIOS" en SDCC y la verdad ... estoy perdido!

hace algunos años cambie algunas configuraciones MIDIbox64 en asm pero quisiera hacerlo en "C".

Alguien me da una mano?

por ejemplo:

To build your application:

Click 'Start… Run'.

Type in “cmd†(without the quotes)

Click 'OK'.

Type the following:

On the next line, replace <your application directory> with the location where you have unzipped the files you downloaded from ucapps.de. For example C:\MIOS\midibox_sid_v2_0_rc18>. Otherwise, it should be exactly the same as you see here.

cd c:\<your application directory>

SET PATH=C:\MSYS\1.0\bin;%programfiles%\gputils\bin;%programfiles%\SDCC\bin;%PATH%

make

Your .hex file(s) will be ready.

donde nos guarda el .hex?

gracias!

Link to comment
Share on other sites

Bueno,hasta aqui voy bien! puedo modificar las "Aplicaciones Completas" y generar el .hex con lo dicho antes (el archivo se guarda en la misma direccion,modifica el existente).

Ahora,cômo compilo con Notepad++ y SDCC ?????

tengo este ejemplo del Mios_Base:

D:\MIOS\mios_base_v1_1\apps\examples\ain64_din128_dout128

Que Hago ??????? :question:

agradezco ayuda!!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...