您尚未登录。

#1 Re: 全志 SOC » 有人知道100s的图层融合怎么用吗 » 2020-03-14 12:56:03

确定了,用双缓冲性能比三缓冲好。

#2 Re: 全志 SOC » 有人知道100s的图层融合怎么用吗 » 2020-03-14 12:09:59

达克罗德 说:

framebuffer在ddr吧,刷新也是和CPU的计算抢带宽的

对,framebuffer只能在ddr。
dma我试过了,速度更慢,不知道是不是我的驱动问题。

#3 Re: 全志 SOC » 有人知道100s的图层融合怎么用吗 » 2020-03-14 12:08:58

jiangchun9981 说:

一般LCD用16BIT 就可以了吧 

这样数据应该是 800 * 480 * 2 这样

AWTK可以开脏矩形复制,每珍只更新局部的,具体我也没弄过

还有能贴个你的AWTK的工程文件上来吗? 我也想弄弄

不好意思,因为有些代码不能公开,我不发能上来,但是我后面可以写一个移植的过程,其实很简单。

#4 Re: 全志 SOC » 有人知道100s的图层融合怎么用吗 » 2020-03-14 12:07:53

jiangchun9981 说:

一般LCD用16BIT 就可以了吧 

这样数据应该是 800 * 480 * 2 这样

AWTK可以开脏矩形复制,每珍只更新局部的,具体我也没弄过

还有能贴个你的AWTK的工程文件上来吗? 我也想弄弄


f1c100虽然是16位色,但是每个像素仍然占用4个字节

#5 Re: 全志 SOC » 有人知道100s的图层融合怎么用吗 » 2020-03-14 10:09:16

jiangchun9981 说:

F100S 性能也就这样了

LZ可以看看有没有用DMA拷数据,软件拷数据,画面大了肯定耗时 

我看STM32的没有开DMA2D这个硬件拷数据速度下降也很厉害

用awtk的memcpy测试,速度是89M/S。
一帧的数据 800 * 480 * 4 = 1.46M
如果每秒要求80帧:1.46 * 80 = 116.8M/S

这样看上去是不够的,这还仅仅是memcpy,如果加上其他计算肯定是不够了。

但是我看awtk显示出来的是75fps,那么数据量:75 * 1.46 = 109.5M/s  是超过这个memcpy的。
看看memcpy测试代码

start = time_now_ms();
  for (i = 0; i < nr; i++) {
    uint32_t half = length >> 1;
    memcpy(buffer, (char*)buffer + half, half);
    memcpy((char*)buffer + half, buffer, half);
  }
  cost = time_now_ms() - start;
  total_cost += cost;

这里好像复制了两次,那一次的话应该就是180M左右了。

然后我想试试dma会不会快点,然而测试结果居然是55M/S,应该是驱动有问题。

#6 Re: 全志 SOC » 有人知道100s的图层融合怎么用吗 » 2020-03-14 09:57:44

我尝试降低lcd的像素时钟,然后将三缓冲换成单缓冲区,结果帧率提升很大。
最后我使用19M的像素时钟频率,然后使用双缓冲,帧率提升到了80帧左右。
这个结果很意外,我猜测是不是memcpy太慢?

像素时钟调低,明显有提升,不是lcd控制器自动从framebuffer取数据刷屏吗,和awtk计算有啥关系?难道是刷新太快,硬件刷新一帧,软件计算时间不够,然后就等下一帧的时间?

#7 Re: 全志 SOC » 有人知道100s的图层融合怎么用吗 » 2020-03-10 10:28:38

jiangchun9981 说:

awtk能不能在LINUX或者官方的MELIS下先移植测试?   

裸机好像CACHE什么的需要注意,默认是没开影响很大


家里没环境,linux已经弄好了,过几天就把awtk弄到linux上看看。

我记得awtk官方文档里面不建议缩放、旋转,我尽量避免这些。谁知道我在awtk的IDE里面,有张图片设置了缩放比例....然后导致一个界面只有十几帧。
而后去掉缩放,直接把图片编辑到合适大小放上去,立马60阵。

