全志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=y
CONFIG_LCD_SUPPORT_LQ101R1SX03=y
CONFIG_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-open
TINA_TARGET_ARCH=riscv
TARGET_PRODUCT=d1_mangopi_mq_rgb800x480_gt9xx
TARGET_PLATFORM=d1
TARGET_BOARD=d1-mangopi_mq_rgb800x480_gt9xx
TARGET_PLAN=mangopi_mq_rgb800x480_gt9xx
TARGET_BUILD_VARIANT=tina
TARGET_BUILD_TYPE=release
TARGET_KERNEL_VERSION=5.4
TARGET_UBOOT=u-boot-2018
TARGET_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.img
pack# 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
烧录:
七、上电运行
TF卡插入开发板上电,uart0
为控制台。
uart0 引脚示意:
![]() |
![]() |
运行LVGL:
![]() |
![]() |
八、补丁包修改
上面运行后发现刚上电屏幕很亮,但是过一会屏幕就变暗了(或者说变蓝了),这不能忍。
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部分原理图:
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 -j16
pack
注:这里不清楚为什么用 make -j16
是正常的,但是 mkernel
再 pack
生成的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 Platform
Platform HART Features : RV64ACDFIMSUVX
Platform Max HARTs : 1
Current Hart : 0
Firmware Base : 0x40000400
Firmware Size : 75 KB
Runtime SBI Version : 0.2MIDELEG : 0x0000000000000222
MEDELEG : 0x000000000000b1ff
PMP0 : 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 <no error>
[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 initialized
register fix_factor clk error
[00.355]drv_disp_init
fdt_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:finish
partno erro : can't find partition bootloader
54 bytes read in 1 ms (52.7 KiB/s)
[00.399]bmp_name=bootlogo.bmp size 1152054
1152054 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 key
root_partition is rootfs
set root to /dev/mmcblk0p5
[00.496]update part info
[00.498]update bootcmd
[00.501]change working_fdt 0x42aafda8 to 0x42a8fda8
[00.522]update dts
Hit any key to stop autoboot: 0
[00.563]LCD open finish
Android's image name: d1-mangopi_mq_rg
No 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 B
Trying 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
全志D1s/F133学习笔记(2)——MangoPi-MQ(芒果派麻雀)Tina系统编译烧录相关推荐
- 全志D1s/F133学习笔记(1)——MangoPi-MQ(芒果派麻雀)上手试玩
一.资料 D1s是全志针对智能解码市场推出的高性价比AIoT芯片.它使用64bit RISC-V架构的阿里平头哥C906处理器,内置了64M DDR2,支持Linux系统,同时集成了大量自研的音视频编 ...
- linux笔记(9):MangoPi-MQ(芒果派麻雀D1s)Tina系统编译烧录
文章目录 1.下载相关资料 1.1 WhyCan Forum(哇酷开发者社区)提供的sdk 1.1.1 SDK解压过程 1.2 WhyCan Forum(哇酷开发者社区)提供的补丁 1.2.1 补丁包 ...
- 【目录】全志F1C100S/F1C200S学习笔记
全志F1C100S/F1C200S学习笔记目录 全志F1C100S/F1C200S学习笔记(1)--基础简介及资料 全志F1C100S/F1C200S学习笔记(2)--TF卡分区及系统构建烧录 全志F ...
- OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪 OpenCV学习笔记(三十七)——实用函数、系统函数、宏core OpenCV学习笔记(三十八)——显示当前FPS OpenC
OpenCV学习笔记(三十六)--Kalman滤波做运动目标跟踪 kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加 ...
- haxe php,Haxe学习笔记(一) Haxe:一次编码全平台编译的神话
Haxe学习笔记(一) Haxe:一次编码全平台编译的神话 一 Haxe是什么? Haxe是开源的,它作为一门语言,基础语法和ActionScript3基本一致.所以任何做过Flash开发的人都可以很 ...
- QT学习笔记(二):QT MinGW 和 MSVC 编译方式
QT学习笔记(二):QT MinGW 和 MSVC 编译方式 Qt 中有两种方式编译:一种是MinGW ,另一种MSVC,是使用两种不同的编译器. 1.MSVC是指微软的VC编译器: 2.MingGW ...
- 51CTO学习笔记--Linux运维故障排查思路与系统调优技巧视频课程(高俊峰)
51CTO学习笔记--Linux运维故障排查思路与系统调优技巧视频课程 第一课 Linux运维经验分享与思路 1.一般把主机名,写到hosts下 127.0.0.1 hostname,因为 ...
- 全志芒果派麻雀开发板----新建一个分区并挂载(1)
目录 吐槽--开发板全都是吃灰的 正文: (一)找资料的办法! (二)新建分区 (三)分区的挂载 1,建立文件夹(这一步我就想了很久,怎么建立完还能打包到烧录包里) 2,分区挂载到文件夹上: 3,新建 ...
- 全志D1/D1s芯片:芒果派麻雀点RGB屏填坑
前言 最近全志推出了D1处理器,搭载平头哥玄铁906 RISC-V的应用处理器.于是准备入手玩一下,买了芒果派做了基于D1s的麻雀板,D1s是D1内封64M DDR的版本,去掉了hdmi输出,号称点屏 ...
最新文章
- 图像特征提取:图像的矩特征
- 基于vuejs的移动端分页代码
- iangularjs 模板,AngularJS模板中的三元运算符
- java计算器如何实现运算_用java编写了一个模拟计算器的界面设计,怎么实现运算功能呢...
- Python 零基础入门
- rdd数据存内存 数据量_Spark 性能优化(二)——数据倾斜优化
- 下一代终端保护六大支柱
- 2019年中秋读者福利,你中奖了吗??
- 现代控制理论(1)——状态空间表达式
- 宾得k5ii_K5--K5II---K5IIs,该选哪个?(喜欢宾得机的摄友)各抒己见。
- PS 快捷键大全(psshortcut)
- 机器学习算法工程师面试经历
- 关于电脑登录微信会出现闪(跳)黑屏的处理办法
- 如何把kafka Log4j1.x升级到Log4j2.x ?
- 奇怪的键盘按a截图了
- 是非人生 — 一个菜鸟程序员的5年职场路 第30节
- php人人商城定时任务,人人商城异步操作菜单示例
- python语言程序代码保存在_《计算机二级Python语言程序设计考试》第5章:函数和代码复用...
- 医学院交换去计算机学院,皖南医学院学生2018年赴台湾元培医事科技大学参加交换生项目交流心得...
- 【SQLite3+Qt开发】SQLite3简要介绍+在Qt5中的使用步骤