> 文档中心 > 全志D1s/F133学习笔记(2)——MangoPi-MQ(芒果派麻雀)Tina系统编译烧录

全志D1s/F133学习笔记(2)——MangoPi-MQ(芒果派麻雀)Tina系统编译烧录

文章目录

  • 一、SDK和资料:
  • 二、SDK结构:
  • 三、环境配置
  • 四、打补丁匹配麻雀开发板
    • 补丁修改文件分析:
  • 五、配置和编译
  • 六、烧录
  • 七、上电运行
  • 八、补丁包修改
    • 1、原因分析
    • 2、修改方法
    • 3、编译运行
  • 附:部分开机LOG
  • 站在晕哥的肩膀上,总结下麻雀的上手编译流程 。
  • 先粗浅的分析一下适配开发板需要做做的修改。
  • 做一些简单的总结和注释 。

一、SDK和资料:

  • SDK百度云下载:提取码: 6666 解压密码: whycan.com
  • SDK官方下载:全志客户服务平台-SDK下载
  • 官方下载说明:资源下载说明
  • 官方教程:D1 官方在线开发教程

二、SDK结构:

官方介绍:Tina Linux 系统介绍
Tina Linux 基于 openwrt-14.07 版本的,可以参考下 MT7628学习笔记(3)——openwrt源码目录分析(OpenWrt CC1505 版本移植)

Tina-SDK/├── build# 构建系统文件├── config# 配置菜单的界面以及一些固定的配置项,该配置菜单基于内核的 mconf 规格编写├── Config.in# 菜单项配置文件。和 make menuconfig 相关联的文件├── device# 用于存放方案的配置文件,包括内核配置、env 配置、分区表配置、sys_config.fex(全志定制板级配置文件)、board.dts(linux标准设备树文件) 等├── dl# 软件包文件├── lichee# 存放 bootloader、linux内核、DSP等代码├── Makefile# 在顶层目录执行 make 命令的入口文件├── out# 编译相关的临时文件和最终镜像文件 ,编译后自动生成此目录├── package# 存放Tina系统支持的软件包源码和编译规则├── prebuilt# 存放预编译交叉编译器├── rules.mk# 定义了 Makefile 中使用的一些通用变量和函数├── scripts# 存放host端(PC端,下同)或target端(小机端,即目标机器,下同)使用的一些脚本├── target# 存放目标板相关的配置以及sdk和toolchain生成的规格├── tmp# 临时文件夹。编译过程中的临时文件保存。├── toolchain# 交叉工具链构建配置、规则└── tools# 存放 host 端工具的编译规则

三、环境配置

# 更新$ sudo apt-get update# 安装软件工具包$ sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip lib32z1 lib32z1-dev lib32stdc++6 libstdc++6 -y# Ubuntu 16.04以上版本执行sudo apt-get install libc6:i386 libstdc++6:i386 lib32ncurses5 lib32z1

四、打补丁匹配麻雀开发板

5寸800x480,4.3寸480x272补丁:芒果派麻雀固件与源码补丁2021-12-16.7z

补丁修改文件分析:

config 配置修改:

lichee/└── brandy-2.0    └── u-boot-2018 └── .config

以下是 .config 配置文件修改的地方:

## sunxi board feature#CONFIG_SUNXI_ADVERT_PICTURE=y## SUNXI LOGO DISPLAY## CONFIG_HDMI2_DISP2_SUNXI is not set## LCD panels select#CONFIG_LCD_SUPPORT_WILLIAMLCD=yCONFIG_LCD_SUPPORT_LQ101R1SX03=yCONFIG_LCD_SUPPORT_INET_DSI_PANEL=y# CONFIG_LCD_SUPPORT_BP101WX1 is not set# CONFIG_LCD_SUPPORT_K101IM2QA04 is not set# CONFIG_LCD_SUPPORT_K101IM2BYL02L is not set# CONFIG_LCD_SUPPORT_FX070 is not set# CONFIG_LCD_SUPPORT_K080_IM2HYL802R_800X1280 is not set# CONFIG_LCD_SUPPORT_TFT08006 is not set

在以下位置增加对应的开发板/方案配置:

.├── device│   └── config│└── chips│    └── d1│ └── configs│     ├── mangopi_mq_rgb480x272_rtp│     └── mangopi_mq_rgb800x480_gt9xx├── package│   └── allwinner│└── alsa-conf-aw│    └── files│ └── d1│     ├── d1-mangopi_mq_rgb480x272_rtp│     └── d1-mangopi_mq_rgb800x480_gt9xx└── target    └── allwinner ├── d1-mangopi_mq_rgb480x272_rtp └── d1-mangopi_mq_rgb800x480_gt9xx