另外一些渐变、动画,的不流畅,应该就是芯片性能问题,我开启窗口水平切换动画,每帧就是28 - 30ms了,远没有480 272的流畅
[DEBUG]:#####################################
[DEBUG]:awtk\src\base\lcd_profile.c:326
[DEBUG]:-------------------------------------
[DEBUG]:  total_cost=28
[DEBUG]:  draw_image_cost=19 times=2
[DEBUG]:  draw_text_cost=0 times=0
[DEBUG]:  fill_cost=0 times=0
[DEBUG]:  stroke_cost=0 times=0
[DEBUG]:  end_frame_cost=9

贴上调试代码,不知有哪位大神有过优化经验。

#8 Re: 全志 SOC » 有人知道100s的图层融合怎么用吗 » 2020-03-07 13:55:55

smartcar 说:

是说bsp linux里面那个 /dev/fb0, /dev/fb1 ... 吗?

不是,是裸机和rtthread环境下面。

#9 全志 SOC » 有人知道100s的图层融合怎么用吗 » 2020-03-07 13:44:04

vmalloc
回复: 19

在裸机下吧awtk移植了上去,在480 272分辨率下有100帧。
在800 480下43帧。如果使用复杂效果:比如高亮对话框、渐变、圆角。帧率急速下降,直至几帧。

同样的复杂效果在480 272下面能有20~30帧,算是可以接受的。
看datasheet有四个图层可以进行融合,无奈只有寄存器介绍,哪位大神用过这个硬件图层融合,咱们看看能不能移植到awtk里面去?

#10 Re: 全志 SOC » lichee nano官方linux config文件踩坑与填坑(常见配置误区) » 2020-01-14 22:31:46

留下记号,刚把系统运行起来,早看了这个早就好了。。。

#11 Re: 全志 SOC » 老问题,貌似没有生成mtd » 2020-01-14 17:32:22

晕哥 说:

那来个逆向思维吧, 把你的zImage和dtb替换下面的固件的:

https://whycan.cn/t_2689.html
https://whycan.cn/t_3206.html

是内核的问题,应该是改的时间长,改乱了。
我重新下了一个,按照大家的帖子,挨个弄,弄好了。
多谢晕哥的指导

#12 Re: 全志 SOC » 老问题,貌似没有生成mtd » 2020-01-14 15:46:47

晕哥 说:

你的 jffs2 文件系统有问题。

重新编译几个了试了,还有吧你从licheepi官方固件中提取出来的烧进去了,还是这样.

#13 Re: 全志 SOC » 老问题,貌似没有生成mtd » 2020-01-14 14:44:12

晕哥 说:

我看到过那个SPI驱动应该选A31,官方的是A10,这是个坑,但是我选过很多次,刚进去怎么被取消了。估计是动其他配置的时候,这个选项的依赖呗修改了。
现在生成mtd了,好像存在问题。

U-Boot 2018.01-05682-gd83b2fefcf-dirty (Jan 14 2020 - 13:37:19 +0800) Allwinner Technology                                                                   

CPU:   Allwinner F Series (SUNIV)
Model: Lichee Pi Nano
DRAM:  32 MiB
MMC:   SUNXI SD/MMC: 0
SF: Detected w25q128bv with page size 256 Bytes, erase size 4 KiB, total 16 MiB
*** Warning - bad CRC, using default environment

Setting up a 800x480 lcd console (overscan 0x0)
In:    serial@1c25000
Out:   serial@1c25000
Err:   serial@1c25000
Net:   No ethernet found.
starting USB...
No controllers found
Hit any key to stop autoboot:  0 
SF: Detected w25q128bv with page size 256 Bytes, erase size 4 KiB, total 16 MiB
device 0 offset 0x100000, size 0x4000
SF: 16384 bytes @ 0x100000 Read: OK
device 0 offset 0x110000, size 0x400000
SF: 4194304 bytes @ 0x110000 Read: OK
## Flattened Device Tree blob at 80c00000
   Booting using the fdt blob at 0x80c00000
   Loading Device Tree to 80e05000, end 80e09f3e ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.15.0-rc8-90681-g9b2fb662b0c8-dirty (xw@xw-C246-WU4) (gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11)) #13 Tue Jan 14 14:33:48 CST 2020
