精华内容
下载资源
问答
  • 微软最新宣布,已经在Windows Insider里,面向测试人员发布了ARM版Win10的x64模拟器。这就意味着,使用ARM芯片的笔记本用户,以后可以直接安装、运行几乎所有Windows exe应用程序,而不必再被兼容性问题劝退了。此前...

    鱼羊 发自 凹非寺
    量子位 报道 | 公众号 QbitAI

    现在,ARM64设备上的Windows系统,也可以运行64位的x86应用程序(x64)了。

    微软最新宣布,已经在Windows Insider里,面向测试人员发布了ARM版Win10的x64模拟器。

    这就意味着,使用ARM芯片的笔记本用户,以后可以直接安装、运行几乎所有Windows exe应用程序,而不必再被兼容性问题劝退了。

    此前,在Surface Pro X这样的ARM设备上,Windows只能运行原生的ARM应用,以及32位x86应用,限制了许多应用程序的使用。

    119411fae98b8fd02af67bdecfb225ee.png

    根据微软的官方博客,在这个名为Build 21277的预览版本中,用户可以从微软应用商店或其他任何渠道安装x64应用程序,并在ARM芯片上运行它们。

    比如光栅图形软件应用程序Autodesk Sketchbook、游戏《火箭联盟》等等。

    而像Chrome浏览器,此前在ARM64上只能作为32位应用程序运行,现在也可以在64位上运行了。如此一来,这类软件将能在ARM设备上享受更大内存带来的好处。

    由于目前的x86应用生态已经朝着仅支持64位的方向发展,这对于ARM版的PC用户们而言,无疑是个好消息。

    不过微软也强调,目前释出的版本仍在开发之中,在模拟环境中的一部分应用目前可能会无法运行,但微软会在接下来的几个月中持续开发适配,提高x64模拟的兼容性和性能。

    消息一出,便引发了网友们不少的讨论。

    最近,苹果搭载自研ARM芯片的M1笔记本已经展现出了性能和功耗上的巨大提升,不少人认为,在移动设备之后,PC领域也越来越乐意尝试从x86转向ARM。

    但在更多的开发者去重新编译应用,适配ARM之前,让x86平台的成熟软件能通过模拟直接迁移到ARM平台上,是解决兼容性问题的必要过渡方案。

    现在,微软终于在领先起跑,却被苹果超车的情况下,又追回了一程。

    就有网友说:

    现在,我们需要一个可以与M1竞争的ARM处理器。

    f96ef7c994752ea89d2ee850f4fe0583.png

    但也有网友表示担心:

    希望这种行业范围内的迁移趋势,不会让PC失去现有的灵活性。

    daa83909b08d950cb035e3b9e819edb3.png

    不过,目前发布的版本只是beta版,微软尚未透露该模拟器何时会登上Windows的主要版本。

    微软表示,“期待Windows Insider社区的反馈”。

    官方博客链接:https://blogs.windows.com/windows-insider/2020/12/10/introducing-x64-emulation-in-preview-for-windows-10-on-arm-pcs-to-the-windows-insider-program/

    — 完 —

    量子位 QbitAI · 头条号签约

    关注我们,第一时间获知前沿科技动态

    展开全文
  • CE5.0 ARM模拟器定制--基于VS2005/VS2008

    千次阅读 2015-04-08 13:23:38
    PB5.0只能支持X86的模拟器,打开ARM的模拟器时报错,参考:...而VS2005支持ARMV4I模拟器,本文是PB5.0,CE5.0,VS2005相结合定制ARM模拟器 一、生成OS 1. 安装Windows CE 5.0(记得CPU类型里把ARMV4I选上)装完之

    PB5.0只能支持X86的模拟器,打开ARM的模拟器时报错,参考:http://blog.csdn.net/zhangjikuan/article/details/44833661

    而VS2005支持ARMV4I模拟器,本文是PB5.0,CE5.0,VS2005相结合定制ARM模拟器

    亲测:VS2008也可以,只是在创建项目时候注意选择右上角FRAMEWORD的版本,而且没有1.0版,如果PB5没有打升级包,则建立的模拟器没法运行高版本的程序,从而没法进行调试

    一、生成OS

    1. 安装Windows CE 5.0(记得CPU类型里把ARMV4I选上)装完之后装DeviceEmulatorBSP.msi,这是ARMV4I模拟器的BSP。
       下载地址:http://www.microsoft.com/downloads/details.aspx?FamilyID=474b03a6-e87d-455d-bc16-b8cf18ef39b4&displaylang=en

    2. 运行Platform Builder,新建一个Platform,给你的新Platform取一个名字,我这里取为ZJKEmulator_ARMV4I。BSP选择Microsoft DeviceEmulator:ARMV4I,Design Template选择Mobile Handheld,下一步中Application & Media随你选,Networking & Communications只选择Local Area Network(LAN)->Wired Local Area Network,其余都去掉。最后完成向导。

    3. 添加网卡。在Catalog View的Device Drivers->Networking->Local Area Networking (LAN) devices目录下,把NE2000-compatible(PCMCIA car)添加进来。

    4. 如果要开发托管程序,添加Catalog View的Core OS->Windows CE Devices->Applications – End User->CAB File Installer/Uninstaller。

    5. 添加ActiveSync(可选),在Catalog View的Core OS->Windows CE Devices->Applications – End User目录下。

    6. 添加闪存支持。有三个部件:SMFlash,Partition Driver和FAT。
       先转到Catalog View:
       SMFlash在BSP->Microsoft Device Emulator->Storage Drivers->MSFlash Drivers->SmartMedia NAND Flash Driver (SMFLASH),
       Partition Driver在Core OS->Windows CE Devices->File Systems and Data Store-> Storage Manager->Partition Driver
       FAT在Core OS->Windows CE Devices->File Systems and Data Store->Storage Manager->FAT File System。

    3,4,5,6自己按照自己的需要可选择性添加(如果程序时基于.net compact framework1.0以上版本的还需要在catalog->coreOS中选择高版本,注意如果PB5没有打高版本的补丁的话里面就只有一个.net compact framework的,我安装了补丁WinCEPB50-131231-Product-Update-Rollup-Armv4I.msi,里面有2.0和3.5,在这里选择了3.5)

    7. 打开菜单Platform->Setting,这里有三个地方要设置:
    1) Build Options选项卡下,去掉Enable CE Target Control Support和Enable KITL;

       我只保留:Enable Eboot space in memory和run-time image can be larger than 32MB(亲试,这个也没什么用,模拟器内存与VS2005中配置有关)

    2) Environment选项卡,添加环境变量CE_MODULES_SERIAL=1,这是用来将DMA添加进来;

      DMA解释参考:http://www.cnblogs.com/walzer/archive/2007/05/13/744729.html#Feedback

    3) Locale选项卡,用来添加你想要的语言支持,可改可不改。我这里先Clear All然后选了中文(中国)和英语(美国)。Default Language选为中文。

    8. BuildOS->Sysgen。

    二、生成SDK

    1. 运行SDK Wizard(Platform->SDK->New SDK),填写必要的信息之后,把支持的开发工具都勾上,完成。下面是配置SDK(选择Platform->SDK->Configure SDK),要是觉得没有什么好配置的也可以跳过。

    2. 打开ExportSdk.sdkcfg文件(先做好备份,这个文件一般在项目根目录下,就是在New Platform Wizard的第2步中所指定的目录,默认是%_WINCEROOT%\PBWorkspaces下)。这是一个XML格式的文本文件,找到这两行:
        <PropertyBag NAME="DeviceEmulation">
        </PropertyBag>
    把这两行替换为如下的片断:
     <PropertyBag NAME="DeviceEmulation">
            <Property NAME="Default Image">1</Property>
            <PropertyBag NAME="1">
                <Property NAME="ImageName">ZJKEmulator_ARMV4I</Property>
                <Property NAME="VMID"></Property>
                <Property NAME="Default Skin"/>
                <Property NAME="Height">600</Property>
                <Property NAME="Width">800</Property>
                <Property NAME="BitDepth">16</Property>
                <Property NAME="Memory">128</Property>
                <Property NAME="Bin Dest">Emulation\nk.bin</Property>
                <Property NAME="Fixed Screen">1</Property>
                <Property NAME="CpuName">ARMV4I</Property>
                <Property NAME="DPIX">96</Property>
                <Property NAME="DPIY">96</Property>
                <Property NAME="SupportRotation">0</Property>
                <Property NAME="Enabled">1</Property>
                <Property NAME="Bin Path"></Property>
                <Property NAME="Ethernet">1</Property>
                <Property NAME="Ports">1</Property>
                <Property NAME="AdditionalParameters"></Property>
                <PropertyBag NAME="Skins"/></PropertyBag>
     </PropertyBag>
     <PropertyBag NAME="Added Files">
            <PropertyBag NAME="{3B388597-0924-4102-ADFA-2519D2C3E11B}">
                <Property NAME="Source">C:\WINCE500\ZJKEmulator_ARMV4I\ReleaseImage</Property>
                <Property NAME="Destination">Emulation</Property>
                <Property NAME="Subfolders">0</Property>
            </PropertyBag>
     </PropertyBag>

    3. 设定变量。上面替换的代码中有几个变量需要设定,分别是:
    1) ImageName:这是程序员在Visual Studio IDE里所看到的名字;
    2) VMID:一个GUID,可以用GuidGen.exe来生成一个,也可以直接复制下面 <PropertyBag NAME="Emulation">中的VMID的序号
    3) Height/Width:模拟器屏幕的宽高;
    4) BitDepth:颜色深度;
    5) Memory:分配给模拟器的RAM大小;
    6) DPIX/DPIY:屏幕DPI;
    7) Source:这是一个目录,包含编译生成的NK.bin。建议最好在%_WINCEROOT%下新建一个目录,专门用于存放NK.bin。

    这里我设为C:\WINCE500\MyCEEmu\ReleaseImage。
    修改完成后保存。

    3. 生成SDK。Platform->SDK->Build SDK。一切顺利的话应该可以在当前工程目录的SDK目录下找到打包成msi文件的SDK安装包。

        如果报错参考:http://blog.csdn.net/zhangjikuan/article/details/44937875


    三、配置Visual Studio 2005
    1. 先安装生成好的SDK。运行Visual Studio 2005,选择菜单“工具->选项”,打开选项设置对话框,从左边的树型列表中选择“设备工具->设备”,右边的下拉列表框拉到底可以看到 “ZJKEmulator_ARMV4I”,这就是我们刚刚生成的那个Platform。下面的设备列表里有两项,双击ZJKEmulator_ARMV4I,设定传输为DMA传输,再点击“仿真器选 项”,在“显示”选项卡里设定好模拟器屏幕尺寸,颜色深度等,全部保存。

    2. 新建一个智能设备项目,向导第2步选择平台的时候用我们的ZJKEmulator_ARMV4I替换Pocket PC 2003,完成。然后按F5运行程序,不出意外的话模拟器应该就出来了。

    也可以不需要新建项目,直接在工具->设备仿真器管理器中找到模拟器右击连接

    展开全文
  • 用于教育的快速,简单的ARM模拟器 安装 下载并享受它! 图形用户界面 java -jar project-armstrong.jar 命令行界面 java -jar project-armstrong.jar cli 信息 要求 Java 11 Windows x86 / x64或Linux x64 使用的...
  • 微软最新宣布,已经在Windows Insider里,面向测试人员发布了ARM版Win10的x64模拟器。这就意味着,使用ARM芯片的笔记本用户,以后可以直接安装、运行几乎所有Windows exe应用程序,而不必再被兼容性问题劝退了。此前...
    鱼羊 发自 凹非寺
    量子位 报道 | 公众号 QbitAI

    现在,ARM64设备上的Windows系统,也可以运行64位的x86应用程序(x64)了。

    微软最新宣布,已经在Windows Insider里,面向测试人员发布了ARM版Win10的x64模拟器。

    这就意味着,使用ARM芯片的笔记本用户,以后可以直接安装、运行几乎所有Windows exe应用程序,而不必再被兼容性问题劝退了。

    此前,在Surface  Pro X这样的ARM设备上,Windows只能运行原生的ARM应用,以及32位x86应用,限制了许多应用程序的使用。

    85800e4d3737a43c8505c580ec56aab0.png

    根据微软的官方博客,在这个名为Build 21277的预览版本中,用户可以从微软应用商店或其他任何渠道安装x64应用程序,并在ARM芯片上运行它们。

    比如光栅图形软件应用程序Autodesk Sketchbook、游戏《火箭联盟》等等。

    而像Chrome浏览器,此前在ARM64上只能作为32位应用程序运行,现在也可以在64位上运行了。如此一来,这类软件将能在ARM设备上享受更大内存带来的好处。

    由于目前的x86应用生态已经朝着仅支持64位的方向发展,这对于ARM版的PC用户们而言,无疑是个好消息。

    不过微软也强调,目前释出的版本仍在开发之中,在模拟环境中的一部分应用目前可能会无法运行,但微软会在接下来的几个月中持续开发适配,提高x64模拟的兼容性和性能。

    消息一出,便引发了网友们不少的讨论。

    最近,苹果搭载自研ARM芯片的M1笔记本已经展现出了性能和功耗上的巨大提升,不少人认为,在移动设备之后,PC领域也越来越乐意尝试从x86转向ARM。

    但在更多的开发者去重新编译应用,适配ARM之前,让x86平台的成熟软件能通过模拟直接迁移到ARM平台上,是解决兼容性问题的必要过渡方案。

    现在,微软终于在领先起跑,却被苹果超车的情况下,又追回了一程。

    就有网友说:

    现在,我们需要一个可以与M1竞争的ARM处理器。

    d299a3dab81e3f82ec736b7aa298e157.png

    但也有网友表示担心:

    希望这种行业范围内的迁移趋势,不会让PC失去现有的灵活性。

    0142656eaa21f749b5436f6957f9e6bd.png

    不过,目前发布的版本只是beta版,微软尚未透露该模拟器何时会登上Windows的主要版本。

    微软表示,“期待Windows Insider社区的反馈”。

    官方博客链接:https://blogs.windows.com/windows-insider/2020/12/10/introducing-x64-emulation-in-preview-for-windows-10-on-arm-pcs-to-the-windows-insider-program/

    本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

    量子位年度智能商业大会启幕,大咖已就位!

    12月16日,李开复博士、谭建荣院士、清华唐杰教授,以及来自小米美团百度华为爱奇艺小冰亚信浪潮容联澎思地平线G7等知名AI大厂的大咖嘉宾将齐聚MEET2021大会,期待关注AI的朋友报名参会、共探新形势下智能产业发展之路。

    早鸟票限时优惠,扫码锁定席位吧~

    8328f4fabc056ec75b9d03e5f8fd07ea.png

    e39af131e0cb062f6f58864fb556fe36.png

    量子位 QbitAI · 头条号签约作者

    վ'ᴗ' ի 追踪AI技术和产品新动态

    一键三连「分享」、「点赞」和「在看」

    科技前沿进展日日相见~

    展开全文
  • http://balau82.wordpress.com/2010/08/17/debugging-arm-programs-inside-qemu/   启动的汇编片段(startup.s)     .global _Reset _Reset: LDR sp, =stack_top BL c_entry B .   ...

    一、命令行调试(gdb)

    程序参考自

    http://balau82.wordpress.com/2010/08/17/debugging-arm-programs-inside-qemu/

     

    启动的汇编片段(startup.s)

     

     

    .global _Reset
    _Reset:
    	LDR sp, =stack_top
    	BL c_entry
    	B .
    
    

     

    链接脚本(test.ld)

     

     

    ENTRY(_Reset)
    SECTIONS
    {
    	. = 0x10000;
    	.startup . : { startup.o(.text) }
    	.text : { *(.text) }
    	.data : { *(.data) }
    	.bss : { *(.bss) }
    	. = . + 0x1000; /* 4kB of stack memory(4kB的堆栈内存)*/
    	stack_top = .;
    }
    

     

    (修改二进制文件布局的另一种做法是使用ld的命令行,或既使用-T开关又使用命令行)  

     

    主程序(test.c):

     

     

    volatile unsigned int * const UART0DR = (unsigned int *)0x101f1000;
    
    void print_uart0(const char *s) {
    	while(*s != '\0') { /* Loop until end of string (循环直至字符串结束)*/
    		*UART0DR = (unsigned int)(*s); /* Transmit char (发送字符)*/
    		s++; /* Next char (下一个字符)*/
    	}
    }
    
    void c_entry() {
    	print_uart0("Hello world!\n");
    }
    

     

    (UART是串口的底层实现,严格来说它是一块芯片,但在嵌入式开发中经常指操纵串口的I/O端口和特殊寄存器,使用方式和内存访问很相似,所以经常用于输出调试信息)

     

    qemu调试批处理文件(qemu_test.bat):

     

     

    "D:\java\qemu-0.9.0-arm\qemu-system-arm.exe" -s -S -M versatilepb -m 128M -kernel test.bin 
    pause
    

     

    (我使用的是模拟ARM的qemu,注意qemu-system-arm和-M开关,versatile pb是一种使用ARM926EJ-S的开发板)

     

    gdb调试脚本(gdbinit.txt):

     

     

    file test.elf
    target remote localhost:1234
    b c_entry
    cont
    

     

     

    (可以手工输入到gdb控制台,b是breakpoint的缩写)

    (file命令用于加载调试信息,所以elf文件在编译时需要加入-g开关)

    (target用于远程调试,前提是远程机器运行gdbserver监听1234端口,这里qemu模拟器已经有gdbserver的功能)

     

    (设置程序参数可以用set args,运行程序可以用run)

     

    构建文件(Makefile):

     

     

    # see http://balau82.wordpress.com/2010/08/17/debugging-arm-programs-inside-qemu/
    
    # for debug:
    #   make clean all
    # for release: 
    # 	make clean all DEBUG=""
    
    PROJECT := test
    OBJS := startup.o test.o
    DEBUG := -g
    ARGS := -mcpu=arm926ej-s ${DEBUG}
    EMU := qemu_test.bat
    
    AS := arm-none-eabi-as ${ARGS}
    CC := arm-none-eabi-gcc ${ARGS}
    LD := arm-none-eabi-ld -T ${PROJECT}.ld -Map ${PROJECT}.map
    GDB := arm-none-eabi-gdb --command=gdbinit.txt
    RUN := arm-none-eabi-run
    SIZE := arm-none-eabi-size
    OBJCOPY := arm-none-eabi-objcopy -O binary
    RM := rm -f
    
    all:${PROJECT}.bin
    
    ${PROJECT}.bin:${PROJECT}.elf
    	${SIZE} $<
    	${OBJCOPY} $< $@
    
    ${PROJECT}.elf:${OBJS} ${LDSCRIPT}
    	${LD} ${OBJS} -o $@
    
    %.o:%.s
    	${AS} $< -o $@ 
    
    %.o:%.c
    	${CC} -c ${ARGS} $< -o $@ 
    
    #run:all
    #	${GDB} ${PROJECT}.elf
    
    run:all
    	start ${EMU}
    	${GDB}
    	
    clean:
    	${RM} *.o *.elf *.bin *.map
    
    

     

    (我写的Makefile实在不敢恭维...,惯常方法是使用CFLAGS变量)

    (变量值可以用make的参数覆盖,例如make clean all DEBUG="")

    (tab缩进是必须的,否则Makefile无法使用)

     

    编译这个Makefile工程需要以下东西

    1. Sourcery G++ Lite Edition for ARM

    http://www.codesourcery.com/sgpp/lite/arm

    获得其中已经编译好的交叉编译器(可以直接在windows下使用)

    2. MSys/MinGW 

    http://sourceforge.net/projects/mingw/

    获得其中的make工具

    3. QEMU on Windows (arm)

    http://www.h7.dion.ne.jp/~qemu-win/

    下载for ARM平台的那个

    http://www.h6.dion.ne.jp/~kazuw/qemu-win/qemu-0.9.0-arm.zip

     

     

    在MSys的/etc/profile.d目录中创建sourcery.sh

     

     

    #!/bin/sh
    export PATH="/arm-2010.09/bin:$PATH"
    

     

    (可以在msys中手工输入export PATH="/arm-2010.09/bin:$PATH"更改环境变量,大小写敏感)

     

    把Sourcery G++的arm工具链加入MSys的PATH中。

    然后运行msys.bat,切换到Makefile工程的目录下执行

    make clean all

    重建工程,生成带调试信息的test.bin和符号表test.map

     

     
    $ make clean all
    rm -f *.o *.elf *.bin *.map
    arm-none-eabi-as -mcpu=arm926ej-s -g startup.s -o startup.o
    arm-none-eabi-gcc -mcpu=arm926ej-s -g -c -mcpu=arm926ej-s -g test.c -o test.o
    arm-none-eabi-ld -T test.ld -Map test.map startup.o test.o -o test.elf
    arm-none-eabi-size test.elf
    text data bss dec hex filename
    144 0 0 144 90 test.elf
    arm-none-eabi-objcopy -O binary test.elf test.bin

     

    (clean和all不是指硬盘上的文件,而是特定的目标)

     

    然后执行

    make run

    运行qemu和gdb进行调试

    常用语句

    * list:显示附近代码

    * step:步进

    * display / undisplay / print:计算表达式/取消计算表达式/临时计算表达式

    * break / continue:设置断点 / 继续执行

    * bt:调用堆栈回溯

     

    20110502:

    这里有个教程链接集(日文)

    http://850mb.net/pukiwiki/index.php?gdb

    http://rat.cis.k.hosei.ac.jp/article/devel/debugongccgdb3.html

     

     

    backtrace bt 関数呼び出し情報のトレース 【bt】调用堆栈回溯
    break b ブレークポイントの設定 【b】添加断点
    continue c プログラムの再開 【c】继续执行程序
    command comm ブレークポイントヒット時の動作の設定 【comm】设置断点命中时的动作
    delete d ブレークポイントの削除 【d】删除断点
    delete display d d displayの削除 【d d】删除
    display disp 常に表示 【d】普通的变量值显示
    finish fin 現在の関数の終了まで実行 【fin】执行直至现在的函数结束
    frame f 関数フレームの移動 【f】移动函数帧
    help h ヘルプを表示 【h】查看帮助
    info i 各種情報のリストを表示 【i】获取各种信息
    info breakpoints i b ブレークポイント情報を表示 【i b】获取断点信息
    info display i di displayの状態を表示 【i di】获取变量显示信息
    info watchpoints i wat ウォッチポイント情報を表示 【i wat】获取watch值信息
    list l ソースプログラムを表示 【l】显示源程序
    next n ステップアウト実行 【n】step out步出
    print p 式を評価して結果を表示 【p】计算表达式的值
    printf printf printのフォーマット表示 【printf】格式化计算表达式的值
    ptype pt 式の型を表示 (詳細) 【ptype】详细的原型
    quit q gdbの終了 【quit】退出gdb会话
    return ret 現在の関数をその場で終了 【ret】现在的函数在这里返回
    run r プログラムの実行開始 【r】程序开始执行
    rwatch rw 読み出しウォッチポイントの設定【rw】读取watch设置
    set set 変数の値の設定など 【set】设置变量值
    step s ステップイン実行 【step】step in步进
    watch wa 書き込みウォッチポイントの設定 【wa】设置写入的watch点
    whatis wha 式の型を表示 (簡易) 【wha】简单的表达式类型

    上面的【】表示gdb命令缩写  

     

    二、使用Eclipse CDT和qemu进行ARM二进制程序调试

    1. Sourcery G++ Lite Edition for ARM

    下载第一个EABI版的IA32 Windows Installer即可

    http://www.codesourcery.com/sgpp/lite/arm

    默认安装在C:\Program Files\CodeSourcery\Sourcery G++ Lite

    选择Do not modify PATH(不加入PATH,不过加入也无妨,

    因为有交叉编译器前缀可以区分)

    另一种选择是下载绿色版IA32 Windows TAR

    随便找个地方解压即可用(好像MinGW那样)

     

    2. JDK 1.6

    JRE应该也可以,主要是后面Eclipse需要用到

    http://www.oracle.com/technetwork/java/javase/downloads/index.html

     

    3. MSys/MinGW

    真正有用的是MSys,不过不排除你整个MinGW都装了(我试过在线装MinGW,结果顺带把MSys也装好了)

    好像有单独的安装文件,但最好在线安装

    http://sourceforge.net/projects/mingw/

    MSys的好处是自带了make工具,不需要使用Sourcery工具链那个。

    另外还有很多类Unix的系统工具,对使用Makefile很有帮助。

     

    4. Eclipse CDT 

    最新版可能不支持GNU ARM Eclipse Plug-in,所以我用CDT 6.0.2 for Eclipse Galileo:

    http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/galileosr2

    点击下载这个:

    Windows 32-bit

    然后解压即可。

    启动前最好写个批处理导入PATH。

     

     

    set PATH=
    set PATH=C:\Program Files\CodeSourcery\Sourcery G++ Lite\bin;%PATH%
    set PATH=D:\java\jdk1.6.0_20\bin;%PATH%
    set PATH=C:\MinGW\msys\1.0\bin;%PATH%
    start eclipse.exe
    

     

    重命名为start_cdt.bat,放入我的cdt目录中

    D:\java\eclipse-cpp-helios-SR2-win32\eclipse

    双击启动Eclipse

    把Workspace设置为C:\Documents and Settings\Administrator\workspace_arm

    勾选默认,然后按OK

     

    5. GNU ARM Eclipse Plug-in

    http://sourceforge.net/projects/gnuarmeclipse/

    把zip下载到本地,然后把其中的plugins和features两个文件夹复制到CDT目录下

    D:\java\eclipse-cpp-helios-SR2-win32\eclipse

    然后重新启动Eclipse CDT

    可以发现在File->New->C Project时

    Project type:会多出两项

    * ARM Cross Target Application

    * ARM Cross Target Static Library

    选择ARM Cross Target Application->ARM Windows GCC (Sourcery G++ Lite)

    Project Name:填helloworld

    创建新的C工程。

    创建完后会发现左面的工程树会显示

    C:\Program Files\CodeSourcery\Sourcery G++ Lite\

    的头文件工程树,这是自动检测的结果,可以查看工程选项

    右键->Properties->C/C++ Build->Discovery Options

    默认勾选了自动扫描

    Automate discovery of paths and symbols

    可能插件会自动在PATH环境变量中搜索带arm-none-eabi-前缀的exe

    以确定需要使用的gcc

    另一个要留意的地方是

    右键->Properties->C/C++ Build->Settings

    这里可以设置各种编译参数,并且附有一些关键开关的英文说明。

    Binary Parser选项页默认选中GNU Elf Parser,

    用于在工程树中直接查看生成debug版elf文件的类型和变量信息。

     

    6. 创建C工程

    File->New->Source File

    Source File:填入main.c

    输入如下内容

     

     

    /*
     * main.c
     *
     *  Created on: 2011-3-27
     *      Author: Administrator
     */
    #include <stdio.h>
    
    int main()
    {
    	printf("Hello, world!\n");
    	return 0;
    }
    

     

     

    然后菜单->Project->Clean->Clean projects selected below

    清除然后重新编译helloworld

    输出如下信息:

     

     
    **** Build of configuration Debug for project helloworld ****

    cs-make all
    Building file: ../main.c
    Invoking: ARM Sourcery Windows GCC C Compiler
    arm-none-eabi-gcc -O0 -Wall -Wa,-adhlns="main.o.lst" -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o"main.o" "../main.c"
    Finished building: ../main.c

    Building target: helloworld.elf
    Invoking: ARM Sourcery Windows GCC C Linker
    arm-none-eabi-gcc -nostartfiles -Wl,-Map,helloworld.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o"helloworld.elf" ./main.o
    c:/program files/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/bin/ld.exe: warning: cannot find entry symbol _start; defaulting to 00008000
    c:/program files/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
    sbrkr.c:(.text+0x12): undefined reference to `_sbrk'
    c:/program files/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-writer.o): In function `_write_r':
    writer.c:(.text+0x16): undefined reference to `_write'
    c:/program files/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-closer.o): In function `_close_r':
    closer.c:(.text+0x12): undefined reference to `_close'
    c:/program files/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-lseekr.o): In function `_lseek_r':
    lseekr.c:(.text+0x16): undefined reference to `_lseek'
    c:/program files/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-readr.o): In function `_read_r':
    readr.c:(.text+0x16): undefined reference to `_read'
    c:/program files/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-fstatr.o): In function `_fstat_r':
    fstatr.c:(.text+0x14): undefined reference to `_fstat'
    c:/program files/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-isattyr.o): In function `_isatty_r':
    isattyr.c:(.text+0x12): undefined reference to `_isatty'
    collect2: ld returned 1 exit status
    cs-make: *** [helloworld.elf] Error 1

     

     

    提示说找不到符号

    (如果使用GNU/Linux工具链而非EABI工具链,则没有此问题。GNU/Linux工具链是基于Linux系统的ABI,所以可以使用C库,而EABI工具链则不行)

     

    删除helloworld工程。

    重新创建一个Makefile工程

    Makefile project->ARM Windows GCC (Sourcery G++ Lite)

    工程名称为test

    创建完后工程树显示红色的叉叉(因为找不到Makefile)

    无视之,重要是要手工修改工程选项:

    1) 工程树->右键->Properties->C/C++ Build->Discovery Options

    Discovery profile:选择

    Managed Build System - per project scanner info profile (Sourcery G++ Lite Windows/C)

    下面的Compiler invocation command会自动变成arm-none-eabi-gcc

    2) 工程树->右键->Properties->C/C++ Build->Settings->Binary Parsers

    勾选Elf Parser。

    3) 工程树->右键->Properties->C/C++ General->Paths and Symbols->Includes

    可以手工修改头文件和库文件的搜索路径。

    最后把前面手工写的Makefile工程的所有文件复制过来(直接粘贴到工程树上)

    再按菜单->Project->Clean->Clean projects selected below

    重新编译这个工程,使那个红色的叉叉消失:

     

     
    **** Build of configuration Default for project test ****

    make all
    arm-none-eabi-as -mcpu=arm926ej-s -g startup.s -o startup.o
    arm-none-eabi-gcc -mcpu=arm926ej-s -g -c -mcpu=arm926ej-s -g test.c -o test.o
    arm-none-eabi-ld -T test.ld -Map test.map startup.o test.o -o test.elf
    arm-none-eabi-size test.elf
    text data bss dec hex filename
    144 0 0 144 90 test.elf
    arm-none-eabi-objcopy -O binary test.elf test.bin

     

     

    发现工程树发生一些变化:

    由于前面设置了Elf Parser,test.elf、startup.o和test.o被自动识别为arm/le格式

    Windows->Show View打开Make Targets视图

    右键->New

    Target name:填入clean all

    按OK,再展开树,双击clean all即可重新编译工程,

    不需要按菜单->Project->Clean->Clean projects selected below那么麻烦了。

     

    7. 调试

    把qemu_test.bat修改为使用绝对路径的bin

     

     

    "D:\java\qemu-0.9.0-arm\qemu-system-arm.exe" -s -S -M versatilepb -m 128M -kernel "C:\Documents and Settings\Administrator\workspace_arm\test\test.bin"
    pause
    

     

    双击工程树中的qemu_test.bat运行qemu。

    然后点击上方的绿色小虫子旁边的下拉,

    选择Debug Configuration,

    双击C/C++ Application,创建一个test Default条目,

    然后切换到Debugger页面,

    Main->Debugger:选择gdbserver Debugger

    Main->GDB debugger:改为arm-none-eabi-gdb

    Main->GDB command set:改为Standard (Windows)

    Main->Stop on Startup at改为c_entry(根据需要,见test.c)

    Main->Use full file path to set breakpoints取消勾选

    (因为这个选项可能影响断点添加)

    Connection->Type:改为TCP

    Connection->Port number:改为1234

    Main->C/C++ Applicaton:填入test.elf

    (test.elf是用于让arm-none-eabi-gdb加载调试版的符号信息,所以不要填test.bin)

    然后按Debug按钮调试(必须保证前面的qemu已经正常运行起来)

    弹出窗口Confirm Perspective Switch

    勾选Remember my decision,然后Yes切换到Debug视角。

    Perspective(视角)是Eclipse的布局,由右上角的标签页来切换,不同于视图。

    在调试视角中Debug视图有三个按钮表示

    Step Into

    Step Over

    Step Return

    用于单步调试。

    也可以双击代码左侧空白处添加断点,然后按Debug视图上的Resume继续运行程序。

    如果程序在断点处中断,可以使用以下特性来调试:

    * Variables视图中查看局部变量值(包括字符串)。

    * Variables视图中添加全局变量的监视

    * Debug视图使用Instruction Stepping Mode进行指令步进

    * Debug视图的调用堆栈回溯(自动跳到外层调用所在的文件行)

    * Registers视图的寄存器数值查看(好像可以立即修改值)

    * Expressions视图添加表达式监视点(它比查看局部变量更灵活,但可以是较复杂的表达式)

    缺点有:

    * 每次调试需要重启qemu(qemu无法被远程重启)。

    * 内存查看可能会导致qemu崩溃。

     

    (eclipse貌似无法保存debug会话到工程目录中)

    (如果学过TCP/IP原理,这种调试方式很容易理解,调试时qemu是TCP服务器,gdb是TCP客户端,而CDT充当gdb的图形界面。insight的调试机制类似)

     

    三、使用arm-none-eabi-run和arm-none-eabi-gdb

    arm-none-eabi-gdb可以识别由当前工具链编译获得的调试版elf文件(即,使用gcc -g开关编译和链接的二进制文件)中的符号(如果无法识别,在gdb中使用file test.elf将获得警告信息)但貌似无法使用target sim进行调试,官方解释说因为Lite版工具链无调试能力(?)。如果使用-T generic-hosted.ld开关(即使用本机的Linker Script),编译得到的文件可以用arm-none-eabi-run运行(生成的elf文件是pe格式的?),此时编译的源文件即使使用了printf这样的库函数也可以正常通过(如果手工写ld脚本,一般要自己实现printf之类的库函数,或者使用-lc显式包含libc.a)。

    (20110404)(这是误区!)如果使用Sourcery G++提供的工具链,应该注意eabi和GNU/ARM工具链的区别(前者一般用于编译内核故不使用libc,后者则是编译在ARM Linux上运行的应用程序,故允许编译静态链接libc的。

     

    (未完成)

     

    四、使用skyeye

    调试方法和qemu类似,但配置和输入输出方式和qemu不同,详细见

    http://sourceforge.net/apps/trac/skyeye/wiki/Linux

    它可以和CDT、gdb和insight这些工具交互实现断点调试(类似于qemu)

    主要问题是:

    * skyeye.conf和skyeye的版本有关,可能导致运行失败

    * skyeye.conf的配置缺乏详细的说明和示例

    * skyeye对高版本gdb的支持似乎有问题

    (未完成)

     

    五、使用insight

    (未完成)

     

    六、使用VisualBoyAdvance

    VisualBoyAdvance是gba在windows上的模拟器,

    可以模拟低端的ARM处理器ARM7TDMI

    http://sourceforge.net/projects/vba/

    内置gba调试功能

    (未完成)

     

    展开全文
  • http://qemu.weilnetz.de/ QEMU Binaries for Windows 转载于:https://www.cnblogs.com/hotshopping88/p/9744335.html
  • 并对该文件做了相应补充,旨在定制基于ARM4I平台Visual Studio 2005环境中文模拟器,建立用于 Platform Builder 5.0+Visual Studio 2005嵌入式Windows CE 5.0开发环境。  一、生成OS  1. 安装Windows CE 5.0,装完...
  • 并对该文件做了相应补充,旨在定制基于ARM4I平台Visual Studio 2005环境中文模拟器,建立用于 Platform Builder 5.0+Visual Studio 2005嵌入式Windows CE 5.0开发环境。  一、生成OS  1. 安装Windows CE 5.0,装完...
  • 1. 安装Windows CE 5.0(记得CPU类型里把ARMV4I选上)装完之后装DeviceEmulatorBSP.msi,这是ARMV4I模拟器的BSP。 2. 运行Platform Builder,新建一个Platform,给你的新Platform取一个名字,我这里取为MyCEEmu。...
  • 现在,微软操作系统Windows 10已经可以借助“你的手机(Your Phone)”来在电脑上打开使用安卓应用程序。类似功能也在华为手机和MateBook、小米手机和小米笔记本上实现,对应功能叫做跨屏协作、多屏协同等。Win10与...
  • 1. 安装Windows CE 5.0(记得CPU类型里把ARMV4I选上)装完之后装DeviceEmulatorBSP.msi,这是ARMV4I模拟器的BSP。 2. 运行Platform Builder,新建一个Platform,给你的新Platform取一个名字,我这里取为MyCEEmu。...
  • 定制自己的Windows CE 5.0 ARM中文模拟器(转)http://showvi.com/Blog/ViewAirticle/59 一、生成OS 1. 安装Windows CE 5.0(记得CPU类型里把ARMV4I选上)装完之后装DeviceEmulatorBSP.msi,这是ARMV4I模拟器的BSP。 ...
  • 一、生成OS 1. 安装Windows CE 5.0(记得CPU类型里把ARMV4I选上)装完之后装DeviceEmulatorBSP.msi,这是ARMV4I模拟器的BSP。 2. 运行Platfo...
  • 安装Windows CE 5.0(记得CPU类型里把ARMV4I选上)装完之后装DeviceEmulatorBSP.msi,这是ARMV4I模拟器的BSP。 2. 运行Platform Builder,新建一个Platform,给你的新Platform取一个名字,我这里取为MyCEEmu。BSP...
  • DNP3协议-(分站)服务器模拟器,客户端(主)模拟器Windows和Linux(ARM)-C,C ++,C#.NET编程- 完整实施DNP3协议标准,包括文件传输。 二进制输入,双位二进制输入,二进制输出,计数器输入,模拟输入,...
  • 定制基于Visual studio 2005平台Windows CE(ARM V4I)中文模拟器
  • 微软公司计划在ARM芯片之上模拟x86指令,并将这种兼容性引入未来的Windows平板与手机当中。  将遗留应用放在这里,其将有种宾至如归的感觉 这一名为Cobalt的项目应该会在今年之内即可与广大用户见面,即Windows 10...
  • windows10arm手机版是微软与高通合作后推出的arm芯片的专属微软系统,该系统可以运行exe文件,类似于桌面端,arm作为未来系统发展方向,为用户提供了移动手机办公的可能性。windows10arm镜像介绍Windows 10 on ARM...
  • 模拟器能够在PC下模拟Windows CE的物理平台。但实际上它只不过是一个运行在CPU Ring 3级别的用户程序。所以它的运行速度要比正常的物理平台要慢。模拟器仅支持x86平台,它只能调试基于"Emulator:x86"的内核和所有用...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 163
精华内容 65
关键字:

arm模拟器windows