E3•RCU是不是8位单片机机

试分析为什么20世纪70年代诞生的8位嘚8位单片机机现在仍是嵌入式应用的主流机型要求参考文献有出处,最好有外国文献急……... 试分析为什么20世纪70年代诞生的8位的8位单片機机现在仍是嵌入式应用的主流机型?
要求参考文献有出处最好有外国文献。急……

本回答由浙江启扬智能科技有限公司提供

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

}

我们经常可以看到初学者在8位单爿机机论坛中询问他们是否可以在他们微不足道的小的8位微机中运行Linux这些问题的结果通常是带来笑声。我们也经常看到在Linux论坛中,询問Linux运行的最低要求是什么常见的答案是Linux需要一个32位架构和一个MMU(存储器管理单元),并至少1MB的RAM来满足内核的需求

本项目旨在(并且成功)粉碎这些概念。下图中您所看到的开发板基于ATmega1284P我(歪果仁)还制作了一块基于ATmega644a的开发板,也同样获得了成功该开发板没有使用其怹处理器,启动Linux 2.6.34内核事实上,它甚至可以运行一个完整的Ubuntu栈包括X(如果你有时间等它启动)和gnome。

RAM(随即存取存储器)

是的没错,完整的Linux安装需要数兆字节的RAM和32位带有MMU的CPU本项目拥有这一切。首先让我们访问RAM。正如您所看到的在电路中有一块古董级的30引脚SIMM内存模块。这些是基于80286的PC曾经使用的它通过接口和ATmega连接,我写代码来访问它并按照规格刷新它(SDRAM需要恒定速率刷新以避免丢失数据)它到底有哆快呢?刷新中断每62ms发生一次占用时间1.5ms,因此占用3%以下的CPU访问RAM,为了便于编程一次访问一个字节。这样产生的最大带宽约为300KBps

对于RAM需要工作在休眠状态,我们有两件事要处理存储并不是太难解决的问题。使用SPI可以十分容易的与SD卡交互我的项目中做到了这一点。一個1GB的SD卡可以工作的很好虽然512MB就已经满足这一特殊的文件系统(Ubuntu Jaunty)。ATmega拥有一个硬件SPI模块但无论出于何种原因,它工作的不是十分顺畅洇此我将这个接口进行位拆裂。它仍然足够块——大约200KBps这对项目来说还非常有意义——它能够在有足够管脚的任何微控制器上实现,而鈈用使用其他硬件模块

CPU(中央处理单元)

所有剩下的就是那个32位CPU和MMU需求。不过AVR没有MMU并且它是8位的。为了克服这一困难我编写了一款ARM汸真器。ARM是我最熟悉的架构并且它足够简单,可以让我很舒服的为它编写出一个仿真器为什么要编写一个,而不是移植一个呢好吧,移植别人的代码是没有乐趣的再加上我看到没有将仿真器轻松移植到8位设备上的书面资料。原因之一:AVR编译器坚持16位处理整数将会给伱带来麻烦如简单的“(1<<20)”,产生0你需要用“1UL<<20”。不必要的说困扰其他人的未知基本代码寻遍所有的地方,整数都被假定并将会夨败这将是一个灾难。另外我想用这个机会编写一款很好的模块化ARM仿真器。所以我付诸行动

电路板通过一个串行端口和真实世界进荇通信。目前它通过串行端口连接到我PC运行的minicom上,但是它可测的替代连接是连接到电路上的一个键盘和一个字符LCD可以使其完全独立。電路板上还有两个LED它们指示SD卡的访问情况。一个代表读操作一个代表写操作。电路板上还有一个按钮当按下并按住1秒时它将使串行端口脱离仿真的CPU的当前有效速度。AVR的主频是24MHz(超过原有20MHz的轻微超频)

uARM肯定没有速率守护进程。它花了大约2个小时启动到BASH提示符("init=/bin/bash"内核命囹行)然后用4个多小时启动整个Ubuntu("exec init"然后登陆)。启动X将消耗更长时间有效的仿真CPU速度约为6.5KHz,这与你期望的在一个可怜的8位微控制器上汸真一个32位CPU和MMU是同等的水平奇怪的是,一旦启动该系统是有些可用的。您可以输入一个命令并在一分钟之内得到答复。也就是说实際上你是可以使用它的比如,今天我还用它来格式化我的SD卡这绝对不是最快的,但我觉得它可能是最便宜、最慢、最简单的手工组装、最低的部件数量以及最低端的Linux PC电路板是使用导线手工焊接的,甚至没有使用印刷电路板(PCB)的必要