[    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: Lichee Pi Nano
[    0.000000] Memory policy: Data cache writeback
[    0.000000] random: fast init done
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 8128
[    0.000000] Kernel command line: console=ttyS0,115200 panic=5 rootwait root=/dev/mtdblock3 rw rootfstype=jffs2
[    0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Memory: 25940K/32768K available (4096K kernel code, 154K rwdata, 976K rodata, 1024K init, 137K bss, 6828K reserved, 0K cma-reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xc2800000 - 0xff800000   ( 976 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xc2000000   (  32 MB)
[    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
[    0.000000]       .text : 0x(ptrval) - 0x(ptrval)   (5088 kB)
[    0.000000]       .init : 0x(ptrval) - 0x(ptrval)   (1024 kB)
[    0.000000]       .data : 0x(ptrval) - 0x(ptrval)   ( 155 kB)
[    0.000000]        .bss : 0x(ptrval) - 0x(ptrval)   ( 138 kB)
[    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.000052] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[    0.000128] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[    0.000784] Console: colour dummy device 80x30
[    0.000891] Calibrating delay loop... 203.16 BogoMIPS (lpj=1015808)
[    0.070270] pid_max: default: 32768 minimum: 301
[    0.070677] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.070722] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.072204] CPU: Testing write buffer coherency: ok
[    0.074170] Setting up static identity map for 0x80100000 - 0x80100058
[    0.076902] devtmpfs: initialized
[    0.083322] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.083393] futex hash table entries: 256 (order: -1, 3072 bytes)
[    0.083678] pinctrl core: initialized pinctrl subsystem
[    0.086235] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.111023] SCSI subsystem initialized
[    0.112211] usbcore: registered new interface driver usbfs
[    0.112401] usbcore: registered new interface driver hub
[    0.112602] usbcore: registered new device driver usb
[    0.113184] pps_core: LinuxPPS API ver. 1 registered
[    0.113217] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.114494] clocksource: Switched to clocksource timer
[    0.147336] workingset: timestamp_bits=30 max_order=13 bucket_order=0
[    0.159712] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.160293] jffs2: version 2.2. © 2001-2006 Red Hat, Inc.
[    0.166656] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
[    0.166709] io scheduler noop registered
[    0.166733] io scheduler deadline registered
[    0.167196] io scheduler cfq registered (default)
[    0.167234] io scheduler mq-deadline registered
[    0.167256] io scheduler kyber registered
[    0.178365] suniv-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[    0.373182] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled
[    0.380918] console [ttyS0] disabled
[    0.401202] 1c25000.serial: ttyS0 at MMIO 0x1c25000 (irq = 23, base_baud = 6250000) is a 16550A
[    0.755416] console [ttyS0] enabled
[    0.797429] brd: module loaded
[    0.823761] loop: module loaded
[    0.830927] m25p80 spi0.0: w25q128 (16384 Kbytes)
[    0.837038] 4 ofpart partitions found on MTD device spi0.0
[    0.842546] Creating 4 MTD partitions on "spi0.0":
[    0.847516] 0x000000000000-0x000000100000 : "u-boot"
[    0.856711] rfd_ftl: no RFD magic found in 'u-boot'
[    0.864109] ftl_cs: FTL header not found.
[    0.869945] 0x000000100000-0x000000110000 : "dtb"
[    0.876237] ftl_cs: FTL header not found.
[    0.882036] 0x000000110000-0x000000510000 : "kernel"
[    0.899612] rfd_ftl: no RFD magic found in 'kernel'
[    0.907040] ftl_cs: FTL header not found.
[    0.912858] 0x000000510000-0x000001000000 : "rootfs"
[    0.949353] rfd_ftl: no RFD magic found in 'rootfs'
[    0.956873] ftl_cs: FTL header not found.
[    0.963098] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.969775] ehci-platform: EHCI generic platform driver
[    0.975403] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.981642] ohci-platform: OHCI generic platform driver
[    0.987612] i2c /dev entries driver
[    0.993396] usbcore: registered new interface driver usbhid
[    0.999119] usbhid: USB HID core driver
[    1.013923] hctosys: unable to open rtc device (rtc0)
[    1.019725] vcc3v3: disabling
[    1.108587] random: crng init done
[    1.418802] VFS: Mounted root (jffs2 filesystem) on device 31:3.
[    1.426794] devtmpfs: mounted
[    1.434205] Freeing unused kernel memory: 1024K
[    3.181227] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004
[    3.181227] 
[    3.190383] CPU: 0 PID: 1 Comm: init Not tainted 4.15.0-rc8-90681-g9b2fb662b0c8-dirty #13
[    3.198539] Hardware name: Allwinner suniv Family
[    3.203233] Backtrace: 
[    3.205745] [<c0105938>] (dump_backtrace) from [<c0105bf8>] (show_stack+0x18/0x1c)
[    3.213306]  r6:c182de70 r5:00000000 r4:c0726ce8
[    3.217962] [<c0105be0>] (show_stack) from [<c044bfec>] (dump_stack+0x20/0x28)
[    3.225208] [<c044bfcc>] (dump_stack) from [<c010f6d8>] (panic+0xc0/0x238)
[    3.232091] [<c010f61c>] (panic) from [<c0110f80>] (do_exit+0x970/0x9a8)
[    3.238789]  r3:c182e000 r2:c182e00c r1:00000004 r0:c058acf4
[    3.244434]  r7:00000000
[    3.246992] [<c0110610>] (do_exit) from [<c0111b40>] (do_group_exit+0x44/0xbc)
[    3.254194]  r7:c1830000
[    3.256764] [<c0111afc>] (do_group_exit) from [<c011ae40>] (get_signal+0x150/0x56c)
[    3.264400]  r4:ffffe000
[    3.266962] [<c011acf0>] (get_signal) from [<c0104e5c>] (do_signal+0xcc/0x40c)
[    3.274185]  r10:00000000 r9:c182c000 r8:b6f10104 r7:b6f10100 r6:ffffff9c r5:c182ded0
[    3.281991]  r4:c182dfb0
[    3.284546] [<c0104d90>] (do_signal) from [<c010537c>] (do_work_pending+0xc0/0xd4)
[    3.292115]  r10:00000000 r9:c182c000 r8:c01027c4 r7:00900000 r6:c182dfb0 r5:c01027c4
[    3.299923]  r4:ffffe000
[    3.302475] [<c01052bc>] (do_work_pending) from [<c0102608>] (slow_work_pending+0xc/0x20)
[    3.310636]  r6:00000000 r5:bef85d60 r4:b6f22f70
[    3.315259] Rebooting in 5 seconds..
[    9.294495] Reboot failed -- System halted

