×
半导体设计 > 集成电路设计 > 详情

如何在硅芯片制作完成前进行软件开发

发布时间:2024-05-18 发布时间:
|

  片上系统(SoC)开发不再仅仅是简单的硅芯片开发过程。现代设备大量使用了各种软件,包括软件栈、中间件、启动代码和驱动程序。你大可悠然自若地等到硅芯片开发完成后,再将其放在电路板上开始进行软件的开发。然而在激烈的市场竞争中,时间就是生命。开发进度日益紧迫,若能在硅芯片制作完成前便着手进行软件开发,将成为一个巨大的竞争优势。要做到这一点,需要满足以下三个要求:首先,需要一套可供寄存器传输级(RTL)设计高速运行、且在硅芯片或开发板准备就绪前就能在上面正常运行软件的仿真系统;此外,还需要一个高速、基于事务的协同建模通道将仿真器与基于工作站的软件调试工具进行连接;最后,还需要提供符合软件开发者需求的软件调试环境。

  为一种硬件还没有成型的产品开发软件时,首先需要一个能运行代码的环境。通常有两种选择:物理环境或虚拟环境。大多数项目都是基于某个现有设计,即在原有版本中添加某些功能,使原有版本功能更强、速度更快、性能更好。这种情况下,有可能从接手项目的原有设计版本中直接获取现成的电路板,或者能取得该电路板的软件环境以进行软件开发,用自己的调试环境来对其进行验证。到目前为止,最简单的做法就是在现成的电路板上运行。如果是开发一个全新的软件,你可以使用一块开发板,运气好的话,或许还能找到类似的开发板。还有一种可行的方法,即在一个虚拟电路板上运行,如虚拟机(QEMU)。QEMU是一个开源系统仿真器,可随意模拟各种ARM板。ARM公司也提供一个虚拟平台,称作“基础模型”(可在其网站上免费获得),类似于QEMU,可运行ARM代码。二者都有引入调试器的工具。

  图1:Mentor公司验证平台将先进的仿真器解决方案、硬件加速器平台以及强大的调试环境整合在一个全球共享的高性能数据处理中心资源里。

  有了可运行和调试代码的环境,就可以开始编程了。某些情况下,你将需要访问一些还未成型的全新外围设备,应对此问题的一个解决方案是创建一个模型。我们先从一个非常简单的例子入手:读取这个新外围设备的ID寄存器。许多外围设备都有ID寄存器,这是一个只读寄存器,读取时返回固定的已知数值。这就好像让驱动程序多了些许自信,让其意识到设备在与正确的外围设备通信。很早以前,在驱动程序初始化时,读取寄存器并将其与预期进行比较就是一件较为敏感的事情。以下是一个ARMpl011串口驱动程序的例子:

  图2:校验一个新外围设备的ID寄存器

  驱动程序代码使用宏readl和writel对寄存器进行读写。这些在linux内核中定义的驱动程序被作为一种访问硬件的方式。但假如启动了一个新的驱动程序,你就可以在本地进行重新定义,以得到所需的响应。例如:

  你无需访问实际硬件,便能开始进行软件开发。当然,你也可以采取极端的做法,使用这种方法来建模一个完整的外围设备,但无论如何请不要尝试最简单的外围设备,因为那样很容易产生故障。一旦出现握手失败而采样仍然在进行,系统可能会丢失某些返回值。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
点接触型二极管的特性分类