我不是那种热衷于摆弄各种工具的人。我认为工具仅仅只是工具,重点应该在解决问题上。我希望自己使用的工具不会过时,在这些工具上积累的经验也不会过时。 gcc 就是这样的工具,它从 1985 年诞生至今,在基本使用方法上没有太大的变化。它也继承了更为古老的 UNIX C 编译器的许多优秀基因,成为许许多多老程序员的至爱。 ARM 仿真器的选择也是这样的,它应该不会因为外部环境的改变而不能使用:它不能因为系统从 Windows 变成了 Ubuntu 就不能使用了;它也不能因为硬件接口的更新换代而影响继续使用(并口在越来越多的机器上都看不到了)。我希望它可以成为抽屉里的第二块 “ 万用表 ” ,也可以用上十年二十年而不会被淘汰。既然是第二块 “ 万用表 ” ,它一定不会造价高昂,让人望而却步;它也一定不会因为造价低廉而效率低下。我就是在这样的理念下设计我自己的 ARM 仿真器的, NetICE 应运而生。

常见的仿真器分为两种类型。其中的一种类型由两个基本部分组成:调试器硬件部分和主机上运行的代理程序。 J-Link 、 U-Link 、 H-JTAG 和 OpenOCD 都是这样的结构。例如: J-Link 的硬件部分只传输数据和生成 JTAG 时序,而包括 JTAG 数据编码和解码的大多数工作在代理程序 RDI.dll 中完成。但是, RDI.dll 只能在 Windows 上使用,它不能跨平台,一旦遇到 Windows 版本升级或着打补丁,其兼容性将倍受考验。

还有一种类型是把所有的功能都集成到了一起。如: BDI2000 、 EPI Jeeni 就是这样的结构。这一类型中,代理程序不是运行在主机上的,而是作为 firmware 的一部分运行。它在结构上比前一种类型更加的独立,再加上使用网口作为和外部世界的通信接口,它不会困扰在接口驱动程序这个环节上。得益于这些结构特点,它可以方便的跨平台,同时它受到外部升级活动的干扰也降到了最低。

这张是我用 NetICE 在 STM32 上调试自己写的嵌入式操作系统时的照片。 NetICE 后面的那根黑色的网线接在一个 8 口的 100M 网络交换机上,我的 Linux 主机也接在上面。

NetICE 属于和 BDI2000 一样的第二种类型。与其它仿真器不同的是:它是在单芯片 MCU 上实现的,同时它也没有使用包括 FPGA 等专用芯片在内的 JTAG 硬件时序生成装置,所以造价低廉。

这张照片是 NetICE 的内部,里面有 3 个芯片:以太网 PHY 、主控 MCU -- AT91SAM7X256 和用于电平转换的 Buffer

但是便宜并不意味着低效率, NetICE 使用 SPI_DMA+GPIO 的 JTAG 时序生成算法,数据传输速度远远超过 Wiggler 。在速度这个问题上我的看法是:任何东西都有一个效费比,更快的速度和更低的造价本来就是矛盾的两个方面。对于绝大多数嵌入式开发而言,花费 5 秒的下载时间和花费不到 1 秒的下载时间在使用体验上没有太大区别。

这些数据是在 Fedora 12 下用 tftpw 下载功能测得的,表格中的 Kbps 是 Kbit/s ,不是 KByte/s

在使用上, NetICE 也提供对 Windows 上常用开发环境的支持。它还提供了一个 telnet 控制终端,集成了许多方便实用的控制命令。所有的这些,我会在后面的博客中慢慢介绍。

