openMPM源码分析(一)
来源:互联网 发布:老子说的知之者 编辑:程序博客网 时间:2024/05/18 03:37
- openMPM简介
- MPM全称Multiple Processor Mannager主要用来从ARM载入和运行DSP镜像。
- 底层通信由UNIX域实现,分为MPM server 和 MPM client两个组件,前者作为守护进程自动运行在默认文件系统来解析/etc/mpm/mpm_config.json文件(mpm config 文件),然后等待丛核的UNIX域套接字。后者安装在文件系统,它通过命令行来访问server。
- ARM与DSP的同步
- ARM代码test/sync_test/host/src/main.c
- DSP代码test/sync_test/c66x/src/main.c
- test/sync_test/c66x/src/main.c源码分析
extern cregister volatile unsigned int DNUM;
- cregister是DSP中关键字,用来定义直接访问CPU控制寄存器的变量(在user mode下)通过读取寄存器DNUM的值即可获得当前coreID。DNUM在c6x.h中定义。
sync_test_shmem_t *sync_test_shmem;<span style="font-family: 微软雅黑; text-align: -webkit-auto; background-color: rgb(255, 255, 255);"> </span>
- sync_test_shmem_t变量类型定义在test/sync_test/inc/sync_test.h中是一个包含两个成员变量的结构体:
typedef struct{ int32_t num; int32_t user[SYNC_TEST_MAX_NUM_SLAVES + 1]; }sync_test_shmem_t;#define SYNC_TEST_MAX_NUM_SLAVES 8 //表示最大从核数。
- main函数中
- sync_test_transport_open()函数,主要工作是对MARn寄存器进行初始化为0。
- MARn简介
- n取值0-255其中每个MARn是一个32位寄存器,31-4位作为保留位,3位是PFX位,2&1为保留位,0位是PC位。地址从01848000h开始,表示MAR0定义为本地L2的RAM地址。
- L2控制器提供的寄存器,它用来管理特定范围的内存。
- PC位:0---不可缓存,1---可缓存
- PFX位:0--不可预取,1---可预取
- 主要实现2个bit。PC和PFX(分别是0位和3位)
- MAR0到MAR11为只读寄存器。
- 函数中MAR160-MAR191初始化为0表示范围A0000000h-BFFFFFFFh的内存不可缓存。
- sync_test_get_cfg()函数,主要工作是获取当前DSP核数。其中SYNC_TEST_CFG_BASE为0x00800000在test/sync_test/inc/sync_test.h中定义,查阅资料知:对于C6678来说,例如每个core有8个L2(512K)即8*512K作为全局地址,而所有的core一个私有的地址从00800000h开始(每个核是一样的),私有的地址,只能被core自己访问。
0 0
- openMPM源码分析(一)
- openMPM源码分析(二)
- openMPM源码分析(三)
- openMPM源码分析(四)
- openMPM源码分析(五)
- openMPM源码分析(六)
- openMPM源码分析(七)
- 源码分析(一)
- JUnit源码分析(一)
- osworkflow源码分析(一)
- Log4net源码分析(一)
- Mangos源码分析(一)
- Notepad++源码分析(一)
- Log4net源码分析(一)
- ConcurrentHashMap 源码分析 (一)
- rabbitmq源码分析(一)
- rabbitmq源码分析(一)
- Notepad++源码分析(一)
- Android性能优化典范
- struts2 标签 property中对HTML标签输出
- ifndef,#define,#endif的使用方法
- 钢板网的专业术语
- javaweb-day22-1(基础加强 - 反射泛型、通配符、有限制的通配符)
- openMPM源码分析(一)
- hibernate XXX is not mapped
- 哲蚌寺的布局
- HttpServletRequestWrapper 用法(转) (
- glClearDepth
- find && mv 用法
- java设计模式—工厂模式
- Application does not specify an API level requirement”解决办法
- springMVC浏览器接受json报406错误的解决方法