处理器,也被称为中央处理器(Central Processing Unit,CPU),是计算机系统中的关键组件之一,负责执行计算机程序中的指令,控制计算机的各个部分,并处理数据。
处理器
一、
STM32的AD转换,可以将转换任务组织为两个组:规则组和注入组。
在任意多个通道上以任意顺序进行的一系列转换构成成组转换。
例如,可以如下顺序完成转换:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。在执行规则通道组扫描转换时,如有例外处理则可启用注入通道组的转换。可以模糊的将注入组的转换理解为AD转换的中断一样,规则通道组的转换是普通转换,然而注入组的转换条件满足的情况下,注入组的转换会打断规则组的转换。
如果规则转换已经在运行,为了在注入转换后确保同步,所有的ADC(主和从)的规则转换被停止,并在注入转换结束时同步恢复。规则转换和注入转换均有外部触发选项,规则通道转换期间有DMA请求产生,而注入转换则无DMA请求,需要用查询或中断的方式保存转换的数据。
二、
规则组:此模式通过设置ADC_CR1寄存器上的DISCEN位激活。它可以用来执行一个短序列的n次转换(n<=8),此转换是ADC_SQRx寄存器所选择的转换序列的一部分。数值n由ADC_CR1寄存器的DISCNUM[2:0]位给出。
一个外部触发信号可以启动ADC_SQRx寄存器中描述的下一轮n次转换,直到此序列所有的转换完成为止。总的序列长度由ADC_SQR1寄存器的L[3:0]定义。
举例: n=3,被转换的通道 = 0、1、2、3、6、7、9、10 第一次触发:转换的序列为 0、1、2 第二次触发:转换的序列为 3、6、7 第三次触发:转换的序列为 9、10,并产生EOC事件 第四次触发:转换的序列 0、1、2,依次类推;
注入组:此模式通过设置ADC_CR1寄存器的JDISCEN位激活。在一个外部触发事件后,该模式按通道顺序逐个转换ADC_JSQR寄存器中选择的序列。
一个外部触发信号可以启动ADC_JSQR寄存器选择的下一个通道序列的转换,直到序列中所有的转换完成为止。总的序列长度由ADC_JSQR寄存器的JL[1:0]位定义。
例子: n=1,被转换的通道 = 1、2、3 第一次触发:通道1被转换 第二次触发:通道2被转换 第三次触发:通道3被转换,并且产生EOC和JEOC事件 第四次触发:通道1被转换,也是依次类推。
三、
STM32的ADC的工作模式:
单次转换模式:转换一次则停止;
连续转换模式:转换完一次后即开始下一次转换;
扫描模式:扫描一组模拟通道;
间断模式:每触发一次,转换序列中n个通道。
四、
因为规则通道转换的值储存在一个仅有的数据寄存器中,所以当转换多个规则通道时需要使用DMA,这可以避免丢失已经存储在ADC_DR寄存器中的数据。只有在规则通道的转换结束时才产生DMA请求,并将转换的数据从ADC_DR寄存器传输到用户指定的目的地址。
注: 只有ADC1和ADC3拥有DMA功能。由ADC2转化的数据可以通过双ADC模式,利用ADC1的DMA功能传输。
五、
双ADC模式
(1)同步注入模式:此模式转换一个注入通道组。外部触发来自ADC1的注入组多路开关(由ADC1_CR2寄存器的JEXTSEL[2:0]选择),它同时给ADC2提供同步触发。
注意: 不要在2个ADC上转换相同的通道(两个ADC在同一个通道上的采样时间不能重叠)。
(2)同步规则模式:此模式在规则通道组上执行。外部触发来自ADC1的规则组多路开关(由ADC1_CR2寄存器的EXTSEL[2:0]选择),它同时给ADC2提供同步触发。
(3)快速交叉模式:此模式只适用于规则通道组(通常为一个通道)。外部触发来自ADC1的规则通道多路开关。
外部触发产生后:
A.ADC2立即启动并且
B.ADC1在延迟7个ADC时钟周期后启动
注意:最大允许采样时间<7个ADCCLK周期,避免ADC1和ADC2转换相同通道时发生两个采样周期的重叠。
(4)慢速交叉模式:此模式只适用于规则通道组(只能为一个通道)。外部触发来自ADC1的规则通道多路开关。
外部触发产生后:
A.ADC2立即启动并且
B.ADC1在延迟14个ADC时钟周期后启动
C.在延迟第二次14个ADC周期后ADC2再次启动,如此循环。
(5)交替触发模式:此模式只适用于注入通道组。
外部触发源来自ADC1的注入通道多路开关。
A.当第一个触发产生时,ADC1上的所有注入组通道被转换。
B.当第二个触发到达时,ADC2上的所有注入组通道被转换。
C.如此循环……
(6)独立模式:此模式里,双ADC同步不工作,每个ADC接口独立工作。
(7)混合的规则/注入同步模式:规则组同步转换可以被中断,以启动注入组的同步转换。
(8)混合的同步规则+交替触发模式:规则组同步转换可以被中断,以启动注入组交替触发转换。 显示了一个规则同步转换被交替触发所中断。
(9)混合同步注入+ 交叉模式:一个注入事件可以中断一个交叉转换。这种情况下,交叉转换被中断,注入转换被启动,在注入序列转换结束时,交叉转换被恢复。
来源: eeworld
9月25日,英特尔宣布推出14核、16核与18核处理器 -- 英特尔®酷睿TM i9-7940X、英特尔® 酷睿TM i9-7960X 和英特尔®酷睿TM i9-7980XE 处理器,并开始向合作伙伴以及零售渠道发售。在英特尔® 酷睿TM X 系列处理器家族面世之际,英特尔推出了内容创建者和发烧友期盼已久的至尊版处理器 -- 史上顶级配置台式机处理器。
整个英特尔®酷睿TM X 系列处理器家族都致力于通过强大的计算能力提供丰富的沉浸式体验,但至尊版能够进一步提升内容创建的能力,支持内容创建者轻松处理大型任务,成为编辑和渲染高清 4K 和 VR 视频的强大平台,甚至可以在 PC 上打造完整的工作室。
凭借英特尔®酷睿TM X 系列至尊版处理器,内容创建者将体验与前代至尊版在 VR 内容创建方面高达80%的性能提升[1],以及 4K 视频编辑[2]60%的速度提升。
零售渠道现可提供整个英特尔酷睿 X 系列处理器家族。
新闻资料:
英特尔® 酷睿TM X 系列处理器
英特尔® 酷睿TM X 系列处理器家族情况说明
英特尔® 酷睿TM X 系列处理器家族产品概述
英特尔® 酷睿TM X 系列处理器9月发售 (Intel.com)
[1] 基于在英特尔® 酷睿™ i9-7980XE (18C/36T) 和英特尔® 酷睿™ i7-6950X (10C/20T) 上运行 Blender 2.78c BMW 工作负载的测量结果
[2] 基于在英特尔® 酷睿™ i9-7980XE (18C/36T) 和英特尔® 酷睿™ i7-6950X (10C/20T) 上运行 Adobe Premiere Pro 工作负载的测量结果
工作负载说明
在性能检测过程中涉及的软件及其性能只有在英特尔微处理器的架构下方能得到优化。
诸如 SYSmark 和 MobileMark 等测试均系基于特定计算机系统、硬件、软件、操作系统及功能,上述任何要素的变动都有可能导致测试结果的变化。请参考其他信息及性能测试(包括结合其他产品使用时的运行性能)以对目标产品进行全面评估。关于性能及性能指标评测数据的更完整信息,敬请登陆:
http://www.intel.com/benchmarks
Blender 工作负载:Blender 2.78b 是一种常用的开源 3D 渲染器。所运行的基准评测工作负载包含一个需渲染约 3MB BMW 汽车模型的渲染器。
Adobe Premiere Pro CC 工作负载:项目文件夹包括以大约 80Mbps 的速度录制的 7 个 4K H.264 MP4 视频剪辑,总共 1.90GB。该视频流为 3840x2160 (4K),H.264 格式,帧速率为 29.97 FPS。音频流为 1536 Kbps、48.0 KHz、16 位立体声、WAV 格式。性能测试测量将整个视频剪辑导出至 4K H.264 MP4 格式时所用的时间。输出为高质量 4K 视频文件。
配置
酷睿 i9-7980XE(2.6GHz,最高 4.4GHz,18C/36T,24.75MB,165W TDP),
主板:ASUS PRIME X299-DELUXE Bios 702,
内存:4x8GB DDR4-2666,
存储:英特尔固态盘 600p 512GB,
操作系统:Windows* 10 (RS2),
显卡:Nvidia GTX 1080Ti(驱动程序 384.94),
英特尔® 睿频加速 Max 驱动程序版本 1.0.0.1031,
系统电源管理政策:高性能
英特尔® 酷睿™ i7-6950X 处理器(3.0GHz,最高 3.5GHz,10C/20T,25MB,140W TDP),
主板:ASRock X99M Extreme4,
内存:4x8GB DDR4-2400,
存储:英特尔 750 PCIe 固态盘 -- 400GB,
操作系统:Windows* 10 (RS2),
显卡:Nvidia GTX 1080Ti(驱动程序 22.21.13.8233),
BIOS:BIOS P3.20,
英特尔® 睿频加速 Max 驱动程序版本 1.0.0.1029,
系统电源管理政策:高性能
来源: 美通社
澳大利亚研究人员日前宣布,他们发秘境一种构建量子计算机的新方法,能以更简单、更廉价的方式批量生产量子计算机。
量子计算机是一种遵循量子力学规律进行高速数学和逻辑运算、存储及处理量子信息的物理装置,它能利用亚原子粒子的神奇力量来解决一些对于当前算机而言过于复杂或过于耗时的问题。
当前,谷歌和IBM等科技公司都在利用各种方法来开发量子计算机。而澳大利亚新南威尔士大学一组研究人员日前表示,他们利用新型量子位(quantum bit,量子计算机的最小信息单位)发明了一种新型芯片。
这种新型芯片设计能让硅量子处理器克服当前所存在的两个局限:1)必须精准放置原子;2)原子必须放开放置,但又要相互连接。
新南威尔士大学发明的这种新量子位被称为“触发器量子位”(flip-flop qubit),该项目负责人安德里亚·梅洛(Andrea Mello)称,这种新设计允许人们使用与生产当前计算机芯片同样的设备技术来生产量子处理器。
梅洛说:“这意味着构建量子计算机变得更加可行,因为它使用的制造技术与当前计算机行业所使用的技术相同。”
这意味我们将可以批量生产量子计算机芯片,而在此之前,这一直是令研发人员头痛的问题。
当前,IBM的量子计算机拥有16量子位,意味着它只能执行一些基础的计算。而谷歌的量子计算机仅拥有9量子位。
相比之下,当前的台式机计算速度达到了每秒10亿次浮点运算,全球最快的超级计算机——中国的“神威太湖之光”——的计算速度达到了每秒9.3亿亿次浮点运算。
但理论上讲,一台小型的30量子位通用量子计算机的运行速度,相当于一台每秒10万亿次浮点运算的普通计算机的运算速度。
德克萨斯A&M大学教授拉斯洛·凯什(Laszlo Kish)称,目前判断这项发明是否是“突破性的”还为时尚早,但在解决量子计算的核心问题上,他们可能向正确的方向迈进了一步。
如今,在获得澳洲电信、澳大利亚联邦银行、澳大利亚和新南威尔士政府的投资后,新南威尔士大学成立了“硅量子计算有限公司,计划在2022年打造出10量子位原型硅量子集成电路,为打造全球第一台硅量子计算机做准备。
来源: chinaaet
作者:张国斌
2017年9月2日,华为消费者业务CEO余承东在德国柏林IFA2017大会官方论坛发表“Mobile AI. The Ultimate Intelligent Experience”为主题的演讲,全面阐释了华为消费者业务的人工智能战略,并正式发布了麒麟970芯片。这款有55亿晶体管、全球首款内置神经网络处理单元(NPU)的人工智能处理器震撼了产业,震撼了全球!从公布的数据来看,NPU运算能力达到1.92T FP16 OPS!是同等CPU处理器能力的25倍!能效是其50倍!这款处理器让华为一举站在了全球移动人工智能(AI)领域的最前沿!
麒麟970 AI处理器对人工智能产业发展有何意义?它对智能手机发展有何重要意义?为何在两年前定义的这款芯片能赶上了全球人工智能大潮?结合我和产业人士的交流谈谈自己的感受。
一、异构与端云结合实现人工智能非常有价值
几年前,产业都在讨论如何在云端实现人工智能,而华为探索了新的模式,就是端云结合实现人工智能,云端智能的优势在于强大的运算能力,基于大数据给出大智慧,在策略性输出上有极大优势。而端侧在具备了强大的感知能力之后,手机就会成为帮助用户思考的分身和伙伴。两者达成平衡与协调,才是未来终端发展的出路。这次麒麟970也是人工智能处理器从服务器走向便携化的一个重要里程碑,意义非常重大,借用一位大佬的评论:“这也许是手机的一小步,但是一定是人类生活的一大步。”
由于人工智能处理器需要进行大量的计算因此需要消耗大量功耗,按照以前的思路,人工智能处理器需要将在云端处理利用服务器的计算资源完成处理,但是显然这不现实,因为大量数据需要上传不仅占用带宽还有延时问题,不能实现真正的实时人工智能处理器,在麒麟970之前,移动端还没有一款可以真正支持人工智能出来的ASIC芯片,因此这个探索意义非常大。
麒麟970采用异构架构完成人工智能处理,芯片括了CPU、GPU、NPU、ISP、DSP。以前大家从人工智能角度来看,认为NPU是做AI的,AI就是要靠NPU去实现的,但从麒麟970来看不完全是。NPU在实现AI上承担了很多主要工作,但是CPU、GPU也参与了处理,例如ISP也参与很多相关工作。所以,未来以异构架构实现人工智能将成为主流,这个异构SoC将成为一个AI计算平台。
从余承东公布的华为人工智能战略来看,在未来终端上的人工智能实现需通过端云协同,华为构建芯、端、云协同发展,通过结合云端和终端的能力,实现手机从智能终端到智慧终端的跨越,给用户带来颠覆性的体验。这可能引发智能手机巨大的新变革。
二、吹响智能手机“十年一变”号角
在手机产品界及手机领域有个“十年一变”的规律,1997年11月诺基亚发布了全球首款内置游戏的移动电话诺基亚6110,其贪吃蛇游戏是有史以来第一款手机游戏,这款手机相信很多人都买过,它成为诺基亚在功能机时代封王的奠基者。
2007年11月5日,安卓系统正式发布,Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l'Isle-Adam)在1886年发表的科幻小说《未来夏娃》(L'ève future)中。他将外表像人的机器起名为Android。这个绿色小机器人颠覆了功能机,也是在2007年,苹果iPhone惊艳面市,以此为标志,我们正式进入了智能手机时代。
时间到了2017年,智能手机将再次面临重大分化,人工智能在2017年将成为智能手机的分水岭,未来手机将只有人工智能手机和非人工智能手机两种。
从现在往前看,原来的手机是纯粹的通信工具,后来加入计算器、录音机等一堆硬件。到了智能手机,本质上其还是工具属性较强,把互联网变成了移动互联网,同时具有一个开放生态,可以往里做各种各样的应用创新。但是智能手机对人的理解,对环境的理解还没有本质的变化,所以智能手机还是一个升级版的工具。但当人工智能引进以后,手机本身有足够强的处理能力,有传感器,才有可能把手机从工具属性变成更加类似像宠物一样的东西,具备理解能力,一开始做不到那么懂你,但是慢慢还是能懂的。不同的手机拿到不同的人手里,表现也会不同。
因为手机有了人工智能,它带来了无限可能。人工智能应用场景非常多,几乎无所不包,以手机拍照为例,就像单反里基本的光学部分都很好,但如何设置出恰当的参数是很麻烦的事情,未来AI手机在这方面可以更加有效,能够对环境有足够的了解,对拍摄对象有识别,进行一定的校正,可以说AI手机成了一部懂得拍照的手机。降噪方面,以前我们理解降噪就是做相位对消,而采用了人工智能处理以后,它能使用我们目前还未知的方式进行消噪,就如同图像识别,人工智能CNN卷积神经网络,经过逐层的神经网络卷积等运算,自动提取和发现了我们目前难以理解的特征值一样,这个确实令人非常兴奋。
有了人工智能能力的手机,不但可以解析出用户的语言,更能分辨情绪,当手机能够分辨你在哪里,你是谁,并“猜”到你的心意,这样的手机真的更贴心了,人工智能手机还能基于用户画像和过往行为习惯及结合当前的使用场景,推测出用户的行为意图。以这样的路径发展下去,未来手机一定非常强大,它可以成为人的伙伴甚至教练,例如阿法狗就完全可以成为围棋教练。
在专业知识背景和本地结合下,可以把手机作为教练级伙伴。随着手机性能的不断提升,用户不断的使用,手机会不停的进化学习,到某一天,手机能全面与互联网结合,直接帮助人、甚至可能陪伴人。
不过,人工智能技术发展后,手机将变成了一部值不值得去偷的手机,因为它只服务特定的用户,这个变化也是挺有意思。
三、开放人工智能开发环境,让华为手机超越苹果成为可能
余承东在9月2日的演讲中说:“华为将会把麒麟作为人工智能移动计算平台开放给更多的开发者和合作伙伴,让开发者利用麒麟970的强大AI算力,开发出更具想象力和全新体验的应用,共同造就移动AI计算应用的美好未来。”,华为一位技术大牛也说:“我们今年不只是发布一款芯片,还要发布整个开发环境,第三方可以尽早参与开发。”由此可以想象,华为凭借领先的人工智能平台,构建一个开放的人工智能开发环境,让更多第三方可以开发人工智能应用,这个有点类似目前的APP开发,未来开发者可以为华为人工智能开发不同的算法,一起开发AI应用。
这样的开发环境和先发优势让华为在人工智能生态系统建设上占领了优势,未来华为凭借这个优势完全有超过苹果的可能。(三星已经不在考虑范围之内了)
四、 谈点产品定义的思路
麒麟970是两年前定义的产品,为何在当时大家还在热衷于多核架构的时候,华为麒麟团队人就看到了人工智能的曙光?这里结合一些获取的信息谈谈产品定义。
首先,据华为公布的资料显示,在2012年以前,华为就开始思考智慧终端该有一颗什么样的大脑,以及Ta会干些什么?学习什么?如何思考?为了创造“A new brain”,华为做了各种相关的科学研究和应用尝试。例如通过“诺亚方舟实验室”做过探索。
诺亚方舟实验室成立于2012年。作为人工智能算法的研究、管理 AI 的技术合作、识别 AI 主要应用场景和需求管理等研究的前沿阵地,诺亚方舟实验室的创新产品和技术主要聚焦在数据挖掘、人机交互、智能系统以及大数据系统领域,主要致力于“从大数据到大智慧”,对未来5-10年的技术发展方向做前瞻性的研究。
自2016年起,诺亚方舟实验室的研究成果就已经逐步应用到华为的手机产品上——Mate 9、P10 所采用的人工智能,应用在传感器算法、计算机视觉、搜索引擎和语义理解等领域。例如Mate9应用了智能感知学习技术,能够跟踪趋势和行为模式,从而确保手机持续运行的快速和顺畅,避免出现像手机使用时间越长,反应越慢的情况;P10 & P10 Plus新增的Ultra Memory功能,结合智能感知和深度学习,实现了自动内存压缩和回收,以及自动碎片处理功能,极大提高了手机的响应速度,也缩短了应用启动时间。这些基础研究对于产品定义都非常有益。
其次,至于麒麟970芯片为何考虑加入人工智能?按照一位技术大牛的说法是华为考虑的是随着传感器能力慢慢达到人类水平,则需要智能处理的介入。
为什么呢?这是因为超越人体感官和人体智能这两者之间是有因果关系的。例如戴眼镜的人摘了眼镜看不清楚,收集不到合适的信息,其实就相当于智商下降,虽然有智力但是不能做判断和决策,对于手机也是一样,如果图像传感器或者麦克风很强大,但是没有智能介入,手机还只是硬件升级而已。
还有就是,即使手机图像处理做的再好跟人眼也还是有差别,其中的原因就是人脑里有感光视觉。举例来说,如果一个人对某个人很熟悉,则对着他的侧脸或者光线较暗的环境下大脑也能把那个人的样子补出来,而不熟的人就做不到,因为人脑没有足够多的细节去主动补充,这也是人工智能干预的例子。
这样,麒麟970的架构定义者就发现了感官和人工智能中间的关联,有了人工智能干预以后,sensor信号和人工智能结合就会跟人类视觉处理类似了,而如果手机的某些感官超过人类,则就可以能帮助到人类,顺着这个逻辑再推导,自然就会推导出麒麟970的架构,就是把感测信号和人工智能处理结合起来这才是手机架构的大的升级,这样,今天的明星麒麟970就应运而生了!这个思路很值得本土IC公司借鉴。
从2008年海思K3V1开始到现在麒麟970,华为手机处理器经过十年发展,一举登顶全球手机处理器巅峰,凭借的就是务实和努力,为了这个荣耀,华为人付出了艰辛的劳动,如余承东在演讲中所言仅仅为了优化麒麟在高铁场景的通信体验,就在高铁上进行了40万公里场测。现在,华为已经规划麒麟990芯片,希望2年后的麒麟990继续震撼全球!
本文为原创文章,转载需注明作者、出处及原文链接
来源: 张国斌
μC/OS-II操作系统是一种抢占式多任务、单内存空间、微小内核的嵌入式操作系统,具有高效紧凑的特点。它执行效率高,占用空间小,可移植性强,实时性能良好且可扩展性强。采用μC/OS-II实时操作系统,可以有效地对任务进行调度;对各任务赋予不同的优先级可以保证任务及时响应;采用实时操作系统,降低了程序的复杂度,方便程序的开发和维护。 μC/OS-11非常适合应用在一些小型的嵌入式产品应用场合,在家用电器、机器人、工业控制、航空航天、军事科技等领域有着广泛的应用。
单片机、ARM、FPGA与μC/OS-II操作系统相结合,实现一些具体功能,是目前嵌入式应用中比较常见的。在这些应用中,基础性的工作就是操作系统的移植。本文选取使用较多的51单片机、LPC2210、NiosII三种处理器进行介绍。
1.μC/OS-II操作系统移植条件
μC/OS-II操作系统的大部分源代码都是用C语言书写的,但仍需使用汇编语言来完成一些和处理器相关的操作,例如读写处理器、寄存器时只能使用汇编语言来实现。因此,将μC/OS-II操作系统移植到目标处理器上,需要从硬件和软件两方面来考虑。
硬件方面,目标处理器需满足以下条件:
①处理器的C编译器能产生可重入代码;
②用C语言可以开/关中断;
③处理器支持中断,并且能够产生定时中断(通常在10~1 000 Hz之间);
④处理器能够支持容纳一定量数据的硬件堆栈;
⑤处理器有将堆栈指针和其他寄存器读出和存储到堆栈或内存中的指令。
软件方面,主要关注的是一些与处理器相关的代码移植,其分布在OS_CPU.H、OS_CPU_C.C和OS_CPU_A.ASM这3个不同的文件中。
2.目标处理器硬件支持
51单片机、LPC2210、NiosII三种处理器在硬件方面均能满足μC/OS-II操作系统的移植要求。
51单片机:选择Keil公司的集成开发环境作为开发工具,因为该集成开发环境的C51编译器能产生可重入型代码,且用C语言就可以开/关中断。同时具有一定数量的堆栈和操作相关寄存器的指令。
LPC2210:采用ARM7微控制器可以满足上述②、④、⑤,而ADS1.2的C编译器可以满足①、③的要求。
NiosII处理器:Nios处理器可以配置成最多支持64个中断,包括外部硬件中断、内部中断以及TRAP(调试中断)。Nios II处理器可以配置使用32位内部定时器,通过用软件控制写入几个控制寄存器的内容来获得定时工作,与一般的定时器工作原理相同,可以产生定时中断。 Nios处理器可以外接存储器。以使用的DE2开发板为例,外接512 KB SRAM资源,可提供足够的数据硬件堆栈。
NioslI 8.0 IDE采用GNU编译器,支持C/C++的编译、链接产生重入代码,允许在C语言中嵌入汇编语言。
3 软件移植过程
3.1 OS_CPU.H的实现
OS_CPU.H文件包括了用#define语言定义的与处理器相关的常数、宏以及数据类型。
在上述三种处理器采用的不同编译器中,数据类型的定义是相同的,在此不做具体介绍。
在OS_CPU.H中定义与处理器相关的宏,主要是进入临界区的OS_ENTER_CRITICAL()和退出临界区的OS_EXIT_CRITICAL()。
在Keil编译器中,EA是总中断。
#define OS_ENTER_CRITICAL() EA=0;//关中断
#define OS_EXIT_CRITICAL() EA=1;//开中断
在ADS编译器中定义为软件中断函数,并编写软件中断处理代码实现开/关中断。
_swi(0x00)viod OS_TASK_SW(viod);//任务级任务切换函数
_swi(0x00)viod OS_ENTER_CRITICAL(viod);//关中断
_swi(0x00)viod OS_EXIT_CRITICAL(viod); //开中断
在NiosII 8.0 IDE编译器中:
#define OS_ENTER_CRITICAL() asm(“PFX 8\n WRCTL%g0;”) //关中断
#define OS_EXIT_CRITICAL() asm(“PFX 9\n WRC TL%g 0;”) //开中断
堆栈的增长方向通过设置OS_STK_GROWTH为0或者1来确定。51单片机中只能设置为0,表示堆栈是从下往上增长的。LPC2210中则可以设置成0或者1。NiosII中则只能设置成1,表示堆栈是从上往下增长的。
3.2 OS_CPU_C.C的实现
OS_CPU_C.C中,主要应改写堆栈初始化函数OS-TaskStkIint()。必须根据移植时统一定义的任务堆栈结构进行初始化,其他9个钩子函数只需说明即可。也可根据移植时用户自己的需要,编写相应的操作代码。
以LPC2210为例,堆栈空间从高到低依次存放着PC,LR,R12,R11,…,R1,R0,CPSR,OsEnterSum。每个任务都有独立的 OsEnterSum,在任务切换时保存和恢复各自的OsEnterSum值。各个任务开/关中断的状态可以不同,这样实现了开/关中断的嵌套。
转自: 电子工程网