用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运行,效果如下:
相关文章推荐
- 实现模拟手机全键盘车牌号输入 jq+css
- 在VC中实现模拟键盘,输入内容并显示在ListBox中。
- 手把手教你在Android手机上实现蓝牙键盘的支持
- 自己写的模拟combobox的flex4实现,带分页,支持键盘操作
- Android查询:模拟键盘鼠标事件(adb shell 实现)
- vc+如何实现模拟键盘输入,自动输入文字(创世纪篇)
- Java 实现全局(全操作系统)的键盘鼠标模拟
- VC插件,让编译器使用ADS编译成ARM指令
- 使用UI Automation实现自动化测试--7.1 (模拟键盘输入数据在自动化测试中的应用)
- H5+JS+相对单位rem实现第三方支付页(输入金额+模拟数字键盘+自适应布局+大写金额)
- 手机模拟位置实现精准位置营销效果分析
- 九度OJ 1079 手机键盘 (模拟)
- 标题:ARM中断程序的原理和实现
- 用键盘模拟操作来实现另类关机方法
- Android自动化测试初探(四): 模拟键盘鼠标事件(Socket+Instrumentation实现)
- qtp录制鼠标右键单击事件要通过模拟键盘操作来实现
- 模拟键盘输入就是使用SendKeys.Send(“汉字”)与SendKeys.SendWait(“字母”)实现的
- 手机模拟触摸板的简单实现Java版
- 开发键盘过滤驱动实现模拟按键过程中遇到的问题___续
- VB 加载winIO,实现驱动级键盘模拟