基本概念
开发步骤
编译环境
demo里面会有个Makefile文件
修改工程名为自己喜欢的名字,在cmd里面执行下m -j8命令就能进行编译。
会在路径下生成对应的输出文件
添加变体文件
有时候我们需要在工程当中添加自己定义的一些文件,在Config路径下新建自己的文件。
譬如我们要添加到brs模块
vLinkGen要改成ONE_FILE_PER_VARIANT
#if !defined (BRS_INCLUDED_BY_ASM_FILE)
/* User config file */
# include "Config\VariantHandling.txt"
#endif
内存映射
类型分为code、const和VAR,各自里面会分很多个Section,在Appl\Include\MemMap.h文件里面可以找到,譬如这个RamCodeCoreSection里面包含的DET_START_*_CODE 和DET_STOP_*_CODE ,*是通配符。
RamCodeCoreSection能够在DemoFbl\Appl\Source\vLinkGen_Template.ld文件当中找到,这样就知道这段code会放在哪段内存当中。
源文件BSW\Det\Det.c的写法如下,刚好对应上面code、const和VAR的三种类型。
宏定义……
# define DET_START_SEC_VAR_INIT_UNSPECIFIED
# include "MemMap.h" /* PRQA S 5087 */ /* MD_MSR_19.1 */
变量var定义……
# define DET_STOP_SEC_VAR_INIT_UNSPECIFIED
# include "MemMap.h" /* PRQA S 5087 */ /* MD_MSR_19.1 */
# define DET_START_SEC_VAR_NOINIT_UNSPECIFIED
# include "MemMap.h" /* PRQA S 5087 */ /* MD_MSR_19.1 */
const定义……
# define DET_STOP_SEC_VAR_NOINIT_UNSPECIFIED
# include "MemMap.h" /* PRQA S 5087 */ /* MD_MSR_19.1 */
# define DET_START_SEC_CODE
# include "MemMap.h" /* PRQA S 5087 */ /* MD_MSR_19.1 */
代码code定义……
# define DET_STOP_SEC_CODE
# include "MemMap.h" /* PRQA S 5087 */ /* MD_MSR_19.1 */
vector通过这种方式将每一段代码和变量定义到了对应的内存区域。
当我们需要修改的时候,可以进行手动配置自动生成,当然啦,配置的位置应该在芯片允许范围内。需要在vLinkGen模块下的vLinkGenMemLayout下面的vLinkGenMemoryRegions,有三块内存,FblBmHeader/FblHeader/BmHdrHeader,定义好初始地址和长度就会自动生成了。