partition_table.h中的*alignment是什么意思?
以4M\partition_table.h为例。
#define NVMS_FIRMWARE_PART_START 0x002000 /*对齐512KB由默认的FLASH_REGION_SIZE决定。* / # define x07e000 NVMS_FIRMWARE_PART_SIZE 0 /* +---------------- 512 kb ---------------------+ */ # 定义NVMS_GENERIC_PART_START 0 x0e0000 # define x020000 NVMS_GENERIC_PART_SIZE 0
固件部分从0x2000开始,没有对齐到512KB,通用部分也没有。为什么通用部分突然跳到0xE0000,而固件部分的结束地址是0x80000?
另一个问题是,我是否可以同时为我的辅助引导装载程序安排一个较小的固件部分(约128KB),和为我的应用程序安排一个较大的分区部分(约2MB) ?我应该如何修改partition_table.h?
谢谢!
关键词:
设备:
嗨kuanyu99,
默认情况下,SDK和芯片配置都支持运行最大512kb大小的应用程序映像。为此,固件和通用分区项(分别是NVMS_FIRMWARE和NVMS_GENERIC_PART)应该是512 MB对齐的。NVMS_PRODUCT_HEADER条目应该总是从0x0000开始,它的大小应该是0x2000。其余的分区项可以根据用户的需要进行修改。请查看我们的支持网站上的以下教程:
http://lpccs-docs.dialog-semiconductor.com/tutorial_da1469x_supporting_fw_images_bigger_than_512kb/index.html
谢谢,PM_Dialog
嗨PM_Dialog,
是的,我读过,它也把我弄糊涂了。为什么有时必须设置为512KB对齐,而有时可以设置为1MB对齐?什么是"补偿到0 x4000允许”意味着什么?
对于分区,我可以将分区设置为128KB对齐吗?这对我来说更灵活。
partition_table.h可能如下所示。
谢谢!
嗨kuanyu99,
NVMS_FIRMWARE和NVMS_GENERIC_PART应该与FLASH_REGION_SIZE对齐。本教程旨在提供如何在DA1469x上支持不同大小的FW图像的步骤。具体来说,提供执行1 MB大小的应用程序映像所需的步骤。请检查CACHE_FLASH_REG[FLASH_REGION_SIZE],你会看到哪些选项是可用的。这就是为什么NVMS_GENERIC_PART是1MB对齐的。NVMS_PRODUCT_HEADER条目应该总是从0x0000开始,它的大小应该是0x2000。其余的分区项可以根据用户的需要进行修改。如果你有SUOTA功能。
谢谢,PM_Dialog
嗨,PM_Dialog,
1.根据我的理解,我不能访问超过FLASH_REGION_SIZE的地址,否则我将得到一个未定义的结果。因此,如果我的项目要创建一个能够跳转到应用程序的辅助引导加载程序,我必须将FLASH_REGION_SIZE设置为大于两个大小之和。是这样吗?
2.为了满足*alignment*和*FLASH_REGION_SIZE*的要求,我可能必须将FLASH_REGION_SIZE设置为2MB,并使NVMS_FIRMWARE的结束地址对齐为2MB。那是正确的吗?
3.在这个分区设置下,如果我只擦除在这个2MB分区内分配的应用程序区域,它会影响该分区内的其他区域吗?
谢谢!
嗨kuanyu99,
很抱歉耽搁了。你想要闪存的固件的大小是多少?它有SUOTA实现吗?如果将FLASH_REGION_SIZE设置为2MB,则固件和通用分区项(分别为NVMS_FIRMWARE和NVMS_GENERIC_PART)都应该以2MB对齐。
谢谢,PM_Dialog
嗨PM_Dialog,
我可能使用1MB或2MB,我可能理解分区结构。主要的问题是FLASH_REGION_SIZE应该与内存访问问题的固件大小一致。
我想你的意思是NVMS_FW_EXEC_PART和NVMS_FW_UPDATE_PART应该具有相同的大小对齐,就像4M/suota/partition_table.h示例一样。但是无论分区名称是什么,SUOTA只查找用于更新的图像头,对吗?
嗨kuanyu99,
谢谢你接受我的回答。我的意思是NVMS_FIRMWARE和NVMS_GENERIC_PART都应该是FLASH_REGION_SIZE对齐的。你能把最后一个问题说清楚吗?
谢谢,PM_Dialog