您的位置:首页 > 其它

用ARM ADS 的ARMulator插件实现手机LCD和键盘中断的模拟

2007-10-22 15:48 531 查看
 

 

Mobsim简介

许多嵌入式开发的朋友想自己练练手,学习学习ARM编程,整些象uclinx,ucos,wince等操作系统,来个Minigui什么的,苦于没有可供使用的硬件环境和硬件仿真调试工具,而且硬件下载是比较慢的,笔者做这么个东西就是想模拟实际的硬件环境,尤其是手机开发环境,让大家可以练练手。ARM的ADS, REALVIEW都有ARM 模拟器,ads的叫做ARMulate,我给它做个插件叫做Mobsim。

 

Mobsim的作用就是模拟手机的键盘和LCD屏的。下面是寄存器列表:

Register Base=0x0e000000

Register Base DISP_CTL;     LCD刷新控制,写入值就会使lcd刷新。
Register Base DISP_XSIZE;   我们目前只支持QVGA LCD(240×320),该值只能是240
Register Base DISP_YSIZE;   我们目前只支持QVGA LCD(240×320),该值只能是320

Register Base KB_ISR;       键盘中断,非零表示有键盘中断产生

Register Base KB_SCANID;   存储键盘扫描码

 

Mobsim可以和原来ARMulator自带的插件一起使用来模拟实际手机平台。ARMulator自带的timer.dll是定时器,Millisec.dll是时钟源,WatchDog.dll是看门狗,Tube.dll是控制台输出管道,Intctrl.dll是中断控制器。关于这些插件的用法可以参阅%ARMHOME%/pdf目录下的 ADS_DebugTargetGuide_D.pdf。这些插件在默认情况下是加载的。可以从RDI LOG窗口上看出来,如下图所示:



 

如何配置ARMulator使用或者禁止使用一个插件:

ARMulator是通过读.ami和.dsc配置文件来确定一个插件是否被使用的。

开始使用一个插件之前,你必需为你的插件编写一个.dsc文件,并且要把引用该.dsc文件的信息写入default.ami和peripherals.ami,对于ADS1.2,这几个文件在%ARMHOME%/bin目录下, %ARMHOME% ADS默认安装在C:/Program Files/ARM/ADSv1_2。

 

加入一个 .dsc 文件

创建一个叫做Mobsim.dsc然后把它放在%ARMHOME%/bin目录下,文件内容如下:

;; ARMulator configuration file type 3

{ Peripherals

         {Mobsim

                   MODEL_DLL_FILENAME=Mobsim

         }

         {       No_Mobsim=Nothing

         }

}

 

Nothing是一个表示什么事也不做的预定义插件。

编辑default.ami和peripherals.ami文件

1.用记事本打开default.ami,找到如下的行:

{Timer=Default_Timer

}

2. 添加一个到我们插件的引用

{Timer=Default_Timer

}

 

{Mobsim=Default_Mobsim

}

3. 保存编辑好的default.ami 文件。

4. 用记事本打开 peripherals.ami,找到如下的行:

{Default_Timer=Timer

Waits=0

Range:Base=0x0a800000

;Frequency of clock to controller.

CLK=20000000

;; Interrupt controller source bits - 4 and 5 as standard

IntOne=4

IntTwo=5

}

5. 添加一个Mobsim插件的配置段

{Default_Timer=Timer

Waits=0

Range:Base=0x0a800000

;Frequency of clock to controller.

CLK=20000000

;; Interrupt controller source bits - 4 and 5 as standard

IntOne=4

IntTwo=5

}

 

{Default_Mobsim=Mobsim

Range:Base=0x0e000000

}

6. 保存编辑好的peripherals.ami文件。

配置ADS禁止一个插件:

你可以通过改变插件的入口文件peripherals.ami 去禁止一个插件。要禁止Mobsim:

1. 在peripherals.ami找到如下行

{Default_Mobsim=Mobsim

Range:Base=0x0e000000

}

2. 把它改成:

{Default_Mobsim=No_Mobsim

Range:Base=0x0e000000

}

这样就会用 nothing.c 去覆盖Mobsim插件

 

 

如何使用Mobsim插件?

Mobsim插件可以到我的资源处下载,下载地址:http://download.csdn.net/source/268372。下载Mobsim压缩包解压后文件如下:

Bin目录:

BMP2RGB.exe bitmap图像到RGB数据的转换工具

default.ami

Mobsim.dsc

peripherals.ami

Mobsim.dll

Demo目录:

int_handler.c

main.c

Demo.axf

build.bat

armboot.s

demodata.s

pic1.dat-pic4.dat

Docs目录:

帮助文件
一,测试运行环境。参看上一部分“如何配置ARMulator使用或者禁止使用一个插件”,将Mobsim.dsc和Mobsim.dll直接放到%ARMHOME%/bin目录下,将default.ami和peripherals.ami的那部分加入到%ARMHOME%/bin目录下的default.ami和peripherals.ami文件的相应部分。运行AXD Debugger,配置成使用ARMulator环境(使用Option菜单下,Configure Target命令),这时如果你刚才的操作正确,Mobsim插件就可以和AXD一起运行,看到一个类似手机的界面。

二,使用Demo程序。Demo目录下是一个中断驱动的ARM程序,使用者可以改成自己的程序。其中main.c是主程序;int_handler.c是中断消息处理程序;armboot.s是ARM初始化程序;demodata.s是包含几张demo图片,pic1.dat-pic4.dat是四张图片的RGB数据,这几个数据文件是用bin目录下的BMP2RGB.exe从bmp文件转换而来的,命令格式是

BMP2RGB.exe 位图文件名 转换以后的RGB数据宽度 转换以后的RGB数据高度

例如要将pic1.bmp 转换成QVGA的RGB文件pic1.dat可以命令行写成:

bmp2rgb.exe pic1.bmp 240 320 pic1.dat
Demo目录下build.bat是用来编译和链接Demo程序,也可以用ADS的CodeWarrior完成。把生成的Demo.axf用AXD运行,效果如下:



          

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息