开发板/方案名的定义在:/target/allwinner/d1-mangopi_mq_rgb800x480_gt9xx/vendorsetup.sh

add_lunch_combo d1_mangopi_mq_rgb800x480_gt9xx-tina

五、配置和编译

# 把补丁解压到SDK目录下就行了tar -xzvf d1-mangopi_mq_20211216.tgz<sdk目录>

选择对应的开发板/方案 d1_mangopi_mq_rgb800x480_gt9xx-tina

# 获取环境变量(打开新终端时执行)source build/envsetup.sh# 方案选择(打开新终端时执行)$ lunchYou're building on LinuxLunch menu... pick a combo:     1. d1_mangopi_mq_rgb480x272_rtp-tina# 麻雀 480x272屏     2. d1_mangopi_mq_rgb800x480_gt9xx-tina# 麻雀 800x480屏     3. d1_nezha_min-tina# d1_nezha-tina 是哪吒d1标准方案     4. d1_nezha-tina# d1_nezha_min-tina 是哪吒d1只能让系统跑起来的最小系统方案Which would you like? [Default d1_nezha]: 2============================================TINA_BUILD_TOP=/home/pjw/Allwinner/D1s/tina-d1-openTINA_TARGET_ARCH=riscvTARGET_PRODUCT=d1_mangopi_mq_rgb800x480_gt9xxTARGET_PLATFORM=d1TARGET_BOARD=d1-mangopi_mq_rgb800x480_gt9xxTARGET_PLAN=mangopi_mq_rgb800x480_gt9xxTARGET_BUILD_VARIANT=tinaTARGET_BUILD_TYPE=releaseTARGET_KERNEL_VERSION=5.4TARGET_UBOOT=u-boot-2018TARGET_CHIP=sun20iw1p1============================================# 编译make -j16# 编译完成#### make completed successfully (25:29 (mm:ss)) ##### 打包,将编译好的固件打包成一个.img格式的固件。# 固件路径 /out/d1-mangopi_mq_rgb800x480_gt9xx/tina_d1-mangopi_mq_rgb800x480_gt9xx_uart0.imgpack# BuildImg 0# Dragon execute image.cfg SUCCESS !# ----------image is for nand/emmc----------# ----------image is at----------# # tina-d1-open/out/d1-mangopi_mq_rgb800x480_gt9xx/tina_d1-mangopi_mq_rgb800x480_gt9xx_uart0.img# # pack finish

单独编译命令:

# 单独编译boot0和uboot:(可在Tina任意目录下使用)mboot# 单独编译boot0:(可在Tina任意目录下使用)mboot0# 单独编译uboot:(可在Tina任意目录下使用)muboot# 单独编译内核:(可在Tina任意目录下使用)mkernel# 单独编译某个包:(只能在编译的包路径下操作)# 如包路径为 tina/package/utils/rwcheck,则需要进入到 tina/package/utils/rwcheck路径下再输入 mm 命令,# 编译出来对应的安装包的路径在 tina/out/d1-nezha/packages/base下mm# 在根目录下编译某个软件包:(需要在根目录下操作)make <应用包的路径>/install# 如 make package/utils/rwcheck/install# 在根目录下清空应用包临时文件:(需要在根目录下操作)make <应用包的路径>/clean# 如 make package/utils/rwcheck/clean

六、烧录

全志在线开发者社区——工具下载
固件在 out/d1-mangopi_mq_rgb800x480_gt9xx/tina_d1-mangopi_mq_rgb800x480_gt9xx_uart0.img,这里使用 PhoenixCard 烧录:
全志D1s/F133学习笔记(2)——MangoPi-MQ(芒果派麻雀)Tina系统编译烧录

七、上电运行

TF卡插入开发板上电,uart0 为控制台。

uart0 引脚示意:

全志D1s/F133学习笔记(2)——MangoPi-MQ(芒果派麻雀)Tina系统编译烧录 全志D1s/F133学习笔记(2)——MangoPi-MQ(芒果派麻雀)Tina系统编译烧录

运行LVGL:

全志D1s/F133学习笔记(2)——MangoPi-MQ(芒果派麻雀)Tina系统编译烧录 全志D1s/F133学习笔记(2)——MangoPi-MQ(芒果派麻雀)Tina系统编译烧录