抽屉里的第二块“万用表”相关推荐

  1. 口袋里只有一百块钱,也要活出十个亿的气势

    http://weixin.niurenqushi.com/article/2017-07-10/4998291.html 秦小明本来是要去北大的,高中时不喜欢语文老师,不肯好好上课,高考语文在及格边 ...

  2. 笔记本电脑+第二块显示屏如何双屏操作

    文章目录 如何拓展 买了个戴尔的vga转换器,用来连接实验室的显示屏,然后并不知道如何操作,我的目的是:在自己的主电脑上写东西,需要第二块显示屏给我固定我需要参考的资料,我对着写.研究了一会就成功了, ...

  3. 不做你咖啡杯里的半块糖

    "咖啡姐"还是我们一起读书那会儿给她取的.她男朋友林雨是个夜猫子,喜欢熬夜看书,玩游戏.他说晚上安静,更适合生活.渐渐地养成了喝咖啡的习惯,他说熬夜之前泡上一杯咖啡,喝上一口定是精 ...

  4. 利用squid的tcp_outgoing_address特性选择第二块网卡出流量( by quqi99)

    作者:张华 发表于:2020-02-12 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 有两块网卡192.168.99.135与192.168.8.101, ...

  5. Ubuntu 22.10 UEFI 引导安装在第二块硬盘

    如果有两块硬盘,其中第二块是移动硬盘.希望将Ubuntu安装在第二块硬盘,引导项也在装第二块.如果使用UEFI的方式安装UBUNTU,需要进行一些比较繁琐的操作. 1 首先用U盘制作Ubuntu IS ...

  6. linux挂载硬盘读写,mount 挂载第二块硬盘,普通用户可以读写

    vmware虚拟机中安装的debian5.0系统使用过程中发现硬盘空间不足,因此创建了第二块scsi硬盘,创建过程由于比较简单就不贴图耽误大家时间了. 接下来格式化硬盘分区为ext2文件系统(创建硬盘 ...

  7. linux把2块盘挂到一个分区,linux系统如何挂载第二块硬盘

    云主机有两块硬盘,第一块硬盘盘一般为10G,用于安装系统,第二块磁盘根据云主机类型不同,大小也不相同.我们建议您在使用的时候第二块硬盘作为数据盘,存放你的网站数据,这样在您恢复系统的时候,数据盘的数据 ...

  8. centos7加入第二块网卡无法识别

    本来是做DHCP服务加一块网卡的,然后识别不出来,没得玩 centos7加入第二块网卡无法识别 1发现只有一块网卡 2使用nmcli con show命令,查看网卡的UUID信息,记下UUID值 3启 ...

  9. Deskreen – 将电脑屏幕共享到浏览器中,做第二块屏幕[Win/macOS/Linux]

    介绍: Deskreen 是一款非常实用的开源项目,它可以将你的电脑屏幕共享到浏览器中,做第二块屏幕.支持 Windows.macOS.Linux,可分享整块屏幕,或只分享某一个应用界面,支持多个浏览 ...

最新文章

  1. asp.net MVC 路由
  2. 文件夹目录结构导出工具及下载
  3. sun building in shanghai
  4. uniapp快查页面链接
  5. 华为高性能服务器刀箱,云平台服务器刀箱
  6. 【Tensorflow】Tensor的比较运算
  7. 每日面试之Java集合
  8. 虚拟机禅道服务器ip,Linux系统(虚拟机)安装禅道
  9. MySQL数据库设置主从同步
  10. http协议-响应和请求
  11. Python 脚本 pyautogui——实现键盘鼠标的自动操作
  12. 【预测模型】基于贝叶斯优化的LSTM模型实现数据预测matlab源码
  13. 自习室 《大学生创新创业课程设计》
  14. 服务器系统文件sam在哪里,SAM文件介绍
  15. 计算机专业英语材料,计算机专业英语复习资料
  16. Swagger报错:missed comma between flow collection entries
  17. pycharm创建django项目及开发初准备
  18. 【清华大学-郑莉教授】C++语言程序设计 类与对象
  19. 用DC-DC 升压降压以及产生负电压的原理及应用
  20. JS逆向——裁判文书网(详细图文步骤)

热门文章

  1. 干掉软件开发的超级怪兽:狼人!
  2. JAVA--Class类
  3. 从校园到职场 - 技能与职位
  4. 四大审计公司安永为新的葡萄酒溯源平台提供区块链解决方案
  5. 0905 RTCP RR SDES 包文介绍
  6. ios 倒数器_PS制作苹果IOS7系统中的倒数计时器
  7. 基于SpringBoot的多线程实现快速导入EXCEL
  8. 从阿里出发!看 P8 架构师手打 800 页微服务深度解析笔记,感觉我格局太小
  9. 快速接入百度大脑银行卡识别
  10. (自适应手机端)响应式高端摄影网站pbootcms模板 黑色酷炫数码摄影网站源码下载