iPhone 5S的出现,让手机进入了64位的时代,更大的内存,更快的速度让程序员有了更多的发挥空间,可惜的是目前市场上暂时还没有可用的ARM64位SOC供大家把玩。不过没关系,程序员最大作用就是创造,今天,我就来演示如何创造一个简单的ARM64位SOC系统模型。模型? 听起来非常”高大上”的东西,其实不然,利用ARM的Fast Model的图形化编辑工具System Canvas,5分钟的搞定,全图形化操作,不用任何编程工作。
一个最小的SOC需要下面这些单元:
打开System Canvas创建一个新的工程,这里我们取名为A53
填好后选select会跳出如下窗口显示默认文件名A53.lisa,该文件是工程主文件,所有的组件都在这里配置和连接。
继续选择Select,系统载入已存在的各种组件数据库,包括CPU,BUS,RAM等等,供后面选择。
这就进入了System Canvas编辑界面。
默认的界面是手动编程的界面,这个有更多的灵活性,但需要手写程序,今天我们暂不考虑。点击下面的Block Diagram,进入图形模式,这样我们就可以从右边的列表中直接拖拽引入我们需要的组件。
如前面所述,一个最小的SOC系统需要CLOCK,CPU,RAM和BUS,我们依次在右边的列表中选择MasterClock,ARMCortexA53x1ct,RAMDeivce和PVBusDecoder,结果如下图所示。这里的PVBusDecoder是Fast Model对各种BUS(AXI/AHB/APB…)的一种抽象,屏蔽了其中的时序信息,这样模型可以运行的更快,软件人员也不必纠结于连接的细节。
下面点击Connect将各个组件连接起来。
首先CPU需要时钟进行驱动,将masterclock的clk_out和armcortexa53x1ct的clk_in进行连接,其实只要将masterclock的clk_out连出的先,直接拉到armcortexa53x1ct上,systemcanvas会自动选择clk_in.
依次将armcortexa53x1ct的pvbus_m0和pvbusdecoder的pvbus_s进行连接,将pvbusdecoder的bus_m_range和ramdevice的pvbus进行连接,这样我们得到了一个完整的64位ARM最小系统。
这个时候,我们可以对我们搭建的系统进行初步检测,看它是否可以工作,保存,然后点击check。
这个时候发现有错误输出
C:/Users/zhezha01/Desktop/fastmodel/A53.lisa:16: Error (7525): missing address range for addressable master port 'pvbus_m_range'
原来是我忘记对pvbusdecoder地址映射进行配置,右键点击pvbusdecoder的pvbus_m_range对他的属性(object properties) 进行配置
我打算映射4G地址空间,所以start写上0,end写上0Xffffffff
点击ok,我们再对系统进行检查一遍,这一次,一切正常。
我们还可以查看我们对应模型的源文件,点击source即可,如果我们想搭建更复杂的模型,也可以在这里进行直接编辑。
用System Canvas生成最后的模型在windows上的编译需要visual studio的支持,目前支持visual studio 2008/2010 32/64,在linux上也可以使用gcc,可以在select active project configuration进行选择。
因为我的PC上装的visual studio 2008,所以我选择的是Win32-release-vc2008,点击build.
默认编辑出来的模型是dll形式,我们也可以把做成单独可以运行的exe,点击settings,targets选择Integrated simulator(ISIM system)。
到这里,我们基于ARM A53的最小模型已经搭建完成,下面我们对我们搭建系统上运行一个测试用例,看看它功能是否正确。点击Debug,选择我们希望运行的测试程序。在Fast Model中已经包含很多预先编译好的64位程序,这里我们选择wfi(wait for interrupt)例子。
点击ok,系统会启动Model Debugger对生成的Model进行配置,这里我们不需要进行配置,直接点击ok。
最后我们进入debug界面,该debug界面相对来说比较简单,但调试一些简单的程序足够,如果需要调试更复杂的程序,我们可以使用DS-5(ds.arm.com),ds-5可以和Fast Model无缝集成。
至此,我们已经完成了一个简单的64位ARM SOC的搭建以及软件调试,后面你可以在这个虚拟的平台上进行更复杂软件开发,内核移植,驱动开发等等,几乎所有的软件开发工作都可以在这个你创建的模型上进行。是不是很简单?
如果你有更多关于ARM SOC建模的问题,欢迎联络我 zheng.zhang@arm.com.
我在build过程中遇到错误,请问是什么原因呢?提示D:\Program Files\ARM\FastModels\FastModelsPortfolio_11.7\include\fmruntime\sg/Macros.h(146):error C3757