工程文件整理和中断头文件移植

文件整理

  • sources目录下分模块存放文件
  • 子模块提供函数声明头文件
  • include目录下存放sdk移植头文件
  • sources/common目录存放一些通用工具
  • sources/project目录存放启动文件和主文件

Makefile修改

  • SRC_DIR变量:包含所有模块所在目录
  • INC_DIR变量:包含所有头文件所在目录

中断头文件移植

  • 设置中断相关寄存器地址

  • CORTEXA/Include/core_ca7.h->sources/include

修改文件内容:

  • 注销:
  1. #include "core_ca.h"
  • 添加:
#define __STRINGIFY(x) #x
/* C语言实现写cp15协处理器 */
#define __MCR(coproc, opcode_1, src, CRn, CRm, opcode_2)                          \
    __ASM volatile ("MCR " __STRINGIFY(p##coproc) ", " __STRINGIFY(opcode_1) ", " \
                    "%0, " __STRINGIFY(c##CRn) ", " __STRINGIFY(c##CRm) ", "      \
                    __STRINGIFY(opcode_2)                                         \
                    : : "r" (src) )

/* C语言实现读cp15协处理器 */                    
#define __MRC(coproc, opcode_1, CRn, CRm, opcode_2)                               \
  ({                                                                              \
    uint32_t __dst;                                                               \
    __ASM volatile ("MRC " __STRINGIFY(p##coproc) ", " __STRINGIFY(opcode_1) ", " \
                    "%0, " __STRINGIFY(c##CRn) ", " __STRINGIFY(c##CRm) ", "      \
                    __STRINGIFY(opcode_2)                                         \
                    : "=r" (__dst) );                                             \
    __dst;                                                                        \
  })

#define __ISB() 
#define __DSB()