The Raspberry Pi Foundation是英國一個小型的慈善組織,成立的宗旨在于推廣科技,而非以銷售技術來營利。
Raspberry Pi是一款基于Linux系統的個人電腦,配備一枚700MHz的處理器,256內存,支持SD卡和Ethernet,擁有兩個USB接口,以及 HDMI和RCA輸出支持。
有消息稱,雖然Raspberry Pi看起來非常的迷你——只有一張信用卡大小,但是它能夠運行像《雷神之錘三:競技場》這樣的游戲和進行1080p視頻的播放。但是以這次接TFT屏試用結果看,我覺得至少SPI是純屬扯J8蛋,可能HDMI速度快點,但是就以那編譯內核的速度來看,并不樂觀。
在一老外網站上看到使用Raspberry Pi改成一小街機,正好想要加個TFT屏,以后調試什么的方便點。

硬件:Raspberry Pi、ili9325 TFT顯示屏
軟件:重新編譯3.6的內核
原理:使用SPI通訊的方式,把屏幕內容寫到新增的framebuffer設備。
硬件部分:使用ili9325的tft屏,首先跳線設置為8bit傳輸數據,背面有個小貼片電阻,R1R2R3R4,默認在R2上是16bit,我們把它改到R1上。然后如下圖連接硬件


軟件部分:
建議使用8G或以上的SD卡,img寫完后,先接上串口,方法看這里http://www.aygfsteel.com/baicker/archive/2012/08/10/385239.html(如果有HDMI或者AV接口的顯示設備,請無視),第一次啟動會要求一些基本配置,運行一下expand-rootfs,否則空間不夠,建議開啟ssh,結束后重啟,會等很長一段時間才能完全啟動完畢。
如果想再次配置,執行:raspi-config
下一步,手動配置IP地址
Raspberry Pi是一款基于Linux系統的個人電腦,配備一枚700MHz的處理器,256內存,支持SD卡和Ethernet,擁有兩個USB接口,以及 HDMI和RCA輸出支持。
有消息稱,雖然Raspberry Pi看起來非常的迷你——只有一張信用卡大小,但是它能夠運行像《雷神之錘三:競技場》這樣的游戲和進行1080p視頻的播放。但是以這次接TFT屏試用結果看,我覺得至少SPI是純屬扯J8蛋,可能HDMI速度快點,但是就以那編譯內核的速度來看,并不樂觀。
在一老外網站上看到使用Raspberry Pi改成一小街機,正好想要加個TFT屏,以后調試什么的方便點。

硬件:Raspberry Pi、ili9325 TFT顯示屏
軟件:重新編譯3.6的內核
原理:使用SPI通訊的方式,把屏幕內容寫到新增的framebuffer設備。
硬件部分:使用ili9325的tft屏,首先跳線設置為8bit傳輸數據,背面有個小貼片電阻,R1R2R3R4,默認在R2上是16bit,我們把它改到R1上。然后如下圖連接硬件


軟件部分:
建議使用8G或以上的SD卡,img寫完后,先接上串口,方法看這里http://www.aygfsteel.com/baicker/archive/2012/08/10/385239.html(如果有HDMI或者AV接口的顯示設備,請無視),第一次啟動會要求一些基本配置,運行一下expand-rootfs,否則空間不夠,建議開啟ssh,結束后重啟,會等很長一段時間才能完全啟動完畢。
info Information about this tool
expand-rootfs Expand root partition to fill SD card
overscan Change overscan
configure-keyboard Set keyboard layout
change_pass Change password for ‘pi’ user
change_locale Set locale
change_timezone Set timezone
memory_split Change memory split
ssh Enable or disable ssh server
finish Finish config and don’t start raspi-config at boot
<Ok> <Exit>
expand-rootfs Expand root partition to fill SD card
overscan Change overscan
configure-keyboard Set keyboard layout
change_pass Change password for ‘pi’ user
change_locale Set locale
change_timezone Set timezone
memory_split Change memory split
ssh Enable or disable ssh server
finish Finish config and don’t start raspi-config at boot
<Ok> <Exit>
如果想再次配置,執行:raspi-config
下一步,手動配置IP地址
編輯文件/etc/network/interfaces:
sudo vi /etc/network/interfaces
并用下面的行來替換有關eth0的行:
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.9
gateway 192.168.1.254
netmask 255.255.255.0
#network 192.168.1.0
#broadcast 192.168.1.255
將上面的ip地址等信息換成你自己就可以了.用下面的命令使網絡設置生效:
sudo /etc/init.d/networking restart
網速實在慢,可以使用代理,在 /etc/apt/apt.conf 加入:

