Я взламывал устройство на базе ARM (Freescale i.MX27 ADS) со встроенным экраном в прошлом несколько дней. Устройство работает под управлением модифицированной минимальной системы GNU / Linux, без управления окнами или графического сервера. По умолчанию предполагается, что устройство запускает только одно прилагаемое к нему приложение.
Я никогда раньше не занимался графическим программированием, поэтому для меня это полезный опыт. Я попытался написать простую программу SDL для запуска на устройстве, которая считывала бы растровое изображение и отображала изображение на экране встроенного устройства.
Моя проблема заключается в том, что независимо от того, какое разрешение, глубину или флаги я попробуйте, видео режим всегда не работает, и я ничего не получаю.
Я знаю, что мой код не проблема, но я все равно собираюсь опубликовать его.
#include "SDL/SDL.h"
#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480
#define SCREEN_DEPTH 24
int main(int argc, char *argv[])
{
SDL_Surface *screen;
if(!SDL_Init(SDL_INIT_VIDEO))
{
printf("Unable to initialize SDL.\n");
return 1;
}
// It always fails right here
screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_DEPTH, SDL_SWSURFACE);
if(screen == NULL)
{
printf("Unable to set video mode.\n");
return 1;
}
SDL_Surface* image;
SDL_Surface* temp;
temp = SDL_LoadBMP("hello.bmp");
if(temp == NULL)
{
printf("Unable to load bitmap.\n");
return 1;
}
image = SDL_DisplayFormat(temp);
SDL_FreeSurface(temp);
SDL_Rect src, dest;
src.x = 0;
src.y = 0;
src.w = image->w;
src.h = image->h;
dest.x = 100;
dest.y = 100;
dest.w = image->w;
dest.h = image->h;
SDL_BlitSurface(image, &src, screen, &dest);
printf("Program finished.\n\n");
return 0;
}
Насколько я могу судить, приложение, которое Предполагаемый для запуска на этом устройстве использует Qtopia. Опять же, я новичок в программировании графики, поэтому я понятия не имею, как управлять графическим выводом во встроенной среде, подобной этой.
Есть идеи?