Forums Logo

Здравствуйте Гость ( Вход | Регистрация )

[ Каскадный ] · Стандартный · Линейный

> Разработка простейшего приложения с нуля

payta
post Четверг, 09 июля 2009, 13:45
Отправлено #1


Фанат
***

Группа: Пользователи
Сообщений: 121
Регистрация: 19 окт. 2007
Из: Defaultcity
Пользователь №: 24 067





Хотелось бы знать, думаю специалисты тут точно есть.
Как принципиально происходит установка среды разработки для консолей GP2X (принципиальные различия SDK под Windows и Linux), как пишется софт, компилируется и запускается.
Что почитать для разработки каких то простейших приложений и перейти к чему то более продвинутому и вообще что было бы полезным знать?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topicStart Poll
Ответов
payta
post Вторник, 14 июля 2009, 17:06
Отправлено #2


Фанат
***

Группа: Пользователи
Сообщений: 121
Регистрация: 19 окт. 2007
Из: Defaultcity
Пользователь №: 24 067





Ну допустим, я скопировал среду разработки в нужное место.
Есть код:
CODE
#include <iostream>
using namespace std;

int main()
{
cout << "Hello, World!" <<endl;
return 0;
}

Как мне скомпилировать это под ВИЗ?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
EugeneP
post Среда, 15 июля 2009, 20:40
Отправлено #3


Маньяк
****

Группа: Пользователи
Сообщений: 314
Регистрация: 15 мая. 2009
Из: Сибирь
Пользователь №: 31 975





QUOTE (payta @ Вторник, 14 июля 2009, 20:06)
Ну допустим, я скопировал среду разработки в нужное место.
Есть код:
CODE
#include <iostream>
using namespace std;

int main()
{
cout << "Hello, World!" <<endl;
return 0;
}

Как мне скомпилировать это под ВИЗ?
*


как-то так:

<path-to-gcc>/arm-<something>-g++ -I<path-to-includes > -o your-file.bin your-file.cpp

Только ты не увидешь ничего на консольке - она ж всегда в графическом режиме, stdout не видно. Нужно сразу писать графическое приложение. Ну или запускай your-file.bin из termula.

Используй SDL (правильно) или прямой доступ к fb (неправильно, зато без внешних зависимостей) вот так:
CODE
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <sys/mman.h>

int main()
{
   int fbfd = 0;
   struct fb_var_screeninfo vinfo;
   struct fb_fix_screeninfo finfo;
   long int screensize = 0;
   char *fbp = 0;
   int x = 0, y = 0;
   long int location = 0;

   // Open the file for reading and writing
   fbfd = open("/dev/fb0", O_RDWR);
   if (!fbfd) {
       printf("Error: cannot open framebuffer device.\n");
       exit(1);
   }
   printf("The framebuffer device was opened successfully.\n");

   // Get fixed screen information
   if (ioctl(fbfd, FBIOGET_FSCREENINFO, &finfo)) {
       printf("Error reading fixed information.\n");
       exit(2);
   }

   // Get variable screen information
   if (ioctl(fbfd, FBIOGET_VSCREENINFO, &vinfo)) {
       printf("Error reading variable information.\n");
       exit(3);
   }

   printf("%dx%d, %dbpp\n", vinfo.xres, vinfo.yres, vinfo.bits_per_pixel );

   // Figure out the size of the screen in bytes
   screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8;

   // Map the device to memory
   fbp = (char *)mmap(0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED,
                      fbfd, 0);
   if ((int)fbp == -1) {
       printf("Error: failed to map framebuffer device to memory.\n");
       exit(4);
   }
   printf("The framebuffer device was mapped to memory successfully.\n");

   x = 100; y = 100;       // Where we are going to put the pixel

   // Figure out where in memory to put the pixel
   for ( y = 100; y < 300; y++ )
       for ( x = 100; x < 300; x++ ) {

           location = (x+vinfo.xoffset) * (vinfo.bits_per_pixel/8) +
                      (y+vinfo.yoffset) * finfo.line_length;

           if ( vinfo.bits_per_pixel == 32 ) {
               *(fbp + location) = 100;        // Some blue
               *(fbp + location + 1) = 15+(x-100)/2;     // A little green
               *(fbp + location + 2) = 200-(y-100)/5;    // A lot of red
               *(fbp + location + 3) = 0;      // No transparency
           } else  { //assume 16bpp
               int b = 10;
               int g = (x-100)/6;     // A little green
               int r = 31-(y-100)/16;    // A lot of red
               unsigned short int t = r<<11 | g << 5 | b;
               *((unsigned short int*)(fbp + location)) = t;
           }

       }    
   munmap(fbp, screensize);
   close(fbfd);
   usleep(10000);
   return 0;
}

(наглый копипаст из манов)
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Posts in this topic
payta   Разработка простейшего приложения с нуля   Четверг, 09 июля 2009, 13:45
EugeneP   Распаковкой из архива в большинстве случаев :) см...   Пятница, 10 июля 2009, 05:25
Hahahoj   Вот поэтому я больше ничего и не пишу.   Пятница, 10 июля 2009, 13:53
EugeneP   как-то так: <path-to-gcc>/arm-<somethi...   Среда, 15 июля 2009, 20:40
Hahahoj   Не будет он работать, почитай в конце концов rusba...   Вторник, 14 июля 2009, 17:20
500mhz   ну так если через кредл затерминалиться то будет р...   Вторник, 14 июля 2009, 17:45
Hahahoj   На визе нет кредла.   Среда, 15 июля 2009, 01:32
quasist   ... поэтому я жду оффициального СДК под винду...   Пятница, 17 июля 2009, 10:28
Hahahoj   Кваз, в последнее время ты вообще не пишешь вне за...   Пятница, 17 июля 2009, 15:09
quasist   Процесс написания и факт релиза продуктов - две р...   Пятница, 17 июля 2009, 19:11
EugeneP   Подробности в студию!   Пятница, 17 июля 2009, 19:24
quasist   Он к тому, чтобы я писал для этого компитишена......   Пятница, 17 июля 2009, 22:44
rbm13s   Посоветуйте среду разработки для идиотов, чтобы ра...   Среда, 04 ноября 2009, 00:44
quasist   Сам с этого начинал - до сих пор им только и пишу....   Среда, 04 ноября 2009, 15:30


Reply to this topicStart new topic
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
 

Упрощённая версия Сейчас: Чт., 26 июня 2025, 10:01
Skin Designed (c) by Rooq.net, All Rights Reserved.