ARM裸板调试技术

发布者:心灵飞翔最新更新时间:2016-06-22 来源: eefocus关键字:ARM  裸板  调试技术 手机看文章 扫描二维码
随时随地手机看文章
我所说的ARM裸板调试是指ARM的PCB板制作完后,贴片回来的板子,不但没有任何程序,上电都是第一次。之所以写一篇blog,是因为最近调试了一块ARM板,基于S3C6410的,但是我们把原来的M-DDR DRAM和Nandflash全部都换掉了,硬件做了不小的改动。以前也做过类似的裸板调试,从ARM7到ARM9,再到现在的ARM11。今天就来写一篇ARM裸板调试的文章。

 

如我前面所说,刚拿到ARM裸板的时候,首先就是要上电。不过上电之前,最好测一下电源和地是否短路。然后就可以上电了,我一般采用稳压电源,这样可以看到电流的大小,如果电流太大,说明硬件可能有问题,用手摸摸板子上的芯片,看看是否烫手,查一下各个电源模块的供电电压是否正常。如果ARM板正常,就可以开始了。下面根据我个人经验,介绍调试步骤和可能遇到的问题:

 

1. 连接仿真器,读写寄存器

将硬件仿真器插到ARM板的JTAG口上,然后连接PC,现在的ARM仿真器好像都是通过USB和PC相连了。连接好后,就给板子上电,然后打开PC端的调试软件,我在这里用的是ARM11的仿真器,调试软件用AXD。如果AXD识别出ARM处理器表示连接成功,如果没识别出来就是有问题了。

(1) 确认ARM处理器的所有供电是否正确

(2) 确认ARM处理器的RESET管脚

(3) 确认ARM处理器的晶振是否震动

(4) 确认JTAG接口是否正确

如果上面这4条都正常,仿真器就应该可以找到ARM。

 

2. 通过脚本初始化ARM处理器及DRAM

由于是裸板,所以ARM上电以后没有做过任何的初始化。一般会通过执行一个脚本来对ARM做一个基本的初始化。脚本一般就是一个txt文件,例如:

setmem 0x36001004 0x4      32

setmem 0x36001010 0x40d  32

setmem 0x36001014 0x6      32

setmem 0x36001018 0x3      32

setmem 0x3600101c 0xf       32

setmem 0x36001020 0xf       32

setmem 0x36001024 0xf       32

mem 0x36001000 +1            32

mem 0x36001004 +1            32

mem 0x36001008 +1            32

mem 0x3600100c +1            32

….

上面的脚本命令是用于AXD软件的,其中“setmem”命令表示设置某个值到某个地址上,而“mem”命令表示从某个地址读一个值并打印出来。通过这两条命令,可以设置ARM内部的寄存器,也可以读出寄存器的值。脚本的作用主要是对ARM做初始化,一般包括关闭Interrupt和watchdog,配置clock,配置GPIO,配置DRAM控制器。

如何在AXD中运行脚本呢?首先在AXD菜单中选择”System Views”,然后选择”Command Line Interface”,会弹出一个窗口,在窗口中输入如下命令:

ob c:/init.txt

 

该命令的意思是运行C盘根目录下的init.txt中的脚本命令。如图:

 

脚本运行完成以后,板子上的ARM和DRAM就应该已经被初始化好了。这时候可以做读写Memory的测试,在菜单中选择”Process Views”,然后选择”Memory”,输入DRAM的地址,然后修改一些地址上面的值,被改变后的值会变成红色,如果可以修改,表示DRAM应该工作正常了,这里给一张截图:

 

 

3. 通过AXD下载程序到DRAM中运行


接下来就是下载程序到DRAM中运行了,主要目的是通过该程序来烧录bootloader。现在的ARM处理器都很强大,支持多种启动模式。根据不同的启动模式,要将bootloader烧到不同的介质当中。在AXD菜单中选择”File”,然后选择”Load Memory from File…”,会弹出一个窗口,如下:


 

如图要在”Address”输入下载的地址,这个地址就是Loader_RAM.bin的运行地址。下载成功以后,打开串口,然后在AXD的”Command Line Interface”中输入命令”setpc 0x50000000”,将PC指针指到0x50000000地址上,然后输入命令”go”开始运行。

 

4. 烧录bootloader,启动ARM板

被下载的程序运行以后,就可以通过该程序将bootloader烧录到Nandflash,NORflash或者SD卡中,具体取决于板子所支持的启动模式。这个程序可以通过串口下载bootloader。还有一种方法就是在AXD中暂停程序运行,然后通过仿真器下载bootloader到DRAM中,然后再在AXD中恢复程序运行,通过最开始下载的程序将下载的bootloader烧到flash或者SD卡当中。

烧录成功以后,关电,拔掉仿真器的JTAG,重新上电,这个时候ARM板中的bootloader就可以运行了。

 

bootloader运行后,工作就容易了。现在的bootloader都很强大,Linux有uboot,WinCE有Eboot,都能支持烧录,下载等功能。一般如果是买的开发板,都会提供烧录工具。不过在更换了DRAM和Nandflash以后,烧录工具可能也需要重新调试了。而且使用的bootloader也需要做改动。

关键字:ARM  裸板  调试技术 引用地址:ARM裸板调试技术

上一篇:浅谈ARM裸板调试6410
下一篇:arm 裸板程序编译过程

推荐阅读最新更新时间:2024-03-16 14:58

ARM设计的高速数据采集远程监控系统技术
随着信息化的不断发展,在工业自动化、电力设备、通信管理、智能终端、智能小区等领域,对数据采集的实时性、可靠性的要求也不断地提高。以往传统的单片机加采集卡的数据采集装置已经不能满足人们使用的要求。随着采集卡的采集频率不断地提升,其所属平台的工作频率也应跟上时代的步伐。同时,在某些情况下,装置的操控人员不可能到工作现场去执行,所以有必要对采集装置进行远程监察和控制。在各种设备的通信方式中,由于以太网具有速度快、通用性好、扩展性强等优点,已13渐成为设备之间进行通信的主要方式。本文提出了基于ARM的高速数据采集装置远程监控系统,在实现对数据的高速采集的同时,能保证数据的可靠性和实时性,并对各帧数据嵌入时间标志为后续数据处理做好准备,最后
[嵌入式]
arm-linux-ld 命令详解
本文转自《S3C2410完全开发手册》 在开始后续实验之前,我们得了解一下arm-linux-ld连接命令的使用。在上述实验中,我们一直使用类似如下的命令进行连接: arm-linux-ld -Ttext 0x00000000 crt0.o led_on_c.o -o led_on_c_tmp.o 我们看看它是什么意思: -o选项设置输出文件的名字为led_on_c_tmp.o; “--Ttext 0x00000000”设置代码段的起始地址为0x00000000; 这条指令的作用就是将crt0.o和led_on_c.o连接成led_on_c_mp.o可执行文件,此可执行文件的代码段起始地址为0x00000000(即从这里开始执行)
[单片机]
ARM开发(2)基于STM32的蜂鸣器
一 蜂鸣器原理: 1.1 本实验实现1个蜂鸣器间隔1S鸣叫。 1.2 实验思路:根据电路图原理,给蜂鸣器相关引脚赋予高低电平,实现电路的导通,使蜂鸣器实现鸣叫或不鸣。 1.3 开发环境 : MDK5 库函数版本开发 JLINK仿真 二 实验步骤: 2.1 beep.h代码: #ifndef __BEEP_H #define __BEEP_H #include “sys.h” #define BEEP PBout(10) // BEEP,蜂鸣器接口 void BEEP_Init(void); //初始化 #endif 2.2 beep.c代码(IO配置): #include “beep.h” void
[单片机]
Intel VS ARM:未来的移动之战
高通、三星、联发科和NVIDIA都是目前最大的移动芯片制造商,他们的市场份额综合占到了所有智能手机和平板机芯片的绝大多数。与此同时,他们还有一个共同之处,那就是旗下的CPU硬件都是基于ARM的Cortex-A系列所打造的。Intel也许依然是PC和Windows市场的主宰,但这家公司在移动市场上的境况就要严峻得多了——只有一小部分不那么成功的Windows平板和手机使用了他们的芯片产品。   ARM是如何占领整个智能手机市场的?Intel又能做什么才能挑战ARM的霸主地位呢?   Intel需要一场胜利   Intel在移动市场上的位置比较靠后,这基本上是肯定的,几乎每一位市场分析师都认为这家科技巨头选择的方向是错误的。
[模拟电子]
Intel VS <font color='red'>ARM</font>:未来的移动之战
ARM基础知识教程(三):ARM中异常中断的种类
**复位(RESET) ** 当处理器复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行。复位异常中断通常用在下面几种情况下:系统加电时;系统复位时;跳转到复位中断向量处执行成为软复位。 **未定义的指令** 当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义的指令异常中断,可以通过改异常中断机制仿真浮点向量运算。 **软件中断** 这是一个由用户定义的中断指令。可用于用户模式下的程序调用特权操作指令。在实时操作系统中可以通过该机制西线系统功能调用。 **指令与取终止(PrefechAbort) ** 如果处理器预取的指令的地址不存在,或者该地址不允许当前指令访问,当被预取的指令执行
[单片机]
乖乖,48核ARM服务器芯片要让英特尔肝颤?
在今年六月,芯片供应商Cavium公司首次发布了其ThunderX系统级芯片(SoC)产品。而在近日,Cavium公司宣布,ThunderX芯片目前已经正式发售,其中包括了一个业界第一款48核ARMv8处理器。 四款ThunderX产品包括:针对云计算工作负载的ThunderX_CP、用于云计算存储应用的ThunderX_ST、应用于网络应用程序的ThunderX_NT以及确保计算安全的ThunderX_SC。 Cavium公司数据中心处理器集团产品营销总监Rishi Chugh表示:“ThunderX的四款产品都采用了48核SKU,其中,所有针对96核服务器的双插槽配置都强制为每一个插槽SKU配备了一个48核组件。”
[单片机]
ARM微处理器的指令集概述(四)——MOV和LDR的区别
一 先让我们看一段汇编代码 LDR R0,=0x56000010 #R0 is set to be register GPBCON and is used to select pin function for Port B #in,out special function and others MOV R1,#0x00004000 STR R1, #pin GPB7 is set to be output port 以上三条汇编语句的功能是将数值0x00004000存储到以0x56000010为地址的存储单元中。 其反汇编代码如下 0: e59f0044 ldr r0, ; 0x4c 4:
[单片机]
IAR推出新版IAR Embedded Workbench for Arm功能安全版,该版本配备经过认证的静态代码分析功能
IAR推出新版IAR Embedded Workbench for Arm功能安全版,该版本配备经过认证的静态代码分析功能 瑞典乌普萨拉,2024年2月20日 – 全球领先的嵌入式系统开发软件解决方案供应商IAR宣布 :推出其旗舰产品IAR Embedded Workbench for Arm功能安全版的最新版本9.50.3。此次发布进一步加强了IAR支持开发人员创建安全、可靠和符合标准的嵌入式应用程序的承诺,涵盖了汽车、医疗设备、工业自动化和消费电子等多个行业。该版本中最重要的新功能是经过认证的C-STAT,这是专为安全关键应用程序设计的静态代码分析工具。 IAR Embedded Workbench for Ar
[嵌入式]
IAR推出新版IAR Embedded Workbench for <font color='red'>Arm</font>功能安全版,该版本配备经过认证的静态代码分析功能
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved