suchen
HeimDatenbankMySQL-Tutorial基于树莓派raspberry: 移植 2.4寸TFT显示屏以及源码分析

有了树莓派,但是没有hdmi显示器,这是个蛋疼的事,但是树莓派就是树莓派,他的GPIO管脚就是我们发挥想象力的地方.可以通过它的GPIO管脚来驱动一个显示屏.GOOGLE了一下,这个项目有个老外做好了,而且提供了patch文件,很容易就能移植到内核里面去.这里我就在这里记

        有了树莓派,但是没有hdmi显示器,这是个蛋疼的事,但是树莓派就是树莓派,他的GPIO管脚就是我们发挥想象力的地方.可以通过它的GPIO管脚来驱动一个显示屏.GOOGLE了一下,这个项目有个老外做好了,而且提供了patch文件,很容易就能移植到内核里面去.这里我就在这里记录一下移植这个TFT驱动的过程,然后试着分析这个老外提供的PATCH文件,希望能从中提高自己的能力,也能够熟悉一下内核的移植.

        环境: ubuntu 13.10 (交叉编译按前面的文章设置)

        TFT :  2.4寸 12864接口  ILI9325主控 (当时叉宝买来给AVR用的)

        http://blog.csdn.net/embbnux/article/details/17394793

  博主最近自建了博客,以后会更多的用那个了,欢迎关注访问,里面也有很多有用资源:

          http://www.embbnux.com/

参考文章:

         http://spritesmods.com/?art=rpi_arcade&page=2

         http://www.blogjava.net/baicker/archive/2012/12/18/392829.html

首先上张图:

                      基于树莓派raspberry: 移植 2.4寸TFT显示屏以及源码分析

                     基于树莓派raspberry: 移植 2.4寸TFT显示屏以及源码分析

一  首先是接线

      用的是P1口:

      基于树莓派raspberry: 移植 2.4寸TFT显示屏以及源码分析

       TFT与P1连线:

      基于树莓派raspberry: 移植 2.4寸TFT显示屏以及源码分析

    这个上面的VCC接的是3.3v,因为我的屏幕接口是5v,所以我给改成5v了.

二  添加TFT驱动到内核

     编译内核的环境,就按之前的文章设置,这里不再复述.

     用的是spritesmods.com/?art=rpi_arcade&page=2提供的diff文件

     原下载链接:  ili9325_gpio_driver_rpi.diff

     也可以到我的资源下载:

           http://download.csdn.net/detail/canyue102/6735059

      这个补丁是基于3.6内核的,不同版本的内核可能不一样,自己改一下就好了.

      首先把 该diff文件放到内核根目录下,终端进去该目录:

     

patch -p1 <br>
      然后TFT内核源码就被添加到内核去了.  <br>

<p></p>
<pre class="brush:php;toolbar:false">make menuconfig
     可以在device driver >> graphics support >> support for frame buffer 下看到ILI9325选项,Y选中它就把它添加进内核.另外的BCM2708 framebuffer support就是原来树莓派自带的HDMI和AV显示.

make 
   .

三  测试

     进入ssh进入树莓派

   

ls /dev/fb*

     可以看到有fb0 和 fb1,  fb1 就是我的TFT.

测试:

cat /dev/urandom > /dev/fb1

如果屏幕出现花屏那就是成功了.

 那要如何树莓派默认显示在tft上:

    在make menuconfig里面把刚才说到的BCM2708 framebuffer support取消掉就可以了,不过就不支持HDMI了

三  源文件分析

    查看该diff文件可以看出作者对内核做了四处改动

 1 ) 在 arch/arm/mach-bcm2708/bcm2708.c文件中添加了ILI9325 平台定义

   

static struct platform_device bcm2708_ili9325 = {
	.name = "ili9325",
	.id = 0,
};
/*************************/
bcm_register_device(&bcm2708_ili9325);

  2 ) 修改了 drivers/video/Kconfig 文件,添加:

