樹莓派入門筆記


一、關於開源硬件

開源硬件的概念簡單理解就是電子硬件的設計詳細參數是公開的,比如電路圖、材料清單和PCB布局等等。

主要類型:Arduino、CubieBoard、RaspberryPi、PcDuino、BeagleBone、KiWIBoard和Mixteil

開源中國社區-開源硬件專區http://www.oschina.net/hardware

二、選擇樹莓派RaspberryPi

比較熱門的開源硬件主要有Arduino、樹莓派和BeagleBone。如何選擇適合自己開發的開源硬件?

①Arduino主頻16MHz,價錢在40$以內,與外部設備的連接較好,不支持Linux操作系統。

②BeagleBone 處理器是ARMv7 Cotex-A8架構的AM335x,主頻1GHz,支持Linux操作系統,據說是為Linux系統玩家量身打造的產品。硬件擴展性強,支持網絡,不帶HDMI視頻輸出,價錢稍貴於其他兩款。和樹莓派的區別到此處一看http://www.geekfan.net/5246/

③樹莓派主頻標准情況下700MHz,超頻時可達1.5GHz,有嵌入式電腦、卡片電腦的稱號,價格便宜35$,支持Linux操作系統,支持極好的圖像界面和視頻輸出,支持網絡。官方主頁https://www.raspberrypi.org/ 。目前標准進口樹莓派主要分1代和2代。1代又分A、A+、B、B+,2代目前只有B型。主要區別是,1代的處理器是單核的博通BCM2835,該處理器是ARMv6 ARM11架構的,2代的處理器目前使用的是4核的博通BCM2836,屬於ARMv7 Cotex-A8架構,正常最大最大主頻900MHz,官方說是性能是1代的6倍。各型號之間的其他區別主要體現在內存大小、接口支持、接口數量上。

樹莓派Linux開發:到官方網站下載RASPBIAN系統固件,制作啟動SD卡(SD卡最好4G以上,class4以上),如果要自己編譯內核需要從制作的SD卡中把config.gz文件拷貝出來作為內核源碼的配置文件,詳細說明見后邊。樹莓派應用編程方面非常方便,開發環境直接在樹莓派上進行搭建然后直接在上面開發,這一點是和其他ARM9,ARM11,210開發不一樣的地方。考慮到開發成本和視頻輸出的需求,選擇樹莓派進行開發。接下來的內容是關於我上手樹莓派時的學習筆記。

三、開發前准備工作

硬件准備好就要開始為開發做一些准備工作了,主要是平台的搭建,開發源碼工具的准備。

①下載樹莓派2B固件:

官方網站https://www.raspberrypi.org/downloads/

固件選擇:RASPBIAN——官方Linux操作系統

制作啟動SD卡:

可以windows下使用軟件進行燒寫:下載工具http://fedoraproject.org/wiki/Fedora_ARM_Installer

也可以在Linux主機上使用”dd”命令進行燒寫:指令

umount  /dev/sdb* (SD的所有分區都要卸載)

sudo dd bs=4M if=2015-05-05-raspbian-wheezy.img of=/dev/sdb

查看燒寫進度:sudo pkill -USR1 -n -x dd

②在Linux主機下開發:安裝搭建交叉編譯環境

開發工具包比較大有500多Mb,有下面兩種方式進行下載

Windows端:https://github.com/raspberrypi/tools

Ubuntu端:確保樹莓派可以上網,確保安裝git工具:sudo apt-get install git

創建存放交叉工具鏈源碼的文件夾:mkdir rpi2b ; cd rpi2b

獲取工具鏈源碼:git clone git://github.com/raspberrypi/tools.git 速度特慢!我最后選擇第1種方式。

把壓縮包放到Linux下解壓,進入工具解壓目錄cd arm-bcm2708

ls arm-bcm2708 有下面這4個目錄:

arm-bcm2708hardfp-linux-gnueabi 

arm-bcm2708-linux-gnueabi

gcc-linaro-arm-linux-gnueabihf-raspbian  用於32位Linux開發主機

gcc-linaro-arm-linux-gnueabihf-raspbian-x64 用於安裝64位Linux開發主機搭建交叉編譯工具量。

我把 *x64這個目錄里的文件目錄拷貝到/opt/rpi/4.8.3目錄下面

配置環境變量:

修改/etc/environment,即添加后面那一句

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm-gdb/bin:/opt/EmbedSky/4.4.6/bin:/opt/rpi/4.8.3"

或者修改/etc/bash.bashrc,后面添加

export PATH=$PATH:/opt/rpi/4.8.3/bin

使生效:source /etc/environment 或 source /etc/bash.bashrc

測試:(a)arm-linux-gnueabihf-gcc -v 看版本號 (b)寫個測試程序編譯:arm-linux-gnueabihf-gcc hello.c -o hello,放到樹莓派上運行.......

我在Ubuntu上安裝交叉編譯環境主要考慮到之后如果要編譯樹莓派的內核驅動的話需要用到。如果只是編譯應用程序就直接在樹莓派上搭建編譯環境就可以了。

在樹莓派上搭建編譯環境:

把上面的arm-bcm2708-linux-gnueabi 文件夾中的內容拷貝到樹莓派上,然后修改環境變量,方法和主機上基本一樣,不再累述。

③讓樹莓派支持SSH登錄:

如果當前樹莓派已經登錄了圖形桌面系統,打開終端,輸入sudo raspi-config進入配置菜單,選擇SSH,然后選擇Enable,重啟就可以使用了。支持SSH之后就可以使用secureCRT來登錄樹莓派,同時也可以使用cuteFTP工具來進行傳輸文件。

④實現NFS

首先確保Ubuntu支持NFS

sudo -s

確定樹莓派已安裝nfs-common:ls /etc/init.d/nfs-common

方法一:

nano /etc/fstab

在最后一行輸入:

192.168.1.106:/home/clbiao/nfs     /mnt/nfs     nfs     _netdev,defaults,user,auto,noatime,intr   0 0

重啟樹莓派NFS:service nfs-common start

方法二:

直接指令掛接NFS指令:sudo mount -t nfs -o wr 192.168.1.106:/home/clbiao/nfs /mnt/nfs

⑤安裝wiringPi庫(在樹莓派環境下)

下載庫鏈接:https://git.drogon.net/?p=wiringPi;a=summary

或者通過Git clone下載:git clone git://git.drogon.net/wiringPi

進入目錄:

./build  開始安裝

默認安裝在/usr/local/lib和include目錄下

gpio -v  安裝成功否?

寫測試程序

⑥常用指令:

立即關機:root權限

shutdown -h now

halt

poweroff

init 0

更多對樹莓派的配置可以到這個網站下面找:http://www.geekfan.net/category/hardware/raspberry-pi-hardware/

四、嘗試編譯樹莓派Linux內核

解壓Linux內核源碼,嘗試編譯

登錄樹莓派獲取當前內核的配置文件

ls ./proc/config.gz

cp ./proc/config.gz ./boot/

通過SD把config.gz文件拷貝到Ubuntu開發主機中

zcat config.gz > .config

查看內核版本:

root@raspberrypi:/# uname -a

Linux raspberrypi 3.18.11-v7+ #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015 armv7l GNU/Linux

修改頂層Makefile

ARCH        ?= $(SUBARCH)                       

CROSS_COMPILE   ?= $(CONFIG_CROSS_COMPILE:"%"=%)

==》

ARCH        ?= arm                     

CROSS_COMPILE   ?= /opt/rpi/4.8.3/bin/arm-linux-gnueabihf-

root@ubuntu:~/rpi/linux-rpi-3.18.y# make menuconfig

make: *** arch/arm: Is a directory.  Stop.

出現這種錯誤是因為Makefile文件“ARCH        ?= arm ”的arm后面不能有空格

make menuconfig

make zImage

測試編譯的內核鏡像

然后使用RpiTools/mkimage/*.gz工具將zImage轉換成kernel.img

編譯內核模塊:

make modules

make modules_install INSTALL_MOD_PATH=/home/clbiao/rpi/linux-rpi-3.18.y/modules

安裝新內核:【要在Linux下完成】

cd /mnt

mkdir sdb sdb1 sdb2

mount /dev/sdb2 /mnt/sdb2

把kernel.img復制到SD卡的sdb2中的boot目錄:

cp ~/rpi/linux-rpi-3.18.y/kernel-new.img /mnt/sdb2/boot/

修改樹莓派引導程序的啟動腳本:未完待續………….

五、遇到的問題

問題. HDMI轉VGA顯示不了問題

解決.事情是這樣的,HDMI接口轉VGA接口線網上賣的有好幾種,如下,然而我並沒有詳細了解就倉促下了單。

①無源HDMI轉VGA線—不帶芯片的:一般10塊錢以內可以買到

②無源HDMI轉VGA線—帶芯片的:價格在40-50之間

③有源HDMI轉VGA線—帶芯片的:價格100以上,甚至200以上

有時候,看價錢就應該敏感的察覺到商品的組成成分啊!!!還有就是一定要記得看評論,里面說不定有掉進坑里的人。VGA接口需要的是模擬信號,HDMI接口需要的數字信號。如果你的顯示器只是單純的顯示器,而沒有集成顯卡,比如電視機、電腦獨立顯示器、投影儀,那么第①種線就一定不能使用!!!其他兩種還要根據情況來選擇,根據網上資料,如果你的輸出HDMI信號的設備本身供電電源就不大(一般小於2A),就最好選用第③種有源的,VGA顯示器對電流吸入量比較大,這樣才能確保設備正常工作。開始還以為是網上說的那樣是配置問題,然並卵,不過也記錄一下這個配置過程:

1>備份樹莓派FAT32分區里面的config.txt文件為config.txt.bak

2>更改樹莓派FAT32分區里面的config.txt文件內容為如下配置:

#強制使用HDMI輸出

hdmi_force_hotplug=1

#HDMI信號增強

config_hdmi_boost=4

#HDMI輸出適配於計算機顯示器

hdmi_group=2

#HDMI輸出的分辨率及刷新頻率

hdmi_mode=9

#禁止樹莓派檢測顯示器分辨率,直接使用配置文件中制定的分辨率輸出

hdmi_ignore_edid=0xa5000080

#禁止黑邊

disable_overscan=

附:計算機顯示器常用的分辨率

hdmi_mode=4 640x480   60Hz
hdmi_mode=9 800x600 60Hz
hdmi_mode=16   1024x768 60Hz
hdmi_mode=23   1280x768 60Hz
hdmi_mode=32   1280x960 60Hz
hdmi_mode=35   1280x1024 60Hz
hdmi_mode=39   1360x768 60Hz
hdmi_mode=47 1440x900  60Hz
hdmi_mode=81 1366x768 60Hz
hdmi_mode=82 1920x1080 60Hz

   

 

 

 

 

 

 

暑假實習結束,本想乘着還沒開學早點回家,這幾天台風“蘇迪羅”在福建莆田那邊登錄,廣東這邊受影響還是比較大的,所以只好等多幾天天氣好轉了再回了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM