我准备使用buildroot-tiny200 (F1C100/200s) 开发包近期更新内容 * 已支持DVP摄像头 *,支持SPI NAND 给我的F1C200S小板编译Linux固件,遇到一些问题,特开贴请教。
1,我编译的固件烧录到芯片,串口没有信息输出,不知道是不是与DTS文件中的 serial0 = &uart1 有关,为什么这里要把uart1给serial0;
/dts-v1/;
#include "suniv-f1c100s.dtsi"
#include <dt-bindings/gpio/gpio.h>
/ {
model = "Allwinner F1C100s Generic Device";
compatible = "allwinner,suniv-f1c100s",
"allwinner,suniv";
aliases {
serial0 = &uart1;
spi0 = &spi0;
};
chosen {
stdout-path = "serial0:115200n8";
};
};
2, 在uboot.env中为什么这些值都那么大?
sf_size=0x1000000
sf_splash_offset=0x80000
sf_kernel_offset=0x100000
sf_kernel_length=0x500000
splash_addr=0x80000000
splash_length=0x80000
kernel_addr_r=0x81000000
bootm_size=0x1800000
按照下面这行,那bootcomv好像不适合SPI Flash ,也不知道自己的理解对不对。
nor_boot=echo "Booting from SPI-NOR..."; sf probe; sf read ${kernel_addr_r} ${sf_kernel_offset} ${sf_kernel_length};
为了方便我把/board/allwinner/generic/uboot.env文件的内容贴出来;
mmc_kernel=kernel.itb
mmc_splash=splash.bmp
mmc_ubootpart=1
mmc_bootpart=2
mmc_rootpart=3
nand_size=0x8000000
nand_splash_offset=0x80000
nand_kernel_offset=0x100000
nand_kernel_length=0x500000
sf_size=0x1000000
sf_splash_offset=0x80000
sf_kernel_offset=0x100000
sf_kernel_length=0x500000
splash_addr=0x80000000
splash_length=0x80000
kernel_addr_r=0x81000000
bootm_size=0x1800000
stderr=serial
stdin=serial
stdout=serial
boot_slot_0=empty
boot_slot_1=empty
scan_boot_slot_0=if mmc dev 0; then setenv boot_slot_0 mmc0; fi;
scan_boot_slot_1=if mmc dev 1; then setenv boot_slot_1 mmc1; else if sf probe; then setenv boot_slot_1 spi-nor; else if mtd list; then setenv boot_slot_1 spi-nand; fi; fi; fi;
scan_boot_slot=run scan_boot_slot_0; run scan_boot_slot_1; echo "========================="; echo "Boot Device: ${boot_device}"; echo "Boot Slot 0: ${boot_slot_0}"; echo "Boot Slot 1: ${boot_slot_1}"; echo "=========================";
dfu_wait_timeout=3
mmc_dfu_info=setenv dfu_alt_info "all raw 0x0 0x37000;u-boot raw 0x10 0x7f0;boot part ${dfu_mmc_dev} ${mmc_bootpart};rom part ${dfu_mmc_dev} ${mmc_rootpart};kernel fat ${dfu_mmc_dev} ${mmc_bootpart}"
nand_dfu_info=setenv dfu_alt_info "all raw 0x0 ${nand_size};u-boot raw 0x0 0x80000;kernel raw ${nand_kernel_offset} ${nand_kernel_length};rom raw 0x600000 0x2a00000;vendor raw 0x3000000 0x1000000"
nor_dfu_info=setenv dfu_alt_info "all raw 0x0 ${sf_size};u-boot raw 0x0 0x80000;kernel raw ${sf_kernel_offset} ${sf_kernel_length};rom raw 0x600000 0x700000"
dfu_mmc=mmc dev ${dfu_mmc_dev}; run mmc_dfu_info; dfu 0 mmc ${dfu_mmc_dev} ${dfu_wait_timeout};
dfu_nand=run nand_dfu_info; dfu 0 mtd spi-nand0 ${dfu_wait_timeout};
dfu_nor=run nor_dfu_info; dfu 0 sf 0:0 ${dfu_wait_timeout};
dfu_boot=if test "${boot_slot_1}" = "spi-nand"; then echo "DFU waiting on SPI-NAND..."; run dfu_nand; fi; if test "${boot_slot_1}" = "spi-nor"; then echo "DFU waiting on SPI-NOR..."; run dfu_nor; fi; if test "${boot_slot_1}" = "mmc1"; then echo "DFU waiting on MMC1..."; setenv dfu_mmc_dev 1; run dfu_mmc; fi; if test "${boot_slot_1}" = "empty" && test "${boot_slot_0}" = "mmc0"; then echo "DFU waiting on MMC0..."; setenv dfu_mmc_dev 0; run dfu_mmc; fi;
fel_boot=echo "Booting from FEL..."; bootm ${kernel_addr_r};
mmc_boot=mmc dev ${devnum}; echo "Booting from MMC${devnum}..."; load mmc ${devnum}:${mmc_bootpart} $kernel_addr_r ${mmc_kernel}; bootm ${kernel_addr_r};
nor_nand_boot=if test "${boot_slot_1}" = "spi-nor"; then run nor_boot; fi; if test "${boot_slot_1}" = "spi-nand"; then run nand_boot; fi;
nor_boot=echo "Booting from SPI-NOR..."; sf probe; sf read ${kernel_addr_r} ${sf_kernel_offset} ${sf_kernel_length}; bootm ${kernel_addr_r};
nand_boot=echo "Booting from SPI-NAND..."; mtd read spi-nand0 ${kernel_addr_r} ${nand_kernel_offset} ${nand_kernel_length}; bootm ${kernel_addr_r};
bootcmd_fel=if test "${boot_device}" = "fel"; then run fel_boot; fi;
bootcmd_dfu=if test "${boot_device}" != "mmc0" || test "${boot_slot_1}" = "empty"; then run dfu_boot; fi;
bootcmd_mmc0=if test "${boot_device}" = "mmc0"; then devnum=0; run mmc_boot; fi;
bootcmd_mmc1=if test "${boot_device}" = "mmc1"; then devnum=1; run mmc_boot; fi;
bootcmd_spi=if test "${boot_device}" = "spi"; then run nor_nand_boot; fi;
boot_targets=fel dfu mmc0 mmc1 spi loopdfu
splash_nor=sf probe; sf read ${splash_addr} ${sf_splash_offset} ${splash_length};
splash_nand=mtd read spi-nand0 ${splash_addr} ${nand_splash_offset} ${splash_length};
splash_spi=if test "${boot_slot_1}" = "spi-nor"; then run splash_nor; fi; if test "${boot_slot_1}" = "spi-nand"; then run splash_nand; fi;
splash_mmc=load mmc ${devnum}:${mmc_bootpart} ${splash_addr} ${mmc_splash};
show_splash=run splash_${boot_device}; bmp display ${splash_addr}; gpio set ${lcd_bl_pin};
distro_bootcmd=run scan_boot_slot; run show_splash; for target in ${boot_targets}; do run bootcmd_${target}; done
离线
1. 可能是把 uart1 连接到 /dev/ttyS0 这个设备,纯属猜测。
2. 遍历所有启动介质,哪个正常就从那个介质启动
2,这项感觉用这几个参数,超出了16Mspiflash的空间了。是参数错了吗
离线
没有超过,_addr 是内存地址, 起始地址是 0x8000,0000
offset 是flash 偏移地址,取值范围 0 - 16M
在buildroot-tiny200\board\widora\mangopi\r3\devicetree\linux\devicetree.dts文件里spi-nor、spi-nand的分区配置是不一样的,而uboot.env的这个文件里只有一套分区地址设置,不知道是不是这块有问题。我按照spi-nand的参数配置了spi-nor 的分区,一样没启动,不知道为什么。
&spi0 {
status = "okay";
spi-nor@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "winbond,w25q128", "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <50000000>;
status = "disabled";
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x000000 0x70000>;
read-only;
};
partition@1 {
label = "kernel";
reg = <0x70000 0x590000>;
read-only;
};
partition@2 {
label = "rom";
reg = <0x600000 0x700000>;
read-only;
};
partition@3 {
label = "overlay";
reg = <0xd00000 0x300000>;
};
};
};
spi-nand@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "spi-nand";
reg = <0>;
spi-max-frequency = <50000000>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x000000 0x100000>;
read-only;
};
partition@1 {
label = "kernel";
reg = <0x100000 0x500000>;
read-only;
};
partition@2 {
label = "rom";
reg = <0x600000 0x2a00000>;
read-only;
};
partition@3 {
label = "vendor";
reg = <0x3000000 0x1000000>;
};
partition@4 {
label = "overlay";
reg = <0x4000000 0x3000000>;
};
};
};
};
离线
@哇酷小二
再问下,这个SDK里,uboot.defconfig、linux.defconfig是什么时候写到对应的.config文件中的?
执行 make widora_mangopi_r3_defconfig 的时候,并没有把uboot.defconfig、linux.defconfig连带着写了。
离线
都在这个文件里面:widora_mangopi_r3_defconfig
当执行 make widora_mangopi_r3_defconfig,就把这个文件复制到 .config
我之前测试好像是没有写,而且报出来的Log里也没有提到。
make widora_mangopi_r3_defconfig
mkdir -p /home/zl/f1c200s/buildroot-tiny200/output/build/buildroot-config/lxdialog
PKG_CONFIG_PATH="" make CC="/usr/bin/gcc" HOSTCC="/usr/bin/gcc" \
obj=/home/zl/f1c200s/buildroot-tiny200/output/build/buildroot-config -C support/kconfig -f Makefile.br conf
/usr/bin/gcc -DCURSES_LOC="<ncurses.h>" -DLOCALE -I/home/zl/f1c200s/buildroot-tiny200/output/build/buildroot-config -DCONFIG_=\"\" -MM *.c > /home/zl/f1c200s/buildroot-tiny200/output/build/buildroot-config/.depend 2>/dev/null || :
/usr/bin/gcc -DCURSES_LOC="<ncurses.h>" -DLOCALE -I/home/zl/f1c200s/buildroot-tiny200/output/build/buildroot-config -DCONFIG_=\"\" -c conf.c -o /home/zl/f1c200s/buildroot-tiny200/output/build/buildroot-config/conf.o
/usr/bin/gcc -DCURSES_LOC="<ncurses.h>" -DLOCALE -I/home/zl/f1c200s/buildroot-tiny200/output/build/buildroot-config -DCONFIG_=\"\" -I. -c /home/zl/f1c200s/buildroot-tiny200/output/build/buildroot-config/zconf.tab.c -o /home/zl/f1c200s/buildroot-tiny200/output/build/buildroot-config/zconf.tab.o
/usr/bin/gcc -DCURSES_LOC="<ncurses.h>" -DLOCALE -I/home/zl/f1c200s/buildroot-tiny200/output/build/buildroot-config -DCONFIG_=\"\" /home/zl/f1c200s/buildroot-tiny200/output/build/buildroot-config/conf.o /home/zl/f1c200s/buildroot-tiny200/output/build/buildroot-config/zconf.tab.o -o /home/zl/f1c200s/buildroot-tiny200/output/build/buildroot-config/conf
rm /home/zl/f1c200s/buildroot-tiny200/output/build/buildroot-config/zconf.tab.c
#
# configuration written to /home/zl/f1c200s/buildroot-tiny200/.config
#
离线
我在mangopi 的官网下载了一个sysimage-nor的镜像,烧到我的板上,也是没有跑起来系统,串口没有Log,液晶有显示uboot的log,进入了Linux系统,不知道为什么液晶没有显示。
不过可以确认的是,他的log不是从uart0输出的。
所以如果再搞两天还是搞不定这个的话,只能去试试mangopi R3的那版buildroot
改正一下:
看到了,原来mangopi R1的串口是uart0,R3的就默认是uart1了。
最近编辑记录 pldjn_V3S (2023-02-12 00:23:31)
离线
@哇酷小二
修改F1C200S的uboot,console接口,都要改哪些 地方,我按照坛里的帖子修改了几个地,还是没有输出到uart0上。第3项我没找到声明的地方,不知道是什么原因;
1, board\widora\mangopi\r3\devicetree\uboot\suniv-f1c100s-generic.dts
aliases {
serial0 = &uart0;
spi0 = &spi0;
};
chosen {
stdout-path = "serial0:115200n8";
};
&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_pins_a>;
status = "okay";
};
&uart1 {
pinctrl-names = "default";
pinctrl-0 = <&uart1_pins_a>;
status = "okay";
};
2,board\allwinner\suniv-f1c100s\devicetree\uboot\suniv-f1c100s.dtsi
uart0_pins_a: uart-pins-pe {
pins = "PE0", "PE1";
function = "uart0";
};
uart1_pins_a: uart1-pins-pa {
pins = "PA2", "PA3";
function = "uart1";
};
uart0: serial@1c25000 {
compatible = "snps,dw-apb-uart";
reg = <0x01c25000 0x400>;
interrupts = <1>;
reg-shift = <2>;
reg-io-width = <4>;
clocks = <&ccu CLK_BUS_UART0>;
resets = <&ccu RST_BUS_UART0>;
status = "disabled";
};
uart1: serial@1c25400 {
compatible = "snps,dw-apb-uart";
reg = <0x01c25400 0x400>;
interrupts = <2>;
reg-shift = <2>;
reg-io-width = <4>;
clocks = <&ccu CLK_BUS_UART1>;
resets = <&ccu RST_BUS_UART1>;
status = "disabled";
};
3, 这块未找到,在文件/output/build/uboot-2020.07/include/configs/sunxi-common.h中没有找到CONFIG_CONS_INDEX这块的定义。
#define CONFIG_CONS_INDEX 1 /* UART0 */
4,uboot的.config中添加
CONFIG_BOOTARGS="console=ttyS0,115200 rootwait init=/preinit root=/dev/mtdblock2 rootfstype=squashfs overlayfsdev=/dev/mtdblock3"
最近编辑记录 pldjn_V3S (2023-02-12 15:42:04)
离线
离线
研究了2天时间,不如你一句话,唉,要学的太多。
离线
@pldjn_V3S
uboot 串口
改这个:
board/widora/mangopi/r3/uboot.defconfigCONFIG_CONS_INDEX=2
然后删除uboot的编译目录:
rm output/build/uboot-2020.07/ -rf重新make即可。
这样改过以后,确实有了log输出,uboot的前一半有了,后一半没出来。后一半是不是需要修改设备树;一会再去修改了试试先。
[15:46:31:768] ␍␊
[15:46:31:768] U-Boot SPL 2020.07 (Feb 13 2023 - 14:44:13 +0800)␍␊
[15:46:31:803] DRAM: 64 MiB␍␊
[15:46:31:803] Trying to boot from MMC1␍␊
[15:46:31:803] Card did not respond to voltage select!␍␊
[15:46:31:803] spl: mmc init failed with error: -95␍␊
[15:46:31:804] Trying to boot from MMC2␍␊
[15:46:31:818] Card did not respond to voltage select!␍␊
[15:46:31:820] spl: mmc init failed with error: -95␍␊
[15:46:31:823] Trying to boot from sunxi SPI␍␊
离线
离线
@pldjn_V3S
对,改设备树。改完设备树, 有一个快速编译的方法:
rm output/build/linux-5.4.66/.stamp_built -rf && make
这样就能重新生成linux 设备树二进制文件了.
uboot亦然.
试了,修改 board\widora\mangopi\r3\devicetree\uboot\suniv-f1c100s-generic.dts的下面这块,改成serial0 = &uart0;就有了;Linux的还是没有,到了Starting kernel ...␍␊就停了。
aliases {
serial0 = &uart0;
spi0 = &spi0;
};
chosen {
stdout-path = "serial0:115200n8";
};
Linux 需要修改 ./board/widora/mangopi/r3/devicetree/linux/devicetree.dts ,增加下面这块,才会有log输出。
&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_pe_pins>;
status = "okay";
};
最近编辑记录 pldjn_V3S (2023-02-13 17:12:44)
离线
@哇酷小二
修改完,linux没有进shell,不知道是哪个设备出问题了;
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 5.4.99 (zl@ubuntu) (gcc version 8.4.0 (Buildroot -g4a14fb0-dirty)) #1 Mon Feb 13 14:46:20 CST 2023
[ 0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f
[ 0.000000] CPU: VIVT data cache, VIVT instruction cache
[ 0.000000] OF: fdt: Machine model: Widora MangoPi R3
[ 0.000000] Memory policy: Data cache writeback
[ 0.000000] cma: Reserved 16 MiB at 0x82c00000
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 15883
[ 0.000000] Kernel command line: console=ttyS0,115200 earlyprintk rootwait init=/preinit root=/dev/mmcblk0p3 net.ifnames=0 vt.global_cursor_default=0
[ 0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes, linear)
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] Memory: 37232K/64036K available (6144K kernel code, 248K rwdata, 1676K rodata, 1024K init, 225K bss, 10420K reserved, 16384K cma-reserved)
[ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] random: get_random_bytes called from start_kernel+0x254/0x444 with crng_init=0
[ 0.000049] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[ 0.000143] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[ 0.000901] Console: colour dummy device 80x30
[ 0.001007] Calibrating delay loop... 203.16 BogoMIPS (lpj=1015808)
[ 0.070265] pid_max: default: 32768 minimum: 301
[ 0.070778] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.070821] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.072678] CPU: Testing write buffer coherency: ok
[ 0.074829] Setting up static identity map for 0x80100000 - 0x80100058
[ 0.076136] devtmpfs: initialized
[ 0.087867] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.087933] futex hash table entries: 256 (order: -1, 3072 bytes, linear)
[ 0.092160] pinctrl core: initialized pinctrl subsystem
[ 0.094857] NET: Registered protocol family 16
[ 0.098552] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.100885] cpuidle: using governor menu
[ 0.142142] SCSI subsystem initialized
[ 0.142527] usbcore: registered new interface driver usbfs
[ 0.142688] usbcore: registered new interface driver hub
[ 0.142851] usbcore: registered new device driver usb
[ 0.143347] mc: Linux media interface: v0.10
[ 0.143478] videodev: Linux video capture interface: v2.00
[ 0.143595] pps_core: LinuxPPS API ver. 1 registered
[ 0.143614] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 0.143676] PTP clock support registered
[ 0.144725] ion_parse_dt_heap_common: id 4 type 4 name cma align 1000
[ 0.145608] Advanced Linux Sound Architecture Driver Initialized.
[ 0.147947] clocksource: Switched to clocksource timer
[ 0.149770] simple-framebuffer 83e89000.framebuffer: framebuffer at 0x83e89000, 0x177000 bytes, mapped to 0x(ptrval)
[ 0.149830] simple-framebuffer 83e89000.framebuffer: format=x8r8g8b8, mode=800x480x32, linelength=3200
[ 0.176789] Console: switching to colour frame buffer device 100x30
[ 0.202033] simple-framebuffer 83e89000.framebuffer: fb0: simplefb registered!
[ 0.232698] thermal_sys: Registered thermal governor 'step_wise'
[ 0.233466] NET: Registered protocol family 2
[ 0.235049] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
[ 0.235132] TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.235195] TCP bind hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.235246] TCP: Hash tables configured (established 1024 bind 1024)
[ 0.235575] UDP hash table entries: 256 (order: 0, 4096 bytes, linear)
[ 0.235655] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear)
[ 0.236210] NET: Registered protocol family 1
[ 0.238850] NetWinder Floating Point Emulator V0.97 (double precision)
[ 0.240708] Initialise system trusted keyrings
[ 0.241361] workingset: timestamp_bits=30 max_order=14 bucket_order=0
[ 0.263449] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.264071] jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
[ 0.375350] Key type asymmetric registered
[ 0.375393] Asymmetric key parser 'x509' registered
[ 0.375582] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
[ 0.375609] io scheduler mq-deadline registered
[ 0.375626] io scheduler kyber registered
[ 0.391076] suniv-f1c100s-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[ 0.414967] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled
[ 0.421314] suniv-f1c100s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pe not found, using dummy regulator
[ 0.422577] printk: console [ttyS0] disabled
[ 0.442902] 1c25000.serial: ttyS0 at MMIO 0x1c25000 (irq = 26, base_baud = 6250000) is a 16550A
[ 0.906327] printk: console [ttyS0] enabled
[ 0.911715] suniv-f1c100s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pa not found, using dummy regulator
[ 0.943705] 1c25400.serial: ttyS1 at MMIO 0x1c25400 (irq = 27, base_baud = 6250000) is a 16550A
[ 0.963598] SCSI Media Changer driver v0.25
[ 0.969686] suniv-f1c100s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pc not found, using dummy regulator
[ 0.988383] random: fast init done
[ 1.378267] spi-nand: probe of spi0.0 failed with error -110
[ 1.384516] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 1.391166] ehci-platform: EHCI generic platform driver
[ 1.396784] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 1.403168] ohci-platform: OHCI generic platform driver
[ 1.408984] usbcore: registered new interface driver usb-storage
[ 1.415990] usb_phy_generic usb_phy_generic.0.auto: usb_phy_generic.0.auto supply vcc not found, using dummy regulator
[ 1.429918] i2c /dev entries driver
[ 1.434062] suniv-f1c100s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pd not found, using dummy regulator
[ 1.447880] suniv-f1c100s-pinctrl 1c20800.pinctrl: pin PE0 already requested by 1c25000.serial; cannot claim for 1cb0000.csi
[ 1.459240] suniv-f1c100s-pinctrl 1c20800.pinctrl: pin-128 (1cb0000.csi) status -22
[ 1.466901] suniv-f1c100s-pinctrl 1c20800.pinctrl: could not request pin 128 (PE0) from group PE0 on device 1c20800.pinctrl
[ 1.478150] sun4i-csi 1cb0000.csi: Error applying setting, reverse things back
[ 1.485418] sun4i-csi: probe of 1cb0000.csi failed with error -22
[ 1.493059] sunxi-wdt 1c20ca0.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0)
[ 1.503132] suniv-f1c100s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pf not found, using dummy regulator
[ 1.541507] sunxi-mmc 1c0f000.mmc: initialized, max. request size: 16384 KB
[ 1.550975] usbcore: registered new interface driver usbhid
[ 1.556556] usbhid: USB HID core driver
[ 1.560838] sunxi-cedar 1c0e000.video-codec: sunxi cedar version 0.01alpha
[ 1.568222] sunxi-cedar 1c0e000.video-codec: cedar-ve the get irq is 19
[ 1.580324] debugfs: Directory '1c23c00.codec' with parent 'F1C100s Audio Codec' already present!
[ 1.595518] sun4i-codec 1c23c00.codec: Codec <-> 1c23c00.codec mapping ok
[ 1.612276] NET: Registered protocol family 17
[ 1.616838] Key type dns_resolver registered
[ 1.622332] Loading compiled-in X.509 certificates
[ 1.640501] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 1.658588] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 1.665370] ALSA device list:
[ 1.668472] #0: F1C100s Audio Codec
[ 1.672724] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[ 1.681477] cfg80211: failed to load regulatory.db
[ 1.687384] Waiting for root device /dev/mmcblk0p3...
[ 26.798104] random: crng init done
[ 31.848004] vcc3v0: disabling
[ 31.851004] vcc3v3: disabling
[ 31.853970] vcc5v0: disabling
追加:
分析可能是Waiting for root device /dev/mmcblk0p3...有问题,这里怎么是mmcblk0p3,
这块需要修改:./board/widora/mangopi/r3/devicetree/linux/devicetree.dts
//for NAND or Nor
bootargs = "console=ttyS0,115200 rootwait init=/preinit root=/dev/mtdblock2 rootfstype=squashfs overlayfsdev=/dev/mtdblock3";
//for sd-card
//bootargs = "console=ttyS0,115200 earlyprintk rootwait init=/preinit root=/dev/mmcblk0p3";
修改完了还是不行,不知道啥原因。还是卡在这块。
[ 1.674673] ALSA device list:
[ 1.677662] #0: F1C100s Audio Codec
[ 1.682097] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[ 1.690867] cfg80211: failed to load regulatory.db
[ 1.696482] Waiting for root device /dev/mtdblock2...
[ 23.388435] random: crng init done
[ 31.848374] vcc3v0: disabling
[ 31.851375] vcc3v3: disabling
[ 31.854343] vcc5v0: disabling
最近编辑记录 pldjn_V3S (2023-02-13 18:13:04)
离线
改完 uboot.env 要重新编译uboot :
rm output/build/uboot-2020.07/ -rf && make
这个不是从uboot.env文件获取的参数,是直接写死到Linux的设备树文件里的。在这个文件里./board/widora/mangopi/r3/devicetree/linux/devicetree.dts,这里为什么nor是root=/dev/mtdblock2,而sd卡是root=/dev/mmcblk0p3。
//for NAND or Nor
bootargs = "console=ttyS0,115200 rootwait init=/preinit root=/dev/mtdblock2 rootfstype=squashfs overlayfsdev=/dev/mtdblock3";
//for sd-card
//bootargs = "console=ttyS0,115200 earlyprintk rootwait init=/preinit root=/dev/mmcblk0p3";
离线
找到问题原因了,还是Linux的设备树board\widora\mangopi\r3\devicetree\linux\devicetree.dts里 spi-nor@0 要把 status = "disabled" 注掉;
&spi0 {
status = "okay";
spi-nor@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "winbond,w25q128", "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <50000000>;
status = "disabled";
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x000000 0x70000>;
read-only;
};
partition@1 {
label = "kernel";
reg = <0x70000 0x590000>;
read-only;
};
partition@2 {
label = "rom";
reg = <0x600000 0x700000>;
read-only;
};
partition@3 {
label = "overlay";
reg = <0xd00000 0x300000>;
};
};
};
spi-nand@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "spi-nand";
reg = <0>;
spi-max-frequency = <50000000>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x000000 0x100000>;
read-only;
};
partition@1 {
label = "kernel";
reg = <0x100000 0x500000>;
read-only;
};
partition@2 {
label = "rom";
reg = <0x600000 0x2a00000>;
read-only;
};
partition@3 {
label = "vendor";
reg = <0x3000000 0x1000000>;
};
partition@4 {
label = "overlay";
reg = <0x4000000 0x3000000>;
};
};
};
};
在线
全部的log,现在可以进shell了。
U-Boot SPL 2020.07 (Feb 13 2023 - 16:11:47 +0800)
DRAM: 64 MiB
Trying to boot from MMC1
Card did not respond to voltage select!
spl: mmc init failed with error: -95
Trying to boot from MMC2
Card did not respond to voltage select!
spl: mmc init failed with error: -95
Trying to boot from sunxi SPI
U-Boot 2020.07 (Feb 13 2023 - 16:11:47 +0800) Allwinner Technology
CPU: Allwinner F Series (SUNIV)
Model: Allwinner F1C100s Generic Device
DRAM: 64 MiB
MMC: mmc@1c0f000: 0, mmc@1c10000: 1
Setting up a 800x480 lcd console (overscan 0x0)
In: serial
Out: serial
Err: serial
Allwinner mUSB OTG (Peripheral)
Hit any key to stop autoboot: 0
Card did not respond to voltage select!
Card did not respond to voltage select!
SF: Detected w25q128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
=========================
Boot Device: spi
Boot Slot 0: empty
Boot Slot 1: spi-nor
=========================
SF: Detected w25q128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
device 0 offset 0x80000, size 0x80000
SF: 524288 bytes @ 0x80000 Read: OK
Unknown command 'bmp' - try 'help'
gpio - query and control gpio pins
Usage:
gpio <input|set|clear|toggle> <pin>
- input/set/clear/toggle the specified pin
gpio status [-a] [<bank> | <pin>] - show [all/claimed] GPIOs
DFU waiting on SPI-NOR...
musb-hdrc: peripheral reset irq lost!
Booting from SPI-NOR...
SF: Detected w25q128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
device 0 offset 0x100000, size 0x500000
SF: 5242880 bytes @ 0x100000 Read: OK
## Loading kernel from FIT Image at 81000000 ...
Using 'conf@0' configuration
Trying 'kernel@0' kernel subimage
Description: Linux kernel
Type: Kernel Image
Compression: uncompressed
Data Start: 0x810000cc
Data Size: 4309768 Bytes = 4.1 MiB
Architecture: ARM
OS: Linux
Load Address: 0x80000000
Entry Point: 0x80000000
Hash algo: crc32
Hash value: 4bfebdc8
Verifying Hash Integrity ... crc32+ OK
## Loading fdt from FIT Image at 81000000 ...
Using 'conf@0' configuration
Trying 'fdt@0' fdt subimage
Description: Flattened Device Tree blob
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x8141c4b8
Data Size: 15714 Bytes = 15.3 KiB
Architecture: ARM
Hash algo: crc32
Hash value: 9ff3b1b8
Verifying Hash Integrity ... crc32+ OK
Booting using the fdt blob at 0x8141c4b8
Loading Kernel Image
Loading Device Tree to 817f9000, end 817ffd61 ... OK
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 5.4.99 (zl@ubuntu) (gcc version 8.4.0 (Buildroot -g4a14fb0-dirty)) #1 Mon Feb 13 17:40:57 CST 2023
[ 0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f
[ 0.000000] CPU: VIVT data cache, VIVT instruction cache
[ 0.000000] OF: fdt: Machine model: Widora MangoPi R3
[ 0.000000] Memory policy: Data cache writeback
[ 0.000000] cma: Reserved 16 MiB at 0x82c00000
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 15883
[ 0.000000] Kernel command line: console=ttyS0,115200 rootwait init=/preinit root=/dev/mtdblock2 rootfstype=squashfs overlayfsdev=/dev/mtdblock3 net.ifnames=0 vt.global_cursor_default=0
[ 0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes, linear)
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] Memory: 37232K/64036K available (6144K kernel code, 248K rwdata, 1676K rodata, 1024K init, 225K bss, 10420K reserved, 16384K cma-reserved)
[ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] random: get_random_bytes called from start_kernel+0x254/0x444 with crng_init=0
[ 0.000051] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[ 0.000142] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[ 0.000899] Console: colour dummy device 80x30
[ 0.001004] Calibrating delay loop... 203.16 BogoMIPS (lpj=1015808)
[ 0.070267] pid_max: default: 32768 minimum: 301
[ 0.070803] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.070855] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.072831] CPU: Testing write buffer coherency: ok
[ 0.074972] Setting up static identity map for 0x80100000 - 0x80100058
[ 0.076286] devtmpfs: initialized
[ 0.088117] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.088185] futex hash table entries: 256 (order: -1, 3072 bytes, linear)
[ 0.092488] pinctrl core: initialized pinctrl subsystem
[ 0.095188] NET: Registered protocol family 16
[ 0.098948] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.101308] cpuidle: using governor menu
[ 0.142663] SCSI subsystem initialized
[ 0.143037] usbcore: registered new interface driver usbfs
[ 0.143195] usbcore: registered new interface driver hub
[ 0.143354] usbcore: registered new device driver usb
[ 0.143839] mc: Linux media interface: v0.10
[ 0.143964] videodev: Linux video capture interface: v2.00
[ 0.144081] pps_core: LinuxPPS API ver. 1 registered
[ 0.144100] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 0.144157] PTP clock support registered
[ 0.145261] ion_parse_dt_heap_common: id 4 type 4 name cma align 1000
[ 0.146215] Advanced Linux Sound Architecture Driver Initialized.
[ 0.148647] clocksource: Switched to clocksource timer
[ 0.150609] simple-framebuffer 83e89000.framebuffer: framebuffer at 0x83e89000, 0x177000 bytes, mapped to 0x(ptrval)
[ 0.150669] simple-framebuffer 83e89000.framebuffer: format=x8r8g8b8, mode=800x480x32, linelength=3200
[ 0.177459] Console: switching to colour frame buffer device 100x30
[ 0.202721] simple-framebuffer 83e89000.framebuffer: fb0: simplefb registered!
[ 0.233211] thermal_sys: Registered thermal governor 'step_wise'
[ 0.233945] NET: Registered protocol family 2
[ 0.235541] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
[ 0.235629] TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.235686] TCP bind hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.235737] TCP: Hash tables configured (established 1024 bind 1024)
[ 0.236052] UDP hash table entries: 256 (order: 0, 4096 bytes, linear)
[ 0.236117] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear)
[ 0.236669] NET: Registered protocol family 1
[ 0.239606] NetWinder Floating Point Emulator V0.97 (double precision)
[ 0.241436] Initialise system trusted keyrings
[ 0.242048] workingset: timestamp_bits=30 max_order=14 bucket_order=0
[ 0.264106] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.264738] jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
[ 0.382897] Key type asymmetric registered
[ 0.382940] Asymmetric key parser 'x509' registered
[ 0.383117] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
[ 0.383146] io scheduler mq-deadline registered
[ 0.383164] io scheduler kyber registered
[ 0.398379] suniv-f1c100s-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[ 0.422283] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled
[ 0.428416] suniv-f1c100s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pe not found, using dummy regulator
[ 0.429915] printk: console [ttyS0] disabled
[ 0.450248] 1c25000.serial: ttyS0 at MMIO 0x1c25000 (irq = 26, base_baud = 6250000) is a 16550A
[ 0.916781] printk: console [ttyS0] enabled
[ 0.922184] suniv-f1c100s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pa not found, using dummy regulator
[ 0.954121] 1c25400.serial: ttyS1 at MMIO 0x1c25400 (irq = 27, base_baud = 6250000) is a 16550A
[ 0.974026] SCSI Media Changer driver v0.25
[ 0.980097] suniv-f1c100s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pc not found, using dummy regulator
[ 0.993446] spi-nor spi0.0: w25q128 (16384 Kbytes)
[ 0.999616] 4 fixed-partitions partitions found on MTD device spi0.0
[ 1.005979] Creating 4 MTD partitions on "spi0.0":
[ 1.010939] 0x000000000000-0x000000070000 : "u-boot"
[ 1.019746] 0x000000070000-0x000000600000 : "kernel"
[ 1.028301] 0x000000600000-0x000000d00000 : "rom"
[ 1.036923] 0x000000d00000-0x000001000000 : "overlay"
[ 1.046241] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 1.052912] ehci-platform: EHCI generic platform driver
[ 1.058542] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 1.064875] ohci-platform: OHCI generic platform driver
[ 1.070683] usbcore: registered new interface driver usb-storage
[ 1.077734] usb_phy_generic usb_phy_generic.0.auto: usb_phy_generic.0.auto supply vcc not found, using dummy regulator
[ 1.091612] i2c /dev entries driver
[ 1.095769] suniv-f1c100s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pd not found, using dummy regulator
[ 1.109770] suniv-f1c100s-pinctrl 1c20800.pinctrl: pin PE0 already requested by 1c25000.serial; cannot claim for 1cb0000.csi
[ 1.121100] suniv-f1c100s-pinctrl 1c20800.pinctrl: pin-128 (1cb0000.csi) status -22
[ 1.128818] suniv-f1c100s-pinctrl 1c20800.pinctrl: could not request pin 128 (PE0) from group PE0 on device 1c20800.pinctrl
[ 1.140050] sun4i-csi 1cb0000.csi: Error applying setting, reverse things back
[ 1.147316] sun4i-csi: probe of 1cb0000.csi failed with error -22
[ 1.155033] sunxi-wdt 1c20ca0.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0)
[ 1.165148] suniv-f1c100s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pf not found, using dummy regulator
[ 1.203560] sunxi-mmc 1c0f000.mmc: initialized, max. request size: 16384 KB
[ 1.212947] usbcore: registered new interface driver usbhid
[ 1.218525] usbhid: USB HID core driver
[ 1.222835] sunxi-cedar 1c0e000.video-codec: sunxi cedar version 0.01alpha
[ 1.230153] sunxi-cedar 1c0e000.video-codec: cedar-ve the get irq is 19
[ 1.242273] debugfs: Directory '1c23c00.codec' with parent 'F1C100s Audio Codec' already present!
[ 1.257496] sun4i-codec 1c23c00.codec: Codec <-> 1c23c00.codec mapping ok
[ 1.273803] NET: Registered protocol family 17
[ 1.278367] Key type dns_resolver registered
[ 1.284033] Loading compiled-in X.509 certificates
[ 1.302234] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 1.320389] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 1.327171] ALSA device list:
[ 1.330279] #0: F1C100s Audio Codec
[ 1.334557] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[ 1.343320] cfg80211: failed to load regulatory.db
[ 1.353259] random: fast init done
[ 1.359101] VFS: Mounted root (squashfs filesystem) readonly on device 31:2.
[ 1.372413] devtmpfs: mounted
[ 1.380847] Freeing unused kernel memory: 1024K
[ 1.385502] Run /preinit as init process
[ 1.632357] random: crng init done
[ 2.406852] overlayfs: upper fs does not support tmpfile.
[ 2.412419] overlayfs: upper fs does not support xattr, falling back to index=off and metacopy=off.
Starting syslogd: OK
Starting klogd: OK
Running sysctl: OK
Populating /dev using udev: [ 3.253577] udevd[90]: starting version 3.2.9
[ 3.466169] udevd[91]: starting eudev-3.2.9
[ 5.398168] Goodix-TS 0-005d: 0-005d supply AVDD28 not found, using dummy regulator
[ 5.406217] Goodix-TS 0-005d: 0-005d supply VDDIO not found, using dummy regulator
[ 7.448769] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
[ 9.528765] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
[ 9.535441] Goodix-TS 0-005d: i2c test failed attempt 1: -110
[ 11.608849] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
[ 13.688786] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
[ 13.695393] Goodix-TS 0-005d: i2c test failed attempt 2: -110
[ 13.738803] Goodix-TS 0-005d: I2C communication failure: -110
[ 13.744968] Goodix-TS: probe of 0-005d failed with error -110
[ 15.768785] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
[ 17.848774] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
[ 19.928764] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
[ 19.935332] ov2640 0-0030: Product ID error 92:92
done
Initializing random number generator: OK
Saving random seed: OK
Starting haveged: haveged: listening socket at 3
OK
Starting network: OK
Starting uMTPrd: [ 21.621279] file system registered
[ 21.975004] read descriptors
[ 21.977964] read strings
OK
Welcome to Widora MangoPi R3
mangopi-r3 login: [ 23.244353] configfs-gadget gadget: high-speed config #1: c
[ 31.848736] vcc3v0: disabling
[ 31.851739] vcc3v3: disabling
[ 31.854708] vcc5v0: disabling
Welcome to Widora MangoPi R3
mangopi-r3 login:
Welcome to Widora MangoPi R3
mangopi-r3 login: root
# ls
# ls
#
离线
整理总结一下;
代码默认使用的是Uart1做为log输出,若要修改成Uart0输出需要修改以下几个部分:
1,board/widora/mangopi/r3/uboot.defconfig
CONFIG_CONS_INDEX=2
2,修改 board\widora\mangopi\r3\devicetree\uboot\suniv-f1c100s-generic.dts的下面这块,改成serial0 = &uart0;就有log输出了;
aliases {
serial0 = &uart0;
spi0 = &spi0;
};
chosen {
stdout-path = "serial0:115200n8";
};
3, Linux 需要修改 ./board/widora/mangopi/r3/devicetree/linux/devicetree.dts ,增加下面这块,才会有log输出。
&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_pe_pins>;
status = "okay";
};
代码修改成 16M nor spi flash ,需要修改以下几点:
1,需要修改:./board/widora/mangopi/r3/devicetree/linux/devicetree.dts
//for NAND or Nor
bootargs = "console=ttyS0,115200 rootwait init=/preinit root=/dev/mtdblock2 rootfstype=squashfs
overlayfsdev=/dev/mtdblock3";
//for sd-card
//bootargs = "console=ttyS0,115200 earlyprintk rootwait init=/preinit root=/dev/mmcblk0p3";
2,Linux的设备树board\widora\mangopi\r3\devicetree\linux\devicetree.dts里 spi-nor@0 部分要把 status = "disabled" 注掉,spi-nand@0 部分要把status = "disabled"加上。
&spi0 {
status = "okay";
spi-nor@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "winbond,w25q128", "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <50000000>;
// status = "disabled";
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x000000 0x70000>;
read-only;
};
partition@1 {
label = "kernel";
reg = <0x70000 0x590000>;
read-only;
};
partition@2 {
label = "rom";
reg = <0x600000 0x700000>;
read-only;
};
partition@3 {
label = "overlay";
reg = <0xd00000 0x300000>;
};
};
};
spi-nand@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "spi-nand";
reg = <0>;
spi-max-frequency = <50000000>;
status = "disabled";
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x000000 0x100000>;
read-only;
};
partition@1 {
label = "kernel";
reg = <0x100000 0x500000>;
read-only;
};
partition@2 {
label = "rom";
reg = <0x600000 0x2a00000>;
read-only;
};
partition@3 {
label = "vendor";
reg = <0x3000000 0x1000000>;
};
partition@4 {
label = "overlay";
reg = <0x4000000 0x3000000>;
};
};
};
};
离线
@哇酷小二
问一下,uboot那段时间LCD没有显示,直到Starting kernel ...以后LCD上才会有显示,小企鹅也没显示不知道哪里有问题。下面是uboot 的.config文件里的一些配置,看着LCD的部分都选上了,但就是不显示。有没有需要在uboot.defconfig里添加的参数。
......
CONFIG_VIDEO_SUNXI=y
CONFIG_VIDEO_LCD_MODE="x:480,y:272,depth:18,pclk_khz:20000,le:42,ri:8,up:11,lo:4,hs:1,vs:1,sync:3,vmode:0"
CONFIG_VIDEO_LCD_DCLK_PHASE=1
CONFIG_VIDEO_LCD_POWER=""
CONFIG_VIDEO_LCD_RESET=""
CONFIG_VIDEO_LCD_BL_EN=""
CONFIG_VIDEO_LCD_BL_PWM=""
CONFIG_VIDEO_LCD_BL_PWM_ACTIVE_LOW=y
# CONFIG_VIDEO_LCD_PANEL_I2C is not set
CONFIG_VIDEO_LCD_IF_PARALLEL=y
CONFIG_VIDEO_LCD_PANEL_PARALLEL=y
# CONFIG_VIDEO_LCD_PANEL_LVDS is not set
# CONFIG_VIDEO_LCD_PANEL_MIPI_4_LANE_513_MBPS_VIA_SSD2828 is not set
# CONFIG_VIDEO_LCD_PANEL_EDP_4_LANE_1620M_VIA_ANX9804 is not set
# CONFIG_VIDEO_LCD_PANEL_HITACHI_TX18D42VM is not set
# CONFIG_VIDEO_LCD_TL059WV5C0 is not set
......
#
# TrueType Fonts
#
# CONFIG_VIDEO_VESA is not set
# CONFIG_VIDEO_LCD_ANX9804 is not set
# CONFIG_VIDEO_LCD_SSD2828 is not set
# CONFIG_VIDEO_LCD_HITACHI_TX18D42VM is not set
# CONFIG_VIDEO_MVEBU is not set
# CONFIG_I2C_EDID is not set
# CONFIG_DISPLAY is not set
# CONFIG_VIDEO_FSL_DCU_FB is not set
# CONFIG_VIDEO_TEGRA20 is not set
# CONFIG_VIDEO_BRIDGE is not set
CONFIG_VIDEO=y
CONFIG_CFB_CONSOLE=y
# CONFIG_CFB_CONSOLE_ANSI is not set
CONFIG_VGA_AS_SINGLE_DEVICE=y
CONFIG_VIDEO_SW_CURSOR=y
# CONFIG_CONSOLE_EXTRA_INFO is not set
CONFIG_CONSOLE_SCROLL_LINES=1
CONFIG_SYS_CONSOLE_BG_COL=0x00
CONFIG_SYS_CONSOLE_FG_COL=0xa0
# CONFIG_LCD is not set
# CONFIG_VIDEO_SIMPLE is not set
CONFIG_VIDEO_DT_SIMPLEFB=y
# CONFIG_OSD is not set
......
这是现在的config文件
config-bak.txt
最近编辑记录 pldjn_V3S (2023-02-15 16:27:35)
离线
@哇酷小二
再问一下怎么修改buildroot,把RGB改成BGR;尝试了2个方法都没成功。
1,参考https://whycan.com/t_6781.html,在文件 linux/drivers/gpu/drm/sun4i/sun4i_tcon.c添加 "regmap_update_bits(tcon->regs, SUN4I_TCON0_CTL_REG,BIT(23),BIT(23));//SWAP R、B引脚" 删除.stamp_built重新编译,没有效果;
2,参考https://gitee.com/IOTTS/f1c100s_buildroot,在文件./board/allwinner/suniv-f1c100s/devicetree/linux/suniv-f1c100s.dtsi中添加 rgb-channel-swap = <1>; /* 设置为1为BGR格式 */ ,重新编译,没有效果;
用busybox修改寄存器的值可以切换BGR,正确显示图片;
busybox devmem 0x01c0c040
busybox devmem 0x01c0c040 w 0x80800100
最近编辑记录 pldjn_V3S (2023-02-15 20:46:39)
离线
离线
uboot的LCD那个先跳过去了,现在是想把RGB改成GBR,试了2种方法都没有成功。
离线
@pldjn_V3S
我记得这个SDK里面的uboot没有支持lcd,如果确实要支持lcd得试一试荔枝派仓库里面的sdk了。regmap_update_bits(tcon->regs, SUN4I_TCON0_CTL_REG,BIT(23),BIT(23));//SWAP R、B引脚
在这前后把寄存器值都打印出来看看。
linux/drivers/gpu/drm/sun4i/sun4i_tcon.c这个文件不知道是没有调用到其中的函数 ,还是我加的调试信息不对,我增加了条printk,然后sh rebuild-kernel.sh ,没有在串口上看到信息。
printk("sun4i_tcon.c printk test\n");
离线
在这个文件里board/widora/mangopi/r3/devicetree/linux/devicetree.dts 好像是没有使用内核的设备树里驱动LCD。
查了下chosen是从uboot传来的参数。
chosen {
#address-cells = <1>;
#size-cells = <1>;
ranges;
//for NAND or Nor
bootargs = "console=tty0 console=ttyS0,115200 rootwait init=/preinit root=/dev/mtdblock2 rootfstype=squashfs overlayfsdev=/dev/mtdblock3";
//for sd-card
// bootargs = "console=ttyS0,115200 earlyprintk rootwait init=/preinit root=/dev/mmcblk0p3";
simplefb_lcd: framebuffer-lcd0 {
compatible = "allwinner,simple-framebuffer",
"simple-framebuffer";
allwinner,pipeline = "de_be0-lcd0";
clocks = <&ccu CLK_BUS_DE_BE>, <&ccu CLK_DE_BE>,
<&ccu CLK_DRAM_DE_BE>, <&ccu CLK_BUS_LCD>,
<&ccu CLK_TCON>;
status = "disabled";
};
离线
在这里再记录一下,临时解决液晶颜色问题,第3种修改RGB到BGR的方法;
由于使用的是buildroot-tiny200,他的液晶驱动还是在uboot里通过参数传到内核的(见下面的代码,chosen)
chosen {
#address-cells = <1>;
#size-cells = <1>;
ranges;
//for NAND or Nor
bootargs = "console=tty0 console=ttyS0,115200 rootwait init=/preinit root=/dev/mtdblock2 rootfstype=squashfs overlayfsdev=/dev/mtdblock3";
//for sd-card
// bootargs = "console=ttyS0,115200 earlyprintk rootwait init=/preinit root=/dev/mmcblk0p3";
simplefb_lcd: framebuffer-lcd0 {
compatible = "allwinner,simple-framebuffer",
"simple-framebuffer";
allwinner,pipeline = "de_be0-lcd0";
clocks = <&ccu CLK_BUS_DE_BE>, <&ccu CLK_DE_BE>,
<&ccu CLK_DRAM_DE_BE>, <&ccu CLK_BUS_LCD>,
<&ccu CLK_TCON>;
status = "disabled";
};
我现在还不懂设备树的原理,试过的前两种方法也都没有解决问题,所以就想通过uboot的液晶驱动来改,最终经过分析找到了文件./output/build/uboot-2020.07/arch/arm/include/asm/arch-sunxi/lcdc.h,把文件的第79行,修改成下面这样。临时解决了液晶的颜色问题。
#define SUNXI_LCDC_TCON0_CTRL_ENABLE ((1 << 31) | (1 << 23))
//#define SUNXI_LCDC_TCON0_CTRL_ENABLE (1 << 31)
离线