#14 Re: 全志 SOC » 老问题,貌似没有生成mtd » 2020-01-14 14:16:40

发现这里sip0是disabled的,我改一下试试

spi0: spi@1c05000 {
			compatible = "allwinner,suniv-spi",
				     "allwinner,sun8i-h3-spi";
			reg = <0x01c05000 0x1000>;
			interrupts = <10>;
			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_BUS_SPI0>;
			clock-names = "ahb", "mod";
			resets = <&ccu RST_BUS_SPI0>;
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

#15 Re: 全志 SOC » 老问题,貌似没有生成mtd » 2020-01-14 14:15:19

是的,我也在怀疑这个。
suniv-f1c100s.dtsi文件是空的,只有一个include

// SPDX-License-Identifier: (GPL-2.0+ OR X11)
/*
 * Copyright 2018 Icenowy Zheng <icenowy@aosc.io>
 */

#include "suniv.dtsi"

我顺便贴一下suniv.dtsi

// SPDX-License-Identifier: (GPL-2.0+ OR X11)
/*
 * Copyright 2018 Icenowy Zheng <icenowy@aosc.io>
 */

#include <dt-bindings/clock/suniv-ccu.h>
#include <dt-bindings/reset/suniv-ccu.h>

/ {
	#address-cells = <1>;
	#size-cells = <1>;
	interrupt-parent = <&intc>;

	clocks {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		osc24M: clk-24M {
			#clock-cells = <0>;
			compatible = "fixed-clock";
			clock-frequency = <24000000>;
			clock-output-names = "osc24M";
		};

		osc32k: clk-32k {
			#clock-cells = <0>;
			compatible = "fixed-clock";
			clock-frequency = <32768>;
			clock-output-names = "osc32k";
		};

		fake100M: clk-100M {
			#clock-cells = <0>;
			compatible = "fixed-clock";
			clock-frequency = <100000000>;
			clock-output-names = "fake-100M";
		};
	};

	cpus {
		#address-cells = <0>;
		#size-cells = <0>;

		cpu {
			compatible = "arm,arm926ej-s";
			device_type = "cpu";
		};
	};

	de: display-engine {
		compatible = "allwinner,suniv-display-engine";
		allwinner,pipelines = <&fe0>;
		status = "disabled";
	};

	soc {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		sram-controller@1c00000 {
			compatible = "allwinner,sun4i-a10-sram-controller";
			reg = <0x01c00000 0x30>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges;

			sram_d: sram@10000 {
				compatible = "mmio-sram";
				reg = <0x00010000 0x1000>;
				#address-cells = <1>;
				#size-cells = <1>;
				ranges = <0 0x00010000 0x1000>;

				otg_sram: sram-section@0 {
					compatible = "allwinner,sun4i-a10-sram-d";
					reg = <0x0000 0x1000>;
					status = "disabled";
				};
			};
		};

		spi0: spi@1c05000 {
			compatible = "allwinner,suniv-spi",
				     "allwinner,sun8i-h3-spi";
			reg = <0x01c05000 0x1000>;
			interrupts = <10>;
			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_BUS_SPI0>;
			clock-names = "ahb", "mod";
			resets = <&ccu RST_BUS_SPI0>;
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

		spi1: spi@1c06000 {
			compatible = "allwinner,suniv-spi",
				     "allwinner,sun8i-h3-spi";
			reg = <0x01c06000 0x1000>;
			interrupts = <11>;
			clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_BUS_SPI1>;
			clock-names = "ahb", "mod";
			resets = <&ccu RST_BUS_SPI1>;
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

		tcon0: lcd-controller@1c0c000 {
			compatible = "allwinner,suniv-tcon";
			reg = <0x01c0c000 0x1000>;
			interrupts = <29>;
			clocks = <&ccu CLK_BUS_LCD>,
				 <&ccu CLK_TCON>,
				 <&osc24M>;	/* Still unknown */
			clock-names = "ahb",
				      "tcon-ch0",
				      "tcon-ch1";
			clock-output-names = "tcon-pixel-clock";
			resets = <&ccu RST_BUS_LCD>;
			reset-names = "lcd";
			status = "disabled";

			ports {
				#address-cells = <1>;
				#size-cells = <0>;

				tcon0_in: port@0 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <0>;

					tcon0_in_be0: endpoint@0 {
						reg = <0>;
						remote-endpoint = <&be0_out_tcon0>;
					};
				};

				tcon0_out: port@1 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <1>;
				};
			};
		};

		mmc0: mmc@1c0f000 {
			compatible = "allwinner,suniv-mmc",
				     "allwinner,sun7i-a20-mmc";
			reg = <0x01c0f000 0x1000>;
			clocks = <&ccu CLK_BUS_MMC0>,
				 <&ccu CLK_MMC0>,
				 <&ccu CLK_MMC0_OUTPUT>,
				 <&ccu CLK_MMC0_SAMPLE>;
			clock-names = "ahb",
				      "mmc",
				      "output",
				      "sample";
			resets = <&ccu RST_BUS_MMC0>;
			reset-names = "ahb";
			interrupts = <23>;
			pinctrl-names = "default";
			pinctrl-0 = <&mmc0_pins>;
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

		mmc1: mmc@1c10000 {
			compatible = "allwinner,suniv-mmc",
				     "allwinner,sun7i-a20-mmc";
			reg = <0x01c10000 0x1000>;
			clocks = <&ccu CLK_BUS_MMC1>,
				 <&ccu CLK_MMC1>,
				 <&ccu CLK_MMC1_OUTPUT>,
				 <&ccu CLK_MMC1_SAMPLE>;
			clock-names = "ahb",
				      "mmc",
				      "output",
				      "sample";
			resets = <&ccu RST_BUS_MMC1>;
			reset-names = "ahb";
			interrupts = <24>;
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

		ccu: clock@1c20000 {
			compatible = "allwinner,suniv-ccu";
			reg = <0x01c20000 0x400>;
			clocks = <&osc24M>, <&osc32k>;
			clock-names = "hosc", "losc";
			#clock-cells = <1>;
			#reset-cells = <1>;
		};

		intc: interrupt-controller@1c20400 {
			compatible = "allwinner,suniv-ic";
			reg = <0x01c20400 0x400>;
			interrupt-controller;
			#interrupt-cells = <1>;
		};

		pio: pinctrl@1c20800 {
			compatible = "allwinner,suniv-pinctrl";
			reg = <0x01c20800 0x400>;
			interrupts = <38>, <39>, <40>;
			clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&osc32k>;
			clock-names = "apb", "hosc", "losc";
			gpio-controller;
			interrupt-controller;
			#interrupt-cells = <3>;
			#gpio-cells = <3>;

			spi0_pins_a: spi0-pins-pc {
				pins = "PC0", "PC1", "PC2", "PC3";
				function = "spi0";
			};

			lcd_rgb666_pins: lcd-rgb666-pins {
				pins = "PD0", "PD1", "PD2", "PD3", "PD4",
				       "PD5", "PD6", "PD7", "PD8", "PD9",
				       "PD10", "PD11", "PD12", "PD13", "PD14",
				       "PD15", "PD16", "PD17", "PD18", "PD19",
				       "PD20", "PD21";
				function = "lcd";
			};

			uart0_pins_a: uart-pins-pe {
				pins = "PE0", "PE1";
				function = "uart0";
			};

			mmc0_pins: mmc0-pins {
				pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5";
				function = "mmc0";
			};
		};

		timer@1c20c00 {
			compatible = "allwinner,suniv-timer";
			reg = <0x01c20c00 0x90>;
			interrupts = <13>;
			clocks = <&osc24M>;
		};

		wdt: watchdog@1c20ca0 {
			compatible = "allwinner,sun6i-a31-wdt";
			reg = <0x01c20ca0 0x20>;
		};

		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";
		};

		uart2: serial@1c25800 {
			compatible = "snps,dw-apb-uart";
			reg = <0x01c25800 0x400>;
			interrupts = <3>;
			reg-shift = <2>;
			reg-io-width = <4>;
			clocks = <&ccu CLK_BUS_UART2>;
			resets = <&ccu RST_BUS_UART2>;
			status = "disabled";
		};

		usb_otg: usb@1c13000 {
			compatible = "allwinner,suniv-musb";
			reg = <0x01c13000 0x0400>;
			clocks = <&ccu CLK_BUS_OTG>;
			resets = <&ccu RST_BUS_OTG>;
			interrupts = <26>;
			interrupt-names = "mc";
			phys = <&usbphy 0>;
			phy-names = "usb";
			extcon = <&usbphy 0>;
			allwinner,sram = <&otg_sram 1>;
			status = "disabled";
		};

		usbphy: phy@1c13400 {
			compatible = "allwinner,suniv-usb-phy";
			reg = <0x01c13400 0x10>;
			reg-names = "phy_ctrl";
			clocks = <&ccu CLK_USB_PHY0>;
			clock-names = "usb0_phy";
			resets = <&ccu RST_USB_PHY0>;
			reset-names = "usb0_reset";
			#phy-cells = <1>;
			status = "disabled";
		};

		fe0: display-frontend@1e00000 {
			compatible = "allwinner,suniv-display-frontend";
			reg = <0x01e00000 0x20000>;
			interrupts = <30>;
			clocks = <&ccu CLK_BUS_DE_FE>, <&ccu CLK_DE_FE>,
				 <&ccu CLK_DRAM_DE_FE>;
			clock-names = "ahb", "mod",
				      "ram";
			resets = <&ccu RST_BUS_DE_FE>;
			status = "disabled";

			ports {
				#address-cells = <1>;
				#size-cells = <0>;

				fe0_out: port@1 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <1>;

					fe0_out_be0: endpoint@0 {
						reg = <0>;
						remote-endpoint = <&be0_in_fe0>;
					};
				};
			};
		};

		be0: display-backend@1e60000 {
			compatible = "allwinner,suniv-display-backend";
			reg = <0x01e60000 0x10000>;
			reg-names = "be";
			interrupts = <31>;
			clocks = <&ccu CLK_BUS_DE_BE>, <&ccu CLK_DE_BE>,
				 <&ccu CLK_DRAM_DE_BE>;
			clock-names = "ahb", "mod",
				      "ram";
			resets = <&ccu RST_BUS_DE_BE>;
			reset-names = "be";
			assigned-clocks = <&ccu CLK_DE_BE>;
			assigned-clock-rates = <300000000>;

			ports {
				#address-cells = <1>;
				#size-cells = <0>;

				be0_in: port@0 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <0>;

					be0_in_fe0: endpoint@0 {
						reg = <0>;
						remote-endpoint = <&fe0_out_be0>;
					};
				};

				be0_out: port@1 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <1>;

					be0_out_tcon0: endpoint@0 {
						reg = <0>;
						remote-endpoint = <&tcon0_in_be0>;
					};
				};
			};
		};
	};
};

