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

 

 

Mobsim简介

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

 

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

Register Base=0x0e000000

Register Base DISP_CTL;     LCD刷新控制,写入值就会使lcd刷新。

Register Base DISP_XSIZE;   我们目前只支持QVGA LCD240×320),该值只能是240

Register Base DISP_YSIZE;   我们目前只支持QVGA LCD240×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.amiperipherals.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.amiperipherals.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.datpic4.dat

Docs目录:

帮助文件

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

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

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

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

bmp2rgb.exe pic1.bmp 240 320 pic1.dat

Demo目录下build.bat是用来编译和链接Demo程序,也可以用ADSCodeWarrior完成。把生成的Demo.axfAXD运行,效果如下:

          

 
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值