Ребята, ценю ваше участие, но вы вводите человека в заблуждение, т.к. у вас совсем другие платы и tft плаги.
Как это работает.
У процессоров, имеющих аппаратный модуль развертки TFT (таких как NUC950 ...), выделяется область памяти под фреймбуфер, модулю говорят где его начало, далее он нвтоматически в цикле читает этот кусок памяти и выдает ее на TFT, т.е. записали во фреймбуфер пиксель и он автоматом отобразился.
У AT91SAM9260(9XE512) нет модуля развертки TFT, поэтому, подключается TFT плаг с панелькой у которой имеется собственный контроллер развертки и память на борту и здесь возникает принципиальный момент - область фреймбуфера системы никак не пересекается с видеопамятью самой панельки!
Еслиб эту панельку подключать к системной шине, тогда можно было бы еще так сделать (разместить фреймбуфер прямо в самой панели), но к сожалению, это не возможно и общение с панелью идет через эмуляцию шинного (8080) интерфейса через GPIO.
Если сделать чтобы драйвер постоянно, по таймеру, копировал содержимое фреймбуфера в панель, то процессор только этим и будет занят на 100% ...
Как можно писать во фреймбуфер (на полноту описания не претендую).
Наверняка, подавляющее большинство приложений оперируют непосредственно с областью памяти фреймбуфера (естественно, это самый быстрый способ), но перед этим, приложение должно выяснить, через драйвер FB, в каких режимах может работать FB и включить требуемый режим - это важно для того чтоб приложение правильно упаковывало цвета в слова.
С помошью mmap выясняют адрес фреймбуфера ...
Запись через драйвер, который может иметь набор функций, например, для реализации fwrite ...
Как я говорил ранее, в функции hecubafb_write текущего драйвера, видимо не правильно вычисляются границы обновляемой области и поэтому fwrite работает "криво".
Но в драйвере есть функции hecubafb_fillrect, hecubafb_copyarea, hecubafb_imageblit, которыми пользуется консоль для своего вывода, как она это делает, нужно смотреть в исходниках самой консоли.
Можно как еще поступить - работать с фреймбуфером "как обчно", но добавить в драйвер функцию обновления всего экрана (напрмер, в драйвере fb для imx233 ее через IOCTL сделали), т.е. нарисовали что нужно, принудительно обновили экран.