找回密码
 注册
关于网站域名变更的通知
查看: 214|回复: 2
打印 上一主题 下一主题

RISC-V生态全景解析14——YoC组件PARTITION组件介绍

  [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-6-8 10:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
YoC基础软件平台具有丰富的IoT组件,可有效支持RISC-V生态应用开发。前几期内容中,我们已经陆续介绍了YoC的CSI组件、AT组件和AV(多媒体)组件。本期内容,我们将为大家介绍YoC的PARTITION组件,从分区表介绍、配置与接口、配置示例三方面带大家详细了解该组件。: h2 \* @0 A( ?0 O
3 G6 ]4 w  P& P' k3 m
1、概述' |; M9 d- _; r+ d' ~8 [
PARTITION组件是一个分区管理的组件。基于分区表(MTB)的分区信息来统一管理Flash分区,对分区进行统一的读写、擦除、以及验签的操作。
) P; ?3 D2 _* j+ B下面就来介绍下分区表的定义以及组件提供的一些API接口。1 Z1 h  o* W  d+ B& ^
9 s& {3 L. y2 w6 b
2、分区表介绍9 e& D7 s5 i  o3 Q7 M# s. t
分区表简称为MTB(manifest table)。保存系统镜像的基本信息以及签名值。MTB分为两类。
. U$ p7 W; y5 z( s& s# K- ^bmtB:bootloader manifest table,记录bootloader镜像的信息,给bootrom使用
9 Y+ G) r' h) a* K  L& G; eIMTB:images manifest table,记录除bootloader以外的其他镜像的信息,给bootloader使用
" g# Q+ J8 e; z8 a其中IMTB是必须的,而BMTB则取决于芯片bootrom的设计,是否需要这张BMTB表,使用BMTB的优势是可以灵活的配置boot的地址信息,避免固化在bootrom里。这2张表本身就是以分区的形式存储在Flash中的,在定义分区的时候要预留出来。分区名字也是固定为"bmtb"和"imtb"。
% `/ |, g* n& K0 p7 c + B% b% }! @2 p- _9 j6 t
分区的信息存储在一个叫config.yaml的文件中,一般放在工程的board或者solution目录下,在打包镜像的时候通过工具自动生成bmtb/imtb两个镜像。2 }8 y6 Q' L5 R
一个典型的分区表如下:
5 S( j" ]! h& y; X6 }, Amtb_version: 45 Z# _4 C4 Z4 `3 K" \2 i, Z1 B- \. o
chip: pangu        # cb2201 / cb6501 / pangu) d1 K; z& W4 x5 g7 X7 ^* b" z
diff:
5 [7 v6 l5 h3 u& r7 C& T1 d  fota_version: 0
. H8 G: A( r- {9 L5 O2 n* p  ram_buf: 50         #DEC     KB   ( max ram need): }8 ]2 _+ |( p& Z) `3 {! h4 l5 x/ G2 c
  flash_buf: 16       #DEC     KB   ( buffer size)* M7 C7 D. Z3 P
  flash_sector: 4096  #DEC     byte ( flash sector)9 _8 `1 x- X' v% B4 ^
  diff_mode: 010      #BIN
, Q& O) |8 R0 V' \7 n9 t  double_control: 1   #DEC (1--use 2 sector for diff restore,0--1 sector). K1 O: r6 z( p/ e
flash:; b; [7 u6 q; Y$ A) `. g+ i5 B
  base_address: 0x8000000       # the base address of flash# [7 [: [4 Z$ u. k
  run_base_address: 0x18000000  # the run address, maybe SDRAM address+ V- t2 K9 W$ N1 _, \1 d3 n/ x
  sector: 4096                  # Bytes
; J* C  T# [5 E7 h: ]  size: 16777216                # Bytes, $(sector count) * sector
( ?6 h. p- y& Z+ D3 N4 [partitions:: U/ q. G4 h" s3 p' k  h( g9 k, H( ?$ d
  - { name: bmtb,   address: 0x8000000, size: 0x001000 }
3 S1 @6 H6 f4 i" _& e  - { name: boot,   address: 0x8001000, size: 0x020000 }+ f) W& S" O# b( K6 A# H% u
  - { name: tee,    address: 0x8021000, load_addr: 0x18000000, size: 0x010000 }
# e; N: n$ v8 J9 X# z- ]  - { name: imtb,   address: 0x8031000, size: 0x002000 }
3 b) }4 _' C$ I" d" a  - { name: prim,   address: 0x8033000, load_addr: 0x18010000, size: 0x300000, verify: true, update: FULL}
8 H5 q# A4 \$ r0 d1 \  - { name: kv,     address: 0x8633000, size: 0x004000 }
( r# i6 P. _0 D+ [  - { name: lpm,    address: 0x8637000, size: 0x020000 }
/ U4 p! L. u; t9 @. P( k  - { name: misc,   address: 0x8657000, size: 0x400000 }
. _6 Q, A; E/ w$ I1 }! l3 Y' z  j5 T! ~1 v. Q% X0 @
3、配置与接口介绍3 l$ X- ~8 \; L4 _7 W9 R8 Q
介绍partition组件的一些参数配置和常用API接口。
- ?+ x' t! V. Q3 w8 M3.1 参数配置* s( w& A+ [0 v) y; I0 d; P
以下宏定义在PARTITION组件的yoc/partition.h文件中,用户可以在应用方案的package.yaml中的def_config字段中进行重新定义。; Y9 \( w+ D* e) \3 A
CONFIG_MAX_PARTITION_NUM:分区个数配置。: A" V% o5 O( i# B
定义最大的分区个数,如果用户没有自定义,那么默认为12个分区大小。如果ram资源比较紧张,而分区又没有达到12个,那么可以把这个宏改成实际分区个数。每减少一个分区,分别可以节省40个字节的data段size,和调用partition_init的任务最多40个字节的栈空间。
9 R8 Z! Y+ L/ e% fCONFIG_PARITION_NO_VERIFY:分区校验配置。是否开启分区校验功能,默认值为1,为不开启校验。安全的方案需要配置成0。0 U+ M7 `: _4 M, `- |2 A; `3 ]
CONFIG_NOT_SUPORRT_SASC:安全区域设置配置。配置分区的访问权限。是否支持设置安全区域,默认值为1,不支持设置安全区域。如果芯片支持,可以在board组件中配置为0,开启此功能。
6 y8 e4 C2 N! v  o# r. A! W
' |$ \: f3 H( r0 L4 e/ j
. x' N5 g- g- o  t# M+ B' R

RISC-V生态全景解析(十四):YoC组件PARTITION组件介绍.pdf

280.64 KB, 下载次数: 0, 下载积分: 威望 -5

该用户从未签到

2#
发表于 2022-6-8 10:40 | 只看该作者
不错不错,学习了

该用户从未签到

3#
发表于 2022-6-8 14:09 | 只看该作者
不错,学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-9-30 00:59 , Processed in 0.109375 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表