热度 39
2014-5-17 21:16
3443 次阅读|
20 个评论
单片机意指何物? 因为实际进入 embedded world 还是大致在 2004年左右的事儿, 所以我可能对 computer system 与 controller system 的名称演化历史缺乏了解. 者带来的最大困惑, 莫过于所谓"单片机"称谓了. 因为我们学习的惯例一般是阅读母语的基础教材与基本案例开始, 研习某个开发板, 点亮并闪烁第一个 LED... 啊, 这个过程充满着神奇与喜悦... 因为我们知道, 从点亮并任意模式闪烁LED开始, 我们就进入了当今信息化革命新浪潮的殿堂, 从手机到引擎, 从医疗手术到弹道制导, 从所谓通用compter 到我们设计的各款 uController... 我们从此进入了一个崭新的世界. 问题很快接踵而至, 今天的 uController 技术, 具体而言似乎都是在所谓"通用" computer 上的 embedded 的演化. 历史的观点来看, 它都起源于50年前的第一颗 Royce 发明的集成电路(我希望没记错), 并具体来自80年代初的第一台个人 computer (我记不住是 8080还是后续系列...毕竟我们那个时候还刚刚结束人斗人与白卷英雄时代), 这份震撼并最终改写人类历史的发明没有落在大陆...这注定我们对电子科技史的疏远, 而不像类似毕升发明这种亲切而又耳熟人详的回忆... 因为, 先进的 computer/processor/controller 的技术起源西方, 对基础概念的学习中, 我们很快不得不面临大量阅读 E 文资料的过程. 很快问题就来了, 您是否与我一样, 读过各种资料或者 datasheet 超过至少几十份了吧? 您见过单片机的E文对应词汇没? 人家问我干嘛的, 多年前我一般开口回答, 我是研习开发"单片机"的, 人家"喔喔....." 现在, 我从来不这么作答, 因为我没有见过任何与我们的学习或者实践开发, 有关联的任何"单片机"词汇. 为此, 我特别百度了一下"单片机", 似乎一个词组是 single chip computer... 这是个什么东东, 是挑战我们的技术新知吗? 我们生活的电子世界中, 似乎存在着 通用/common computer 与 embedded/ uController 两大类别. 发展到今天, 我们观察到 ARM 正在向我们展示, 其实或许不该存在这种区分, 所谓通用的桌上电脑, 也应该术语 uP 或者 uC 大类中的一份子. 将 uProcessor(微处理器) 与 main memory(内存) 的分开, 似乎并不是永远不变的布局, 也不能说明这就是高性能/高主频的必然代表. 这可能说明, 从 computer 发展的历史来看, 为了追求摩尔定律, 为了实现处理能力的急剧升级. 将 uProcessor 独立为一颗单芯片似乎是唯一的选择, main memory(一般是 DRAM)或者 IO controller 与之分离的布局, 就是我们所谓的 common computer. ARM 向我们展示了这一点, 因为 ARM 运行模式的缘故, 我们大众工程师(我指应用级别)似乎第一次, 大量接收到原本应该在 uProcess/uController 设计中, 被类似 Intel/Microchip 标注为 confident 的资料. 阅读 ARM 的各种文档, 我们首次知道了 ARM 将主要围绕指令集实现的 IP, 也就是提供给各个厂家(无论是nxp, freescale, ti 还是华为), 称为 uProcessor. 更进步的, uProcessor(微处理器)被简称为 Processor(处理器). 单独的 Processor 似乎意指由 ALU, logic controller, instruction encode/execute 与其他 controller(我不理解是什么), 包括为数不多的 core register, 构成的一个 microcell. 现在的事情, 就开始拟合与我们的计算机系统的基础理念, 不错, 由 uProcessor(微处理器), 或者说 processor(处理器), 或者说由 arm 授权的这颗 microcell, 加上 memory, 以及各种 pripherals, 就构成完备的 comptering system. 当然的, 我们所谓的这样的 comptering system 似乎拟合了 computer 概念. 这就潜意识提醒我们: 所谓通用计算机, 是 uprocessor core 与 memory/外围 分离模式的构成, 我猜测这可能源于制造与技术能力在过去年代的限制. 在追求卓越表现时受限工艺, 而分离 main memory 与 cache. 无论从成本还是体积方面的考虑, 这种通用计算机(这个概念在过去, 又往往等同桌面, 服务器, 以及 comptering/计算), 无法用于工业控制或者说消费品应用(我指侧重于便携应用). 解决的方式很简单, 就是构建尽可能小而高效的 core, 也就是在 ARM 文档中说的 uP, processor, 或者 uCell, 将其与 memory 和外围在 bus 的作用下, 构建在一起. 我这里所谓的构建, 就是 on-chip, 似乎中文世界一般说成"片内". 也同样就是 embedded. 这个我非常熟悉, 有专业词汇对应为"嵌入式". 之所以我们作这样的等同, 也因为受到 ARM 资料的启发. ARM 资料, 在开篇讲述如何实现架构(v4T啦, v6M 啦, v7A啦, R啦)的 uCell 的移植或者实现时, 非常喜欢自我标榜说, 某类某类 uCell(uProcessor) 非常适用于 deeply embedded application. 什么叫作"深深的嵌入"? 我们作为嵌入式工程师, 难道工作的对象还有"浅浅的嵌入"芯片? 或许真的有, 如果从 uProcessor, 与 memory/pripherals 的分离与整合的程度上来看, 我个人感觉, 在E文的 embedded 的词汇含义下, 它揭示了一颗 on-chip 上整合 component 的多寡与最终IC 实现(RTL)/整合后的形态. 这或者是说, 我们今天的工作对象, 无论是 nxp, ti, microchip, freescale 提供的 mcu(也就是 uController, 微控制器, 其实又和所谓微计算器的区别仅仅是使用范围略有不同?), 所有这些 mcu/uController 都算是 deeply embedded 的. 因为, 它们往往封装好了 uCell 与 main memory(可地址访问的 flash/ram), 以及各种 io, timer, uart, usb 的外围. 当 arm 在 on-chip 上继续提供着深深的嵌入时, 我们似乎感觉到, 原来的 common computer 的概念正在淡化中, 一条由 on-chip 的 cache/main memory 的"深深的"嵌入的鸿沟变得没有那么的清晰. 今天朋友们问我"干嘛的"? 我一般回答"嵌入式". "不是说单片机吗"? "不, 我主要工作在嵌入式 embedded 系统上. 它主要由片内也就 on-chip 的微处理器(一般由arm提供), 以及memory 构成(一般由可寻址的flash与sram提供). 除此之外还有构建在 bus 上的外围. 比方说 io 与 uart 控制器之类, 其实memory 也算外围中的一种, 但是引起特殊性...它特别重要并带有 cache/buffer 的属性而被单独称谓. 不像 intel 的 cisc(主要是所谓 common processor)那样, 这种bus 是公开的, 比方说 axi 与 ahb 协议必须遵守... 当然有的外围太慢, 可以用 arm 提供的 apb bus 协议, apb 就只能通过 bridge 的方式挂在 ahb 和 axi 上. 它们同属于 amba bus 协议. 不过你知道, uController 必须具有可以 debug 的特性, ... 你知道什么是 debug 吧. 所以往往 uCell 中包含有可选的 debug 逻辑电路, ARM 文档说, 它们既在 core 中, 又分布在 NVIC 中, 什么意思具体你问我我也不知道, 因为中国大陆的IC制造与设计行业似乎还不发达, 类似的技术属于与 arm 合作的大公司的研发才知道, 而且说不定他们还各种授权协议. 所以, uController, 也就是 mcu, 或者说嵌入式, 也可以称微控制器, 将 uProcessor 作为 uCell 而视为一个 component, 配合其他的 component(它们往往是可选的), 比如 wic, 或者atb bus 上的 coresight(用于 debug) 的其他 component, 构成了提供(出)的整体. 因为向外曝露了 axi bus, 或者 ahb bus, 往往也有 single-cycle io bus, 可以挂上各种外围, io啦, uart啦, usb啦... 唔,,, 你看这颗黑黑的微控制器, 或者说 uController, 或者说 embedded ic, 或者说 mcu, 我刚才讲的种种都在里面啦! 不过说来说去, 我们做 mcu 应用工作的, 其实也可以不管这么多,,, 因为我们只要拿到这颗 uController, 按推荐电路, 唔, 一般是所谓开发板, layout 好就可以了. 通过debugger与programmer, 我们在 ide 中用代码生成的 firmware debug 完成后 program 进去就好了..." "......" "你明白吗?" "手机就是这样做的吗?" "唔...这么说呢,,,也没错..." "......" "......" "你不是做单片机的吗?" "......我k...... !#!$!#%$#%^%" Allen 作于 2014.5.17 周六傍晚 发表于 EETC