#16 全志 SOC » 老问题,貌似没有生成mtd » 2020-01-14 14:02:51

vmalloc
回复: 9

按照官方和https://whycan.cn/ 这个帖子,最后boot的时候卡在 Waiting for root device /dev/mtdblock3...
翻遍了帖子,内核配置也对着各位帖子调整了,三天了,无进度,只好前来求救。
编译出来的文件系统只有1.6M,不知道有没有问题.
下面贴出我的log和suniv-f1c100s-licheepi-nano.dts文件

Setting up a 800x480 lcd console (overscan 0x0)
In:    serial@1c25000
Out:   serial@1c25000
Err:   serial@1c25000
Net:   No ethernet found.
starting USB...
No controllers found
Hit any key to stop autoboot:  0 
SF: Detected w25q128bv with page size 256 Bytes, erase size 4 KiB, total 16 MiB
device 0 offset 0x100000, size 0x4000
SF: 16384 bytes @ 0x100000 Read: OK
device 0 offset 0x110000, size 0x400000
SF: 4194304 bytes @ 0x110000 Read: OK
## Flattened Device Tree blob at 80c00000
   Booting using the fdt blob at 0x80c00000
   Loading Device Tree to 80e05000, end 80e09f3e ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.15.0-rc8-90681-g9b2fb662b0c8-dirty (cef@cef) (gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11)) #11 Tue Jan 14 11:47:38 CST 2020
