xtrack 码表专用 tina 1.0 补丁下载: d1-mangopi_mq_source_patch_20220303_xtrack_by_whycan.tgz
使用方法:
① source build/envsetup.sh
② d1_mangopi_mq_rgb800x480_gt9xx-tina
③ make
④ pack
xtrack 码表专用 tina 1.0 补丁下载: d1-mangopi_mq_source_patch_20220303_xtrack_by_whycan.tgz
使用方法:
① source build/envsetup.sh
② d1_mangopi_mq_rgb800x480_gt9xx-tina
③ make
④ pack
码表源码下载: X-Track-src-for-linux-20220303.tgz
编译方法: 进入Linux/ 目录执行 make
现在还缺串口读GPS 及 文件写入,哪位大佬能继续完成?
地图资源文件: MAP-asset-png地图资源文件.tar (根据代码,应该放置于目标文件系统的根目录)
作者已经把 X-Track码表程序移植到 D1s,很快就可以看到 RISC-V 版本了。
@hongyao
或者试一试这个(ext4 rootfs):
按照教程编译D1的Tina Linux系统,为什么是只读系统,无法新建文件
https://bbs.aw-ol.com/topic/1005/share/7
@hongyao
原因是wpa_supplicant 连接wifi的时候需要读写几个文件,如果是只读文件系统,就会失败。
先试一试这个 squashfs + overlayfs(ext4):
在D1的tina上整上overlayfs
https://bbs.aw-ol.com/topic/1000/share/12
工程地址在JLC,第二次用LC EDA了,说实话,找封装比较方便,但是很多点实在用的比较难受
https://oshwhub.com/Nccer/my_v3s_copy
板载ICM20600/spl06/QMC5883L, 还有一片高云的FPGA(用来输出PWM)
这是第二版了,第一板就是下图那个比较大的方方正正的板子,那是第一次用LC EDA,画完回来发现忘记画LED了,上电一个灯都亮着实有点慌
再加上上面没有磁力计,于是就琢磨着画了第二版,把一些电机驱动电路/锂电池充电电路给去了(原来是希望能直接控制一个空心杯四轴的),
画得更小
焊得有点叙利亚成色了,因为这个芯片是吹下来的,希望能白嫖晕个的两片V3s,下次焊新芯片
调试记录,正常启动
转载地址: 开源一个V3s的飞控板
大概率是因为某些目录只读引起,
如果用tina 2.0,可以试一试这个补丁:
在D1的tina上整上overlayfs
https://bbs.aw-ol.com/topic/1000/share/12
感谢楼主, 在d1 tina 2.0上面搞定了
不用修改 e2fsprogs
只要修改这几个文件:
device/config/chips/d1-h/configs/nezha/sys_partition.fex
target/allwinner/d1-h-nezha/base-files/etc/config/fstab
target/allwinner/d1-h-nezha/defconfig
打包备份:
tar cvf /mnt/hgfs/D/tina_d1_open_v2_for_ext4_overlay.tar device/config/chips/d1-h/configs/nezha/sys_partition.fex target/allwinner/d1-h-nezha/base-files/etc/config/fstab target/allwinner/d1-h-nezha/defconfig
这里下载: tina_d1_open_v2_for_ext4_overlay.tar
运行效果:
root@TinaLinux:/# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 17152 17152 0 100% /rom
devtmpfs 503924 0 503924 0% /dev
tmpfs 508116 36 508080 0% /tmp
/dev/by-name/UDISK 176576 157240 19336 89% /overlay
overlayfs:/overlay 176576 157240 19336 89% /
root@TinaLinux:/#
root@TinaLinux:/#
root@TinaLinux:/# ls /overlay/upper/
aaa etc opt
root@TinaLinux:/#
root@TinaLinux:/#
root@TinaLinux:/# mount
/dev/root on /rom type squashfs (ro,noatime)
devtmpfs on /dev type devtmpfs (rw,relatime,size=503924k,nr_inodes=125981,mode=755)
proc on /proc type proc (rw,nosuid,nodev,noexec,noatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,noatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime)
/dev/by-name/UDISK on /overlay type ubifs (rw,relatime,assert=read-only,ubi=0,vol=8)
overlayfs:/overlay on / type overlay (rw,noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,mode=600,ptmxmode=000)
debugfs on /sys/kernel/debug type debugfs (rw,noatime)
none on /sys/kernel/config type configfs (rw,relatime)
adb on /dev/usb-ffs/adb type functionfs (rw,relatime)
root@TinaLinux:/#
root@TinaLinux:/#
运行下面的命令行,HDMI显示器正常了:
cd /sys/kernel/debug/dispdbg
echo disp0 > name; echo switch1 > command; echo 4 10 0 0 0x4 0x101 0 0 0 8 > param; echo 1 > start;
@aldfaaa
就是SDK自带的 drivers/input/touchscreen/gt9xxnew/gt9xxnew_ts.ko
官方LCD亲测可用。
@alienwalker
如果规格书没有写该引脚有某复用,那就是没有这个功能。也可以用io模拟实现,但是效果不太好。
下载成功,开始编译:
whycan@ubuntu:/opt/D1/tina_d1_open_v2$ source build/envsetup.sh
Setup env done! Please run lunch next.
whycan@ubuntu:/opt/D1/tina_d1_open_v2$ lunch
You're building on Linux
Lunch menu... pick a combo:
1. d1-h_nezha_min-tina
2. d1-h_nezha-tina
3. d1s_nezha-tina
Which would you like?: 3
============================================
TINA_BUILD_TOP=/opt/D1/tina_d1_open_v2
TINA_TARGET_ARCH=riscv
TARGET_PRODUCT=d1s_nezha
TARGET_PLATFORM=d1s
TARGET_BOARD=d1s-nezha
TARGET_PLAN=nezha
TARGET_BUILD_VARIANT=tina
TARGET_BUILD_TYPE=release
TARGET_KERNEL_VERSION=5.4
TARGET_UBOOT=u-boot-2018
TARGET_CHIP=sun20iw1p1
============================================
no buildserver to clean
[2] 111754
whycan@ubuntu:/opt/D1/tina_d1_open_v2$
[2]+ Done $T/tools/build/buildserver --path $T 2> /dev/null 1>&2
whycan@ubuntu:/opt/D1/tina_d1_open_v2$
whycan@ubuntu:/opt/D1/tina_d1_open_v2$ make
===This's tina environment.===
d1s_nezha d1s d1s-nezha
build_boot platform:sun20iw1p1 o_option:spl
Prepare toolchain ...
suport_board:d1s
--------build for platform:sun20iw1p1 mode:all board:d1s-------------------
riscv64...
Prepare riscv toolchain ...
是这样的,D1s的MQ补丁包里控制台是串口0,我需要改为串口1,在查了帖子和资料后,我做了如下修改:
device/config/chips/d1/configs/mangopi_mq_rgb800x480_gt9xx/env.cfg
- earlyprintk=sunxi-uart,0x02500000
- console=ttyS0,115200
+ earlyprintk=sun02i-uart,0x02500400
+ console=ttyS1,115200
device/config/chips/d1/configs/mangopi_mq_rgb800x480_gt9xx/sys_config.fex
- uart_debug_port = 0
- uart_debug_tx = port:PE02<6><1><default><default>
- uart_debug_rx = port:PE03<6><1><default><default>
+ uart_debug_port = 1
+ uart_debug_tx = port:PG06<2><1><default><default>
+ uart_debug_rx = port:PG07<2><1><default><default>
device/config/chips/d1/configs/mangopi_mq_rgb800x480_gt9xx/linux5.4/board.dts
- uart1_pins_b: uart1_pins
- uart_index = <0x1>;
+ uart1_pins_b: uart1_pins@1 // 这里让串口1格式和其他串口都一致
+ uart_index = <0x0>; // 不让btlpm占用串口1
lichee/linux-5.4/arch/riscv/boot/dts/sunxi/board.dts
- uart1_pins_b: uart1_pins
- uart_index = <0x1>;
+ uart1_pins_b: uart1_pins@1 // 原因和上面一样
+ uart_index = <0x0>; // 原因和上面一样
lichee/linux-5.4/arch/riscv/boot/dts/sunxi/sun20iw1p1.dtsi
- status = "disabled";
- bootargs = "console=ttyS0,115200n8 ...
- stdout-path = "serial0:115200n8";
+ status = "okay"; // 串口1使能
+ bootargs = "console=ttyS1,115200n8 ... // chosen 部分
+ stdout-path = "serial1:115200n8"; // chosen 部分
lichee/brandy-2.0/u-boot-2018/include/configs/sunxi-common.h
+ #undef CONFIG_CONS_INDEX
+ #define CONFIG_CONS_INDEX 2
修改的地方有:env.cfg里配置控制台为ttyS1、sys_config.fex里初始化调试串口为串口1、board.dts里不让外设占用串口1、sun20iw1p1.dtsi里是能串口1并配置内核启动参数里的控制台为串口1、sunxi-common.h里强制定义CONFIG_CONS_INDEX为2(即串口1)。
目前的现象:串口线接串口1,SD启动,已经可以看到完整的打印信息。本以为正确了,结果当我输入任意字符时(包括回车)终端都会原封不动的返回来,并不能进入系统! 当我刷入xboot固件时,发现串口1可以正常输入命令并交互,说明串口1及其外围硬件是没问题的。请问是哪里修改的不到位吗?
原帖: 修改D1s的串口控制台,成功了但没完全成功,请教原因
地址: https://whycan.com/t_7794.html
@tevet
感谢大佬指点,顺便再请教 dsp0 是干嘛用的?
boot0:
image = "boot0_sdcard.fex"
uboot,opensbi等:
image = "boot_package.fex"
开机画面等:
image = "boot-resource.fex"
uboot的环境变量:
image = "env.fex"
uboot的环境变量备份:
image = "env.fex"
Linux kernel:
image = "boot.fex"
根文件系统:
image = "rootfs.fex"
这两个不知道干嘛的:
image = "dsp0.fex"
image = "recovery.fex"
有一个小问题, Ubuntu 没有 genimage 命令,需要自己编译,如果你编译过 buildroot 可以直接用,如果没有编译过,那么需要自己手动编译一个:
假如tina 的分区文件是 sys_partition.fex:
;---------------------------------------------------------------------------------------------------
; 说明: 脚本中的字符串区分大小写,用户可以修改"="后面的数值,但是不要修改前面的字符串
;---------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------
; 固件下载参数配置
;---------------------------------------------------------------------------------------------------
;***************************************************************************************************
; mbr的大小, 以Kbyte为单位
;***************************************************************************************************
[mbr]
size = 252
;***************************************************************************************************
; 分区配置
;
;
; partition 定义范例:
; [partition] ; //表示是一个分区
; name = USERFS2 ; //分区名称
; size = 16384 ; //分区大小 单位: 扇区.分区表示个数最多2^31 * 512 = 2T
; downloadfile = "123.fex" ; //下载文件的路径和名称,可以使用相对路径,相对是指相对于image.cfg文件所在分区。也可以使用绝对路径
; keydata = 1 ; //私有数据分区,重新量产数据将不丢失
; encrypt = 1 ; //采用加密方式烧录,将提供数据加密,但损失烧录速度
; user_type = ? ; //私有用法
; verify = 1 ; //要求量产完成后校验是否正确
;
; 注:1、name唯一, 不允许同名
; 2、name最大12个字符
; 3、size = 0, 将创建一个无大小的空分区
; 4、align to logical block size(504 sectors), leb size = 2*(1 nand phy block size - 1 phy page size)
;***************************************************************************************************
[partition_start]
[partition]
name = boot-resource
size = 8064
downloadfile = "boot-resource.fex"
user_type = 0x8000
[partition]
name = env
size = 504
downloadfile = "env.fex"
user_type = 0x8000
[partition]
name = env-redund
size = 504
downloadfile = "env.fex"
user_type = 0x8000
[partition]
name = boot
size = 20664
downloadfile = "boot.fex"
user_type = 0x8000
[partition]
name = rootfs
; size = 40824
size = 131072
downloadfile = "rootfs.fex"
user_type = 0x8000
[partition]
name = dsp0
size = 1008
downloadfile = "dsp0.fex"
user_type = 0x8000
[partition]
name = recovery
size = 28224
;downloadfile = "recovery.fex"
user_type = 0x8000
那么我们可以生成对应的 genimage.cfg 文件:
image whycanpi0a_d1s_sdcard.img {
hdimage{
gpt = true
gpt-location = 1M
}
partition boot0 {
in-partition-table = "no"
image = "boot0_sdcard.fex"
offset = 8K
}
partition boot-packages {
in-partition-table = "no"
image = "boot_package.fex"
offset = 16400K
}
partition boot-resource {
partition-type = 0xC
image = "boot-resource.fex"
size = 4032K
}
partition env {
image = "env.fex"
size = 252K
}
partition env-redund {
image = "env.fex"
size = 252K
}
partition boot {
image = "boot.fex"
size = 10332K
}
partition rootfs {
image = "rootfs.fex"
size = 64M
}
partition dsp0 {
image = "dsp0.fex"
size = 504K
}
partition recovery {
image = "recovery.fex"
size = 14112K
}
}
此 genimage.cfg 可以放到 out/d1-mangopi_mq_rgb800x480_gt9xx/image/ 目录。
然后执行:
/opt/D1/buildroot-2021/output/host/bin/genimage --config genimage.cfg --rootpath `mktemp -d` --tmppath `mktemp -d` --inputpath $PWD --outputpath $PWD
然后就可以生成: whycanpi0a_d1s_sdcard.img 文件了,直接把该文件 dd 到 TF卡即可以引导D1s Tina Linux 系统。
经过一番研究,加上学习韦老师的 buildroot 帖子, 研究出了一个genimage打包方法,可以打包成烧录二进制文件,用 dd 命令直接写TF卡即可。
最终生成烧录的 img 文件是通过 scripts/pack_img.sh 的 do_finish()的 dragon命令:
function do_finish()
{
...
if [ -f sys_partition_for_dragon.fex ]; then
do_dragon image.cfg sys_partition_for_dragon.fex
else
do_dragon image.cfg
fi
...
}
function do_dragon()
{
local partition_file_name="x$2"
if [ $partition_file_name != "x" ]; then
echo "===================================="
echo "show \"$2\" message"
show_partition_message $2
fi
do_check_pack_file
dragon $@
if [ $? -eq 0 ]; then
if [ -e ${IMG_NAME} ]; then
mv ${IMG_NAME} ../${IMG_NAME}
echo "----------${image_instruction}----------"
echo '----------image is at----------'
echo -e '\033[0;31;1m'
echo ${ROOT_DIR}/${IMG_NAME}
echo -e '\033[0m'
if [ $PACK_HOOK ]
then
$PACK_HOOK ${ROOT_DIR}/${IMG_NAME}
fi
fi
fi
# you can add scripts/.hooks/post-dragon to do something after dragon
# for example, you can copy img to another dir, add post-dragon like this:
#
# echo "==========post-dragon========"
# cp ${ROOT_DIR}/${IMG_NAME} ~/myimgs/
# echo "==========post-dragon done========"
#
[ -e ${PACK_TOPDIR}/scripts/.hooks/post-dragon ] &&
source ${PACK_TOPDIR}/scripts/.hooks/post-dragon
}
以芒果派麻雀为例, pack 命令执行之后,最终生成了 out/d1-mangopi_mq_rgb800x480_gt9xx/tina_d1-mangopi_mq_rgb800x480_gt9xx_uart0.img 烧录文件。
这个*.img文件可以通过 PhoenixSuit 在 Windows 通过USB线烧录,或者通过 LiveSuit 在 Linux 烧录。也可以在Windows用 PhoenixCard.exe 烧到卡上,但是Linux却没有对应的烧卡软件,尴尬了。。。
芒果派麻雀到手试玩
https://bbs.aw-ol.com/topic/791/share/26
/etc/init.d/boot 脚本添加:
mount -o remount -o rw /dev/root
再参考这个帖子:
D1哪吒开发板wifi连接出错,这是什么情况?
https://bbs.aw-ol.com/topic/427/share/14
这个问题我也遇到了,把根文件系统格式改成可读写的 ext4 解决了:
https://bbs.aw-ol.com/topic/297/固件发布-d1哪吒hdmi测试固件20210804-开机hdmi就有小企鹅启动logo/3
这里面有配置文件,跟着编译一次即可。
这个固件本来是用于spi nand,所以要改一下:
在D1的tina上整上overlayfs
https://bbs.aw-ol.com/topic/1000/share/6
实在抱歉,由于这批液晶的FPC老化比较严重,年后大约只能提供20片左右焊好的板子(带液晶,不带RTL8723DS,不带FLASH,不带电池)给各位朋友了。
排线焊接之后,可能由于高温,导致本来就很脆的FPC断路更严重了。
据说openocd没法调试d1,只能用全套平头哥的工具:
平头哥 cklink 试一试 JTAG 调试
https://whycan.com/t_6623.html#p73500
@xmadcc
不过还是有办法曲线救国的,可以用韦老师的 buildroot sdk生成烧录文件。
全志官方SDK编译出来的 img 文件,
windows用 phoenixsuit.exe 通过usb烧录,
linux用 livesuit 通过 usb 烧录。
烧卡只能用 phoenixcard 烧录到 TF卡,
这个烧卡软件软件没有 linux 版本。
led_count 改为 4:
&ledc {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&ledc_pins_a>;
pinctrl-1 = <&ledc_pins_b>;
led_count = <4>;
output_mode = "GRB";
reset_ns = <84>;
t1h_ns = <800>;
t1l_ns = <320>;
t0h_ns = <300>;
t0l_ns = <800>;
wait_time0_ns = <84>;
wait_time1_ns = <84>;
wait_data_time_ns = <600000>;
status = "okay";
};
设置红绿蓝三色灯:
echo 20 > /sys/class/leds/sunxi_led0r/brightness
echo 20 > /sys/class/leds/sunxi_led1g/brightness
echo 20 > /sys/class/leds/sunxi_led2r/brightness
echo 20 > /sys/class/leds/sunxi_led3b/brightness
root@TinaLinux:/# insmod /lib/modules/5.4.61/mcp251x.ko
CPU: 0 PID: 182 Comm: insmod Not tainted 5.4.61 #14
Call Trace:
[<ffffffe0000290a8>] 0xffffffe0000290a8
[<ffffffe000029260>] 0xffffffe000029260
[<ffffffe000439cc2>] 0xffffffe000439cc2
[<ffffffdf806543c0>] 0xffffffdf806543c0
[<ffffffe0002659b0>] 0xffffffe0002659b0
[<ffffffe000220b3e>] 0xffffffe000220b3e
[<ffffffe000220dc4>] 0xffffffe000220dc4
[<ffffffe000220f10>] 0xffffffe000220f10
[<ffffffe000220fb6>] 0xffffffe000220fb6
[<ffffffe00021f23e>] 0xffffffe00021f23e
[<ffffffe000220500>] 0xffffffe000220500
[<ffffffe000220086>] 0xffffffe000220086
[<ffffffe0002216a0>] 0xffffffe0002216a0
[<ffffffe000265914>] 0xffffffe000265914
[<ffffffdf80658020>] 0xffffffdf80658020
[<ffffffe000027042>] 0xffffffe000027042
[<ffffffe00006d972>] 0xffffffe00006d972
[<ffffffe00006eaaa>] 0xffffffe00006eaaa
[<ffffffe00006ecd2>] 0xffffffe00006ecd2
[<ffffffe00006ed76>] 0xffffffe00006ed76
[<ffffffe000027e06>] 0xffffffe000027e06
================ mcp251x_can_probe:1005 ==================
================ mcp251x_can_probe:1008 ==================
================ mcp251x_can_probe:1014 freq=20000000
================ mcp251x_can_probe:1018 freq=20000000
================ mcp251x_can_probe:1023 ==================
================ mcp251x_can_probe:1029 ==================
================ mcp251x_can_probe:1052 ==================
mcp251x spi1.0: setup mode 0, 8 bits/w, 500000 Hz max --> 0
================ mcp251x_can_probe:1071 ==================
================ mcp251x_can_probe:1079 ==================
================ mcp251x_can_probe:1087 ==================
================ mcp251x_can_probe:1095 ==================
================ mcp251x_hw_reset:586 ==================
================ mcp251x_spi_trans:278 ret=0==================
================ mcp251x_spi_trans:280 ret=0==================
================ mcp251x_spi_trans:282 ret=0==================
是不是dts有问题?
按住 s 上电启动可以进入u-boot命令行,输入两行命令可以把PD22拉高:
mw 0x02000098 0x01222222
mw 0x020000A0 0x00400000
root@TinaLinux:/# devmem 0x02000098
0x05222222
进入Linux 之后,读出 PD22_SELECT 是 0101,
刚好是 PWM 复用。
u-boot 命令行读 PD_CFG2 的寄存器内容是 :
=> mm 0x02000098
02000098: 0f222222
说明 PD22_SELECT 是 1111 (IO disable)
那是dts配错了,还是u-boot有 bug 呢?
然后死马做活马医, 改成gpio配置背光:
&lcd0 {
...
lcd_gpio_1 = <&pio PD 22 1 0 3 1>;
...
}
然后 lcd驱动里面:
static void LCD_power_on(u32 sel)
{
sunxi_lcd_pin_cfg(sel, 1);
sunxi_lcd_delay_ms(20);
sunxi_lcd_gpio_set_value(sel, 1, 1);//backlight on
}
这样背光正常了。
uboot-board.dts:
&pwm7_pin_a {
pins = "PD22";
function = "pwm7";
allwinner,muxsel = <5>;
drive-strength = <10>;
bias-pull-up;
};
&pwm7_pin_b {
pins = "PD22";
muxsel = <0>;
function = "gpio_in";
};
&pwm7 {
pinctrl-names = "active", "sleep";
pinctrl-0 = <&pwm7_pin_a>;
pinctrl-1 = <&pwm7_pin_b>;
status = "okay";
};
或者:
&pio {
pwm7_pin_a: pwm7@0 {
pins = "PD22";
function = "pwm7";
drive-strength = <10>;
bias-pull-up;
};
pwm7_pin_b: pwm7@1 {
pins = "PD22";
function = "gpio_in";
};
};
&pwm7 {
pinctrl-names = "active", "sleep";
pinctrl-0 = <&pwm7_pin_a>;
pinctrl-1 = <&pwm7_pin_b>;
status = "okay";
};
LCD0配置:
&lcd0 {
...
lcd_backlight = <100>;
lcd_pwm_used = <1>;
lcd_pwm_ch = <7>;
lcd_pwm_freq = <9000>;
lcd_pwm_pol = <1>;
...
}
日志:
U-Boot 2018.05-g0a88ac9-dirty-config-dirty (Jan 14 2022 - 08:49:40 +0800) Allwinner Technology
[00.273]DRAM: 64 MiB
[00.275]Relocation Offset is: 01f02000
[00.279]secure enable bit: 0
[00.282]CPU=1008 MHz,PLL6=600 Mhz,AHB=200 Mhz, APB1=100Mhz MBus=300Mhz
[00.288]flash init start
[00.290]workmode = 0,storage type = 1
[00.294][mmc]: mmc driver ver uboot2018:2021-04-16 14:23:00-1
[00.299][mmc]: get sdc_type fail and use default host:tm1.
[00.306][mmc]: can't find node "mmc0",will add new node
[00.310][mmc]: fdt err returned <no error>
[00.314][mmc]: Using default timing para
[00.318][mmc]: SUNXI SDMMC Controller Version:0x50310
[00.336][mmc]: card_caps:0x3000000a
[00.339][mmc]: host_caps:0x3000003f
[00.343]sunxi flash init ok
[00.345]line:714 init_clocks
__clk_init: clk pll_periph0x2 already initialized
register fix_factor clk error
[00.355]drv_disp_init
request pwm success, pwm7:pwm7:0x2000c00.
[00.370]###LCD init
[00.372]drv_disp_init finish
[00.374]boot_gui_init:start
[00.377]set disp.dev2_output_type fail. using defval=0
[00.382]I80_HX8537 NO info[00.386]I80_HX8537 POWER ON[00.408]boot_gui_init:finish
[00.578]I80_HX8537 INITED ![00.757]hx8357 inited[00.759]hx8357 inited[00.761]hx8357 inited[00.763]hx8357 inited[00.764]hx8357 inited[00.766]hx8357 initedpartno erro : can't find partition bootloader
54 bytes read in 2 ms (26.4 KiB/s)
[00.784]bmp_name=bootlogo.bmp size 307254
307254 bytes read in 15 ms (19.5 MiB/s)
[00.823]Loading Environment from SUNXI_FLASH... OK
[00.843]out of usb burn from boot: not need burn key
root_partition is rootfs
set root to /dev/mmcblk0p5
[00.853]update part info
[00.857]update bootcmd
[00.860]change working_fdt 0x42ac1da8 to 0x42aa1da8
[00.882]update dts
Hit any key to stop autoboot: 0
FDT ERROR:get muxsel err returned FDT_ERR_INTERNAL
sunxi_pwm_pin_set_state, fdt_set_all_pin, ret=-1
[00.929]I80_HX8537 BL OPEN ![00.932]LCD open finish
Android's image name: d1-whycanpi0a_hx
No reserved memory region found in source FDT
[01.314]
Starting kernel ...
都是这个错误:
FDT ERROR:get muxsel err returned FDT_ERR_INTERNAL
sunxi_pwm_pin_set_state, fdt_set_all_pin, ret=-1
引脚设置复用失败?
开源 D1s M.2 核心板 + 底板:
底板: D1s-Zero.zip
转载地址:
https://whycan.com/t_7676.html
开源D1s核心板+底板
原作者: MajorTom
@lengyueyan
这个屏不方便加触摸呢。
除LCD 和 RTL8723DS 、SPI FLASH 外, 基本全贴了:
(1850 + 400 + 37*50) / 50 = 82 元
板材费 400元
37*50 寄料
不好意思, 上面搞错了, 看这个↓
【极简操作】使用builroot 2021一键编译生成D1 nezha 系统镜像!
https://bbs.aw-ol.com/topic/171/share/48
如果您是用 ubuntu,那么命令行直接执行: apt-get install make 就可以了。
请问如何用命令行调整背光亮度?
https://bbs.aw-ol.com/topic/906/share/5
就是用韦老师这个 buildroot 勾选Qt5就可以了
终于找到了, 可以用命令行调整背光亮度了:
mount -t debugfs none /sys/kernel/debug;
cd /sys/kernel/debug/dispdbg;
#背光0
echo lcd0 > name; echo setbl > command; echo 0 > param; echo 1 > start
#背光255
echo lcd0 > name; echo setbl > command; echo 255 > param; echo 1 > start
需要在 kernel 勾上如下选项:
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_VIDEO_DEV=y
CONFIG_VIDEO_V4L2=y
CONFIG_VIDEO_V4L2_I2C=y
CONFIG_MEDIA_USB_SUPPORT=y
CONFIG_USB_VIDEO_CLASS=y
参考:
想请问怎么在d1开发板上通过摄像头实时输出图像到显示器上
https://bbs.aw-ol.com/topic/197/share/11
问了一个大佬,给我的答复是:
打开一个/dev/disp之后,获取文件描述符fb,不要关闭fb
如果/dev/disp打开5个,关闭4次正常,如果再关闭一次,驱动会调用清图层操作。
cat /sys/class/disp/disp/attr/sys为 空,说明没有一个图层
然后我把 close(fd) 屏蔽起来,执行完发现仍然黑屏。
可能只能用 ioctl 命令控制背光,但是我测试了一下,并没有什么作用,而且屏幕都黑了。
https://blog.csdn.net/weixin_43772810/article/details/111617402
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
//disp驱动部分命令(与背光相关,内核目录:/include/video/sunxi_display2.h)
#define DISP_LCD_SET_BRIGHTNESS 0x102
#define DISP_LCD_GET_BRIGHTNESS 0x103
#define DISP_LCD_BACKLIGHT_ENABLE 0x104
#define DISP_LCD_BACKLIGHT_DISABLE 0x105
#define BRIGHTNESS_MAX 255 //最大亮度
int main(int argc, char *argv[])
{
int fd;
unsigned long args[3]={0};
/*打开disp设备文件*/
fd = open("/dev/disp", O_RDWR, 0);
if(fd < 0)
{
printf("open /dev/disp failed.\n");
return -1;
}
/*打印旧的背光值*/
args[0] = 0; //选择fb0(lcd0)
printf("the old lcd%d brightness is %d\n",\
args[0],ioctl(fd,DISP_LCD_GET_BRIGHTNESS,args));
if(argc != 2)
{
printf("ERROR: the right format: ./app [brightness]\n");
return -1;
}
int brightness = atoi(argv[1]);
if(brightness < 0 || brightness > BRIGHTNESS_MAX)
{
printf("ERROR: the range is 0 to %d\n",BRIGHTNESS_MAX);
return -1;
}
/*参数数组填参*/
args[0] = 0;
args[1] = brightness; //背光值(本人配置里最高为255)
args[2] = 0; //暂时用不到的参数
ioctl(fd,DISP_LCD_SET_BRIGHTNESS,args);
printf("the new lcd%d brightness is %d\n",\
args[0],ioctl(fd,DISP_LCD_GET_BRIGHTNESS,args));
close(fd);
return 0;
}