:Linux是否能在8位MCU上运行?( 二 )
仿真器的细节?
仿真器是相当模块化的 , 允许它随意扩展仿真其他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.bz2 , GPL许可证) , 我编写的时候使用了一个无效的操作码来调入仿真器并访问磁盘 。我的镜像中的ramdisk(虚拟磁盘)加载这个pvdisk , 然后改变根目录到/dev/pvd1 。
ramdisk被包含在了“rd.img”中 。我使用的“机器类型”是PalmTE2 。为什么?因为我非常熟悉这款硬件 , 它是我见到的第一款PXA255机器类型 。
Hypercall(超级调用)?
有一些服务你可以通过使用一个特殊的操作码向仿真器发出请求 。在ARM中它是0xF7BBBBBB , 在Thumb中它是0xBBBB 。挑选这些是由于它们所在的范围ARM保证是未定义的 。超级调用号码通过寄存器R12被传递 , 参数通过寄存器R0-R3被传递 , 返回值被放置在R0中 。
调用:
· 0 = 停止仿真
· 1 = 打印十进制数
· 2 = 打印字符
· 3 = 获取RAM大小
· 4 = 块设备操作(R0 = 操作 , R1 = 扇区(sector)号) 。请注意 , 这些不写入仿真的RAM , 它们使用另一个超级调用填充了仿真用户访问的仿真器内部缓冲区 , 一次一个字 。我的意思是实现DMA , 但是还没有抽出时间去做 。
操作:
· 0 = 获取信息(如果扇区号是0 , 返回扇区的数量;如果扇区号是1 , 以字节位单位返回扇区大小)
· 1 = 扇区读取
· 2 = 扇区写入
· 5 = 块设备缓冲区访问(R0 = 值输入/值输出 , R1 = 字数 , R2 = 如果写入为1 , 其他情况为0)
Thumb支持?
完全支持Thumb 。我欺骗了一下 , 解码每个Thumb指令字符串(instr)为等价的ARM指令字符串并执行 , 以此代替使用ARM仿真器函数 。它不像它原来一样快 , 但是它简单并且代码小巧 。可以使用256KB的查找表 , 但是我感觉256KB对于微控制器的闪存来说太大了 。一些Thumb指令不能被转换为ARM指令 , 它们被正确处理代替 。
我想要建立一个!
用于非商业目的 , 你肯定可以做到这一点 。接线方式如下:
· RAM的DQ0-DQ7连接AVR的C0-C7;
· RAM的A0-A7连接AVR的A0-A7;
· RAM的A8-A11连接AVR的B0-B3;
· RAM的nRAM nRAS nCAS nWE连接AVR的D7 B4 B5;
· SD的DI SCK DO连接AVR的B6 B7 D6;
· LED的read write连接AVR的D2 D3(LED的其他管脚接地);
· 按钮连接AVR的D4(其他管脚接地) 。
文章图片
文章图片
RAM可以是任何30引脚的16MB的SIMM , 可以运行在每64毫秒4000个周期的CAS-before-RAS刷新频率下 。我使用的(OWC)可以花几块钱在网上买到 。原理图显示在这里 , 点击可以放大 。
推荐阅读
- #搜狐畅游#搜狐股价异动,畅游私有化完成,是否“回归”A股成最大悬念
- Ubuntu ■如何在 Ubuntu 中添加多个时区 | Linux 中国
- 设计星空■征服太空是否会影响人类发展?
- 「iPhone」苹果为什么还不砍刘海?可能在等屏下摄像头
- 5G:iPhone SE2 已开放预购,是否值得入手看完您看就明白
- []新专利显示未来苹果手表可以检测到您是否溺水并寻求帮助
- @苹果新iPhone SE是否值得升级?
- 『相机Beta』苹果新iPhone SE是否值得升级?
- 消费测评世界■百度发布“云手机”,不掉线不关机不发烫,关键在于是否要充钱?
- 安胜ANSCEN:【E周道】SCUF Gaming泄露110万用户信息 Linux内核漏洞曝光