s32k flash_driver 相关注意事项

这篇博客讨论了如何在RAM中实现FLASH_DRV_CommandSequence函数,以提高执行效率。通过START_FUNCTION_DECLARATION_RAMSECTION和END_FUNCTION_DEFINITION_RAMSECTION标识符,确保函数在RAM中声明和定义。文中还提到了函数执行过程中的错误检查,并指出在驱动下载后,需要包含函数的偏移量信息。

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

FLASH_DRV_CommandSequence需要在ram中运行,故应如图所示,增加标识符

START_FUNCTION_DECLARATION_RAMSECTION 

END_FUNCTION_DECLARATION_RAMSECTION

START_FUNCTION_DEFINITION_RAMSECTION

END_FUNCTION_DEFINITION_RAMSECTION

START_FUNCTION_DECLARATION_RAMSECTION
static status_t FLASH_DRV_CommandSequence(const flash_ssd_config_t * pSSDConfig)
END_FUNCTION_DECLARATION_RAMSECTION

START_FUNCTION_DEFINITION_RAMSECTION
static status_t FLASH_DRV_CommandSequence(const flash_ssd_config_t * pSSDConfig)
{
    status_t ret = STATUS_SUCCESS;    /* Return code variable */

    /* Clear CCIF to launch command */
    FTFx_FSTAT |= FTFx_FSTAT_CCIF_MASK;

    while (0U == (FTFx_FSTAT & FTFx_FSTAT_CCIF_MASK))
    {
        /* Wait till CCIF bit is set
         * Serve callback function as often as possible
         */
        if (NULL_CALLBACK != pSSDConfig->CallBack)
        {
            /* Temporarily disable compiler's check for ROM access call from within a ram function.
             * The use of a function pointer type makes this check irrelevant.
             * Nevertheless, it is imperative that the user-provided callback be defined in RAMSECTION */
            DISABLE_CHECK_RAMSECTION_FUNCTION_CALL
            (pSSDConfig->CallBack)();
            ENABLE_CHECK_RAMSECTION_FUNCTION_CALL
        }
    }

    /* Check if an error is occurred */
    if ((FTFx_FSTAT & (FTFx_FSTAT_MGSTAT0_MASK | FTFx_FSTAT_FPVIOL_MASK | FTFx_FSTAT_ACCERR_MASK | FTFx_FSTAT_RDCOLERR_MASK)) != 0U)
    {
        ret = STATUS_ERROR;
    }

    return ret;
}
END_FUNCTION_DEFINITION_RAMSECTION

进行flashdriver下载后,对应hex文件除驱动函数外,还应包括每个驱动函数对应偏移量,如

0x05 0x00 0x00 0x00 ......(驱动函数) 偏移量为0x05(0x04 +1)的原因待查

iar s32k142_100_flash.icf是一种用于配置嵌入式系统的ICF(Initialization Configuration File)文件。该文件用于定义代码、数据和存储器布局,以及其他与嵌入式应用程序相关的初始化设置。 在S32K142芯片系列中,100_flash表示该ICF文件适用于100KB大小的闪存。这意味着该文件定义了这个特定嵌入式系统中使用的100KB闪存的布局和初始化。 ICF文件中的一些重要内容包括: 1. 存储器起始地址和大小:该文件描述了闪存的起始地址和大小以及其他存储器区域(如RAM)的信息。这些信息有助于编译器正确地定位和分配代码和数据,并确保它们正确地存储和读取。 2. 存储器段的属性:ICF文件还定义了存储器段的属性,例如代码段、只读数据段和读/写数据段等。这些属性控制了存储器段的读写权限,以及在程序运行时是否可以修改其内容。 3. 启动向量表的配置:ICF文件中还可以配置设备的启动向量表。向量表是一种特殊的数据结构,包含了中断服务函数的地址。通过正确配置向量表,系统可以正确地响应和处理中断。 4. 内存布局设置:ICF文件还提供了内存布局的设置选项。通过配置内存布局,可以将存储器划分为适当的区域,例如堆、栈等。这有助于优化存储器的使用和管理。 总之,iar s32k142_100_flash.icf文件是一个用于配置嵌入式系统闪存的重要文件。它定义了存储器布局、存储器段的属性、启动向量表的配置以及内存布局设置等关键信息。通过正确配置ICF文件,可以确保嵌入式应用程序在S32K142芯片系列上正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值