Jump to content

adding new fonts is not working anymore ?


Recommended Posts

hey ,

while i was following this tutorial .


it seems its not allowing me to add a new font .

is this because the trunk is precompiled ?

midibox_ng_v1 username$ make
rm -f project.hex
Creating object file for app.c
Creating object file for mbng_sysex.c
Creating object file for mbng_patch.c
Creating object file for mbng_event.c
Creating object file for mbng_din.c
Creating object file for mbng_dout.c
Creating object file for mbng_dio.c
Creating object file for mbng_rgbled.c
Creating object file for mbng_enc.c
Creating object file for mbng_ain.c
Creating object file for mbng_ainser.c
Creating object file for mbng_kb.c
Creating object file for mbng_matrix.c
Creating object file for mbng_cv.c
Creating object file for mbng_mf.c
Creating object file for mbng_lcd.c
src/mbng_lcd.c: In function 'MBNG_LCD_FontInit':
src/mbng_lcd.c:193:31: error: 'GLCD_FONT_JBIG' undeclared (first use in this function)
src/mbng_lcd.c:193:31: note: each undeclared identifier is reported only once for each function it appears in
make: *** [project_build/src/mbng_lcd.o] Error 1

---- > the declaration is made according to the tutorial :

s32 MBNG_LCD_FontInit(char font_name)
  switch( font_name ) {
  case 'n': glcd_font = (u8 *)GLCD_FONT_NORMAL; break;
  case 'i': glcd_font = (u8 *)GLCD_FONT_NORMAL_INV; break;
  case 'b': glcd_font = (u8 *)GLCD_FONT_BIG; break;
  case 's': glcd_font = (u8 *)GLCD_FONT_SMALL; break;
  case 't': glcd_font = (u8 *)GLCD_FONT_TINY; break;
  case 'k': glcd_font = (u8 *)GLCD_FONT_KNOB_ICONS; break;
  case 'h': glcd_font = (u8 *)GLCD_FONT_METER_ICONS_H; break;
  case 'v': glcd_font = (u8 *)GLCD_FONT_METER_ICONS_V; break;
  case 'j': glcd_font = (u8 *)GLCD_FONT_JBIG; break;       // <------  HERE !
    return -1; // unsupported font

----> the other files have been changed and added as well

Could someone please point me in the right direction .

What am i missing ? do i have to precompile everything to make this work ?

thanks a lot for time and effort in advance.

glcd_font.mk glcd_font.h glcd_font_jbig.c glcd_font_jbig.xpm

Link to comment
Share on other sites

make clean




and change in headerfile:

extern const u8 GLCD_FONT_JBIG[];

extern const u8 glcd_font_jbig[];


in the makefile low and high letter dont cares,  but i think in headers you have to write it exact like it is written in the font.c.... (but maybe i am wrong)

Edited by Phatline
Link to comment
Share on other sites

thank you very much for your reply .

the high and low letters didnt change the problem.

i named everything exactly like in the originals.


i now tried to just exchange one of the originals with my font files und renaming them .

the strange thing is , it compiled properly but the font did not change after the upload .

seems im stuck .


THIS NOTE makes me wonder . does it mean they are precompiled ?

Some prepared Fonts/Icons are located under $MIOS32_PATH/modules/glcd_font
They are already compiled into the project if a GLCD driver has been
selected (no need to extend the Makefile)
o GLCD_FONT_NORMAL (6x8 character set)
o GLCD_FONT_SMALL (4x8 character set)
o GLCD_FONT_BIG (16x24 character set)
o GLCD_FONT_KNOB_ICONS (28x24 round knobs, 12 different icons)
o GLCD_FONT_METER_ICONS_H (8x28 horizontal meter bars, 28 icons, 14 with/14 without overload marker)

o GLCD_FONT_METER_ICONS_V (32x8 vertical meter bars, 28 icons, 14 with/14 without overload marker)


i took a fresh trunk , put my own lcd files , renamed everything according to the present .c and .h files and compiled .

still the big font ( the one i exchanged ) is the same as in the original .

how is this possible ?

are the font files cashed somewhere ?

i also went to the bootloader and initialized the glcd .

i dont understand where its getting the font from if the glcd_font files have been changed ( they have the same names to be able to compile ) .


Edited by sprintf
Link to comment
Share on other sites

you work with local files in the project folder? or do you put the files in the mios-path?


if you put your folders in the project folder you have to go a other route:

* my example file "tm_V4" >>> try to "make" it,

* and study what i have written with "" and <>   

include "blabla.h" (is a local file - so you have to put the file in this project folder)

include <blabla.h> (is a file in the mios path) > so you have to put the file in the mios-path


it would be usefull if you zip your project, post it here - to see how you work, and what may the problem is.


Link to comment
Share on other sites

im checking your folder and file structure and reading the .c , .h and make files. ..and comparing things with how i did.

im beginning to see the light . i was not aware of the folder structure  . in fact i have very little knowledge of programming .

i just downloaded the complete trunk from github and went to :

mios32/modules/glcd_font        ( to add my xpm and .c files and change the files : glcd_font.mk & glcd_font.h accordingly )


mios32/apps/controllers/midibox_ng_v1/src    ( to change mbng_lcd.c )

then i cd into  /midibox_ng_v1  and "make"

then i got the error from mbng_lcd.c  ( which is referring to <glcd_font> )


- as i see you have everything in one folder

but you dont use glcd_font.mk (because you adressed the fonts directly in your folder / from your "makefile" ?)



i think i understand now what the problem is .

my building environment is always referring to my old /svn directory . ( since i just started again after many years to work with all that things )

i will move the new github trunk to the /svn folder and get rid of the old trunk.

lets see , i think this should fix it .

( you are helping me a lot to understand the whole "c compiling / folder structure) 








Edited by sprintf
Link to comment
Share on other sites


ich hätte da noch eine andere Frage .

Bisher habe ich mit einem LPC Core gearbeitet.

Es soll aber demnächst auch ein STM32F4 Core her .

Muss ich die Toolchain um die apps zu compilen dann jedesmal umstellen .


export MIOS32_FAMILY=LPC17xx


export MIOS32_FAMILY=STM32F4xx

oder kann ich 2 Toolchain profile haben (mit verschiedenen Pfaden )  ?

lg ,


Link to comment
Share on other sites

linux oder windows oder mac?

hab bisher nur in linux gearbeitet,

da geh ich immer auf: /etc/environment

und kopier dann immer für STM32:



und für LPC



rein (ich hab mir diese textblöcke abgelegt, und wo abgespeichert, das ich nur noch copy paste machen muss), ich vermute unter windows kannst dir einen script schreiben, der die entsprechende Variable EXPORTIERT, z.b. auch mit einen einfachen dos-fenster, wost den skript startest, und lpc oder stm reinschreibst, und dann wirds exportiert... aber wie genau? keine ahnung, und MAC 0 ahnung.

und starte dann neu, ab da an sind meine SYSTEM VARIABLEN (zu linux: environment variables) dauerhaft gespeichert... falls ich dann ein älteres projekt wieder bearbeite, stell ich auf LPC um, und starte neu...

...aber hast schon recht... das ist müßig... war ich bisher zufaul mir mein leben zu erleichtern ;)

Edited by Phatline
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.

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.


  • Create New...