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