MTK分区之(三)MTK scatter.txt生成过程

本文详细介绍了MTK scatter.txt的生成过程,包括ptgen工具的使用、csv分区表文件解析、分区类型与配置、动态分区处理以及分区大小计算等步骤。通过对ptgen工具的分析,揭示了分区表数据在生成scatter.txt过程中可能的改动,为MTK平台的分区调试提供了宝贵资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三、MTK scatter.txt生成过程

MTK的分区相关过程简单来说:

分区生成工具ptgen(alps/device/mediatek/build/build/tools/ptgen)

根据alps/device/mediatek/build/build/tools/ptgen/MT6765目录下的分区表文件生成scatter.txt

然后MTK的烧录工具需要选两个东西,一个DA.bin,一个就是这个scatter.txt

在MTK样机接上usb线开机时,在preloader阶段会进行usb握手操作,如果握手成功,就会通过usb下载DA.bin到样机上,然后样机跳到DA.bin继续跑

DA.bin的主要功能就是根据scatter.txt来烧录分区镜像(可能会进行verify)

(一)csv分区表文件各列含义

对于DH30项目,用的平台是MT6762(MTK MT6762和MT6765很多是一样的),采用的是AB分区,

所以分区表文件是

device/mediatek/build/build/tools/ptgen/MT6765/partition_table_MT6765_emmc_ab.csv

下面说明一下csv分区表文件各列的含义,每一列可供设置项

分区表文件分单分区

对于单分区,分区表文件就是

alps/device/mediatek/build/build/tools/ptgen/MT6765/partition_table_MT6765_emmc.csv

对于AB分区,分区表文件就是

alps/device/mediatek/build/build/tools/ptgen/MT6765/partition_table_MT6765_emmc_ab.csv

分区表文件中从左到右有这些列:

Partition_Name:分区名

Type:分区类型,常见Raw Data和ext4

Size_KB:分区大小

, :分区表中一般是写的和Size_KB一样,MTK目前没用到,不用管

Region:

Region这一列只有preloader可以设置为EMMC_BOOT1_BOOT2,其他分区都必须设置为EMMC_USER

Group:

这个我看除了product_a/b,vendor_a/b,system_a/b是main外,其他分区都是空

设为main表示这个分区要在动态分区中,目前MTK内部只有main和空配置

Reserved:Y表示此分区放在EMMC的最后面

Download:是否下载镜像到这个分区

Download_File:

如果要下载镜像,下载的镜像名或者perloader可以写AUTO,否则写NONE

OTA_Update:

         OTA是over the air空中下载的缩写,意思就是不借助usb线进行更新,

而是通过网络等方式来进行更新

          比如我们手里系统里面的检查更新就是OTA的一种

EmptyBoot_Needed:

           EmptyBoot_Needed代表xflash feature,一种空板烧录方式。

如果不使用flashtool进行烧录的话,MTK会提供专门的flash烧录工具进行烧录,perloader判断如果是用flash烧录工具烧录的话,就会烧录这一列标为Y的分区

          目前我们还没有听说过这种不使用flashtool工具进行烧录的项目

FastBoot_Erase:

是否允许fastboot擦除,想fastboot擦除这个分区,必须这里设为Y

, :没用到,不用管

FastBoot_Download:

是否允许fastboot下载,想fastboot烧录这个分区,必须这里设为Y

, : 没用到,不用管

Operation_Type:

         flashtool烧录会用到,可供设置的有五个选项

             (1)'BOOTLOADERS' :preloader, 用于安全下载

(2)'PROTECTED' :

protect partition, 用fireware upgrade方式烧录全擦前会将

这个分区备份出来,全擦烧录后会再把备份烧进去,保证分区数据不丢失

                但注意firware upgrade方式备份的分区,分区大小不能改

(位置可以改)。

        (3)'BINREGION':

 和上面的PROTECTED差不多,nvram备份分区,用fireware upgrade方式烧录全擦前会将这个分区备份出来,全擦烧录后会再把备份烧进去,保证分区数据不丢失

        (4)'AUTO':正常分区,fireware upgrade烧录会擦除这个分区

        (5)‘RESERVED’:

保留分区,与“保留”项的含义相同。

此分区可能会在下载/固件升级中被覆盖或更新。

注:

Fireware upgrade烧录方式

 

(二)ptgen生成scatter.txt

从上面的过程就可以知道ptgen就是根据分区表文件生成scatter.txt,

但ptgen不是简单的将分区表csv文件翻译成scatter.txt,它会对分区表数据做一些检查,甚至会更改分区表数据。

很多时候分区相关的修改报错或者修改不成功都与ptgen这个工具有关,所以我们还是有必要研究一下ptgen这个工具的

鉴于网上基本上没有对ptgen工具的详细说明(反正我没找到),ptgen这个工具是用perl语言写的。我学了下perl语言,对ptgen这个工具进行了详细的分析。在分析的过程中,知道了一些细节和调试的手段。现在分享出来。

(perl语言学习教程:https://www.runoob.com/perl/perl-tutorial.html)

下面以S96769BA1这个项目来分析ptgen这个工具

1、如何调用到ptgen分区生成工具

首先在device/wingtechsh/S96769BA1/BoardConfig.mk里面

    # ptgen

    MTK_PTGEN_CHIP := $(shell echo $(TARGET_BOARD_PLATFORM) | tr '[a-z]' '[A-Z]')

    -include device/mediatek/build/build/tools/ptgen/$(MTK_PTGEN_CHIP)/ptgen.mk

这里就MTK_PTGEN_CHIP指定了我用的平台,对于DH30是MT6762,

但是MTK是把MT6762和MT6765的配置放在一起的(可能是两个太像了)

$(shell echo $(TARGET_BOARD_PLATFORM) | tr '[a-z]' '[A-Z]')后面的tr是替换,意思转换为大写

所以这个的MTK_PTGEN_CHIP就是MT6765,

所以device/mediatek/build/build/tools/ptgen/MT6765/ptgen.mk这个mk文件就会被调用

下面再来看ptgen.mk这个mk文件的内容

...

#Murphy.liu note:ptgen是用perl脚本语言写的,指定perl.pl路径,和当前ptgen.mk在同一个目录下

MTK_PTGEN_PERL := device/mediatek/build/build/tools/ptgen/$(MTK_PTGEN_CHIP)/ptgen.pl

#Murphy.liu note:分区表文件路径,和当前ptgen.mk在同一个目录下

MTK_PTGEN_XLS := $(wildcard device/mediatek/build/build/tools/ptgen/$(MTK_PTGEN_CHIP)/*.xls)

#Murphy.liu note:运行ptgen命令,可以看到先指定了一堆配置,然后perl device/mediatek/build/build/tools/ptgen/MT765/ptgen.pl执行这个perl脚本

#下面这一堆对于DH30Q相当于相当于

#MTK_PTGEN_COMMAND := \

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值