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