tag 标签: 嵌入式

相关帖子
相关博文
  • 热度 1
    2020-1-10 16:46
    794 次阅读|
    0 个评论
    【兆易创新RISC-V开发板评测】初评之STM32F103VBT6、GD32VF103VBT6特性比较
    笔者申请这款开发板的本意就是想对比常用的 STM32 家族芯片与 RISC-V 内核芯片在使用上的相同与不同之处,深入了解全球第一款 RISC-V 内核 32 位通用 MCU 本身的特性性能以及编程体验,以便在以后的项目中在微控制器的选择上做出权衡。因此,在拿到开发板后,有必要写一篇 STM32 系芯片与 GD 系芯片特性参数对比报告,扩大今后 MCU 的选择范围。兆易创新以 VF103 来命名第一款 RISC-V 内核的微处理器必然是对标 STM 公司 F103 系列微处理器,为了公平起见,本片测评以 STM 公司的 STM32F103VBT6 芯片和兆易创新的 GD32VF103VBT6 芯片从内核、容量、时钟、电源要求、管脚兼容性、主要外设几个方面做一个简单对比。 1. 内核 STM32F103 系列采用 ARM 公司 Cortex-M3 内核,核心频率最大 72MHz ,在零等待状态访问快闪存储器时计算性能可达 1.25DMIPS/MHz ,具有单周期乘法器和硬件除法器。 GD32VF103 系列采用芯来科技 Bumblebee 内核,核心频率最大 108MHz ,在零等待状态访问快闪存储器时计算性能可达 153DMIPS ,具有单周期乘法器和硬件除法器。 2. 容量对比 STM32F103 系列提供片上 16~1024KBytes FLASH 存储器, 6~96KBytes 静态 RAM 存储器, STM32F103VBT6 本身提供 128KBytes FLASH 和 20KBytes SRAM 。 GD32VF103 系列提供片上 16~128KBytes FLASH 存储器, 6~32KBytes 静态 RAM 存储器, GD32VF103VBT6 本身提供 128KBytes FLASH 和 32KBytes SRAM 。 3. 时钟对比 STM32F103VBT6 支持外部输入 4~16MHz 时钟信号,拥有 8MHz 和 40KHz 出厂校验的内部 RC 时钟。 GD32VF103VBT6 支持外部输入 3~25MHz 时钟信号,同样拥有 8MHz 和 40KHz 出厂校验的内部 RC 时钟。图 1 和图 2 分别为 STM32F103VBT6 和 GD32VF103VBT6 外设时钟树。 图 1 STM32F103VBT6 时钟树 图 2 GD32VF103VBT6 时钟树 4. 供电和功耗模式对比 STM32F103 供电范围支持 2.0~3.6V 电源供电,有单独供电引脚为 RTC 和备份寄存器供电,支持睡眠、停止和待机模式。 GD32VF103VBT6 供电范围支持 2.6~3.6V 电源供电,同样有单独供电引脚为 RTC 和备份寄存器供电,支持睡眠、深度睡眠和待机模式。图 3 和图 4 分别为 STM32F103VBT6 和 GD32VF103VBT6 电源域。 图 3 STM32F103VBT6 电源域 图 4 GD32VF103VBT6 电源域 5. 管脚兼容性 STM32F103VBT6 和 GD32VF103VBT6 脚位完全兼容,可以相互替换,图 5 和图 6 分别为 STM32F103VBT6 和 GD32VF103VBT6 脚位图。 图 5 STM32F103VBT6 脚位图 图 6 GD32VF103VBT6 脚位图 6. 主要外设对比 图 7 和图 8 为 STM32F103VBT6 和 GD32VF103VBT6 外设概览。 图 7 STM32F103VBT6 外设概览 图 8 GD32VF103VBT6 外设概览 6.1UART/USART STM32F103VBT6 拥有 3 个 USART ,其中 USART0 最高通信速率可达 4.5Mbit/s , USART1 、 USART2 最高可达 2.25Mbit/s 。 GD32VF103VBT6 拥有 5 个 U(S)ART ,其中 USART0 最高通信速率可达 6.75Mbit/s 。 6.2 定时器 STM32F103VBT6 拥有 1 个具有互补通道输出的 16 位高级定时器, 3 个 16 位通用定时器, 1 个 12 位向下计数独立看门狗, 1 个 7 位向下计数窗口看门狗和 1 个 24 位向下计数系统滴答定时器。 GD32VF103VBT6 拥有 1 个具有互补通道输出的 16 位高级定时器, 4 个 16 位通用定时器, 2 个 16 位基本定时器, 1 个 12 位向下计数独立看门狗, 1 个 7 位向下计数窗口看门狗和 1 个 64 位向上计数系统滴答定时器。 6.3SPI STM32F103VBT6 拥有 2 个 SPI ,可工作于主 / 从模式、全双工 / 半双工模式,最高通信速率可达 18Mbit/s 。 GD32VF103VBT6 拥有 3 个 SPI ,可工作于主 / 从模式、全双工 / 半双工模式,最高通信速率可达 27Mbit/s 。 6.4IIC STM32F103VBT6 拥有 2 个 IIC ,可工作于多主机模式和从机模式,传输支持标准和快速模式。 GD32VF103VBT6 同样拥有 2 个 IIC ,可工作于主机模式和从机模式,传输支持标准和快速模式。 6.5ADC STM32F103VBT6 拥有 2 个 12 位 ADC ,每个 ADC 共享 16 个外部输入通道,可工作于单次模式和扫描模式,支持外部触发采集。采集范围 2.4~3.6V ,最大采样速率 1MHz 。 GD32VF103VBT6 拥有 2 个 12 位 ADC ,每个 ADC 共享 16 个外部输入通道,可工作于单次模式和扫描模式,支持外部触发采集。采集范围 2.6~3.6V ,最大采样速率 1MHz ,可配置为 12 位、 10 位、 8 位或 6 位采样精度。 6.6USB STM32F103VBT6 拥有 1 个全速 12Mbit/s USB2.0 Host/Device/OTG 设备, D+ 引脚需经 1.5K Ω电阻上拉到 3.0~3.6V 电平。 GD32VF103VBT6 拥有一个全速 12Mbit/s USB2.0 Host/Device/OTG 设备, D+ 引脚上拉电阻已经集成在内部全速 PHY 内部。 6.7CAN STM32F103VBT6 拥有 1 个 CAN 总线接口,而 GD32VF103VBT6 拥有 2 个 CAN 总线接口。 6.8 其它 GD32VF103VBT6 拥有 2 个 12 位独立 DAC ,并可配置为 8 位或 12 位模式;拥有 16 位数据宽度的外部内存控制器,支持 SRAM , PSRAM , ROM 和 NOR-Flash 以及 6800 、 8080LCD 接口。 7. 总结 整体来说, GD32VF103 相对于同一梯队的 STM32 产品来说,不仅核心频率更高,而且外设也更丰富,配置也更灵活,毕竟是新时代的新生儿。通过以上比较,可以看出兆易创新在全球第一款基于 RISC-V 内核 32 位通用 MCU 身上下的功夫以及替代 ARM 的决心,作为国人,也应当支持。这一篇评测主要是对两种不同内核的 MCU 产品有一个初步比较认识,下一篇评测则专注两种芯片具体功耗和性能比较。
  • 热度 3
    2019-11-1 12:48
    1047 次阅读|
    2 个评论
    MM32 Motor–DK 试用体验 + 旋转的“小电机”
    一. 灵动的礼物 首先感谢面包板社区,能够给我提供这次的机会,其次,感谢灵动微电子提供给的无刷电机 FOC 开发板,作为一个电机控制的爱好者,非常喜欢 MM32 Motor; 灵动的客服人员和负责业务的小姐姐也都非常的热心,对于群里面有人提问的每一次问题都非常耐心的回答,从来都没有糊弄过一个使用者;对于写测评的爱好者,又免费提供小熊、电机和 MM32-LINK 仿真器,而且每次快递都是顺丰快递,运费完全由灵动微电子公司出,真的是每一件小事情都考虑的非常的周到,之后我在想究竟是什么一群人,在做灵动微电子行业,做的如此的出色,我想他们的初心一定是能够使灵动微电子行业,能够对社会做出更大的贡献,不辜负每一个热爱灵动微电子行业的爱好者。在此,我非常感谢灵动微电子提供了一个很好的交流平台。 二. 灵动和小电机的亮相 首先,我们来看一下两块板子的照片吧 通过上面的照片,我们发现设计的非常的巧妙,焊工也非常的扎实,可见灵动公司的设计人员非常的仔细认真,整体效果不错,子母板叠层设计, MCU 板可更换,便于升级 MCU 。板子 PCB 布局比较合理,按键部分避开了电源输出调试线路,非常赞! MCU 板引脚资源也都给用户引出了。 三. 硬件部分 本次实验的目的,主要是让 FOC 无感电机实现七段调速,对于 FOC 无感电机,灵动微电子的工作人员后期给我们免费邮寄了此电机,对此非常感谢相关的工作人员。因此,我对电机进行介绍一下。 上图为启动前的初始速度介于 DIRECT_ENTER_CLOSE_LOOP_MIN_SPEED ~RAMP_UP_CHANGE_TO_SLOP3_SPEED 参数设定值之间 , 启动后首先将以 OPEN_LOOP_RAMP_DOWN_SPEED_SLOP3 设定的减速度降速 , 当速度低于 RAMP_UP_CHANGE_TO_SLOP3_SPEED 时将改变减速度的设定值为 OPEN_LOOP_RAMP_DOWN_SPEED_SLOP2, 之后依据下图所示的程序降速至 0, 接着以三段式正转开回路加速度升速至闭回路控制。 下图为闭回路驱动软件设计框图。 软件流程一开始是由 ADC 读取外部输入电压产生目标速度命令 , 经过闭回路加速度斜率控制器运算后 , 得到可提供速度 PI 控制器功能方块的速度命令 , 接着用此速度命令与反馈的实际速度 , 经由 PI 控制器计算之后产生力矩电流命令。 磁场导向控制器 (FOC) 功能方块接收到此力矩电流命令及电机的估测角度后 , 经过三相电流的反馈、坐标转换、 电流环 PI 计算、及空间矢量调制 (SVPWM) 等法则运算 , 由此获得要逼近目标转速所需求的三相 PWM 占空比数据 , 之后将此数据产生 PWM 输出给予外部的电力驱 动组件 , 以此驱动电机运转。 在磁场导向控制器功能方块产生 PWM 讯号的过程中 , 滑模估测器 (SMO) 功能方块负责产生电机运转所需要的估测角度及速度。 四. 软件部分设计 上图为主要的软件控制流程图,在 Main() 程序中除了初始化的各个子程序之外 , 主要功能为系统时间管理 system_time_management(); 及电机运行模式的处理 (Motor Run Mode Process) 。 系统时间管理 system_time_management(); 电机运行模式处理 (Motor Run Mode Process) 主要是安排电机各种不同模式的状态流程管理 , 总共有五种状态模式 , 依序为: 停止 / 零电流时校正 / 检测 BEMF/ 开回路运行 / 闭回路状态模式等。 停止模式 ;电机处于停止状态。 零电流校正模式 :电机收到启动命令后 , 电机尚未启动 , 故运算放大器的输入端为零电流的输入状态 , 此时需 ADC 量测电流运算放大器输出的电压值 , 做为后续电流量测的校正值 , 完成后接下来将会执行检测 BEMF 状态模式。 检测 BEMF 模式 :零电流校正状态模式完成后 , 需先检测电机目前是处于静止、顺转或逆转的哪一种状态 , 以便做为后续如何启动电机的依据 , 这个电机状态的检测是由 BEMF U, V 电压值的侦测而得知的。 开回路模式 :电机处于开回路运行状态中。 闭回路模式 :电机处于闭回路运行状态中。 五. 实验部分 首先分享一下我们搭建的主要控制电路 如上图,我们用直流 24V 电源给我的电机板就行供电,同时我的电机三项 UVW 分别接到主控电路板上面,而且我给电机上也装载了一个白色的小风扇,完全由我自己改装的小风扇。 接下来,我们给电路接上我们的示波器,通过示波器来观察我们的输入和输出的波形。 如上面的波形,我们可以发现上面的波形是有干扰的,对此我们进行改善我们的装置。输出的波形如下图所示: 对此,我们完成对电机的测试。通过测试,我们发现电机的运行良好,调速方便,可以快速的实现电机的转速的上升和控制。 六. 总结 不知不觉三周过去了,我已经开始慢慢掌握灵动电机的原理了,不敢说自己学会了全部的知识,但是自己敢说自己用心在学习了,用心学习的感觉,真好,像是在大海中航行的船一样,逐渐的驶向远在天边的彼岸,整个过程都是非常的踏实与安心的,因为自己在按照方向,不断的前进。 我还是想感谢灵动的工作人员,非常耐心的在群里指导,还有思思姐,不仅人长得非常好看,而且做事情也非常有条理,尽力的帮大家处理发货问题,对此,我表示衷心的感谢,我之所以走到今天,正是由于你们的帮助和付出,非常感谢灵动微电子了,非常喜欢你们的电路板。 关闭 关
  • 热度 3
    2019-10-2 17:51
    331 次阅读|
    0 个评论
    ​ 链接:https://pan.baidu.com/s/16MZ6UW02oRX5qLmxQrMRgg 提取码:y9lu
  • 2019-9-23 15:03
    424 次阅读|
    1 个评论
    抑制嵌入式系统设计的复杂性 作者: Lucio Di Jasio , Microchip 简介 Raspberry Pi 系列不久前通过全新的 Raspberry Pi Zero W1 ( 2017 年 2 月)扩充了产品线,这是一台支持无线连接的个人计算机,售价仅 10 美元。对于业余爱好者、制造商、工匠和黑客而言,它的意义非同寻常。是的,我们之中很少有人真正尝试做好我们的工作,即设计真正的(电子)产品!当我最近观看 Eben Upton 的视频公告时,我忍不住想起早年的经历。那是 80 年代中期,我买不起 BBC 电脑,也负担不起奢侈的 Amiga 。但我花光所有的钱购买了 Sinclair ZX Spectrum 。因此, Eben 努力实现“让所有人都买得起”的目标确实让我产生了共鸣。 一台功能强大的个人计算机塞进一块小巧的印刷电路板( PCB )上,确切地说是 6 x 3 cm 的印刷电路板,达到这种小尺寸的新记录着实让我惊叹。经过进一步思考,我经常想弄清楚是否正是 Spectrum 的简约及其诸多限制促使我深入研究计算机并最终沉醉于这一奇妙领域——软件和硬件之间的边界,我们今天称之为嵌入式。 小型片上系统 Raspberry Pi Zero 设计基于片上系统( SoC )( BCM2835 ),其中包括一个 1 GHz ARM® 内核和一个图形处理单元( GPU )、一个视频接口、多个串行接口( USB 、 UART 、 SPI 和 I2C )以及一个外部存储器接口,用于管理运行 Linux® 操作系统( OS )所需的大容量 RAM ( 512 MB DDR2 )和大容量存储卡( SD 卡)。对于单芯片器件来说,这些都是令人印象深刻的功能,特别是与我年轻时看到的早期个人计算机相比。我们可能会争辩,与目前在各种嵌入式控制应用中常用的最新简单型单片机相比,这并非不成比例。虽然时钟速度和处理能力都要低得多(从 10 MHz 到 100 MHz 不等),但今天所有小型单片机本身都是真正的小型片上系统奇迹。正如您对单片机期望的那样,所有 RAM 和闪存都位于芯片上。存在串行接口( USB 、 UART 、 SPI 和 I2C ),但也集成了所有电源调节和电压监控电路。片上通常有五个或更多不同的(精密)振荡器,以便获得更大的灵活性并控制功耗。此外,还有几个具有大输入 / 输出多路开关的模拟外设( ADC 、 DAC 、运算放大器和模拟比较器 ...... ),取代了 Raspberry Pi 幻想视频中的功能,一直以来反映出偏爱嵌入式超过计算的设计选择中的显著不同。 事实上,当 Raspberry Pi 用户需要与现实世界连接时,对于使常用 LED 闪烁等最平和 I/O 应用以外的应用而言,由更小的单片机(实际上通常为 8 位单片机)通过“帽子”(小型子板)提供必要的 I/O 接口和所需电压转换并不意外。 我不想在两个截然不同的世界之间将这种不公平的对比一直拖下去,但我必须指出,在支持开发人员方面,两者有一个共同关注的问题:“控制复杂性”,最终“吸引新用户”。毋庸置疑,它们的解决方案类似,但终究有所不同。 这两个平台都是由提供 免费 软件工具开始,包括集成开发环境( IDE )、编译器、链接器、模拟器、调试器(在专业版中提供,只需少量费用)、或多或少的开放式中间件和( RT- ) OS 以及一小部分硬件(板)选项。 两个阵营(嵌入式计算和通用计算)之间的差异比您想象的要小。两者最终都依赖于类似的(如果不相同)工具链,这些工具链大部分都基于 GNU 。在中间件级别,一旦您正确抽取下级(下至金属)驱动程序层,开源选项会再次变得极其相似。操作系统级别的差异最大,因为许多单片机将很愿意运行 RTOS ,但无法承受完整 Linux 内核的负担。这反映了真正的行业差异。实时是操作系统“工作说明”的一部分。 膨胀 查看文档时会发现,两者的 复杂度在膨胀 。我最喜欢的一个例子是基于流行 8 位 PIC® 架构的小巧而简单的单片机。 PIC16F1619 经常用于控制小家电,为此,它将小容量闪存( 16 KB )封装在 20 引脚微型封装中,具有十几个数字外设接口和几乎同样多的模拟支持模块。其数据手册长达 650 页, 之后 还增加了特性数据、表和图 2 。 此小型 SoC 上提供的一些外设(例如 信号测量定时器 )需要长达 50 页的篇幅才能适当记录。这几乎是描述实际 PIC 内核及其整个指令集所需页数的两倍。 在 Raspberry Pi 方面,如果只是按比例放大( 10 倍),则问题类似,因为有多个数据手册需要考虑,每个数据手册只记录片上系统硬件组件的一部分( SoC 外设、 GPU 和内核),内核单独占用超过 750 页的篇幅。 嵌入式软件架构 很明显,没有人能够阅读或跟上如此庞大的信息量。特别是嵌入式开发人员,他们总是承担着极大的压力,需要在更短的时间内完成应用,以实现最快的产品上市速度。常见的解决方案是使用分层 架构 对应用进行分区,并使用标准化 外设库 来 抽取 硬件详细信息。这些层可以整齐地形成协议栈,其中“应用”位于 硬件抽象层 ( HAL )的顶部。实际上,可以进一步细化此图片来完全识别 HAL , HAL 上方的 中间件 层将负责实现诸如网络、文件系统和图形 UI (如果存在 / 需要)一类的通用服务 / 功能。 图 1 :嵌入式应用的软件协议栈 注:通常通过从 HAL 分离驱动程序层和电路板支持层来进一步细化协议栈,但是在以下考虑中,我们不需要详细到这种程度。 此软件架构直接来源于“计算”领域,可以很好地对大多数通用案例进行建模。遗憾的是,由于它适用于嵌入式应用,因此有两个基本缺点: · 只要重点放在顶层中间件层提供的标准功能上,分层架构就可以简化 文档篇幅过长 的问题。在应用范围的底端,当中间件层(如果存在)非常薄时,结果大多比较 模糊 。开发人员必须依赖以大型应用编程接口( API )形式存在的 HAL 文档,这份材料的篇幅同样较长(可达数千页),但始终未真正研究器件的任何细节。出现问题时,他 / 她将身陷窘境或被迫深入研究陌生领域和大量代码。 · HAL 层为支持标准中间件服务提供了巨大帮助,但由于其性质极其严格,因此最终会清除特定器件的任何独特差异化功能。否则,这些独特功能可以为特定应用提供技术优势,并且可能成为选择特定器件型号的原因。 · 在应用范围的顶端,中间件层非常厚,例如 Raspberry Pi ,仅 Linux OS 内核就 添加了数百万行代码 来应对问题 3 。虽然可以说这是开源代码,但对于希望自己永远不必深入了解到如此程度的 普通 开发人员而言,它几乎无法带来安慰。 让计算机尽其所能! 最终, Raspberry Pi 开发人员将能够依靠“计算”性能带来的巨大收益和小电路板提供的大量资源。标准 Linux 操作系统的便利性远不止弥补 API 的复杂性和广泛性。 我最关心的是全新 小型 SoC 的开发人员:现代单片机用户。对于他们而言,使用标准化 HAL 的好处减少了,因为性能存在损失,而且堆叠软件架构使独特的功能变得单一。 用于快速开发的新一代软件工具代表了摆脱这一难题的巧妙方式。这是最近出现在嵌入式控制市场中的一种新型代码生成器或配置器。尽管最初时持有明显(但通常合理)的怀疑态度,但事实证明,这些工具不仅有效,对于任何严格的嵌入式开发人员也必不可少。 我们发现的显著特征包括: - 完全集成在常见的 IDE 中,这有助于其了解项目上下文:型号(器件编号)选择和中间件库感知。 - 支持独特和复杂的外设。例如,先前示例中提到的信号测量定时器( SMT )可以在 单个页面 / 对话框 中直观地呈现给用户,其中仅包含少数滚动列表、复选框和一些直观选项。有关来自 Microchip 的 PIC 单片机的旗舰快速开发工具 MPLAB® 代码配置器( MCC ) 4 的屏幕截图,请参见图 2 。 图 2 —— MPLAB 代码配置器:信号测量定时器选项 - 利用模板引擎,将配置选项转换为一小部分 完全自定义的函数 。这意味着只需通过少量待学习的函数以及一致且直观的命名约定便可生成最小 API 。函数定制保证大多数硬件抽象是在编译时(实际上在编译前)静态执行的。这有助于减少传递到每个函数所需的参数列表,从而提高性能和代码密度。有关 MPLAB 代码配置器的典型简约用例,请参见列表 1 。 - 输出由非常短的( C 语言)源文件组成,这些源文件可由用户全面检查(可将其作为一次学习机会),但也会经过专家进一步 手动优化 。现代化的代码生成器将其代码与用户代码灵活地混合,既可保持完整性,也允许充分利用宝贵的高级硬件功能。 void SMT1_Initialize(void) { // CPOL rising edge; EN enabled; SPOL high/rising edge enabled; SMT1PS 1:1 Prescaler; … SMT1CON0 = 0x80; // SMT1MODE Counter; SMT1GO disabled; SMT1REPEAT Single Acquisition mode; SMT1CON1 = 0x08; // SMT1CPRUP SMT1PR1 update complete; SMT1TS not incrementing; RST SMT1TMR1 update complete … SMT1STAT = 0x00; SMT1CLK = 0x00; // SMT1CSEL FOSC; SMT1WIN = 0x00; // SMT1WSEL SMTWINx; SMT1SIG = 0x00; // SMT1SSEL SMTxSIG; SMT1PRU = 0x00; // SMT1PR16 0x0; SMT1PRH = 0x00; // SMT1PR8 0x0; SMT1PRL = 0x00; // SMT1PR0 0x0; } void SMT1_DataAcquisitionEnable(void) { SMT1CON1bits.SMT1GO = 1; // Start the SMT module by writing to SMTxGO bit } void SMT1_SetPeriod(uint32_t periodVal) { // Write to the SMT1 Period registers 16); 8); SMT1PRL = periodVal; } 列表 1 ——由 MCC 生成、用于配置 SMT 外设的源文件( smt1.c )部分 从根本上说,代码配置器 / 生成器可将“计算机”执行的操作做到最好。构建 HAL 是硬件外设配置重复且容易出错的阶段,通常会导致在数据手册中花费大量时间进行乏味的搜索,现在,这一阶段现已然消失或显著缩短,只留下一些更加趣味横生、启发思维的探索与创造时间。 事实上,用户可以从同一个用户界面了解特定的硬件外设功能,从根本上消除(或至少极大减少)对数据手册的需求。 硬件抽象层成为项目的灵活部分,实际上可以根据需要频繁、快速地重新生成,从而优化应用性能。 十(二进制)行代码 处理完(外设)配置后,可将注意力立即集中到应用上,这是设计中更智能的部分(在应用层上),这一部分位于“主循环” 之内 ,而不是 之前 。 最后要说的是,凭借代码生成器,即使在嵌入式领域中,经典的“ Hello World ”示例(总是转换为使 LED 闪烁)也会成为令人耳目一新的两行代码练习! LED_Toggle(); __delay_ms(500); 列表 2 ——为创建第一个嵌入式“ Hello World ”而需要输入的短短两行代码 您将能够在我最近出版的书中找到( 20 个)更多关于同样有效利用快速开发工具的实例:“ In 10 Lines of Code ” 5 。 对抗复杂性 在小型单片机发展成为小型 SoC 或者个人计算机缩小为 Raspberry Pi 的过程中,不仅会浪费时间和造成认知负担,还会在我们操作无法完全理解 / 掌握的系统时引入 漏洞 。 复杂性 不是 技术进步的必然结果。现代化的代码配置器 / 生成器可以通过扩展我们的软件开发流程、实现自动化并最终恢复我们对快速增长的可用功能 / 选项数量的掌握来帮助我们。 链接 1- RaspberryPi ZeroW 公告。 https://www.raspberrypi.org/blog/raspberry-pi-zero-w-joins-family/ 2- PIC16F1619 数据手册。 http://microchip.com/pic16f1619 3- Linux 内核中的代码行。 https://arstechnica.com/business/2012/04/linux-kernel-in-2011-15-million-total-lines-of-code-and-microsoft-is-a-top-contributor/ 4- MPLAB 代码配置器。 http://microchip.com/mcc 5- In 10 Lines of Code 。 http://blog.flyingpic24.com/10lines 个人简历 Lucio Di Jasio 是 Microchip 的 EMEA 业务开发经理。过去 18 年来,他一直在公司 8 位、 16 位和 32 位部门担任各种技术和营销职位。作为一位固执己见的多产技术作家, Lucio 发表了大量文章和多部有关嵌入式控制应用编程的书籍。凭借对飞行的热情,他获得了 FAA 和 EASA 私人飞行员执照证书。您可以在他的博客上阅读更多关于 Lucio 最新书籍和项目的信息: http://blog.flyingpic24.com
  • 热度 3
    2018-9-11 13:31
    1452 次阅读|
    1 个评论
    作者:Richard Quinnell 在我刚开始成为嵌入式开发人员时(当时最高的处理器速度也就500kHz),要做的工作同时包括硬件设计和应用软件开发(而且是用汇编语言)。后来,硬件和软件开发慢慢地分开,硬件工程师主要解决棘手的高速讯号问题,软件开发人员则解决诸如内存约束(Memory Constraint)和实时性能等事情。 但随着基于功能强大又便宜,且内存资源丰富的处理器开发的现成硬件和软件平台的逐渐普及,嵌入式开发人员的角色再次发生了改变。 嵌入式应用中总是需要客制化(custom)的硬件和软件,特别是诸如成本、功耗、性能和外形有严格要求的那些应用。但种类广泛的各种平台正渗透到越来越多的应用领域,在上市时间最为迫切的情况下,借助平台的方法有相当大的吸引力。当核心处理硬件、操作系统驱动程序和用户接口都变得伸手可及时,设计师所要做的就只是设计应用程序代码。 基本上是这样。 透过收集各种现成的组件来创建系统有一个问题。就大部分而言,这些组件是彼此独立开发的,因此很少能保证简单的即插即用;相反,几乎都要花时间在不同组件的整合上面,解决修改一个或多个组件引起的冲突。 这类系统整合要求的技巧与系统设计相比有少许的不同。当你从头开始设计一个系统时,你所做的实现决策是加快和简化组装与对系统进行除错(debugging)的任务。但当你使用现成的组件时,你首先需要了解这些组件是如何工作的,然后才能明白它们在一起为什么不能工作。理解别人的设计其实是一种很大的挑战。 幸运的是,一旦你理解了所用的平台,那么使用这些平台创建下一个系统设计将变得非常容易,这正是开发团队转向平台的原因。从头开始做的全新设计每次都要花相同的精力,而基于平台的设计每次会变得更加容易更加快速。 最近我刚好遇到了改变嵌入式设计师所担当角色的例子。15年前成立的Witekio公司(原Adeneo Embedded)聚集了一群高阶嵌入式开发人员,最近他们的任务发生了变化。他们开始做客制化嵌入式系统开发,为他们的OEM客户设计连网的系统硬件和软件,并说明芯片供货商增加对他们组件的操作系统与其他软件支持。公司的这种方法正是在从设计向系统整合转型。该公司首席执行官Yannick Chammings在接受采访时向我解释了其中的原因。 “我们对嵌入式市场的观点是,开发工作将从要求详细的专业技术向需要系统软件的整合与优化改变。”Chammings表示:“在先前微控制器(MCU)比较简单的时代,开发人员自己可以包办全部事情。到了第二代,他们需要供货商的支持,以及操作系统和用户接口软件的专业知识;而到现在,出现了用户接口、数据收集与管理、云生态系统等的客制化。” 这家公司的新策略基于以下四个关键原则: ˙系统和生态系统正变得越来越复杂和互连; ˙技术和标准的变化越来越快也越来越剧烈; ˙每个连网项目涉及更多的专家、更多种类的参与者和互动; ˙“上市时间”变得越来越短,都希望用快速方便的解决方案。 他们的结论是:高效地整合从硬件到云端的各种技术和各种软件层已成为连网/嵌入式项目成功的关键。 为了在今天这样的环境下成功建立嵌入式系统,需要结合掌握广泛的专业技术(操作系统、板级支持包、微控制器、云服务等)、高超的系统整合技巧(包括测试和验证),以及灵活地处理外部合作伙伴提供的IP。大公司自己拥有所有这些技能,但许多开发团队没有,因此亟需帮助。 随着平台的出现,对专业技术的需求已让位给对系统整合技能的需求。除非开发项目需要的各种优化只能透过客制化设计实现,否则软硬件平台和商用软件库就可以提供系统要求的大多数基本功能,只有应用程序设计需要客制化。系统设计变成系统组装,而且这种组装不可避免地要求整合技术。 对于大多数嵌入式开发人员来说,具体的设计知识不再是系统设计成功的唯一或者主要途径。相反,广泛而深入地理解可用的构建模块及其互动将成为关键,而且要与每个模块背后的技术专家进行沟通交流。专家们会发现他们自己主要负责开发和支持构建模块,而普通技术人员和整合人员才是建置系统的合适人选。
相关资源
  • 所需E币: 3
    时间: 2020-6-25 16:29
    大小: 19.7MB
    上传者: sense1999
    虽然Linux嵌入式系统几乎无所不在,从手机到汽车的ABS系统以及净水厂都可以发现它的踪迹,但是令人惊讶的是,建立、安装和测试Linux内核以及相关工具的信息来源却少得可怜。《构建嵌入式LINUX系统(第二版)》是一本深入探讨如何构建这些系统的指南。通过阅读本书,你不仅可以获得基本的概念,还可以学到如何设置以及使用40种以上不同的开放源码和自由软件套件。本书的内容针对Linux内核的*新版本做过*新,并且加入之前未介绍过的程序以便协助你:·建立你自己的GNUdevelopmenttoolchain(开发工具链)·为你的目标系统选用、设定、构建以及安装专属的内核·为你的目标系统建立完整的根文件系统·设置、操作以及使用固态储存设备·为你的目标系统安装及设定bootloader(引导加载程序)·交叉编译许多的工具程序与套件·可用于嵌入式系统调试的众多工具和技术·使用uClibc、busybox、U-Boot、Openssh、thttpd、tftp、strace以及gdb等套件·用Xenomai或RTkernelpatch实现实时功能阅读本书你将能够学到如何构建操作系统组件,以及简化全面掌控嵌入式系统的艰巨任务。
  • 所需E币: 5
    时间: 2020-6-24 18:34
    大小: 167.55KB
    上传者: samewell
    嵌入式语音识别系统是什么.pdf
  • 所需E币: 5
    时间: 2020-6-24 18:34
    大小: 343.33KB
    上传者: samewell
    嵌入式语音识别系统之电路设计原理.pdf
  • 所需E币: 5
    时间: 2020-6-28 20:49
    大小: 99.5KB
    上传者: kaidi2003
    第12章嵌入式Linux软件设计.ppt
  • 所需E币: 5
    时间: 2020-6-28 20:50
    大小: 3.44MB
    上传者: kaidi2003
    ARM嵌入式Linux系统开发从入门到精通.pdf
  • 所需E币: 5
    时间: 2020-6-28 20:50
    大小: 3.67MB
    上传者: kaidi2003
    ARM嵌入式系统基础教程(周立功).pdf
  • 所需E币: 2
    时间: 2020-6-19 21:53
    大小: 313.02KB
    上传者: Goodluck2020
    AN-1276ADF7023和ADF7023-J的嵌入式数据包误差率测试(Rev.0).pdf
  • 所需E币: 2
    时间: 2020-6-19 22:49
    大小: 2.13MB
    上传者: Goodluck2020
    基于模型的设计简化嵌入式电机控制系统开发.pdf
  • 所需E币: 1
    时间: 2020-6-19 10:49
    大小: 6.1MB
    上传者: zendy_731593397
    NePort系列高性能嵌入式联网RJ45模块
  • 所需E币: 1
    时间: 2020-6-15 15:39
    大小: 12.94MB
    上传者: sense1999
    嵌入式实时操作系统μCOS-Ⅱ经典实例——基于STM32处理器
  • 所需E币: 5
    时间: 2020-6-12 17:28
    大小: 153.67KB
    上传者: samewell
    嵌入式单片机应用系统的低功耗技术.pdf
  • 所需E币: 1
    时间: 2020-6-11 21:08
    大小: 3.06MB
    上传者: 指的是在下
    一种嵌入式信号处理软件构件测试框架
  • 所需E币: 1
    时间: 2020-5-29 23:09
    大小: 14.87KB
    上传者: 星空下的屋顶
    嵌入式系统硬件电路设计时需要考虑的基本问题.docx
  • 所需E币: 1
    时间: 2020-5-28 16:11
    大小: 13.93MB
    本书以ARM9处理器和Linux操作系统为主线,全面介绍了嵌入式系统的开发过程,详细讲解了系统的软硬件设计、调试,以及嵌入式操作系统移植和嵌入式驱动程序开发,从部件编程到嵌入式应用程序设计,都给出了大量的实例。设计实例的源代码和开发过程所需的配置文件均可从网上下载。本书内容深入浅出,可作为高等院校相关课程的本科生和研究生教材,也可作为嵌入式开发人员的参考用书。目录:第1章嵌入式系统设计基础第2章嵌入式Linux操作系统第3章嵌入式系统的设计方法第4章应用系统设计第5章嵌入式Linux应用程序开发第6章嵌入式Linux驱动程序开发第7章嵌入式网络程序设计第8章Linux下音频设备编程第9章嵌入式Linux用户图形界面编程
  • 所需E币: 1
    时间: 2020-5-25 15:16
    大小: 278.44KB
    上传者: Argent
    VB是早期比较流程的编程语言,VisualBasic由微软公司开发,是世界上使用人数最多的语言。它源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。感兴趣的网友们快来下载,练练手吧。
  • 所需E币: 0
    时间: 2020-5-22 10:03
    大小: 262.82KB
    上传者: sense1999
    在嵌入式软件开发过程中,一般来说,花在测试和花在编码的时间比为3:1(实际上可能更多)。这个比例随着你的编程和测试水平的提高而不断下降,但不论怎样,软件测试对一般人来讲很重要。
  • 所需E币: 2
    时间: 2020-5-20 18:12
    大小: 47.38MB
    上传者: Argent
    模电数电是电路的基础,掌握基础才能更好的理解智能芯片的工作原理,万物互联,没有电路的支持,一切都是废墟。射频无线,创造无限可能,5G的兴起,FPGA的火爆,快来下载基础性的资料吧,让你从零开始掌握底层电路的实现原理。
  • 所需E币: 5
    时间: 2019-12-26 12:48
    大小: 335.42KB
    上传者: 238112554_qq
    通用8位MCU基于微控制器(MCU)的嵌入式设计减少物料清单(BOM)成本和尺寸是首要的设计考虑之一。在带有开关转换器的8位MCU设计中实现这些设计目标的途径之一是采用高频时钟输出驱动这些开关转换器,而不是采用传统的低频脉宽调制(PWM)输出。这种技术可以减少开关转换器中电感器容量大小,从而降低BOM成本和电路板空间需求。……
  • 所需E币: 4
    时间: 2019-12-26 12:27
    大小: 7.61KB
    上传者: givh79_163.com
    陈渝大侠翻译的uClinux2.6入门……
  • 所需E币: 4
    时间: 2019-12-26 10:51
    大小: 425.6KB
    上传者: givh79_163.com
    设计和开发实时系统……
广告