AXD插件编写上手1

[转帖,出处无法考证]AXD插件编写上手1
“ARM 模拟器”的意义是:加速基于ARM的嵌入式软件开发。在实际做产品的过程中,软件开发是整个项目开发中占时最长的,所以可以在板子做好之前使用模拟器开发软件。当然也有ARM硬件仿真调试工具,但是它是要和实际板子一起使用的,所以只能在板子做好之后使用,价格一般是上千元,上万元的也有。而且硬件下载是比较慢的,如果程序达到几M后,下载要等待10分钟以上。

总之,软件模拟器是非常有用的,microsoft 也有wince的模拟器,不过它模拟的是wince操作系统,器件驱动开发无法进行。

 

AXD Debugger 是 ARM Developer Suite 里的调试仿真工具,我这里用的是V1.2版本,AXD的功能我想大家都比较了解,使用方便,功能强大。可以进行断点,单步调试,仿真运行,32位全范围地址查看,支持C/C++调试.

AXD Debugger的仿真调试使用的是ARMulate。ARMulate模拟一个ARM芯片和一些外围器件,也就是说AXD将加载进来的image放入ARMulate运行调试。

ARMulate以DLL文件形式存在,在安装目录下bin/ARMulate.dll。AXD Debugger启动后将ARMulate.dll加载进来,运行它。

ARMulate.dll再根据配置文件加载器件DLL,比如说flatmem.dll,timer.dll, Millisec.dll, WatchDog.dll, Tube.dll, Intctrl.dll等等,它们都在bin目录下。 flatmem.dll是平坦存储系统,timer.dll是定时器,Millisec.dll是时钟源,WatchDog.dll是看门狗,Tube.dll是模拟二极管,Intctrl.dll是中断控制器,arm内核在ARMulate.dll里,包含arm公司所有的内核。

这些就是ARMulate原始提供的一个arm模拟器,显然离一个实际的开发板还有十万八千里。

 

于是我们就想打造一个自己的板子。打造之前先要了解如何为AXD Debugger编写仿真插件。

上面介绍了一大堆DLL文件,里面的ARMulate.dll是不提供源代码的,只能在它的基础上加入我们自己的外围器件,比如前面提到的timer.dll,这样就省事多了,我们只需调用ARMulate.dll规定好的接口便可以构造一个完整的板子了。

 

接着来看一个我们自己生成timer.dll的例子,timer.dll是有源码文件的,可以修改成我们需要的arm芯片的timer,先看看如何生成默认的timer。

首先需要安装visual c++ 6.0, 网上d版一大堆慢慢下吧,最好打上SP6补丁,微软网站上直接下载,安装visual c++ 6.0过程中会询问你是否要加它的路径添加到系统路径,一定要添加,AXD编写插件是需要在命令行用它makefile编译生成的。

这时可能有人会嚷,是不是要写makefile,我不会啊!不需要,安装ARM Developer Suite后,它提供了标准makefile,编写自己的插件只需要微小的改动即可使用。

开始了,运行命令行,进入安装路径,我安装在D:/ARM,下面都以此为例。

进入D:/ARM/ADSv1_2/ARMulate,dir命令一下。看到没所有,可以用的东西都在这里了,就是标准外围器件的源文件,如timer.dll的源文件就是D:/ARM/ADSv1_2/ARMulate/armulext下的timer.c。进入D:/ARM/ADSv1_2/ARMulate/armulext/timer.b/intelrel 路径输入nmake。

OK, 你会在这个目录下看到timer.dll生成。把这个timer.dll拷贝到D:/ARM/ADSv1_2/Bin目录下就可以使用了,就这么简单,呵呵。

 

如果自己编写插件,就可以D:/ARM/ADSv1_2/ARMulate/armulext下的这些model为模板,还是以timer为例。拷贝一份timer.c在同一个目录下,改名为MyModel.c ,再复制相应的timer.b文件夹,改名为MyModel.b,进入D:/ARM/ADSv1_2/ARMulate/armulext/MyModel.b/intelrel,修改文件makefile,将相应的timer改为MyModel :

 

# This file was created by Megamake-3

# Copyright (C) ARM Ltd 2001. All rights reserved

 

SRCDIR1=../..

EXTDIR1=../../../armulif

EXTDIR2=../../../rdi

EXTDIR3=../../../clx

DERDIR=derived

 

 

ARM_RELEASE= /DARM_RELEASE="/"ADS1.2/""

SPECIFIC_RELEASE=

BUILD_INFO=/DBUILD_NUMBER=805

 

CFL= # local C compile flags

CDOFL=/O2 /MD /G5 /DNDEBUG # C debug and optimization flags

PRFL= # C and link profile flags

LFLAGS= # Linker flags

CINCLS=/I$(SRCDIR1) /I$(EXTDIR1) /I$(EXTDIR2) /I$(EXTDIR3) # C include flags

CCFLAGS=/D_CONSOLE /D_MBCS /DNLS /nologo /Zp4 /W3 /GX /WX -DRDI_VERSION=151 -DARM10MODEL $(DLLPIC)

CFLAGS=$(CINCLS) $(CCFLAGS) $(CDOFL) $(PRFL) $(CFL) $(ARM_RELEASE) $(SPECIFIC_RELEASE) $(BUILD_INFO) /I$(DERDIR)

CFLALL=/Za # pc special local C compile flags

CFLAGS2=$(CFLALL) $(CCFLAGS2)

CCFLAGS2=/D_CONSOLE /D_MBCS /DNLS /nologo /MD /O2 /DNDEBUG /Zp4 # C flags for helper tools

CC=cl /c

CL=cl

AR=lib

ARFLAGS=

LINK=link /INCREMENTAL:no

DLL

 

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值