uC CPU port
来源:互联网 发布:网络攻防大赛 常见思路 编辑:程序博客网 时间:2024/06/06 03:57
cpu_core.c :CPU相关初始化(时间戳,测量中断时间,CPUName),模拟CLZ(count leading zeros)指令,测量中断关闭时间方法等。
cpu_core.h :cpu_core.c的函数、变量声明。
cpu_def.h :CPU模块使用的各种#define(大端小端字节序、堆栈的增长方向、Critical Section处理)
cpu.h :CPU模块使用的类型定义、具体大端小端字节序、具体堆栈增长方向、具体Critical Section处理方法(CPU_CRITICAL_METHOD_STATUS_LOCAL,进入时需要在所所有的变量后面添加CPU_SR_ALLOC();)。
cpu_a.asm :汇编方法实现(CPU_IntDis、CPU_IntEn、CPU_SR_Save、CPU_SR_Restore、CPU_WaitForInt、CPU_WaitForInt、CPU_CntLeadZeros、CPU_CntTrailZeros)。
cpu_c.c :针对特定CPU结构写的C函数(BitBand、中断相关的操作)(在系统中没有用到...)。
cpu_cfg.h :是否开启设置CPU_Name功能,是否开启CPU的时间戳功能,是否测量中断关闭时间、是否有CLZ指令的汇编实现
cpu_cfg.h :是否开启设置CPU_Name功能,是否开启CPU的时间戳功能,是否测量中断关闭时间、是否有CLZ指令的汇编实现
cpu_cfg.h
CPU_CFG_NAME_EN
是否开启设置CPU_Name功能,在Debug的时候可能会有用,DISABLED关闭。
CPU_CFG_TS_32_EN
是否开启CPU的时间戳功能
Cortex M3 Debug Watch Trace(DWT) 包含一个32bit CPU cycle counter(CYCCNT) 频率为CPU的频率
需要在bsp.c中实现 CPU_TS_TmrInit() CPU_TS_TmrRd()
CPU_CFG_INT_DIS_MEAS_EN
是否测量中断关闭时间
CPU_CFG_INT_DIS_MEAS_OVRHD_NBR
通过多少次遍历得到测试中断关闭时间引入的额为开销,求平均时加入了1个Ts
CPU_CFG_LEAD_ZEROS_ASM_PRESENT
是否有CLZ指令的汇编实现(在cpu.h中也有定义)
cpu_core.c
CPU_INT08U CPU_CntLeadZerosTbl[256]:
计算0x00~0xFF之间值对应的前面的0的数量的数组 (0x**前面有多少个0 == CPU_CntLeadZerosTbl[0x**])
void CPU_Init (void):
初始化CPU模块包括时间戳CPU_TS_Init、测量中断时间CPU_IntDisMeasInit、CPU_NameInit。
CPU_TS32 CPU_TS_Get32 (void):
获取CPU时间戳,里面包含如果定时器长度<时间戳长度的累加处理。
CPU_DATA CPU_CntLeadZeros** (CPU_DATA val):
模拟CLZ汇编指令的实现。通过将val分成若干个0xFF,分别通过CPU_CntLeadZerosTbl[0x**]计算前面的0的个数。
CPU_DATA CPU_CntTrailZeros** (CPU_DATA val):
通过处理val,调用CPU_CntLeadZeros方法计算得到。
val & ((CPU_DATA)~val+1) :val取反+1 与上val 得到的值只有一个1,1后面的0的个数为要得到的值,1前面的0的个数可以通过CPU_CntLeadZeros计算得到
static void CPU_TS_Init (void):
调用在bsp中实现的CPU_TS_TmrInit();初始化时间戳DWT_CYCCNT,并设置时间戳的频率(与CPU频率相同)。
static void CPU_IntDisMeasInit (void):
通过CPU_CFG_INT_DIS_MEAS_OVRHD_NBR次遍历得到测试中断关闭时间引入的额为开销,求平均时加入了1个Ts
0 0
- uC CPU port
- uC OSIII port
- Port QEMU to another CPU
- uC/OS-II - Port for the LINUX Operating System
- 移植uC/OS到CK-CPU
- uC/OS-III统计任务堆栈、CPU使用率
- UC
- UC
- 基于DUAL-PORT RAM的双CPU快速通讯
- port
- port
- port
- port
- 基于Nios软核CPU的uC/OS-II和LwIP移植
- 基于Nios软核CPU的uC/OS-II和LwIP移植 (1)
- 基于Nios软核CPU的uC/OS-II和LwIP移植 (2)
- 基于Nios软核CPU的uC/OS-II和LwIP移植 (3)
- 基于Nios软核CPU的uC/OS-II和LwIP移植
- C++对C的增强
- uC OSIII port
- Vim使用技巧——基础
- Const和#define
- 发现一本linux相关书籍,电子书,特地分享出来
- uC CPU port
- C++引用
- 深入浅出-iOS Block原理和内存中位置
- 【转载】优先队列详解
- 15-题目1432:叠筐
- 为什么有些人出3倍薪资也挖不走?
- 九大排序算法再总结
- Ready List
- 新的开始,新的生活