用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运行,效果如下:

          

 
相关推荐
最新下载 : http://www.hugacy.com/read.php?tid=15 如果你是一个ARM平台的video算法爱好者,或者开发优化工程师,你将会从这里领略到ARM模拟器带来的无穷魅力。 armulator.exe是最快的ARM指令集模拟器(性能是qemu的两倍),支持ARM7,ARM9,ARM11,Cortex/Thumb,可直接运行ELFWINCE程序。(ELF程序armcc或者arm gcc编译,WINCE程序pb等编译) 。 如果只想关注应程序开发,尤其做算法优化,比如汇编(甚至neon)优化,完全不想关心底层平台操作系统,就请使ARM模拟器,只要你的程序编译出来能在ARM+Linux的开发板上跑,就能在这个模拟器上运行。反之亦可。 使高性能ARM模拟器,就可以体验ARM平台开发优化video codec的威力,不再需要去采购动辄几千元的ARM11, Cortex开发版,仅仅需要一台装有windows的PC,在ARM模拟器的帮助下,带领你进入arm平台video开发优化的世界。使ARM模拟器最终开发出的video版本,不加任何修改就可以运行在真实的ARM产品平台上,执行结果绝无任何差异。 <**任何个人团体学习者,及教育机构,在非赢利前提下,均可以无偿体验使ARM模拟器,商业使请联系作者**> 使方法极其简单,比如在开发板上运行./x264 --help 在PC上使模拟器的方法:armulator.exe x264 --help 本压缩包中的x264使源代码版本x264-snapshot-20100824,具体生成过程如下: 1. 官方网站下载x264源代码并解压缩 2. 在host主机上执行./configure --disable-asm 3. 修改config.mak a. ARCH=ARM b. CC=arm-none-linux-gnueabi-gcc (请先指定好你的交叉编译器路径) c. AR=arm-none-linux-gnueabi-ar 4. 修改config.h,去掉一行#define ARCH_X86 1 5. make 对于neon汇编优化,需要在config.mak中增加AS=arm-none-linux-gnueabi-as,需要4.3.3以后的交叉编译器. <**压缩包中的包含的x264,仅作讨论交流之,对于任何其它使,不承担由其产生的一切后果**>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

sun4216

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值