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

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

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
YoC基础软件平台具有丰富的IoT组件,可有效支持RISC-V生态应用开发。前几期内容中,我们已经陆续介绍了YoC的CSI组件、AT组件和AV(多媒体)组件。本期内容,我们将为大家介绍YoC的PARTITION组件,从分区表介绍、配置与接口、配置示例三方面带大家详细了解该组件。
' c3 w- Z* E# B- y; r- \1 I$ f: f% ]* W' I" O$ A
1、概述& L2 C) a3 ^; I( }( @2 c
PARTITION组件是一个分区管理的组件。基于分区表(MTB)的分区信息来统一管理Flash分区,对分区进行统一的读写、擦除、以及验签的操作。
  z; C" v9 H% ~下面就来介绍下分区表的定义以及组件提供的一些API接口。; i5 B9 q0 o1 W, I3 v" x. w
- O1 v9 r& w4 W% N
2、分区表介绍1 V4 k  k% R, w* o9 d; V7 d3 e1 z
分区表简称为MTB(manifest table)。保存系统镜像的基本信息以及签名值。MTB分为两类。
& m1 f& x5 K* FbmtB:bootloader manifest table,记录bootloader镜像的信息,给bootrom使用' k* O) V. V6 g7 g, [# B0 p  \
IMTB:images manifest table,记录除bootloader以外的其他镜像的信息,给bootloader使用# f/ E) r, s' z4 m) [" ^
其中IMTB是必须的,而BMTB则取决于芯片bootrom的设计,是否需要这张BMTB表,使用BMTB的优势是可以灵活的配置boot的地址信息,避免固化在bootrom里。这2张表本身就是以分区的形式存储在Flash中的,在定义分区的时候要预留出来。分区名字也是固定为"bmtb"和"imtb"。
! d& U% A  m' q* m0 r: x3 Y " X7 U, y# b+ I
分区的信息存储在一个叫config.yaml的文件中,一般放在工程的board或者solution目录下,在打包镜像的时候通过工具自动生成bmtb/imtb两个镜像。! Y$ t# B( |/ c$ ]! b4 ~1 J
一个典型的分区表如下:* w* g. j/ s6 s: @
mtb_version: 4
1 s  q. n/ n! O& `! {# ichip: pangu        # cb2201 / cb6501 / pangu
4 Q. |3 F8 @8 J* f' Cdiff:; }7 o* b, {/ p/ ^  t6 o
  fota_version: 07 Q4 q7 t9 J6 O* L# E# V3 l& b
  ram_buf: 50         #DEC     KB   ( max ram need)
: |- P3 n) o" B; k; g  flash_buf: 16       #DEC     KB   ( buffer size)
* Z3 P5 [) W& i" i  flash_sector: 4096  #DEC     byte ( flash sector), n- [" K. X( g, T  h' q& ^% p! j. G$ L
  diff_mode: 010      #BIN
0 L* W3 P4 y9 \3 r# _) U  double_control: 1   #DEC (1--use 2 sector for diff restore,0--1 sector)
* n( M2 r; _! A8 d1 w/ dflash:. h9 j$ x+ m% u) ?. e
  base_address: 0x8000000       # the base address of flash/ P3 s5 p& P& [7 P* D8 u
  run_base_address: 0x18000000  # the run address, maybe SDRAM address) {" v. e% @( B9 j4 t
  sector: 4096                  # Bytes
9 P1 x6 A( Z, i$ i  size: 16777216                # Bytes, $(sector count) * sector
. k6 g; T1 D( g& Cpartitions:+ X; D' g2 K7 a6 h7 k  w, `1 @
  - { name: bmtb,   address: 0x8000000, size: 0x001000 }
  d/ g% J( U* P. y' q, g0 ]2 [  - { name: boot,   address: 0x8001000, size: 0x020000 }/ b( V3 V6 _) m, ?
  - { name: tee,    address: 0x8021000, load_addr: 0x18000000, size: 0x010000 }) O$ U! c" F- U1 [' H
  - { name: imtb,   address: 0x8031000, size: 0x002000 }7 U( K* F4 M; D# u( d  A
  - { name: prim,   address: 0x8033000, load_addr: 0x18010000, size: 0x300000, verify: true, update: FULL}7 Z: @7 `# f+ f, u7 g, J3 R( m
  - { name: kv,     address: 0x8633000, size: 0x004000 }
5 a. }- s/ t7 q. N9 B4 {  - { name: lpm,    address: 0x8637000, size: 0x020000 }
" F3 O3 I/ ^( i  - { name: misc,   address: 0x8657000, size: 0x400000 }7 l6 k" i: n' v9 c

2 y8 M* B3 G/ s# S; \2 v$ H9 k+ E0 f3、配置与接口介绍
5 c! I, r2 E: Q4 R& Q介绍partition组件的一些参数配置和常用API接口。7 I5 e; e3 @$ V3 q6 f) L- k& h
3.1 参数配置( D- I5 p0 K) ~) ~+ h' L& h
以下宏定义在PARTITION组件的yoc/partition.h文件中,用户可以在应用方案的package.yaml中的def_config字段中进行重新定义。6 N& ~& B! I0 Y" e: @- V. Q
CONFIG_MAX_PARTITION_NUM:分区个数配置。+ V; n  h  Q# w# @
定义最大的分区个数,如果用户没有自定义,那么默认为12个分区大小。如果ram资源比较紧张,而分区又没有达到12个,那么可以把这个宏改成实际分区个数。每减少一个分区,分别可以节省40个字节的data段size,和调用partition_init的任务最多40个字节的栈空间。* c. h7 [' b% W
CONFIG_PARITION_NO_VERIFY:分区校验配置。是否开启分区校验功能,默认值为1,为不开启校验。安全的方案需要配置成0。
- Z8 u1 `0 e1 a/ P' O( F6 C2 c1 p' aCONFIG_NOT_SUPORRT_SASC:安全区域设置配置。配置分区的访问权限。是否支持设置安全区域,默认值为1,不支持设置安全区域。如果芯片支持,可以在board组件中配置为0,开启此功能。
( i5 U6 B- A# J
5 Y( N2 A3 Y( c" W6 q
5 s; L- s+ u5 e3 U

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-7-22 18:24 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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