嵌入式技术论坛
直播中

CDCNKA

8年用户 1231经验值
擅长:385288
私信 关注
[问答]

请问使用fal组件提示的这两个宏定义的都是什么数据呀

请教一下:
使用fal组件,没有在fal_cfg.h 中定义使用 FAL_PART_HAS_TABLE_CFG,FAL_PART_TABLE
然后出现提示这两个宏

#if !defined(FAL_PART_TABLE_FLASH_DEV_NAME)
#error "You must defined FAL_PART_TABLE_FLASH_DEV_NAME on 'fal_cfg.h'"
#endif
/* check partition table end offset address definition */
#if !defined(FAL_PART_TABLE_END_OFFSET)
#error "You must defined FAL_PART_TABLE_END_OFFSET on 'fal_cfg.h'"
#endif

请问提示的这两个宏定义的都是什么数据呀!?

回帖(9)

王鑫

2022-8-23 14:24:38
在fal_cfg.h文件里面定义,打开这个头文件就看到了
举报

CDCNKA

2022-8-23 14:24:50
#include
#include "rtdef.h"
#define NOR_FLASH_DEV_NAME "stm32_onchip"
/* ===================== Flash device Configuration ========================= */
extern const struct fal_flash_dev stm32f1_onchip_flash;
extern const struct fal_flash_dev fram;
/* flash device table */
#define FAL_FLASH_DEV_TABLE   
    {                          
        &stm32f1_onchip_flash,
            &fram,            
    }                          
/* ====================== Partition Configuration ========================== */
#ifdef FAL_PART_HAS_TABLE_CFG
/* partition table */
#define FAL_PART_TABLE                                                               
    {                                                                                
        {FAL_PART_MAGIC_WORD, "bl", "stm32_onchip", 0, 32 * 1024, 0},               
            {FAL_PART_MAGIC_WORD, "app1", "stm32_onchip", 32 * 1024, 112 * 1024, 0},
            {FAL_PART_MAGIC_WORD, "app2", "stm32_onchip", 32 * 1024, 112 * 1024, 0},
            {FAL_PART_MAGIC_WORD, "blel", "fram", 0, 4 * 1024, 0},                  
            {FAL_PART_MAGIC_WORD, "appel", "fram", 4 * 1024, 12 * 1024, 0},         
    }
#endif /* FAL_PART_HAS_TABLE_CFG */
#endif /* _FAL_CFG_H_ */
这个文件里并没有在这两个呢宏的说明;
举报

王鑫

2022-8-23 14:25:03
#define FAL_PART_HAS_TABLE_CFG这个宏定义是在rtconfig.h里面的
FAL_PART_TABLE是在fal_cfg.h里面的
参考下面的分区表,修改为自己需要的就可以了

#ifdef FAL_PART_HAS_TABLE_CFG
/* partition table */
#define FAL_PART_TABLE                                                               
    {                                                                                
        {FAL_PART_MAGIC_WORD, "bl", "stm32_onchip", 0, 32 * 1024, 0},               
            {FAL_PART_MAGIC_WORD, "app1", "stm32_onchip", 32 * 1024, 112 * 1024, 0},
            {FAL_PART_MAGIC_WORD, "app2", "stm32_onchip", 32 * 1024, 112 * 1024, 0},
            {FAL_PART_MAGIC_WORD, "blel", "fram", 0, 4 * 1024, 0},                  
            {FAL_PART_MAGIC_WORD, "appel", "fram", 4 * 1024, 12 * 1024, 0},         
    }
#endif /* FAL_PART_HAS_TABLE_CFG */
#endi
举报

CDCNKA

2022-8-23 14:25:19
我的目的是不想使用FAL_PART_TABLE,去初始化fal设备分区;想在上电后从外部储存介质中,读取参数,根据参数来划分FAL分区
举报

丁冬芹

2022-8-23 14:25:27
这样改动就大了,不只是添加宏了。你需要自己添加接口, 修改 fal 内部两个变量的初始化。
举报

王璐

2022-8-23 14:25:35
你的这个功能是可以实现的,无非就是把FAL_PART_TABLE修改为从外部存储介质中获取,需要修改下原有的程序了
举报

CDCNKA

2022-8-23 14:25:45
还想再次请教一个问题,关于easyflash,env定义的默认环境变量,是不是每次上电偶会会被初始化为默认值
举报

丁冬芹

2022-8-23 14:25:54
不是啊,你得处理,保证只初始化一次
举报

马占云

2022-8-23 14:26:09
FAL_PART_HAS_TABLE_CFG宏的作用:FAL组件使用了自定义分区表,即FAL_PART_TABLE,需要手动定义分区表的内容
FAL_PART_TABLE_FLASH_DEV_NAME宏的作用:FAL_PART_TABLE分区表中某分区的flash设备名
FAL_PART_TABLE_END_OFFSET宏的作用:FAL_PART_TABLE在flash中的最大结束地址(一般设置为FAL自定义分区表FAL_PART_TABLE所在分区的大小,存在于SECTION("FalPartTable")段),如果没有自定义分区表,需要定义该宏来启用自动查找分区表的功能
举报

更多回帖

发帖
×
20
完善资料,
赚取积分