
推荐ADS12 ADS12支持ARM10之前的所有ARM系列微控制器,支持软件调试及JTAG硬件仿真调试,支持汇编、C、C++源程序;具有编译效率高、系统库功能强等特点;可以在Windows 2000、XP以及RedHat Linux上运行。 uV3屏蔽了ARM开发中启动代码的编写,上手很快,但以后会比较麻烦。而且支持的ARM芯片种类还不多,所带的编译器也并不完善。
这个要看你使用的是哪种平台(samsung还是ti等)和编写哪种类型的程序(一般情况下都是驱动程序),如果是平台相关,则一般在arch/arm下,以三星为例,一般放在arch\arm\plat-s3c\include中,如果是驱动程序中用到的寄存器,会在相应驱动程序的头文件中
SWI是由软件触发的中断。主要用于带内存保护的 *** 作系统下用户态程序调用核心态系统调用功能。用户态的程序代码执行到SWI时,ARM处理器会自动切换到Supervisor权限并产生SWI中断,从而调用 *** 作系统的相关代码。
有些调试开发系统会利用这个特性增加一些特殊的功能,比如打开调试宿主机上的文件进行读写,把调试信息输出到宿主机的窗口中等等。
你遇到的这个问题有两个解决方法:
1,调整J-Link的设置和开发系统的设置,由开发系统接管SWI。对于初学者,建议不使用J-Link,而改用ULink。因为J-Link的设置有点麻烦。
2,检查已经有的代码,把含有SWI指令的汇编代码分析一下,能跳过就跳过,能删除就删除。如果找不到(有些代码藏在库里面),就请提供这段程序的人帮助!如果找不到这个人,请自己编代码。使用别人的代码有时候请求帮助花的时间比自己重写花的时间还要长!
感谢邀请。
这个问题相信是困扰所有嵌入式初学者的难题,
下面课内容是嵌入式学习必学的:C语言;C++; *** 作系统;计算机组成原理;linux编程;51单片机;arm;硬件编程语言(FPGA);模拟电路&数字电路。
1、cc++语言,这是计算机行业的必修课,必须找扎实实学好,可以安装turboc编译器为开发环境,联系C语言编程;安装vc++60学习C++编程。
2、 *** 作系统,先在电脑上安装一个vmwareworkstation,然后在vmwareworkstation里安装一个linux(redhat企业版)虚拟机。学习一下 *** 作系统的基本原理,熟悉linux环境下的开发环境,然后你就可以照着《自己动手写 *** 作系统》写个 *** 作系统试试。
3、计算机组成原理,熟悉计算机的基本原理,看看一个计算机的基本组成及软件在里面是如何跑的。
4、《unix/linux编程实践教程》可以说是linux编程的必修课,很不错的一本书,初学嵌入式的朋友可以看看。
5、单片机,其实就是一台电脑,像现在的汽车控制、led控制、屏幕亮光程度控制,它都可以实现,自己买块开发板弄一下,你能学到很多的别人学不到的。
6、arm,现在流行的微机,说白了就是32位的单片机,还可以跑 *** 作系统哦,自己想办法移植一个 *** 作系统上去吧
7、硬件编程语言(FPGA),芯片到底是怎么做成的,学习这门课,你就知道了
8、模拟电路&数字电路,硬件的基础,如果可以的话,学习下protel,自己做个硬件pcb板试试。
计算机这行都是偏向于实践的课程,所以要注重动手能力,
学习嵌入式这基本课程的时候,你可以按照这样的顺序来学习:
1:C语言、计算机组成原理、模拟电路&数字电路
2:汇编语言、单片机、 *** 作系统、C++
3:硬件编程语言、arm
嵌入式开发大抵分四个方向,硬件、驱动、内核、应用,如果是希望向嵌入式软件方向发展的话,目前常见的是
嵌入式Linux+ARM方向,关于这个方向,大概分3个阶段:
1、嵌入式linux上层应用,包括QT的GUI开发
2、嵌入式linux系统开发
3、嵌入式linux驱动开发嵌入式目前主要面向的几个 *** 作系统是,LINUX,WINCE、VxWorks等等Linux是开源免费的,而且其源代码是开放的,更加适合我们学习嵌入式。
自学的话你可以尝试以下路线:
(1)C语言是所有编程语言中的强者,单片机、DSP、类似ARM的种种芯片的编程都可以用C语言搞定),因此必须非常熟练的掌握。推荐书籍:谭浩强的很不错,《TheCProgrammingLanguage》这本经典的教材是老外写的,也有中译版本。
(2) *** 作系统原理,是必需的,如果你是计算机专业毕业那也就无所谓了,如果是非计算机专业的就必须找一本比较浅显的计算机原理书籍看一看,把啥叫“进程”“线程”“系统调度”等等基本问题搞清楚。
(3)Linux *** 作系统就是用C语言编写的,所以你也应该先学习下Linux方面的编程,只有你会应用了,才能近一步去了解其内核的精髓。推荐书籍:《UNIX环境高级编程》(第2版)
(4)了解ARM的架构,原理,以及其汇编指令,我们在嵌入式开发中,一般很少去写汇编,但是起码的要求是能够看懂arm汇编。
(5)系统移植的时候,就需要你从下层的bootloader开始,然后内核移植,文件系统移植等。而移植这部分对硬件的依赖是非常大的,其配置步骤也相对复杂,也没有太多详细资料。
(6)驱动开发linux驱动程序设计既是个极富有挑战性的领域,又是一个博大精深的内容。linux驱动程序设计本质是属于linux内核编程范畴的,因而是对linux内核和内核编程是有要求的。在学习前你要想了解linux内核的组成,因为每一部分要详细研究的话足够可以扩展成一本厚书。
给大家把一个嵌入式开发学习大方面的学习框架搭出来了
。最后呢祝大家能够在学习的路上马到成功。
ADT IDE for ARM主要包括以下工具
源码编辑器(editor)
工程管理器(project manager)
工程编译器(builder)
集成调试环境(debug environment)
ADT IDE for ARM主要特征
ADT IDE for ARM运行于Windows NT、95、98、2000及XP,目前支持包括ARM7、ARM9、Intel Xscale, Securcore在内的一系列处理器。ADT IDE for ARM的所有与处理器和调试设备相关的模块采用即插即用方式,用户可以方便的配置工程的不同的处理器和仿真器,实现调试设备与IDE的无缝连接。
ADT IDE for ARM 主要特性如下:
◆ 中文、英文版本支持
◆ *** 作系统支持
★ 支持Vxworks, uCLinux,Linux, Nucleus等 *** 作系统的开发和调试。
◆ 可视化的源码编辑和工程管理功能:
★ 界面友好,使用方便:类似MS Visual Studio的用户界面,支持打印功能,支持文件内查找功能和Find in Files功能。
★ 工程管理器:ADT IDE提供图形化的工程管理工具,以project为单位为用户提供应用源程序的文件组织和管理,管理用户的应用程序,编译链接选项以及调试参数等。
★ 源码编辑器:支持标准的文本编辑功能,支持C语言、汇编语言语法高亮显示。
★ 辅助编辑工具:提供多剪贴板工具、代码模板工具、头文件和源文件切换工具、注释工具、符号配对书写工具等多种辅助编辑工具。
◆ 交叉编译功能:
★ 支持开发语言:ANSI C;Embedded C++;汇编语言。
★ 编译工具:使用著名优秀自由软件GNU的GCC交叉编译工具,并经过优化和严格测试,支持C语言、汇编语言等。
★ 编译参数设置:完全图形界面方式的编译参数设置,提供可视化的设置功能。支持工程级/文件目录级/文件级编译参数设置。
是这样子的,计算机linux中原有的gcc是针对通用的X86等处理器而言的,编译出来的可执行文件是只能在通用计算机上运行的,arm也是一种处理器,只不过其指令等和X86等CPU不同,所以需要有针对arm的编译器来编译源程序,才能在arm中运行。
我在arm9下做过linux,qt编程,需要先在PC上安装linux,然后安装arm-linux-gcc,同时为了可以使用arm-linux-gcc来编译程序,需要指定环境变量,这个可以在profile等文件中进行更改,具体办法你查一下就知道了。或者使用export命令在终端中设置环境变量。两种方法的结果有区别哦!
你想用2440的开发板的话就是arm9了,我还没找到arm9的仿真工具,但是网上已经有arm7的仿真工具。
对于arm-linux-gcc,只要你安装好并设置好了路径(环境变量)后,在一个终端中输入#arm-linux-gcc -v
那么你一般可以看到你安装的arm-linux-gcc 版本信息,到此你就可以使用它编译你的源程序,然后将生成的可执行文件下载到arm开发板中就可以运行了。
还有什么问题再说吧,我也是一个人摸索出来的,估计摸索了一个月才成功的在arm上运行了第一个自己的qt图形界面程序,祝你好运!
我的建议:
一、熟悉linux 的各种 *** 作命令(如export)
二、学会怎么下载可执行文件到arm中
三、学会用pc控制arm上的linux
我只用过arm-linux-gcc,在你的安装文件夹下可以找到
首先要说的是C语言属于高级语言,不能直接被计算机识别而执行,所以需要一些 *** 作来转化。。
一开始是编译预处理,对宏,包含指令,编译指令等进行处理,然后是词法语法分析,将源代码翻译成中间代码(一般是汇编),接着优化代码,,然后将中间代码翻译成机器语言(目标文件),机器语言是计算机的基层语言,能被计算机直接识别。。
接着链接目标文件,生成可以执行文件。。。
大概就是这样。。详细的LZ可看这个总结。。
>
问题解答 问题分析:
在ARM程序的开发过程中,对中断的处理是很普遍的、也是相当重要的。Realview MDK使用的RVCT编译器提供了__irq关键字,用此关键字修饰的函数被作为中断出来函数编译,即在编译的过程中,编译器会自动添加中断处理过程中现场保护和恢复的代码,减小程序的开发难度,加快软件的开发过程。
在理解__irq关键字的作用之前,先看一下ARM核对异常的处理过程。当产生异常时, ARM核拷贝CPSR寄存器的内容SPSR_<mode>寄存器中,同时设置适当的CPSR 位、改变处理器状态进入ARM 态和处理器模式,从而进入相应的异常模式 。在设置中断禁止位禁止相应中断(如果需要)后,ARM核保存返回地址到LR_<mode>,同时设置PC为相应的异常向量。当异常返回时, 异常处理需要从SPSR_<mode>寄存器中恢复CPSR的值,同时从LR_<mode>恢复PC,具体的异常返。
回指令如下:
从SWI和Undef异常返回时使用:
movs pc, LR;
从FIQ、IRQ和预取终止返回时使用:
SUBS PC, LR,#4;
从数据异常返回时使用:
SUBS PC, LR,#8
在使用上述指令异常返回时,如果LR之前被压栈的话使用LDM “∧”, 例如:
LDMFD SP!, {PC}∧问题解答:理解了ARM异常处理的过程以后,Realview MDK中__irq关键字的作用就容易理 解了。下面的函数为一个中断处理函数,其前面加了__irq关键字。 __irq void pwm0_irq_handler(void) { //Deassert PWM0 interrupt signal unsigned int i=AT91F_PWMC_GetInterruptStatus(AT91C_BASE_PWMC); // Clear the LED's On the Board we must apply a "1" to turn off LEDs AT91F_PIO_SetOutput(AT91C_BASE_PIOA, led_mask[0]); AT91F_PWMC_StopChannel(AT91C_BASE_PWMC,AT91C_PWMC_CHID1); AT91F_AIC_ClearIt(AT91C_BASE_AIC,AT91C_ID_PWMC); AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC); } 当编译器器编译这个函数时,除了保存ATPCS规则规定的寄存器以外,还保存了CPSR及PC的值。在函数的返回时,还自动添加了SUBS PC, LR, #4和从SPSR寄存器恢复CPSR寄存器值的指令。用这种方式处理以后,中断处理函数可以和普通函数一样的使用。 注意:中断处理都是在ARM模式下进行的,当源程序欲编译成Thumb指令时,这时,用__irq关键字修饰的函数仍然会被编译成ARM指令。
以上就是关于ARM的开发软件,哪个比较好全部的内容,包括:ARM的开发软件,哪个比较好、linux源码中ARM外设寄存器地址在哪定义、您好!我遇到和你这个“求助:用ARM J-Link调试遇到的问题”同样的问题,这个问题您解决了吗向您求助!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)