介紹
The Raspberry Pi Zero W extends the Pi Zero family and comes with added wireless LAN and Bluetooth connectivity.
缺點:沒有 ADC 數模轉換,自己想辦法加配件啊
產品圖
配置
歐盟合規認證
pi@raspberrypi:~ $ dpkg --print-architecture
armhf
armhf
架構
安裝系統
格式化SD卡為FAT分區,用 Win32DiskImager 把系統鏡像如2020-08-20-raspios-buster-armhf-full.img
寫入到SD卡。寫入后SD卡會分成兩個區,Windows下只能見到一個BOOT區
在BOOT分區下創建兩個文件,用於連接路由器和開啟SSH
1.空文件 ssh
2.Unix文本文件 wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN
network={
ssid="YourWifiName"
psk="YourWifiPassword"
scan_ssid=1
}
路由器WIFI賬號密碼寫你自己的。該文件會在初次系統安裝時被讀取用於配置WIFI,然后該文件就會被自動刪除。
把SD卡插回樹莓派,把usb數據線一端插到樹莓派zeroW(兩個口都可以,標有 USB
是數據+供電,標有 PWR IN
的是單供電),一端插到電腦上。
這時候樹莓派就會閃燈開機(如果沒有插SD卡,燈是一點都不會亮的)
等到樹莓派燈不怎么閃爍時,登陸路由器后台看看
遠程登陸
ssh
電腦cmd窗口輸入
ssh pi@192.168.123.8
密碼默認為 raspberry
修改密碼命令:
passwd
修改鏡像源
sudo sed -i 's|raspbian.raspberrypi.org|mirrors.ustc.edu.cn/raspbian|g' /etc/apt/sources.list
sudo sed -i 's|//archive.raspberrypi.org|//mirrors.ustc.edu.cn/archive.raspberrypi.org|g' /etc/apt/sources.list.d/raspi.list
sudo apt update
Windows遠程桌面(RDP)
安裝 Windows 遠程桌面服務
sudo apt-get install xrdp
效果圖
也可以用支持ssh rdp x11等多種協議的遠程控制工具 Mobaxterm
板載外設相關
高級設置
還有一些高級設置,可以通過命令行設置
sudo raspi-config
如果是 可以安裝 rasp-AP
開啟 USB 網卡
作用:給樹莓派插上USB,連接到電腦,樹莓派被識別成一個
USB Ethernet/RNDIS Gadget
網卡
樹莓派配置:
- 本配置適用於樹莓派系統
已經安裝完成
的 - 啟動時加載 dwc2 USB driver
echo "dtoverlay=dwc2" | sudo tee -a /boot/config.txt
- 開啟 dwc2
echo "dwc2" | sudo tee -a /etc/modules
- 選擇網卡模塊並啟用(如果你要使用別的模塊,請參考以下鏈接,模塊不能使用多個只能一個)
echo "g_ether" | sudo tee -a /etc/modules
參考:
驅動:在微軟驅動官網下載並解壓 Acer Incorporated. - Other hardware - USB Ethernet/RNDIS Gadget Windows Vista版本的
圖中第一個就是 Windows Vista 版本的
解壓后,從設備管理器,右擊樹莓派那個USB嘆號設備(名字一般是未識別的),更新驅動,路徑選你解壓的路徑即可。
效果圖(我的是英文系統)
IP地址可以通過 cmd 命令查看(先看你樹莓派USB Ethernet/RNDIS Gadget網卡的網段),如我的是 192.168.137.1
就輸入
arp -a | findstr 192.168.137
查看arp表里含有192.168.137的設備
C:\WINDOWS\system32>arp -a | findstr 192.168.137
Interface: 192.168.137.1 --- 0x41
192.168.137.233 da-xx-xx-xx-xx-24 static
192.168.137.255 ff-ff-ff-ff-ff-ff static
然后255是廣播地址嘛(計算機網絡知識),所以樹莓派的USB網卡ip地址就是 192.168.137.233 了
確保樹莓派開了SSH服務,然后
ssh -T pi@192.168.137.233
成功的話會提示你接受密鑰並輸入密碼,即找到並SSH測試連接通了樹莓派
設置網絡共享:電腦共享網絡給樹莓派用(通過USB Ethernet/RNDIS Gadget網卡)
圖盜自 https://gist.github.com/gbaman/975e2db164b3ca2b51ae11e45e8fd40a
當然也可以通過 ping raspberrypi.local
前提是你電腦裝了 mDNS 協議(一個局域網版本的DNS無服務端協議)支持軟件,如 Bonjour
CMD>ping raspberrypi.local
Pinging raspberrypi.local [fe80::f1b9:ff1f:c643:b627%66] with 32 bytes of data:
Reply from fe80::f1b9:ff1f:c643:b627%66: time=1ms
Reply from fe80::f1b9:ff1f:c643:b627%66: time<1ms
Reply from fe80::f1b9:ff1f:c643:b627%66: time<1ms
Reply from fe80::f1b9:ff1f:c643:b627%66: time=1ms
Ping statistics for fe80::f1b9:ff1f:c643:b627%66:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 1ms, Average = 0ms
CMD>ssh pi@fe80::f1b9:ff1f:c643:b627%66
pi@fe80::f1b9:ff1f:c643:b627%66's password:
Linux raspberrypi 5.10.17+ #1421 Thu May 27 13:58:02 BST 2021 armv6l
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Jul 23 11:48:49 2021
pi@raspberrypi:~ $
記得把你電腦網絡 共享給
樹莓派 USB 網卡
GPIO 針腳
測試腳本 (led_ctrl.sh
)
#!/bin/sh
#控制GPIO口高低電平
echo $1 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio$1/direction
echo 1 > /sys/class/gpio/gpio$1/value
sleep 1 #延時1秒
echo 0 > /sys/class/gpio/gpio$1/value
echo $1 > /sys/class/gpio/unexport
給腳本加上執行權限
sudo chmod+x ./led_ctrl.sh
測試GPIO命令
# sudo ./led_ctrl.sh 你要測試的GPIO口號
sudo ./led_ctrl.sh 2
使用:在面包板上,LED燈接220Ω電阻,一腳接GND,一腳接你要測試的GPIO引腳。(當然我還用了 T 型拓展板)
效果:亮燈,一秒后滅燈
這里借一下別人的連線圖
http://www.ruanyifeng.com/blog/2017/06/raspberry-pi-tutorial.html
樹莓派學習二(點亮LED燈)
讓你的 Raspberry Pi 透過 GPIO 閃爍 LED 燈
Shell C C++ Java Python NodeJS 等語言均有支持GPIO的庫,詳情谷歌
這里pip換鏡像源,不說了我們先一起燒香謝謝方校長:
樹莓派使用 Python 驅動 SSD1306(IIC/SPI 通信) 先測試IIC通訊,成功后再去玩 Linux C 編程 實現I2C總線的OLED驅動 - 暮光小猿wzt。
開啟色相頭
查看硬件輸出信息
如查看 SoC 溫度(也就是常說的 CPU)
vcgencmd measure_temp
詳見:https://www.raspberrypi.org/documentation/raspbian/applications/vcgencmd.md
正確關機
sudo halt
驅動開發
https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2835/README.md
譯文:BCM2835
這是樹莓派 A, B, B+, the Compute Module 及 Zero 系列所用的博通 CPU 芯片
請參考:
Peripheral specification 參考手冊
注:該文檔有一些錯誤,已知錯誤和一些額外信息可以點這里獲取
GPU 文檔 及其 開源驅動
ARM1176 processor
ARM1176JZF-S
Also see the Raspberry Pi 2 Model B's chip, BCM2836.
Peripheral specification(ARM 外設說明書) 是博通的數據手冊,在其文檔介紹里可看到這么一行:
The purpose of this
datasheet
is to provide documentation for these peripherals in sufficient
detail to allow a developer to port an operating system to BCM2835.
There are a number of peripherals which are intended to be controlled by the GPU. These are
omitted from this datasheet. Accessing these peripherals from the ARM is not recommended.
總結:
資料名 | 文件名 | 網址 |
---|---|---|
CPU 數據手冊 | BCM2835-ARM-Peripherals.pdf | https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2835/BCM2835-ARM-Peripherals.pdf |
CPU 數據手冊錯誤修正與注意 | BCM2835 datasheet errata - eLinux.org.mhtml | https://elinux.org/BCM2835_datasheet_errata |
ZeroW 電路原理圖(schematics) | rpi_SCH_ZeroW_1p1_reduced.pdf | https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/rpi_SCH_ZeroW_1p1_reduced.pdf |
GPU 文檔 | VideoCoreIV-AG100-R.pdf | https://docs.broadcom.com/docs/12358545 |
CPU 開源驅動 | Brcm_Android_ICS_Graphics_Stack.tar.gz | https://docs.broadcom.com/docs/12358546 |
為方便大家使用,我已經把上面5個資料都打包了,下載地址:Pi_zeroW.zip 更新日期:2021-01-13
以上硬件資料均可在樹莓派官網 HardWare 文檔 找到
軟硬件等更多資料詳見:https://www.raspberrypi.org/documentation/
PS. 樹莓派 ZeroW 的 CPU 是 BCM2835,該 CPU 內核是 ARM1176 processor 系列里的 ARM1176JZF-S
剩下的就是:看手冊/看寄存器/看電路圖->寫代碼了,和普通的 ARM Linux 驅動開發沒有什么兩樣
給個案例:
驅動編寫教程(非樹莓派,但大同小異): [野火]i.MX Linux開發實戰指南-驅動章節
開發方式推薦:VSCode + Remote SSH + Linux X64 桌面操作系統(或虛擬機)交叉編譯環境 和 NFS 服務 + 樹莓派掛載 NFS
在 VSCode 直接調用 Makefile 的方法:https://www.cnblogs.com/yucloud/p/vs_code_config.html#makefile
樹莓派掛載 NFS:
# 192.168.12.130 是你的服務器地址,一般是台式/筆記本/虛擬機系統上的 NFS Server
mount -t nfs 192.168.12.130:/mnt /media
#修改 /etc/fstab 文件,添加以下代碼,更多參數見 https://wiki.archlinux.org/index.php/Fstab_(簡體中文)#字段定義
192.168.12.130:/mnt /mnt nfs rw
NOTE: 不要在 zeroW 上編譯,因為它沒有樹莓派3 那么好的性能。
拉取代碼
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 5.4.83+ #1379 Mon Dec 14 13:06:05 GMT 2020 armv6l GNU/Linux
# 根據版本號和Github倉庫代碼分支,可確定應該拉取 rpi-5.4.y
# 然后在 筆記本或台式機上拉取代碼 git clone --depth=1 --branch rpi-5.4.y https://github.com/raspberrypi/linux
# 編譯構建部分請看以下官方資料
- 內核源碼及其編譯構建指南(請看 Cross-compiling 部分): https://www.raspberrypi.org/documentation/linux/kernel/building.md
- raspbian 系統相關配置:https://www.raspberrypi.org/documentation/raspbian/
- Github 搜索關鍵詞"rasp kernel module"
- 裸機編程(像STM32單片機那樣)Raspberry Pi Zero baremetal examples: https://github.com/dwelch67/raspberrypi-zero
- 樹莓派官方論壇-裸機及匯編區Bare metal, Assembly language