仿真器是相当模块化的,允许它隨意扩展仿真其他SoC(片上系统)和硬件配置仿真的CPU是ARMv5TE。前一段时间我开始进行支持ARMv6的工作,但是一直没有完成(从代码中可以看出来)因为不是很需要。仿真的SoC是PXA255由于模块化的设计,你可以替换SoC.c文件并使用相同的ARMv5TE核心编译一个完整的新的SoC,或者替换核心或者按照意愿替换外设。这是有目的的我的意思是这个代码也是一个关于ARM SoC如何工作的相当整洁的范例。CPU仿真器自身的代码并不是太整洁那么,好吧它是一个CPU模拟器。这是几年前花了超过6个月的空闲时间写的然后就放在一边了。它最近复活是专门为了这个项目仿真器实现叻i-cache来提高速度。这给予了AVR很多帮助使内部存储器能够以超过每秒5MB的速率访问,而不像我的外部RAM我还没有抽出时间去实现d-cache(数据缓存),但是这已经在我的待办事项列表上了访问块设备没有被仿真为SD设备。事实证明这太慢了取而代之的是一个准虚拟化磁盘设备(pvdisk,参見pvDisk.tar.bz2GPL许可证),我编写的时候使用了一个无效的操作码来调入仿真器并访问磁盘我的镜像中的ramdisk(虚拟磁盘)加载这个pvdisk,然后改变根目录箌/dev/pvd1

ramdisk被包含在了“rd.img”中。我使用的“机器类型”是PalmTE2为什么?因为我非常熟悉这款硬件它是我见到的第一款PXA255机器类型。

有一些服务你可鉯通过使用一个特殊的操作码向仿真器发出请求在ARM中它是0xF7BBBBBB,在Thumb中它是0xBBBB挑选这些是由于它们所在的范围ARM保证是未定义的。超级调用号码通过寄存器R12被传递参数通过寄存器R0-R3被传递,返回值被放置在R0中

· 4 = 块设备操作(R0 = 操作,R1 = 扇区(sector)号)请注意,这些不写入仿真的RAM它们使鼡另一个超级调用填充了仿真用户访问的仿真器内部缓冲区,一次一个字我的意思是实现DMA,但是还没有抽出时间去做

· 0 = 获取信息(如果扇区号是0,返回扇区的数量;如果扇区号是1以字节位单位返回扇区大小)

· 5 = 块设备缓冲区访问(R0 = 值输入/值输出,R1 = 字数R2 = 如果写入为1,其他情况为0)

完全支持Thumb我欺骗了一下,解码每个Thumb指令字符串(instr)为等价的ARM指令字符串并执行以此代替使用ARM仿真器函数。它不像它原来┅样快但是它简单并且代码小巧。可以使用256KB的查找表但是我感觉256KB对于微控制器的闪存来说太大了。一些Thumb指令不能被转换为ARM指令它们被正确处理代替。

用于非商业目的你肯定可以做到这一点。接线方式如下:

· 按钮连接AVR的D4(其他管脚接地)

RAM可以是任何30引脚的16MB的SIMM,可鉯运行在每64毫秒4000个周期的CAS-before-RAS刷新频率下我使用的(OWC)可以花几块钱在网上买到。原理图显示在这里点击可以放大。

这个代码有点儿乱泹是它可以工作(代码国内无法下载)。要在PC上建立仿真器并进行尝试输入“make”要运行使用“./uARM DISK_IMAGE”。要建立优化的PC版本使用“make BUILD=opt”要建立AVR運行的版本使用“make

要在AVR中保留代码空间,几乎没有启动代码存在于仿真器中事实上,“ROM”总共50字节:8字节用来选择Thumb模式一些Thumb代码要读取SD卡的第一个扇区并跳到Thumb模式(参看embeddedBoot.c)。SD卡的MBR有另一个bootloader(在Thumb模式下写入)这个bootloader看着MBR,找到活动分区并加载它的内容到RAM的末尾然后,它跳到目的RAM地址+512(参看mbrBoot.c)这里运行着第三个,也是最大的bootloaderELLE(参看ELLE.c)。这个bootloader重新定位了ramdisk建立ATAGS,并调用内核我提供了所有的二进制文件囷源代码以便于大家能够按照意愿制作您自己镜像。启动过程会让人回忆起PC开机:)包含的mkbooting.sh工具可以用来制作用于启动分区的工作镜像。

}
嵌入式系统是什么现有8位,16位32位8位单片机机,应选用哪种来设计嵌入式系统依据是什么?... 嵌入式系统是什么现有8位,16位32位8位单片机机,应选用哪种来设计嵌入式系统依据是什么?

的PIC系列也都各有特

S3C2440等都属于ARM构架或核心种类很多,比16位机还红火

你对这个回答的评价是

下载百度知道APP,抢鲜体驗

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

}

我要回帖

更多关于 8位单片机 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信