[    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: Lichee Pi Nano
[    0.000000] Memory policy: Data cache writeback
[    0.000000] random: fast init done
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 8128
[    0.000000] Kernel command line: console=ttyS0,115200 panic=5 rootwait root=/dev/mtdblock3 rw rootfstype=jffs2
[    0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)                                                                                 
[    0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)                                                                                   
[    0.000000] Memory: 25940K/32768K available (4096K kernel code, 154K rwdata, 976K rodata, 1024K init, 137K bss, 6828K reserved, 0K cma-reserved)          
[    0.000000] Virtual kernel memory layout:                                                                                                                 
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)                                                                                             
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xc2800000 - 0xff800000   ( 976 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xc2000000   (  32 MB)
[    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
[    0.000000]       .text : 0x(ptrval) - 0x(ptrval)   (5088 kB)
[    0.000000]       .init : 0x(ptrval) - 0x(ptrval)   (1024 kB)
[    0.000000]       .data : 0x(ptrval) - 0x(ptrval)   ( 155 kB)
[    0.000000]        .bss : 0x(ptrval) - 0x(ptrval)   ( 138 kB)
[    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.000052] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[    0.000132] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[    0.000795] Console: colour dummy device 80x30
[    0.000899] Calibrating delay loop... 203.16 BogoMIPS (lpj=1015808)
[    0.070276] pid_max: default: 32768 minimum: 301
[    0.070702] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.070749] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.072212] CPU: Testing write buffer coherency: ok
[    0.074172] Setting up static identity map for 0x80100000 - 0x80100058
[    0.076877] devtmpfs: initialized
[    0.083291] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.083365] futex hash table entries: 256 (order: -1, 3072 bytes)
[    0.083647] pinctrl core: initialized pinctrl subsystem
[    0.086440] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.111241] SCSI subsystem initialized
[    0.112450] usbcore: registered new interface driver usbfs
[    0.112636] usbcore: registered new interface driver hub
[    0.112843] usbcore: registered new device driver usb
[    0.113419] pps_core: LinuxPPS API ver. 1 registered
[    0.113450] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.114726] clocksource: Switched to clocksource timer
[    0.146924] workingset: timestamp_bits=30 max_order=13 bucket_order=0
[    0.159435] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.160015] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
[    0.166308] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
[    0.166359] io scheduler noop registered
[    0.166379] io scheduler deadline registered
[    0.166833] io scheduler cfq registered (default)
[    0.166871] io scheduler mq-deadline registered
[    0.166894] io scheduler kyber registered
[    0.177873] suniv-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[    0.368896] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled
[    0.376619] console [ttyS0] disabled
[    0.396898] 1c25000.serial: ttyS0 at MMIO 0x1c25000 (irq = 23, base_baud = 6250000) is a 16550A
[    0.751616] console [ttyS0] enabled
[    0.794019] brd: module loaded
[    0.820427] loop: module loaded
[    0.824559] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.831244] ehci-platform: EHCI generic platform driver
[    0.836892] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.843129] ohci-platform: OHCI generic platform driver
[    0.849122] i2c /dev entries driver
[    0.854914] usbcore: registered new interface driver usbhid
[    0.860499] usbhid: USB HID core driver
[    0.875105] hctosys: unable to open rtc device (rtc0)
[    0.880772] vcc3v3: disabling
[    0.884881] Waiting for root device /dev/mtdblock3...
[  208.784839] random: crng init done

