页次: 1
debian12文件系统
https://releases.linaro.org/debian/images/developer-arm64/debian12/
# sudo mount debian.img /mnt
挂载到mnt目录,然后拷贝到tf卡
PCB文件:
链接:https://pan.baidu.com/s/173ZCxDGA0MwY03Gm839Stw?pwd=ota8
提取码:ota8
镜像文件:
链接:https://pan.baidu.com/s/115zDaqubvyQ6A6hIrlWjXw?pwd=653x
提取码:653x
ATF源码:
https://gitee.com/byleefei/arm-trusted-firmware.git
u-boot源码:
https://gitee.com/byleefei/u-boot.git
Linux源码:
https://gitee.com/byleefei/linux.git
编译方法:
编译tf-a:
$ git clone https://gitee.com/byleefei/arm-trusted-firmware.git
$ cd arm-trusted-firmware/
$ make CROSS_COMPILE=aarch64-linux-gnu- PLAT=mcore_h616 DEBUG=1 bl31
编译u-boot:
$ git clone https://gitee.com/byleefei/u-boot.git
$ cd u-boot
$ make CROSS_COMPILE=aarch64-linux-gnu- BL31=../arm-trusted-firmware/build/mcore_h616/debug/bl31.bin mcore_h616_defconfig
$ make CROSS_COMPILE=aarch64-linux-gnu- BL31=../arm-trusted-firmware/build/mcore_h616/debug/bl31.bin -j8
编译linux:
$ git clone https://gitee.com/byleefei/linux.git
$ cd linux/
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- mcore_h616_defconfig
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j12
下载固件:
https://pan.baidu.com/s/1Ct4KoG4lZ_wgYZnb8yTmFQ?pwd=26hw
下载完解压得到Mcore-h616.img
TF 卡使用SDFormatter格式化一下,然后使用dd命令烧录,不要忘了sync同步一下
$ sudo dd if=./Mcore-h616.img of=/dev/sdb bs=1M
$ sync
烧录完成,TF卡插小电视上开机,通过usb串口调试,账号密码都是root
扩容:
# cfdisk /dev/mmcblk0
上下键选中 /dev/mmcblk0p2 左右键选中 [ Resize ] 回车,再回车,然后 左右键选中 [ Write ] 回车 输入yes再回车。最后左右键选中 [ Quit ]退出,
然后
# resize2fs /dev/mmcblk0p2
播放音乐:
# mplayer /1.mp3
录音:
按键盘tab键切换到mic音量调节界面,按键盘上键调到最大,按Esc键退出
# alsamixer
开始录音:
# arecord -f cd -d 20 /1.wav
完成后播放:
# mplayer /1.wav
坑站上好像有不少人像我一样,去linux官网下载的kernel。然后使用荔枝派的设备树文件,发现控制不了PC口。
那是因为V3s的GPIO是阉割了的。由于V3x只是S3换了封装,所以得用S3的dts设备树文件 。再打开内核文件夹看一下S3的dts文件包含的是V3的dtsi文件,V3的dtsi文件包含的是V3S.dtsi,V3的dtsi文件是在V3S.dtsi的基础上把pio换成sun8i-v3-pinctrl,把ccu也换成了sun8i-v3-ccu
这是sun8i-v3.dtsi文件
#include "sun8i-v3s.dtsi"
&ccu {
compatible = "allwinner,sun8i-v3-ccu";
};
&emac {
/delete-property/ phy-handle;
/delete-property/ phy-mode;
};
&mdio_mux {
external_mdio: mdio@2 {
reg = <2>;
#address-cells = <1>;
#size-cells = <0>;
};
};
&pio {
compatible = "allwinner,sun8i-v3-pinctrl";
};
说了一大堆,我自己都绕晕了,直接上代码验证,其实很简单,把荔枝派的设备树文件包含的#include "sun8i-v3s.dtsi"换成#include "sun8i-v3.dtsi"就行了
#include "sun8i-v3.dtsi"
#include "sunxi-common-regulators.dtsi"
#include <dt-bindings/input/input.h>
/ {
model = "Lichee Pi Zero";
compatible = "licheepi,licheepi-zero", "allwinner,sun8i-v3s";
aliases {
serial0 = &uart0;
};
chosen {
stdout-path = "serial0:115200n8";
};
leds {
compatible = "gpio-leds";
green_led {
label = "green";
linux,default-trigger = "heartbeat";
gpios = <&pio 4 22 GPIO_ACTIVE_HIGH>;
};
};
};
&spi0 {
status = "okay";
st7789v@0 {
compatible = "sitronix,st7789v";
reg = <0>;
spi-max-frequency = <96000000>;
rotate = <0>;
rgb;
width=<240>;
height=<320>;
fps = <30>;
buswidth = <8>;
led-gpios = <&pio 1 5 GPIO_ACTIVE_LOW>;
reset-gpios = <&pio 1 6 GPIO_ACTIVE_HIGH>;
dc-gpios = <&pio 1 7 GPIO_ACTIVE_HIGH>;
debug = <0>;
};
};
&codec {
allwinner,audio-routing =
"Headphone", "HP",
"Headphone", "HPCOM";
status = "okay";
};
&ehci0 {
status = "okay";
};
&mmc0 {
broken-cd;
bus-width = <4>;
vmmc-supply = <®_vcc3v3>;
status = "okay";
};
&mmc1 {
broken-cd;
bus-width = <4>;
vmmc-supply = <®_vcc3v3>;
status = "okay";
};
&i2c0 {
status = "disabled";
ns2009: ns2009@48 {
compatible = "nsiway,ns2009";
reg = <0x48>;
};
};
&ohci0 {
status = "okay";
};
&uart0 {
pinctrl-0 = <&uart0_pb_pins>;
pinctrl-names = "default";
status = "okay";
};
/*
&uart1 {
pinctrl-0 = <&uart1_pins_a>;
pinctrl-names = "default";
status = "okay";
};
&uart2 {
pinctrl-0 = <&uart2_pins_a>;
pinctrl-names = "default";
status = "okay";
};
*/
&usb_otg {
dr_mode = "otg";
status = "okay";
};
&usbphy {
usb0_id_det-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>;
status = "okay";
};
&lradc {
vref-supply = <®_vcc3v3>;
status = "okay";
button@200 {
label = "Volume Up";
linux,code = <KEY_L>;
channel = <0>;
//voltage = <500000>;
voltage = <550000>;
};
button@400 {
label = "Volume Down";
linux,code = <KEY_ENTER>;
channel = <0>;
//voltage = <1060000>;
voltage = <1270000>;
};
button@600 {
label = "Select";
linux,code = <KEY_S>;
channel = <0>;
//voltage = <1560000>;
voltage = <2030000>;
};
};
编译并拷贝新设备树文件到TF卡启动系统
控制PC4方法:
导出GPIO
echo 68 > /sys/class/gpio/export
设置GPIO为输出
echo out > /sys/class/gpio/gpio68/direction
设置GPIO输出高电平
echo 1 >/sys/class/gpio/gpio68/value
同理设置GPIO输出低电平
echo 0 >/sys/class/gpio/gpio68/value
https://whycan.com/files/members/3907/vedemo_20211203_215146.mp4
V3x 驱动 MCU I80 8bit ILI9341 IPS 液晶屏
请问如何驱动i80 8bit 屏
尝试使用lvgl,结果出现一种似花非花的尴尬局面
https://gitee.com/socbis/linux-lvgl/#lvgl-for-frame-buffer-devicegit clone https://gitee.com/socbis/linux-lvgl.git -b lvgl-s5p6818
https://whycan.com/files/members/6376/QQ图片20211222212023.jpg
去官方github下载。改一下分辨率。改一下交叉编译器
PCB更新啦https://whycan.com/t_7522.html由网友大佬提供
合集链接:
https://whycan.com/t_7281.html
最近JLC出货太慢了,焦急地等待了7天,PCB终于到手了。连夜焊了一块板子出来(别问我为神马只焊一片,问就是经费燃烧殆尽了)
大家看见没,我手欠,曾经为了展现我高超的焊接技术,把LED的线路割断了,飞线到cpu另一个引脚测试所留下的案发现场
正题开始:
首先咱们不可能手撕代码,所以ctrl+c ctrl+v 下载(V3s/V3x/S3/S3L/R11通吃)小智V3x开发板smallwitpi lite u-boot/linux/buildroot测试中的文件。我这里再发一遍吧
br2_v3_uart0_pb8_pb9-spinor-tfcard-20211026132800.tgz
1 克隆buildroot:
$ git clone https://github.com/buildroot/buildroot -b 2020.02.4
2 解压刚下载的文件
$ tar xvf br2_v3_uart0_pb8_pb9-spinor-tfcard-20211026132800.tgz
3 将解压出来的文件夹拷贝合并到buildroot中
4 编译
$ cd buildroot
$ make br2_smallwitpi_lite_v3_ddr3_uart0_pb8_pb9_tfcard_spinor_defconfig
中途可能某些包下载不下来,可以手动复制链接下载源码包到buildroot的dl目录下
5 烧录到SD卡
$ dd if=output/images/firmware-smallwitpi-lite-v1-sdcard.img of=/dev/sdx
注意/dev/sdx为你的SD卡路径,请谨慎操作这一步!!!
6 插上串口线上电就能看到系统输出的信息
这时由于没有移植任何驱动,板上设备是没有工作的,这里先简单弄个LED驱动把。
看MIPI-V3x原理图可知,LED接到了PE22引脚上,并且是高电平点亮。
首先修改增加LED驱动,第一件事就是看设备树中PE22有没有被占用,小智使用的设备树文件是buildroot/output/build/linux-5.4.70/arch/arm/boot/dts/devicetree.dts
查看此文件发现uart1占用了PE22口,所以修改uart1节点status = "ok";改为status = "disabled";
&uart1 {
pinctrl-0 = <&uart1_pe_pins>;
pinctrl-names = "default";
status = "disabled";
然后在devicetree.dts的backlight: backlight 节点后面添加LED设备节点
backlight: backlight {
compatible = "pwm-backlight";
pwms = <&pwm 0 1000000 1>;
brightness-levels = <0 4 8 16 32 64 128 160 200 255>;
default-brightness-level = <6>;
status = "okay";
};
leds {
compatible = "gpio-leds";
green_led {
label = "green";
linux,default-trigger = "heartbeat"; //默认设置为系统心跳灯
gpios = <&pio 4 22 GPIO_ACTIVE_HIGH>; /* PE22 */
};
};
修改完成后回到buildroot目录下重新编译一下
$ rm buildroot/output/build/linux-5.4.70/.stamp_built
$ rm buildroot/output/build/linux-5.4.70/.stamp_target_installed
$ make
编译完成后将buildroot/output/images/devicetree.dtb文件拷贝到SD卡的fat分区上
至此,上电就能看到led在闪烁了
接下来讲一下linux下如何操作这个GPIO
刚刚我们添加的led设备节点在/sys/class/leds/green目录下,需要手动操作GPIO,先把/sys/class/leds/green/trigger方式改为none
# echo none > trigger
然后点灯
# echo 1 > brightness
关灯灯
# echo 0 > brightness
不是封装错了呢,我是说型号写着1.8V的ldo,net网络标号是2.8v .。而型号写着2.8V的ldo,net网络标号是1.8v
还有就是中心焊盘每接地
再一个就是0.75V我没有用dcdc,直接1.5V分压得到
另外,这是我开源我V3x小板子,共勉,加油!!!
https://whycan.com/t_7281.html
2021-10-21 00:02
之前在某视频平台开源了MPPI-V3s小电脑
跟我的小爱同学合照
然后呢,有不少人喜欢,就动手重新设计一款基于V3x芯片的板子。外形,布局都跟之前开源的一样,当然3D打印外壳也是可以通用的啦
原理图鉴赏:
PCB鉴赏:
最后当然是开源AD版PCB和原理图啦(刚画好,热乎着呢,没验证)
MIPI_V3x.zip
过两天就去打个板子调试一下
对了我前面也有个开源的V3x测试版原理图,有lcd接口,网口,emmc。但是呢。总所周知,但在座的各位不知,我喜欢迷你的板子,那个开源项目我不知道会烂尾还是会继续更新。。。
各位看官,今天到此为止,若知后事如何,请持续关注本帖子,如无意外会出调试编译过程。
V3x芯片是本站哇酷网第八个灯泡 晕哥的专属定制版soc。在这里我开源一下我的测试版。众所周知但在座的各位不知。我喜欢迷你的板子。但是呢这是测试版。做的大了那么亿丢丢,pcb板才完成了8成,就不展示了,上原理图。大佬们顺便帮我看看有没错误的地方。谢谢MIPI_V3x.pdf
等V3x降价,哈哈。。。。
v3s编译这个debian系统有教程吗,我也想试试,可以给个地址学习吗
自己构建的debian10 ping出现以下错误:
root@leefei-X555YI:~# ping www.baidu.com
ping: socket: Address family not supported by protocol
ping: www.baidu.com: System error
ping域名会出现这个错误,ping ip不管是内网还是外网都正常的
apt下载安装软件也是正常的
芯片是V3S。内核是荔枝派的4.14 网卡是rtl8723bs
请问各位这是怎么回事?
我的屏幕做成终端,然后移植了mplayer 播放了视频。按ctrl+c结束播放之后,屏幕就只能在屏幕上半部分显示了
这是开机,没播放视频的界面
这是播放完视频后的界面。剩一半了。
这是怎么回事呀,输入命令也只能在中间输入了。
半屏后试过在串口终端cat urandom > fb0 是可以满屏的
我的屏是480x272的。uboot linux都是直接编译荔枝派的
/etc/inittab文件:
console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL
console::respawn:sbin/getty -L /dev/tty0 0 vt100 # GENERIC_SERIAL
bootargs :
setenv bootargs 'console=tty0 console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw vt.global_cursor_default=0'
播放命令:
mplayer -x 800 -y 480 -zoom -framedrop badapple.avi
大神们帮小弟分析下是什么原因?
另外开机后的终端界面没有光标闪烁的。然后执行过QT的app之后返回到终端界面,却出现了一个光标闪烁??。。我希望是一直都有光标闪烁。。。
晕哥 说:应该还有一个 c 文件没有参与编译,你搜索一下,就在这个目录
zhang@zhang-virtual-machine:~/tinyalsa/utils$ arm-linux-gnueabihf-gcc -o tinymix tinymix.c mixer.c -L../src -I../include -static zhang@zhang-virtual-machine:~/tinyalsa/utils$ arm-linux-gnueabihf-gcc -o tinypcminfo tinypcminfo.c pcm.c -L../src -I../include -static zhang@zhang-virtual-machine:~/tinyalsa/utils$ arm-linux-gnueabihf-gcc -o tinyplay tinyplay.c pcm.c -L../src -I../include -static
将/tinyalsa/src目录下的pcm.c mixer.c文件拉到utils目录,可以完成编译,已经可以播放声音了,谢谢大家帮助
你好,只需pcm.c mixer.c两个文件拉到utils目录吗,我的拉到了这个目录下还是报错
按上面的方法是动态链接tinyalsa,
下面这样可以手动静态链接:
cd tinyalsa/utils
arm-linux-gcc -o tinypcminfo tinypcminfo.c -ltinyalsa -L../src -I../include -static
arm-linux-gcc -o tinymix tinymix.c -ltinyalsa -L../src -I../include -static
arm-linux-gcc -o tinyplay tinyplay.c -ltinyalsa -L../src -I../include -static
arm-linux-gnueabihf-gcc -o tinyplay tinyplay.c -ltinyalsa -L../src -I../include -static
/usr/local/arm/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: 找不到 -ltinyalsa
collect2: 错误: ld 返回 1
编译报错了
页次: 1