电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>可编程逻辑>嵌入式系统多核心并行编程(CY8CKIT-062-BLE评测)资料下载

嵌入式系统多核心并行编程(CY8CKIT-062-BLE评测)资料下载

2021-04-08 | pdf | 504.29KB | 次下载 | 免费

资料介绍

多核心与并行概述 “Single core processors are a shrinking minority of all the processors in the world. Multicore processors, offering parallel computing, have displaced single core processors permanently. The future of computing is parallel computing, and the future of programming is parallel programming.” ---James Reinders from Intel 为英文不熟的同学翻译一下子: 单核处理器是处理器世界中正在不断缩减规模的少数群体。多核处理器因为能够提供并行计算,正在永久性地替代单核处理器的地位。未来的计算将是并行计算的天下,未来的编程亦将是并行编程的天下。 因为说这话的人是Intel的工程师,所以嵌入式系统的工程师听起来多多少少可能觉得未免危言耸听了。但是从过去几十年的科技发展经验来看,嵌入式系统的发展总是慢慢会跟随桌面计算,服务器计算的道路,只是稍稍慢那么一拍而已。考虑到硬件的发展速度终将不能以摩尔速度无限制的发展下去,多核与并行的概念引入在嵌入式系统中可能比大多数人预计的要更早一些吧。作者本人也觉得如同OS概念一样,多核与并行的概念在嵌入式系统上与桌面/服务器系统上仅仅只是规模上的差别,不存在本质的区别。 目前而言,作者认为嵌入式系统的多核与桌面/服务器系统地多核有以下显著的差别: 1、相对而言,嵌入式系统对运算的要求不是那么苛刻,所以数学运算方面的库函数暂时无需特别定制的并行版本; 2、因为嵌入式系统的多核心多采用Little Big的非对称架构,故此一般有一个核心为主,其余核心都属于从,比较类似于协处理器的概念,但是与FPU等协处理器不同的是这些从核心自主性都很高; 3、因为上述的little big的架构,故此任务的分配上从算法上来讲要简单一些,但是与硬件耦合较为紧密;所以目前桌面/服务器系统上的多核框架如OpenMP,OpenCL还不能简单的搬来利用; 4、操作系统中的thread概念一般被认为是并行编程的低级别并行,桌面/服务器系统中目前的趋势是抛弃thread这种低级操作,直接使用高级并行框架如OpenMP,Clik Plus等等将整个系统看作一个整体,由框架来分配任务。嵌入式系统对应thread的是各种RTOS的task,这种低等级的并行操作的标准度很低。所以如何将整个嵌入式处理器视作一个整体来隐式进行并行编程可能是最后完成的任务。 我们看一个例子: 1 #include 2 3 int main(void) 4 { 5 #pragma ompparallel 6 printf("Hello,world.\n"); 7 8 return 0; 9 } 10 //gcc -fopenmp omp_t1.c 这段代码在桌面计算机中以注释中的命令行build之后运行: Hello, world. Hello, world. Hello, world. Hello, world. 这是Open MP架构与工具链结合,将受控语句分别分配给四个核心(作者的实验电脑)运行。这个例子如果使用thread来做,创建多个thread,那么移植到嵌入式平台就好办了。但是由于硬件,OS,Library等等的不标准,目前在嵌入式系统的开发中做到如上述代码这样的自动化并行程度。 从上面的例子可以得知,嵌入式系统的并行计算还与桌面/服务器领域的发展趋势还有一大段距离。感兴趣的同学可以去自行了解一下子:Open MP, Open CL, Intel CLik Plus, MPI这几个项目。目前看来嵌入式平台的多核架构类似于操作系统的多个进程。作者还是从这个层面来做一些实验来展示相关的并行概念。 Practice: Mutex-资源互锁 PSoC 6的特点是双核心都能同时访问外设与内存。上一集的Demo正是两个内核分别控制LED进行闪烁。那么如果两个内核同时访问同一外设会怎样,比如UART。以下做个实验试验一下子。 首先在上次实验的基础上拖入一个UART来,直接从右边的工具盒子里面拖。 图 拖入一个UART 把波特率配置好之后,其余参数都用默认的。 图 根据这个把引脚配置 用这个函数试验一下子简单的串口输出是否OK,过程不多讲: 确认串口工作之后,重定向STDOUT到串口,也就是要用printf做输出。(其实这实验直接使用底层串口输出函数也可以进行,只是重定向STDOUT这个以后要经常使用,顺带一题。) 因为本系列文章的例子都使用ARM-GCC工具链,故此只需要重写这个函数即可: (注:PDL中也有Retarget的实现,兼容Keil MDK/IAR/GCC,但是如果只想使用printf,推荐使用本文的简单方法) 详细代码参见作者的git页面。 之后Cortex M0 与Cortx M4以如下流程运行: 图 双核心使用打印串口流程 其中两者的打印代码段均为: 运行结果如下: 图 双核心使用打印函数运行结果 从结果可以看出来,双核心的打印全部穿插在一起了。看不出来原本的打印内容。发生这样的情况显然不是想要的结果。分析出现问题的根源在于:当前系统仅有的资源被多个核心使用而发生的争夺。 借鉴多进程编程的经验,可以得知解决这一问题的关键在于当某一核心使用该资源时,另外核心必须等待或者直接放弃。一般的做法是设定一定的等待时间,如果过了时间依旧获取不到该资源则进行超时退出等待。于是我们将上文的打印函数进行修改: 再次进行运行,结果如下: 图 进行资源保护之后的共享打印结果 因为需要保护的资源要等到某一核心使用完毕之后才能被其他核心使用,这个过程不能被打断,所以称之为原子性操作。不管是多线程还是多核心,这个概念都类似.事实上嵌入式系统的程序员对这个概念并不陌生,ISR中与主循环中都需要修改的参数就必须以原子性操作来修改。 图 原子性操作示意 PSoC 6上的硬件IPC特性与PDL中的IPC接口
下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1电子电路原理第七版PDF电子教材免费下载
  2. 0.00 MB  |  1491次下载  |  免费
  3. 2单片机典型实例介绍
  4. 18.19 MB  |  95次下载  |  1 积分
  5. 3S7-200PLC编程实例详细资料
  6. 1.17 MB  |  27次下载  |  1 积分
  7. 4笔记本电脑主板的元件识别和讲解说明
  8. 4.28 MB  |  18次下载  |  4 积分
  9. 5开关电源原理及各功能电路详解
  10. 0.38 MB  |  11次下载  |  免费
  11. 6100W短波放大电路图
  12. 0.05 MB  |  4次下载  |  3 积分
  13. 7基于单片机和 SG3525的程控开关电源设计
  14. 0.23 MB  |  4次下载  |  免费
  15. 8基于AT89C2051/4051单片机编程器的实验
  16. 0.11 MB  |  4次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234313次下载  |  免费
  3. 2PADS 9.0 2009最新版 -下载
  4. 0.00 MB  |  66304次下载  |  免费
  5. 3protel99下载protel99软件下载(中文版)
  6. 0.00 MB  |  51209次下载  |  免费
  7. 4LabView 8.0 专业版下载 (3CD完整版)
  8. 0.00 MB  |  51043次下载  |  免费
  9. 5555集成电路应用800例(新编版)
  10. 0.00 MB  |  33562次下载  |  免费
  11. 6接口电路图大全
  12. 未知  |  30320次下载  |  免费
  13. 7Multisim 10下载Multisim 10 中文版
  14. 0.00 MB  |  28588次下载  |  免费
  15. 8开关电源设计实例指南
  16. 未知  |  21539次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935053次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537793次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420026次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234313次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191183次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183277次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138039次下载  |  免费