DTS

// SPDX-License-Identifier: (GPL-2.0+ OR X11)
/*
 * Copyright 2018 Icenowy Zheng <icenowy@aosc.io>
 */

/dts-v1/;
#include "suniv-f1c100s.dtsi"

#include <dt-bindings/gpio/gpio.h>

/ {
	model = "Lichee Pi Nano";
	compatible = "licheepi,licheepi-nano", "allwinner,suniv-f1c100s",
		     "allwinner,suniv";

	aliases {
		serial0 = &uart0;
		spi0 = &spi0;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	panel: panel {
		compatible = "qiaodian,qd43003c0-40", "simple-panel";
		#address-cells = <1>;
		#size-cells = <0>;
		enable-gpios = <&pio 4 6 GPIO_ACTIVE_HIGH>;

		port@0 {
			reg = <0>;
			#address-cells = <1>;
			#size-cells = <0>;

			panel_input: endpoint@0 {
				reg = <0>;
				remote-endpoint = <&tcon0_out_lcd>;
			};
		};
	};

	reg_vcc3v3: vcc3v3 {
		compatible = "regulator-fixed";
		regulator-name = "vcc3v3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};
};

&de {
	status = "okay";
};

&mmc0 {
	vmmc-supply = <&reg_vcc3v3>;
	bus-width = <4>;
	broken-cd;
	status = "okay";
};

&otg_sram {
	status = "okay";
};

&spi0 {
    pinctrl-names = "default";
    pinctrl-0 = <&spi0_pins_a>;
    status = "okay";
    spi-max-frequency = <50000000>;
    flash: w25q128@0 {
        #address-cells = <1>;
        #size-cells = <1>;
        compatible = "winbond,w25q128", "jedec,spi-nor";
        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@100000 {
                label = "dtb";
                reg = <0x100000 0x10000>;
                read-only;
            };

            partition@110000 {
                label = "kernel";
                reg = <0x110000 0x400000>;
                read-only;
            };

            partition@510000 {
                label = "rootfs";
                reg = <0x510000 0xAF0000>;
            };
        };
    };
};

&tcon0 {
	pinctrl-names = "default";
	pinctrl-0 = <&lcd_rgb666_pins>;
	status = "okay";
};

&tcon0_out {
	tcon0_out_lcd: endpoint@0 {
		reg = <0>;
		remote-endpoint = <&panel_input>;
	};
};

&uart0 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart0_pins_a>;
	status = "okay";
};

&usb_otg {
	dr_mode = "otg";
	status = "okay";
};

&usbphy {
	usb0_id_det-gpio = <&pio 4 2 GPIO_ACTIVE_HIGH>; /* PE2 */
	status = "okay";
};

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn