本系列调试说明记录了Linux在全志T113-S3/S4平台上的移植过程,说明过程中可能会技术瑕疵,希望大家提供宝贵意见。
本文移植的硬件平台来自于盈鹏飞嵌入式的SBC-T113S(处理器是T113-S3)主板。
SBC-T113S产品特性:
- 采用Allwinner公司Cortex-A7双核T113-S3/S4处理器,运行最高速度为1.2GHZ;
- 内置64-bit XuanTie C906 RISC-V协处理器(仅T113-S4支持);
- 支持JPEG/MJPEG视频编码,最大分辨率1080p@60fps;支持多格式1080P@60fps视频解码 (H.265,H.264, MPEG-1/2/4);
- 支持RGB666/LVDS/MIPI-DSI,分辨率最高1920x1080;
- 支持128-256M Bytes DDR3 SDRAM,其中T113-S3内置128MB;T113-S4内置256MB;
- 支持SPI NAND存储和启动(默认:256MB;最大1GB)或者EMMC启动(默认:4GB,最大32GB);
- 支持一路USB2.0 OTG(设计为TYPE-A接口);支持二路USB2.0 HOST;
- 支持七路RS232通信或者6路RS232和1路RS485(隔离);
- 支持一路CAN BUS通信(隔离);
- 支持一路10/100M以太网;
- 稳定的操作系统的支持,可预装LINUX 5.4或者OpenWRT;
- 经典尺寸主板,尺寸为120*100MM;
产品功能评估图:
产品尺寸:
以下为T113 Longan 系统配置(Linux)
开机流程
进程列表
sh-4.4# ps -A
PID USER COMMAND
1 root init
2 root [kthreadd]
3 root [rcu_gp]
4 root [rcu_par_gp]
6 root [kworker/0:0H-kb]
8 root [mm_percpu_wq]
9 root [ksoftirqd/0]
10 root [rcu_preempt]
11 root [migration/0]
12 root [cpuhp/0]
13 root [cpuhp/1]
14 root [migration/1]
15 root [ksoftirqd/1]
16 root [kworker/1:0-eve]
17 root [kworker/1:0H-kb]
18 root [kdevtmpfs]
21 root [rcu_tasks_kthre]
32 root [kworker/0:1-eve]
418 root [oom_reaper]
419 root [writeback]
455 root [kblockd]
595 root [ion_system_heap]
616 root [watchdogd]
712 root [cfg80211]
721 root [kswapd0]
732 root [vsync proc 0]
733 root [vsync proc 1]
735 root [kworker/0:2-eve]
813 root [uas]
884 root [irq/41-mmc2]
896 root [kworker/1:2-eve]
905 root [gpio_wq]
928 root [ipv6_addrconf]
936 root [mmc_complete]
941 root [krfcommd]
958 root [tve detect]
980 root [goodix_wq]
993 root [kworker/1:2H]
994 root [jbd2/mmcblk0p5-]
995 root [ext4-rsv-conver]
1011 root /sbin/syslogd -n
1015 root /sbin/klogd -n
1018 root [jbd2/mmcblk0p8-]
1019 root [ext4-rsv-conver]
1023 root /sbin/udevd -d
1045 root [kworker/0:2H-kb]
1085 root [btfwwork]
1086 root [bttimerwork]
1087 root [kworker/u5:0-hc]
1089 root [kworker/u5:2-hc]
1101 root dbus-daemon --system
1122 root /sbin/dhcpcd -f /etc/dhcpcd.conf
1124 root bluetoothd
1125 root bluealsa -p a2dp-sink
1134 root [RTW_CMD_THREAD]
1146 root /usr/sbin/dropbear -R
1153 root /usr/sbin/telnetd -F
1155 root 4G-demon
1174 root {rcS} /bin/sh /etc/init.d/rcS
1175 root -/bin/sh
1215 root DeviceTest
1222 root adbd
1234 root {adb_conf.sh} /bin/sh /etc/adb_conf.sh start
16487 root [kworker/u4:1-ev]
16488 root [kworker/u4:3-ev]
16581 root /bin/sh -
20073 root sleep 1
20077 root pppd /dev/ttyUSB3 115200 user user password passwd connect ''cha
20078 root ps -A
开机日志
[298]BOOT0 commit : 5224261
[301]set pll start
[303]fix vccio detect value:0xc0
[310]periph0 has been enabled
[313]set pll end
[315][pmu]: bus read error
[317]board init ok
[319]enable_jtag
[321]ZQ value = 0x30
[323]get_pmu_exist() = -1
// DDR初始化
[325]DRAM BOOT DRIVE INFO: V0.32
[328]DRAM CLK = 792 MHz
[331]DRAM Type = 3 (2:DDR2,3:DDR3)
[334]DRAMC read ODT off.
[336]DRAM ODT value: 0x42.
[339]ddr_efuse_type: 0xa
[342]mark_id: 0x60
[344]DRAM SIZE =128 M
[346]PLL_DDR_CTRL_REG:0xf8004100
[349]DRAM_CLK_REG:0xc0000000
[352][TIMING DEBUG] MR2= 0x18
[360]DRAM simple test OK.
[362]rtc standby flag is 0x0, super standby flag is 0x0
[367]dram size =128
// MMC 初始化
[370]card no is 2
[372]sdcard 2 line count 4
[374][mmc]: mmc driver ver 2021-05-21 14:47
[384][mmc]: Wrong media type 0x0, but host sdc2, try mmc first
[389][mmc]: ***Try MMC card 2***
[414][mmc]: RMCA OK!
[416][mmc]: mmc 2 bias 0
[419][mmc]: MMC 5.1
[420][mmc]: HSSDR52/SDR25 4 bit
[423][mmc]: 50000000 Hz
[426][mmc]: 7456 MB
[427][mmc]: ***SD/MMC 2 init OK!!!***
[521]Loading boot-pkg Succeed(index=0).
[524]Entry_name = u-boot
[531]Entry_name = optee
[536]Entry_name = dtb
[538]tunning data addr:0x430003e8
[542]Jump to second Boot.
M/TC: OP-TEE version: e9372c9c-dirty (gcc version 5.3.1 20160412 (Linaro GCC 5.3-2016.05)) #2 Sat Mar 19 11:09:45 UTC 2022 arm
E/TC:0 tee_read_fdt:433 fine node /firmware/optee failed with FDT_ERR_NOTFOUND
// 内核启动
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 5.4.61 (lxg@lxg) (arm-linux-gnueabi-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412, GNU ld (Linaro_Binutils-2016.05) 2.25.0 Linaro 2016_02) #2 SMP PREEMPT Thu Oct 19 17:51:11 CST 2023
// CPU
[ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
[ 0.000000] CPU: div instructions available: patching division code
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] OF: fdt: Machine model: rp-t113
// 内存策略
[ 0.000000] Memory policy: Data cache writealloc
[ 0.000000] cma: Reserved 16 MiB at 0x47000000
[ 0.000000] On node 0 totalpages: 32768
[ 0.000000] Normal zone: 256 pages used for memmap
[ 0.000000] Normal zone: 0 pages reserved
[ 0.000000] Normal zone: 32768 pages, LIFO batch:7
// psci是arm提供的一套电源管理接口
[ 0.000000] psci: probing for conduit method from DT.
[ 0.000000] psci: PSCIv1.0 detected in firmware.
[ 0.000000] psci: Using standard PSCI v0.2 function IDs
[ 0.000000] psci: MIGRATE_INFO_TYPE not supported.
[ 0.000000] psci: SMC Calling Convention v1.0
[ 0.000000] percpu: Embedded 15 pages/cpu s31040 r8192 d22208 u61440
[ 0.000000] pcpu-alloc: s31040 r8192 d22208 u61440 alloc=15*4096
[ 0.000000] pcpu-alloc: [0] 0 [0] 1
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 32512
// 内核启动命令
[ 0.000000] Kernel command line: earlycon=uart8250,mmio32,0x05000000 clk_ignore_unused initcall_debug=0 console=ttyS0,115200 loglevel=8 root=/dev/mmcblk0p5 init=/init partitions=boot-resource@mmcblk0p1:env@mmcblk0p2:env-redund@mmcblk0p3:boot@mmcblk0p4:rootfs@mmcblk0p5:dsp0@mmcblk0p6:private@mmcblk0p7:UDISK@mmcblk0p8 cma=16M snum= mac_addr= wifi_mac= bt_mac= specialstr= gpt=1 androidboot.hardware=sun8iw20p1 boot_type=2 androidboot.boot_type=2 gpt=1 uboot_message=2018.05(10/19/2023-15:58:25) disp_reserve=4096000,0x448ec000 androidboot.dramsize=128
[ 0.000000] printk: log_buf_len individual max cpu contribution: 131072 bytes
[ 0.000000] printk: log_buf_len total cpu_extra contributions: 131072 bytes
[ 0.000000] printk: log_buf_len min size: 16384 bytes
[ 0.000000] printk: log_buf_len: 262144 bytes
[ 0.000000] printk: early log buf free: 14208(86%)
[ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] Memory: 88712K/131072K available (7168K kernel code, 431K rwdata, 2600K rodata, 1024K init, 171K bss, 25976K reserved, 16384K cma-reserved)
[ 0.000000] rcu: Preemptible hierarchical RCU implementation.
[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
[ 0.000000] Tasks RCU enabled.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] random: get_random_bytes called from start_kernel+0x24c/0x3cc with crng_init=0
[ 0.000000] arch_timer: cp15 timer(s) running at 24.00MHz (phys).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns
[ 0.000006] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns
[ 0.000018] Switching to timer-based delay loop, resolution 41ns
[ 0.000204] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[ 0.001081] Console: colour dummy device 80x30
[ 0.001122] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000)
[ 0.001136] pid_max: default: 32768 minimum: 301
[ 0.001322] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.001337] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.001974] CPU: Testing write buffer coherency: ok
[ 0.002299] /cpus/cpu@0 missing clock-frequency property
[ 0.002322] /cpus/cpu@1 missing clock-frequency property
[ 0.002334] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[ 0.002948] Setting up static identity map for 0x40100000 - 0x40100060
[ 0.003076] rcu: Hierarchical SRCU implementation.
[ 0.003409] BOOTEVENT: 3.400540: ON
[ 0.003615] smp: Bringing up secondary CPUs ...
[ 0.004990] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[ 0.005148] smp: Brought up 1 node, 2 CPUs
[ 0.005164] SMP: Total of 2 processors activated (96.00 BogoMIPS).
[ 0.005171] CPU: All CPU(s) started in SVC mode.
[ 0.005676] devtmpfs: initialized
[ 0.018327] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5
[ 0.018937] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.018966] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
[ 0.019783] pinctrl core: initialized pinctrl subsystem
[ 0.021164] NET: Registered protocol family 16
[ 0.022998] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.058412] rtc_ccu: sunxi ccu init OK
[ 0.060937] ccu: sunxi ccu init OK
[ 0.061407] r_ccu: sunxi ccu init OK
[ 0.106543] iommu: Default domain type: Translated
[ 0.106777] sunxi iommu: irq = 24