時間長的話,建議到后臺執行:nohup sudo apt-get update &
這樣就不怕ssh掉了,查看輸出只要看一下nohup.out文件即可:tail -f nohup.out
sudo vi /etc/network/interfaces
并用下面的行來替換有關eth0的行:
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.9
gateway 192.168.1.254
netmask 255.255.255.0
#network 192.168.1.0
#broadcast 192.168.1.255
將上面的ip地址等信息換成你自己就可以了.用下面的命令使網絡設置生效:
sudo /etc/init.d/networking restart
啟動網絡后,就可以用ssh進行連接配置,GPIO口最終會給TFT屏接線用。
sudo apt-get update sudo apt-get -y dist-upgrade sudo apt-get -y install gcc make
Acquire::http::Proxy "http://user:passwd@proxyserver:port";
然后apt-get update
然后apt-get update

時間長的話,建議到后臺執行:nohup sudo apt-get update &
這樣就不怕ssh掉了,查看輸出只要看一下nohup.out文件即可:tail -f nohup.out
編譯內核部分參考了這里http://elinux.org/RPi_Kernel_Compilation
(其實最終還是使用另外的機器ubuntu交叉編譯的,Raspberry Pi實在太太太慢了)
下載源碼包:https://github.com/raspberrypi/linux/archive/rpi-3.6.y.tar.gz
tar zxvf rpi-3.6.y.tar.gz


完了最后make一下,這個在Raspberry Pi上做的話,你會吐血的,我最終還是不得不選擇了在我的臺式機上編譯
以下操作在我的臺式機ubuntu執行
make ARCH=arm CROSS_COMPILE=<your_compiler>
(其實最終還是使用另外的機器ubuntu交叉編譯的,Raspberry Pi實在太太太慢了)
下載源碼包:https://github.com/raspberrypi/linux/archive/rpi-3.6.y.tar.gz
tar zxvf rpi-3.6.y.tar.gz
cd到源碼目錄
patch -p0 < ili9325_gpio_driver_rpi.diffmake mrproper 去先刪除之前編譯所生成的文件和配置文件,備份文件等 sudo zcat /proc/config.gz > .config 保存當前內核配置 sudo make oldconfig 配置內核相關選項
#make config(基于文本的最為傳統的配置界面,不推薦使用)
#make menuconfig(基于文本選單的配置界面,字符終端下推薦使用)
#make xconfig(基于圖形窗口模式的配置界面,Xwindow下推薦使用)
#make oldconfig(如果只想在原來內核配置的基礎上修改一些小地方,會省去不少麻煩)
#make menuconfig(基于文本選單的配置界面,字符終端下推薦使用)
#make xconfig(基于圖形窗口模式的配置界面,Xwindow下推薦使用)
#make oldconfig(如果只想在原來內核配置的基礎上修改一些小地方,會省去不少麻煩)
過程中任何錯誤,缺什么apt-get什么,我記得好像有個sudo apt-get install libncurses-dev
選擇相應的配置時,有三種選擇,它們分別代表的含義如下:
Y--將該功能編譯進內核
N--不將該功能編譯進內核
M--將該功能編譯成可以在需要時動態插入到內核中的模塊
Y--將該功能編譯進內核
N--不將該功能編譯進內核
M--將該功能編譯成可以在需要時動態插入到內核中的模塊


