項目作者:FanHuaCloud
簡介:大佬已在硬創(chuàng)社開源了近50款開發(fā)板,動手能力極強,于去年年底開始接觸學(xué)習(xí)Linux,并由全志V3s、F1C200S等芯片開始上手DIY個人的Linux開發(fā)板。
本項目是基于全志V3S的隨身終端(類似MP4),命名為V3S-PI,開發(fā)板使用四層板制作,全板采用0603電容電阻,相較于0402,制作更為方便,同時成本可壓縮至100以內(nèi)。
項目簡介
開發(fā)板選用全志V3S為主控,V3s單核Cortex-A7帶有硬件浮點計算,且芯片內(nèi)封64Mbyte DDR2,無需再外掛DDR2芯片,極大程度上為開發(fā)板的走線設(shè)計降低了難度。
開發(fā)板PCB實物、渲染圖
開發(fā)板的外設(shè)以及功能有將近10個:獲取天氣、連耳機播放音樂、10M/100M以太網(wǎng)接口、連wifi、接入SD卡、調(diào)整屏幕亮度、按鍵控制、外接其他設(shè)備、1轉(zhuǎn)4USB HUB......
由于開發(fā)板設(shè)計功能繁多,為了教會大家自己DIY開發(fā)板,作者將項目整體拆分為了6大部分,分別為項目特性、軟件開源、硬件開源、軟件方案、開源網(wǎng)址,來對開發(fā)板整體設(shè)計進行全面介紹和詳細講解電路原理。
項目特性
1全志V3S主控,采用單核Cortex-A7,帶硬件浮點
2芯片內(nèi)封64Mbyte DDR2,無需外掛DDR2
3支持RTL8723BS 2.4G WIFI
4通過CH334R擴展雙USB口
5耳機接口采用V3S內(nèi)置聲卡
6支持10M/100M以太網(wǎng)接口
7支持SDMMC接口,用于啟動系統(tǒng)
8支持CH340N 串口轉(zhuǎn)USB,用于連接串口終端
102.4寸LCD彩屏,使用SPI接口
軟件開源
在目前網(wǎng)上資料的基礎(chǔ)上,作者自行移植了主線內(nèi)核Uboot以及root。目前僅支持SD卡以及SPI Nor啟動,SPI Nand啟動請不要參考當(dāng)前代碼。
1、UBoot快速啟動:
git clone https://gitee.com/fhcloud/uboot-v3s cd uboot-v3s make v3s_pi_defconfig make
輸出的文件在源碼根目錄:
u-boot-sunxi-with-spl.bin
2、Linux快速啟動:
git clone https://gitee.com/fhcloud/linux-v3s cd linux-v3s make v3s_pi_defconfig make
輸出的內(nèi)核文件在:
arch/arm/boot/zImage
輸出的設(shè)備樹請使用:
arch/arm/boot/dts/sun8i-v3s-pi.dtb
3、Buildroot快速啟動:
git clone https://gitee.com/fhcloud/buildroot-v3s.git cd buildroot-v3s make v3s_pi_defconfig make
輸出的文件在:
output/images/rootfs.tar
硬件開源
硬件采用四層板設(shè)計,下面會將電路拆分為11部分,逐一說明。
主控部分
本項目主控采用全志V3S,需要注意的是,R3/R5電阻需使用1%,同時,EPHY存在兩組電壓。
主控原理圖
ADC按鍵
板載四個ADC按鍵,電壓跨度為0.2V,通過分壓電阻實現(xiàn)。
ADC按鍵
2x16 PIN擴展接口
此處通過排針,引出了8個擴展接口,包含了一個串口/一個I2C總線,可用于外接其他設(shè)備。
擴展接口
輔助供電
板載四組供電芯片,分別產(chǎn)生3.0V、3.3V、1.8V、1.2V,其中:
3.0V用于PLL以及AVCC模擬供電
3.3V負責(zé)芯片IO以及其他外設(shè)供電
1.8V用于內(nèi)存供電
1.2V用于V3S核心主控供電。
三路DCDC最大輸出電流2A。
輔助供電
WiFi模塊
板載2.4GWIFI模塊,使用RTL8723BS模塊,V3S與WIFI模塊之間采用SDIO接口連接,引出一個IPEX接口用于外接天線,R20-R27為SDIO和芯片要求的上拉電阻,C50/C51/C70為外圍濾波電容,模塊采用3.3V供電。
WiFi模塊原理圖
10/100M以太網(wǎng)接口
百兆以太網(wǎng)需要使用兩組差分,分別為RX/TX差分。以太網(wǎng)PHY一般帶自動翻轉(zhuǎn)功能,所以RX/TX可以對調(diào)。V3S以太網(wǎng)使用電壓驅(qū)動,只需在網(wǎng)口變壓器中心抽頭處加100NF電容到地即可。內(nèi)部封裝的電阻和2KV電容用于泄放主板的靜電,防止高壓打壞主控芯片。
R28/R29為LED限流電阻,SH1 SH2為外殼,直接接地即可。
以太網(wǎng)接口原理圖
2.4寸LCD彩屏
2.4寸彩屏通過SPI與主控進行通信,PE8接彩屏重置線。PE9接DC用于區(qū)分?jǐn)?shù)據(jù)/指令。
LEDA為背光陽極,LEDK接Q1 MOS,用于主控控制背光開關(guān),屏幕通過焊錫焊接到PCB板上。
2.4寸LCD彩屏原理圖
CH340串口轉(zhuǎn)USB
使用CH340N芯片,實現(xiàn)串口轉(zhuǎn)USB,用于電腦連接終端。
R30/R31用于確保雙頭TYPEC線正常供電,D1為TVS,用于保護USB接口,此處使用3.3V供電,所以CH340N的VCC和V3需要連接到一起,同時增加100nf電容。
CH340串口轉(zhuǎn)USB
CH334R 1轉(zhuǎn)4 USB HUB
通過CH334R芯片,實現(xiàn)一轉(zhuǎn)四個USB Host口,此處采用統(tǒng)一供電,所以VDD33與V5連接到一起即可。
XI XO輸入12Mhz晶振
DPU/DMU接上行USB口
CH334R原理圖
耳機接口
耳機接口采用PJ-342接口,帶音頻和錄音:
PJ-342耳機接口
SD卡接口
SD卡接口用于插入MicroSD卡,R32-R36為SD卡上拉電阻,這里CLK不需要上拉,否則可能會影響SDIO通信。
SD卡接口
CH340串口轉(zhuǎn)USB
軟件方案主要講這8個部分:Linux內(nèi)核、2.4寸LCD彩屏驅(qū)動、USB、以太網(wǎng)、無線網(wǎng)卡RTL8723BS、ADC按鍵、音頻播放、libcurl。
Linux內(nèi)核
內(nèi)核采用Linux5.15.143主線內(nèi)核,在其基礎(chǔ)上,修改了部分代碼,適配V3S大部分外設(shè)。
2.4寸LCD彩屏驅(qū)動
LCD彩屏使用SPI接口與主控連接,由于各家屏幕初始化代碼不同,所以st7735r.c文件在原來的基礎(chǔ)上,我們只需修改st7735r_pipe_enable這個函數(shù)中的代碼即可。
軟件部分采用TinyDRM,與傳統(tǒng)的fbtft相比,不再是固定幀率刷新。
采用DRM架構(gòu),可以與新架構(gòu)程序更快集成。
修改完成的代碼參考下方文件,設(shè)備樹配置參考:
&spi0 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&spi0_pins>; display@0 { compatible = "jianda,jd-t18003-t01"; reg = <0>; spi-max-frequency = <95000000>; backlight = <&panel_backlight>; dc-gpios = <&pio 4 9 0>; // PE9 reset-gpios = <&pio 4 8 0>; // PE8 rotation = <0>; }; };
除spi外,需要添加一個背光節(jié)點,這樣就可以在用戶層操作背光:
panel_backlight: panel-backlight { compatible = "gpio-backlight"; gpios = <&pio 4 7 GPIO_ACTIVE_HIGH>; // PE7 default-on; status = "okay"; };
USB接口
設(shè)備樹配置參考:
&usb_otg { dr_mode = "host"; // peripheral status = "okay"; }; &usbphy { status = "okay"; };
除引用節(jié)點外,一定要添加ochi/echi,不然USB插入會沒有反應(yīng):
soc { ehci0: usb@01c1a000 { compatible = "allwinner,sun8i-v3s-ehci", "generic-ehci"; reg = <0x01c1a000 0x100>; interrupts =; clocks = <&ccu CLK_BUS_EHCI0>, <&ccu CLK_BUS_OHCI0>; resets = <&ccu RST_BUS_EHCI0>, <&ccu RST_BUS_OHCI0>; status = "okay"; }; ohci0: usb@01c1a400 { compatible = "allwinner,sun8i-v3s-ohci", "generic-ohci"; reg = <0x01c1a400 0x100>; interrupts = ; clocks = <&ccu CLK_BUS_EHCI0>, <&ccu CLK_BUS_OHCI0>, <&ccu CLK_USB_OHCI0>; resets = <&ccu RST_BUS_EHCI0>, <&ccu RST_BUS_OHCI0>; status = "okay"; }; };
以太網(wǎng)
直接引用DTSI文件中的emac節(jié)點即可,設(shè)備樹參考:
&emac { allwinner,leds-active-low; status = "okay"; };
無線網(wǎng)卡RTL8723BS
Linux下SDIO架構(gòu)類似于USB,設(shè)備插入后,如果有對應(yīng)驅(qū)動,會自動加載。
所以設(shè)備樹中,我們只需要配置好MMC1接口,然后編譯對應(yīng)的驅(qū)動ko,在rootfs中加載即可。
&emac {&mmc1 { broken-cd; bus-width = <4>; vmmc-supply = <®_vcc3v3>; status = "okay"; }; allwinner,leds-active-low; status = "okay"; };
編譯完成的ko文件在buildroot的overlay目錄下面,可以參考下方資料:
r8723bs.ko就是編譯完成的內(nèi)核模塊,此處的模塊backport了5.19內(nèi)核的驅(qū)動,相比于5.15的驅(qū)動更加穩(wěn)定。
除ko文件外,此處還需要加載網(wǎng)卡固件,參考下方目錄:
連接WIFI請參考下方腳本:
[root@buildroot ~]# cat conn.sh modprobe r8723bs.ko wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf udhcpc -i wlan0
配置文件請參考下方:
ctrl_interface=/var/run/wpa_supplicant ap_scan=1 network={ ssid="###############" psk="###############" }
音頻播放
Buildroot中集成了alsa,默認聲卡會靜音狀態(tài),打開終端,輸入alsamixer,首先解除靜音。
在當(dāng)前界面,選中Headphone,然后按下M鍵解除靜音,然后使用鍵盤↑,調(diào)整音量到合適大小即可,界面可參考:
調(diào)整完成后,輸入mpv 文件名 --no-video,插入耳機,即可實現(xiàn)音樂播放:
[root@buildroot ~]# mpv 2.flac --no-video Video --vid=1 [P] (mjpeg 500x500 1.000fps) (+) Audio --aid=1 (flac 2ch 48000Hz) File tags: Album: 西廂尋他 Title: 西廂尋他 Track: 1 AO: [alsa] 48000Hz stereo 2ch s32 A: 00:00:04 / 00:03:43 (2%) Exiting... (Quit)
命令提示符顯示當(dāng)前目錄,編輯/etc/profile文件,添加一行,然后export /etc/profile重新加載配置即可:
export PS1='[u@h w]$ '
libcurl
通過libcurl獲取當(dāng)前天氣。程序已開源,參考文末開源網(wǎng)址查看。
審核編輯:湯梓紅
-
pcb
+關(guān)注
關(guān)注
4319文章
23080瀏覽量
397464 -
Linux
+關(guān)注
關(guān)注
87文章
11292瀏覽量
209318 -
DIY
+關(guān)注
關(guān)注
176文章
887瀏覽量
348537 -
開源
+關(guān)注
關(guān)注
3文章
3309瀏覽量
42471 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5032瀏覽量
97371 -
全志
+關(guān)注
關(guān)注
24文章
247瀏覽量
53119
原文標(biāo)題:夢回2004!我用100元做了個MP4
文章出處:【微信號:gh_79acfa3aa3e3,微信公眾號:全志在線】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論