I'm trying to print an 'A' by my kernel, but there is a big problem.
First, I have a array which is named "font_A"
static unsigned char font_A[16] = {
0x00,0x18,0x18,0x18,0x18,0x24,0x24,0x24,0x24,0x7e,0x42,0x42,0x42,0xe7,0x00,0x00
};
This code can not print anything
unsigned char data;
for (int i = 0; i < 16; i++) {
data = *(font_A + i);
for (int j = 0; j < 8; j++) {
if (data & (0x80 >> j)) {
draw_pixel(frameBuffer, 0x00ffffff, 100 + j, 100 + i);
}
}
}
But, when I delete the for loop, like this:
unsigned char data;
int i = 0;
data = *(font_A + i);
for (int j = 0; j < 8; j++) {
if (data & (0x80 >> j)) {
draw_pixel(frameBuffer, 0x00ffffff, 100 + j, 100 + i);
}
}
i++;
data = *(font_A + i);
for (int j = 0; j < 8; j++) {
if (data & (0x80 >> j)) {
draw_pixel(frameBuffer, 0x00ffffff, 100 + j, 100 + i);
}
}
i++;
//...16 times in total
It printed 'A' successfully.
But why? And how I can use loop correctly?