完了最后make一下,這個在Raspberry Pi上做的話,你會吐血的,我最終還是不得不選擇了在我的臺式機上編譯
以下操作在我的臺式機ubuntu執行
make ARCH=arm CROSS_COMPILE=<your_compiler>
//多次編譯的話,make clean一下 sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make menuconfig sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j 4 我的臺式機4核,加了個-j參數,會快一點。
cd ~
cd tools-master/mkimage
./imagetool-uncompressed.py <your_kernel_build_directory>/arch/arm/boot/zImage
然后把當前目錄生成的kernel.img用sftp替換掉Raspberry Pi的/boot目錄下的kernel.img文件,
生成新的modules
ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make modules_install INSTALL_MOD_PATH=<modules_path>
在你指定的目錄下,把modules和firmware目錄覆蓋到Raspberry Pi對應的/lib目錄
wget https://github.com/raspberrypi/firmware/archive/next.tar.gz
tar zxvf next.tar.gz
把boot目錄下的以下文件替換掉Raspberry Pi的/boot目錄下對應文件
wget https://github.com/raspberrypi/tools/archive/master.tar.gz
tar zxvf master.tar.gzcd tools-master/mkimage
./imagetool-uncompressed.py <your_kernel_build_directory>/arch/arm/boot/zImage
然后把當前目錄生成的kernel.img用sftp替換掉Raspberry Pi的/boot目錄下的kernel.img文件,
生成新的modules
ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make modules_install INSTALL_MOD_PATH=<modules_path>
在你指定的目錄下,把modules和firmware目錄覆蓋到Raspberry Pi對應的/lib目錄
wget https://github.com/raspberrypi/firmware/archive/next.tar.gz
tar zxvf next.tar.gz
把boot目錄下的以下文件替換掉Raspberry Pi的/boot目錄下對應文件
- bootcode.bin
- fixup.dat
- start.elf
在Raspberry Pi上執行 arm-none-linux-gnueabi-gcc -v 2>&1 | grep hard 如果打印內容出現--with-float=hard,復制hardfp/opt/vc到Raspberry Pi的/opt目錄下 否則,復制opt/vc目錄到Raspberry Pi的/opt目錄下,我的使用后者。 重啟,你會看到顯示屏亮了一下,然后就黑屏了,說明初始化沒問題,
此時你會看到兩個framebuffer, ls /dev/fb* 里面會有fb0和fb1,fb0是默認的顯示設備,fb1是我們接的TFT顯示屏,可以嘗試 cat /dev/urandom > /dev/fb1 如果出現花瓶噪點,說明軟硬件都沒問題了。
可以使用以下命令,讓/dev/fb1播放mp4 mplayer -v -vo fbdev:/dev/fb1 ~/test.mp4 速度很令人蛋疼(如果你有的話)
如果要默認使用tft顯示,在內核編譯的時候,把BCM2708去掉即可,重啟后tft就變成/dev/fb0了。
配置console字體可使用:sudo dpkg-reconfigure console-setup
其實來來回回編譯啊接線啊什么的弄了好多次,文章是靠回憶寫的,如有疏漏請輕拍磚。
cd到源碼目錄
patch -p0 < ili9325_gpio_driver_rpi.diff
出現:
purboo:~/linux-rpi-3.6.y$ patch -p0 < ili9325_gpio_driver_rpi.diff
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
|index 93fb75d..06e493f 100644
|--- a/arch/arm/mach-bcm2708/bcm2708.c
|+++ b/arch/arm/mach-bcm2708/bcm2708.c
--------------------------
請問ili9325_gpio_driver_rpi.diff改過嗎?
木有改過,不過我不太會用那個命令,你看patch之后文件內容是否正確改動,否則的話,手動吧。
4根,你說的LCD吧,不太清楚,TFT屏至少還是得有讀寫信號、片選、復位、數據/命令、背光之類的信號線啊。反正硬件越簡單,程序就越復雜,速度也越慢。
應該是 -p1 不是 -p0
搜搜“ili9325 TFT”吧,好多的。