创建一个新工程
MCUXpressoIDE创建的新工程默认是利用XIP从HyperFlash中运行程序,采用SDRAM存放数据。
要创建一个新工程,点击New Project ,将会出现新建工程向导:
选择对应的开发板
点击Next,(所有选项保持默认值)
点击Finish完成工程创建。
新工程如下图所示:
这是一个名为'He11o World'的工程,通过XIP在Hyperflash运行,将使用第一个RAM区域(SDRAM)存放堆栈和全局数据。SDRAM的初始化在XIP中。
创建新工程的一些问题
如果工程配置为利用XIP从Hyperflash运行,应当同时创建了一个宏定义:XIP_EXTERNAL_FLASH。该宏定义用来定义相关的时钟和MPU。当前情况下,SDK无法自动生成该宏定义。如果没有该宏定义,则工程性能将会降低。
同样地,如果工程中使用了SDRAM,需要定义一个名为SDRAM_MPU_INIT的宏,当前情况下,SDK无法自动生成该宏。
在新工程中添加宏定义有多种方法,例如:
1. 从工程浏览器中选择对应的工程
2. 从QuickStart面板,选择Quick Settings -> Defned Symbols 3. 点击+号,输入新的宏定义
4. 点击 OK, OK
默认情况下,栈地址被放在第一个RAM区域的尾部,在例子中,栈地址将从0a82000000开始,但是RAM的最后2MB没有进行栈操作优化。可以通过下面的操作解决该问题:
1:在工程属性中,将栈地址从存储器尾部(End),改为工程数据尾部(Post Data),如下图所示:
2:第二种方法,修改MPU描述文件,将Region8 删除(蓝色部分)
#ifdefined(SDRAM_MPU_INIT)
/*Region 7 setting */
MPU->RBAR= ARM_MPU_RBAR(7, 0x80000000U);
MPU->RASR= ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_32MB);
/* Region 8 setting */
MPU->RBAR = ARM_MPU_RBAR(8,0x81E00000U);
MPU->RASR = ARM_MPU_RASR(0,ARM_MPU_AP_FULL, 1, 0, 0, 0, 0, ARM_MPU_REGION_SIZE_2MB);
#endif
|