八、补丁包修改

上面运行后发现刚上电屏幕很亮,但是过一会屏幕就变暗了(或者说变蓝了),这不能忍。

1、原因分析

通过日志看到是在启动内核后变暗的。
这个是启动内核后出现的,看一下内核设备树,可以发现 PD17 引脚被 dmic 占用了:
tina-d1-open/lichee/linux-5.4/arch/riscv/boot/dts/sunxi/sun20iw1p1.dtsi

rgb18_pins_a: rgb18@0 {pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", \"PD6", "PD7", "PD8", "PD9", "PD10", "PD11", \"PD12", "PD13", "PD14", "PD15", "PD16", "PD17", \"PD18", "PD19", "PD20", "PD21";function = "lcd0";drive-strength = <30>;bias-disable;};

tina-d1-open/device/config/chips/d1/configs/mangopi_mq_rgb800x480_gt9xx/board.dts(这里是编译后拷贝了 linux-5.4/board.dts

dmic_pins_a: dmic@0 {/* DMIC_PIN: CLK, DATA0, DATA1, DATA2 */pins = "PE17", "PB11", "PB10", "PD17";function = "dmic";drive-strength = <20>;bias-disable;};

LCD部分原理图:
全志D1s/F133学习笔记(2)——MangoPi-MQ(芒果派麻雀)Tina系统编译烧录

2、修改方法

修改设备树,把 dmic 关了。
tina-d1-open/device/config/chips/d1/configs/mangopi_mq_rgb800x480_gt9xx/linux-5.4/board.dts
tina-d1-open/device/config/chips/d1/configs/mangopi_mq_rgb480x272_rtp/linux-5.4/board.dts

&dmic {pinctrl-names   = "default","sleep";pinctrl-0= <&dmic_pins_a>;pinctrl-1= <&dmic_pins_b>;status = "disabled";};

3、编译运行

make -j16pack

注:这里不清楚为什么用 make -j16 是正常的,但是 mkernelpack 生成的img只有 20.2M,没有把文件系统打包进去。

附:部分开机LOG

[32]HELLO! BOOT0 is starting![35]BOOT0 commit : 27369ab[38]set pll start[39]periph0 has been enabled[42]set pll end[44][pmu]: bus read error[46]board init ok[48]ZQ value = 0x2f***********[51]get_pmu_exist() = -1[53]ddr_efuse_type: 0xa[56][AUTO DEBUG] single rank and full DQ![60]ddr_efuse_type: 0xa[63][AUTO DEBUG] rank 0 row = 13 [66][AUTO DEBUG] rank 0 bank = 4 [69][AUTO DEBUG] rank 0 page size = 2 KB [73]DRAM BOOT DRIVE INFO: V0.24[75]DRAM CLK = 528 MHz[78]DRAM Type = 2 (2:DDR2,3:DDR3)[81]DRAMC read ODT  off.[83]DRAM ODT off.[85]ddr_efuse_type: 0xa[88]DRAM SIZE =64 M[91]DRAM simple test OK.[93]dram size =64[95]card no is 0[97]sdcard 0 line count 4[99][mmc]: mmc driver ver 2021-04-2 16:45[108][mmc]: Wrong media type 0x0[111][mmc]: ***Try SD card 0***[120][mmc]: HSSDR52/SDR25 4 bit[123][mmc]: 50000000 Hz[125][mmc]: 29819 MB[127][mmc]: ***SD/MMC 0 init OK!!!***[175]Loading boot-pkg Succeed(index=0).[179]Entry_name = opensbi[182]Entry_name = u-boot[185]Entry_name = dtb[188]mmc not para[190]Jump to second Boot.OpenSBI v0.6   ____      _____ ____ _____  / __ \    / ____|  _ \_   _| | |  | |_ __   ___ _ __ | (___ | |_) || | | |  | | '_ \ / _ \ '_ \ \___ \|  _ < | | | |__| | |_) |  __/ | | |____) | |_) || |_  \____/| .__/ \___|_| |_|_____/|____/_____| | | |_|Platform Name   : T-HEAD Xuantie PlatformPlatform HART Features : RV64ACDFIMSUVXPlatform Max HARTs     : 1Current Hart    : 0Firmware Base   : 0x40000400Firmware Size   : 75 KBRuntime SBI Version    : 0.2MIDELEG : 0x0000000000000222MEDELEG : 0x000000000000b1ffPMP0    : 0x0000000040000000-0x000000004001ffff (A)PMP1    : 0x0000000040000000-0x000000007fffffff (A,R,W,X)PMP2    : 0x0000000080000000-0x00000000bfffffff (A,R,W,X)PMP3    : 0x0000000000020000-0x0000000000027fff (A,ÿU-Boot 2018.05-g0a88ac9-config-dirty (Dec 18 2021 - 22:57:39 +0800) Allwinner Technology[00.273]DRAM:  64 MiB[00.276]Relocation Offset is: 01ef0000[00.280]secure enable bit: 0[00.283]CPU=1008 MHz,PLL6=600 Mhz,AHB=200 Mhz, APB1=100Mhz  MBus=300Mhz[00.289]flash init start[00.291]workmode = 0,storage type = 1[00.295][mmc]: mmc driver ver uboot2018:2021-04-16 14:23:00-1[00.300][mmc]: get sdc_type fail and use default host:tm1.[00.306][mmc]: can't find node "mmc0",will add new node[00.311][mmc]: fdt err returned [00.315][mmc]: Using default timing para[00.319][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 initializedregister fix_factor clk error[00.355]drv_disp_initfdt_getprop_u32 s_pwm.pwm-base fail[00.371]drv_disp_init finish[00.374]boot_gui_init:start[00.377]set disp.dev2_output_type fail. using defval=0[00.383]boot_gui_init:finishpartno erro : can't find partition bootloader54 bytes read in 1 ms (52.7 KiB/s)[00.399]bmp_name=bootlogo.bmp size 11520541152054 bytes read in 49 ms (22.4 MiB/s)[00.467]Loading Environment from SUNXI_FLASH... OK[00.486]out of usb burn from boot: not need burn keyroot_partition is rootfsset root to /dev/mmcblk0p5[00.496]update part info[00.498]update bootcmd[00.501]change working_fdt 0x42aafda8 to 0x42a8fda8[00.522]update dtsHit any key to stop autoboot:  0 [00.563]LCD open finishAndroid's image name: d1-mangopi_mq_rgNo reserved memory region found in source FDT[00.949]Starting kernel ...[00.952][mmc]: MMC Device 2 not found[00.955][mmc]: mmc 2 not find, so not exit[    0.000000] OF: fdt: Ignoring memory range 0x40000000 - 0x40200000[    0.000000] Linux version 5.4.61 (pjw@pjw-virtual-machine) (riscv64-unknown-linux-gnu-gcc (C-SKY RISCV Tools V1.8.4 B20200702) 8.1.0, GNU ld (GNU Binutils) 2.32) #2 PREEMPT Sat Dec 18 15:37:58 UTC 2021......[   27.540277] sunxi-mmc 4021000.sdmmc: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B[   27.578724] sunxi-mmc 4021000.sdmmc: smc 1 p1 err, cmd 52, RTO !![   27.586457] sunxi-mmc 4021000.sdmmc: smc 1 p1 err, cmd 52, RTO !![   27.593325] sunxi-mmc 4021000.sdmmc: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B[   27.668549] sunxi-mmc 4021000.sdmmc: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B[   27.692998] sunxi-mmc 4021000.sdmmc: smc 1 p1 err, cmd 5, RTO !![   27.700623] sunxi-mmc 4021000.sdmmc: smc 1 p1 err, cmd 5, RTO !![   27.708244] sunxi-mmc 4021000.sdmmc: smc 1 p1 err, cmd 5, RTO !![   27.715867] sunxi-mmc 4021000.sdmmc: smc 1 p1 err, cmd 5, RTO !![   27.722638] sunxi-mmc 4021000.sdmmc: sdc set ios:clk 0Hz bm PP pm OFF vdd 0 width 1 timing LEGACY(SDR12) dt BTrying to connect to SWUpdate...[   32.211668] [SNDCODEC][sunxi_card_hw_params][620]:stream_flag: 0BusyBox v1.27.2 () built-in shell (ash) _____  ___     _|_   _||_| ___  _ _   |  |   |_| ___  _ _  _ _  | |   _ |   ||   |  |  |__ | ||   || | ||_'_|  | |  | || | || _ |  |_____||_||_|_||___||_,_|  |_|  |_||_|_||_|_|  Tina is Based on OpenWrt! ---------------------------------------------- Tina Linux (Neptune, 5C1C9C53) ----------------------------------------------root@TinaLinux:/# [  126.670732] random: crng init done[  126.674537] random: 6 urandom warning(s) missed due to ratelimiting