config FB_ILI9325
	tristate "ILI9325 connected to Raspberry Pi GPIO support"
	depends on FB
	select FB_SYS_FILLRECT
	select FB_SYS_COPYAREA
	select FB_SYS_IMAGEBLIT
	select FB_SYS_FOPS
	select FB_DEFERRED_IO
	help
	  This driver implements a framebuffer on an LCD controlled by a
	  ILI9325 (or compatible) controller connected to the GPIO of the 
	  Raspberry Pi.

只有在Kconfig 中声明定义该模块,在make menuconfig 中才看得到ILI9325选项

   3 ) 在 drivers/video/Makefile 添加:

 

obj-$(CONFIG_FB_ILI9325)		  += ili9325.o

    只有加了这句话,在make menuconfig选中该模块后,make时,该模块才会被编译


   4)  在drivers/video/目录下新建了 ili9325.c文件

     代码比较长,这里只看核心代码:

   

static void ili9325_copy(struct ili9325 *item, unsigned int index)
{
	unsigned short x;
	unsigned short y;
	unsigned short *buffer;
	unsigned short *oldbuffer;
	unsigned int len;
	unsigned int count;
	int sendNewPos=1;
	x = item->pages[index].x;
	y = item->pages[index].y;
	buffer = item->pages[index].buffer;
	oldbuffer = item->pages[index].oldbuffer;
	len = item->pages[index].len;
	dev_dbg(item->dev,
		"%s: page[%u]: x=%3hu y=%3hu buffer=0x%p len=%3hu\n",
		__func__, index, x, y, buffer, len);

	//Only update changed pixels in the page.
	for (count = 0; count =item->info->var.xres) {
			y++;
			x=0;
		}
	}
}

前面还有一系列定义命令和初始化的函数,主要是得符合ILI9325的时序.和单片机上使用该TFT一样,这里的这个函数,主要用来显示,操作TFT上的每一个像素点.


四  有了显示屏那就做个摄像头显示的小项目

     我正好有一个USB接口的UVC驱动的摄像头,树莓派兼容的,其他驱动芯片的驱动只要在make menuconfig里面找到相应选项就可以了.

     插上usb摄像头,可以看到/dev下多了video0文件,这个就是摄像头了.

     装个mplayer:

   

sudo apt-get install mplayer

    然后用mplayer 播放该摄像头

    在tft上用鼠标点击终端图标,输入命令:

  mplayer tv:// -tv driver=v4l2:width=320:height=240:device=/dev/video0  

   然后就在tft上显示摄像头的图像:

       基于树莓派raspberry: 移植 2.4寸TFT显示屏以及源码分析

     

就到这里吧,有空再玩.



Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Wie ist die Lizenzierung von MySQL mit anderen Datenbanksystemen verglichen?Wie ist die Lizenzierung von MySQL mit anderen Datenbanksystemen verglichen?Apr 25, 2025 am 12:26 AM

MySQL verwendet eine GPL -Lizenz. 1) Die GPL -Lizenz ermöglicht die freie Verwendung, Änderung und Verteilung von MySQL, aber die geänderte Verteilung muss GPL entsprechen. 2) Gewerbelizenzen können öffentliche Änderungen vermeiden und für gewerbliche Anwendungen geeignet sind, die Vertraulichkeit erfordern.

Wann würden Sie InnoDB über MyISAM wählen und umgekehrt?Wann würden Sie InnoDB über MyISAM wählen und umgekehrt?Apr 25, 2025 am 12:22 AM

Die Situationen bei der Auswahl von InnoDB anstelle von MyISAM umfassen: 1) Unterstützung der Transaktion, 2) hohe Genauigkeitsumgebung, 3) hohe Datenkonsistenz; Umgekehrt umfasst die Situation bei der Auswahl von MyISAM: 1) hauptsächlich Lesen von Operationen, 2) Es ist keine Transaktionsunterstützung erforderlich. InnoDB ist für Anwendungen geeignet, die eine hohe Datenkonsistenz und Transaktionsverarbeitung erfordern, z. B. E-Commerce-Plattformen, während MyISAM für lessintensive und transaktionsfreie Anwendungen wie Blog-Systeme geeignet ist.

Erklären Sie den Zweck von Fremdschlüssel in MySQL.Erklären Sie den Zweck von Fremdschlüssel in MySQL.Apr 25, 2025 am 12:17 AM

In MySQL besteht die Funktion von Fremdschlüssel darin, die Beziehung zwischen Tabellen herzustellen und die Konsistenz und Integrität der Daten zu gewährleisten. Fremdeschlüssel behalten die Wirksamkeit von Daten durch Referenzintegritätsprüfungen und Kaskadierungsvorgänge bei. Achten Sie auf die Leistungsoptimierung und vermeiden Sie bei der Verwendung häufige Fehler.

Was sind die verschiedenen Arten von Indizes in MySQL?Was sind die verschiedenen Arten von Indizes in MySQL?Apr 25, 2025 am 12:12 AM

Es gibt vier Hauptindextypen in MySQL: B-Tree-Index, Hash-Index, Volltextindex und räumlicher Index. 1.B-Tree-Index ist für Reichweite, Sortierung und Gruppierung geeignet und für die Erstellung der Namensspalte der Mitarbeiter-Tabelle geeignet. 2. Hash -Index ist für äquivalente Abfragen geeignet und für die Erstellung der ID -Spalte der Tabelle Hash_Table der Speicherspeicher -Engine geeignet. 3. Der Volltextindex wird für die Textsuche verwendet, die für die Erstellung in der Inhaltspalte der Artikeltabelle geeignet ist. 4. Der räumliche Index wird für die Geospatial -Abfrage verwendet, die für die Erstellung auf Geom -Spalten der Standorte Tabelle geeignet ist.

Wie erstellen Sie einen Index in MySQL?Wie erstellen Sie einen Index in MySQL?Apr 25, 2025 am 12:06 AM

TocreateanIndexinMysql, UsethecreatInedExStatement.1) ForasingLecolumn, verwenden Sie "createIdexidx_lastNameOntrayees (Nachname); 2) foracompositeIndex, verwenden" createIndexidx_nameonomiebhaber (Lastname, Firstname);

Wie unterscheidet sich MySQL von SQLite?Wie unterscheidet sich MySQL von SQLite?Apr 24, 2025 am 12:12 AM

Der Hauptunterschied zwischen MySQL und SQLite ist das Design-Konzept und die Nutzungsszenarien: 1. MySQL eignet sich für große Anwendungen und Lösungen auf Unternehmensebene, die hohe Leistung und hohe Parallelität unterstützen. 2. SQLite ist für mobile Anwendungen und Desktop -Software geeignet, leicht und leicht einzubetten.

Was sind Indizes in MySQL und wie verbessern sie die Leistung?Was sind Indizes in MySQL und wie verbessern sie die Leistung?Apr 24, 2025 am 12:09 AM

Indizes in MySQL sind eine geordnete Struktur einer oder mehrerer Spalten in einer Datenbanktabelle, die zur Beschleunigung der Datenabnahme verwendet wird. 1) Indexe verbessern die Abfragegeschwindigkeit durch Reduzierung der Menge an gescannten Daten. 2) B-Tree-Index verwendet eine ausgewogene Baumstruktur, die für die Reichweite und Sortierung geeignet ist. 3) Verwenden Sie CreateIndex -Anweisungen, um Indizes zu erstellen, z. 4) Zusammengesetzte Indizes können Multi-Säulen-Abfragen optimieren, z. 5) Erklärung verwenden, um Abfragepläne zu analysieren und zu vermeiden

Erklären Sie, wie Transaktionen in MySQL verwendet werden, um die Datenkonsistenz zu gewährleisten.Erklären Sie, wie Transaktionen in MySQL verwendet werden, um die Datenkonsistenz zu gewährleisten.Apr 24, 2025 am 12:09 AM

Durch die Verwendung von Transaktionen in MySQL wird die Datenkonsistenz gewährleistet. 1) Starten Sie die Transaktion über starttransaction und führen Sie dann SQL -Operationen aus und senden Sie sie mit Commit oder Rollback. 2) Setzen Sie SavePoint, um einen Speicherpunkt zu setzen, um teilweise Rollback zu ermöglichen. 3) Vorschläge zur Leistungsoptimierung umfassen die Verkürzung der Transaktionszeit, die Vermeidung großer Abfragen und die Verwendung von Isolationsniveaus.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft