首页 文章 精选 留言 我的

精选列表

搜索[网站开发],共10000篇文章
优秀的个人博客,低调大师

嵌入式定制开发ARM Cortex系列处理器选型标准

随着对嵌入式系统的要求越来越高,作为其核心的嵌入式微处理器的综合性能也受到日益严峻的考验,现在一个高端智能手机的处理能力几乎可以和几年前的笔记本电脑相当。ARM一直以来都是自己研发微处理器内核架构,然后将这些架构的知识产权授权给各个芯片厂商,精简的CPU架构,高效的处理能力以及成功的商业模式让ARM公司获得了巨大的成功,使它迅速占据了32位嵌入式微处理器的大部分市场份额。主板定制 为了迎合市场的需求,ARM公司也在加紧研发他们最新的 ARM架构,Cortex系列就是这样的产品。那么我们今天就不妨好好了解一下ARM Cortex系列处理器知识点汇总。 ARM Cortex系列处理器 ARM公司在经典处理器ARM11以后的产品改用Cortex命名,并分成A、R和M三类,旨在为各种不同的市场提供服务。 1、Cortex-A:面向尖端的基于虚拟内存的操作系统和用户应用 2、Cortex-R:针对实时系统 3、Cortex-M:微控制器 ARM Cortex系列处理器——Cortex-A ARM Cortex-A 系列是一系列用于复杂操作系统和用户应用程序的应用程序处理器。Cortex-A 系列处理器支持 ARM、Thumb 和 Thumb-2 指令集。 主板定制 RM公司的Cortex-A系列处理器适用于具有高计算要求、运行丰富操作系统以及提供交互媒体和图形体验的应用领域。 如图所示,绿色的部分都是v7-A的架构,蓝色的是v8-A架构,基本上绿色都是可以支持到32和64位的,除了A32,只支持到32位。在右边的每个部分,比如说需要高效能的最上面的A15-A73这个部分是最高效的,接下来就是比较注重整个效率的部分了,中间那个部分是比较高效率的,最下面那栏的是效率最好的,在电池的效能方面达到了最好的标准。 如果非要给他们一个排序的话,从高到低大体上可排序为:Cortex-A73处理器、Cortex-A72处理器、Cortex-A57处理器、Cortex-A53处理器、Cortex-A35处理器、Cortex-A32处理器、Cortex-A17处理器、Cortex-A15处理器、Cortex-A7处理器、Cortex-A9处理器、Cortex-A8处理器、Cortex-A5处理器。 主板定制 ARM Cortex系列处理器——Cortex-M Cortex-M处理器家族更多的集中在低性能端,但是这些处理器相比于许多微控制器使用的传统处理器性能仍然很强大。例如,Cortex-M4和Cortex-M7处理器应用在许多高性能的微控制器产品中,最大的时钟频率可以达到400Mhz。 主板定制 当然,性能不是选择处理器的唯一指标。在许多应用中,低功耗和成本是关键的选择指标。因此,Cortex-M处理器家族包含各种产品来满足不同的需求: 不同于老的经典ARM处理器(例如,ARM7TDMI, ARM9), Cortex-M处理器有一个非常不同的架构。例如: —仅支持ARM Thumb指令,已扩展到同时支持16位和32位指令Thumb-2版本 —内置的嵌套向量中断控制负责中断处理,自动处理中断优先级,中断屏蔽,中断嵌套和系统异常处理。 —中断处理函数可以使用标准的C语言编程,嵌套中断处理机制避免了使用软件判断哪一个中断需要响应处理。同时,中断响应速度是确定性的,低延迟的。 —向量表从跳转指令变为中断和系统异常处理函数的起始地址。 —寄存器组和某些编程模式也做了改变。 这些变化意味着许多为经典ARM处理器编写的汇编代码需要修改,老的项目需要修改和重新编译才能迁移到Cortex-M的产品上。 ARM Cortex系列处理器——Cortex-R R4:第一个基于ARMv7-R体系的嵌入式实时处理器。专用于大容量深层嵌入式片上系统应用,如硬盘驱动控制器、无限基带处理器、消费产品手机MTK平台和汽车系统的电子控制单元。 R5:2010年推出,基于ARMv7-R体系,扩展了 Cortex-R4 处理器的功能集,支持在可靠的实时系统中获得更高级别的系统性能、提高效率和可靠性并加强错误管理。这些系统级功能包括高优先级的低延迟外设端口 (LLPP) 和加速器一致性端口 (ACP),前者用于快速外设读写,后来用于提高效率并与外部数据源达成更可靠的高速缓存一致性。 基于 40 nm G 工艺,Cortex-R5 处理器可以实现以将近 1 GHz 的频率运行,此时它可提供 1,500 Dhrystone MIPS 的性能。该处理器提供高度灵活且有效的双周期本地内存接口,使 SoC 设计者可以最大限度地降低系统成本和功耗。 R7:Cortex-R7 处理器是性能最高的 Cortex-R 系列处理器。它是高性能实时 SoC 的标准。Cortex-R7 处理器是为基于 65 nm 至 28 nm 的高级芯片工艺的实现而设计的,此外其设计重点在于提升能效、实时响应性、高级功能和简化系统设计。基于 40 nm G 工艺,Cortex-R7 处理器可以实现以超过 1 GHz 的频率运行,此时它可提供 2700 Dhrystone MIPS 的性能。该处理器提供支持紧密耦合内存 (TCM) 本地共享内存和外设端口的灵活的本地内存系统,使 SoC 设计人员可在受限制的芯片资源内达到高标准的硬实时要求。

优秀的个人博客,低调大师

基于hi-nginx的web开发(python篇)——cookie和会话管理

hi-nginx通过redis管理会话。 要开启管理,需要做三件事。 第一件开启userid: userid on; userid_name SESSIONID; userid_domain localhost; userid_path /; userid_expires 300s; 这个功能是nginx内建的,可以直接使用。需要注意的是,hi-nginx只认识SESSIONID的userid_name。 第二件是配置redis服务器: hi_redis_host 127.0.0.1; hi_redis_port 6379; 当然,你应该先安装redis并确保它运行。 第三件是在location段开启会话管理: location / { hi_need_session on; hi_session_expires 300s; hi_python_script python/index.py; } 整个nginx配置写下来,就是: 1 server { 2 listen 8080; 3 server_name localhost; 4 5 userid on; 6 userid_name SESSIONID; 7 userid_domain localhost; 8 userid_path /; 9 userid_expires 300s; 10 11 hi_redis_host 127.0.0.1; 12 hi_redis_port 6379; 13 14 15 location / { 16 hi_need_cache off; 17 hi_cache_expires 5s; 18 19 hi_need_session on; 20 hi_session_expires 300s; 21 hi_python_script python/index.py; 22 } 23 } 需要注意是,应该确保hi_session_expires和userid_expires的值保持一致。 配置写完后,记得reload或者restart nginx。 接下来就是使用会话管理的api了。 说来太简单,都不好意思写出来,用req.has_session,req.get_session和res.session即可: @app.route('^/session/?$',['GET']) def session(req,res,param): k='test' v=0 if req.has_session(k): v=int(req.get_session(k)) res.session(k,str(v+1)) else: res.session(k,str(v)) res.content('{}={}'.format(k,v)) res.status(200) 那么,cookie怎么办?人们使用cookie的一大用途建立会话机制。上文已经把会话管理的使用说清楚了。所以使用hi.py框架时不需要特别留意cookie的管理。当然,如果你想自己管理cookie,hi-nginx也提供req.has_cookie和req.get_cookie两个只读api。如果要写api,可以使用res.header来写。比如: 在location段中添加hi_need_cookies on 1 location / { 2 hi_need_cache off; 3 hi_cache_expires 5s; 4 hi_need_cookies on; 5 hi_need_session on; 6 hi_session_expires 300s; 7 hi_python_script python/index.py; 8 } 在操作函数中在添加相关操作: @app.route('^/session/?$',['GET']) def session(req,res,param): k='test' v=0 if req.has_session(k): v=int(req.get_session(k)) res.session(k,str(v+1)) else: res.session(k,str(v)) cv=v if req.has_cookie(k): cv=int(req.get_cookie(k)) res.header('Set-Cookie','{}={};Path={};Domain={}'.format(k,cv+1,'/','localhost')) else: res.header('Set-Cookie','{}={};Path={};Domain={}'.format(k,cv,'/','localhost')) res.content('session:{0}={1},cookie:{0}={2}'.format(k,v,cv)) res.status(200) 如上所见,在hi.py中操控和管理cookie和会话是非常方便的,用来写个登陆或者购物车什么的,配合hi.py的jinja2模板引擎,简直易如反掌。

优秀的个人博客,低调大师

基于hi-nginx的web开发(python篇)——utf-8编码

一致地utf-8编码,非常重要。对python2而言,尤其如此。 如果在hi-nginx中使用的是python2,同时又需要无障碍地使用中日韩等文字,那么一定不要忘记使用: #-*- coding:utf-8 -*- 同时,任何模板文件,也应该使用utf-8编码。这样就可以避免许多无谓的错误了。 因为hi.py框架在引入时,会自动检查sys模块的默认编码,并重设置为utf-8编码: if sys.version_info.major < 3: reload(sys) sys.setdefaultencoding('utf-8') 所以使用hi.py框架时,务必牢记一切归于utf-8。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册