openocd 命令行烧写ARM裸机程序 problems and solutions

发布者:BlissfulBliss最新更新时间:2016-07-26 来源: eefocus关键字:openocd  命令行  烧写ARM  裸机程序 手机看文章 扫描二维码
随时随地手机看文章
以前是用RVDS 的IDE来烧写调试ARM程序的,不过RVDS虽然是集成化的调试工具调试起来方便,但是有的时候只知其一,不知其二,只知道按部就班的来点击按钮,忽略了一些本质性的东西。而且RVDS还有一个不好的地方是它只能在windows平台下运行,不支持Linux OS。为了便于学习Linux,使用Openocd会是个不错的选择,可以学习gnu 汇编,Makefile编写,工具链命令行使用。   如果这些命令搞熟悉了,你还可以利用Qt 来做个自己的图形化界面烧写调试工具。(不过这只是个壳子而已,精髓在于openocd ,所以如果有时间你还可以分析一下Openocd的源码,因为它是开源的,开源的东西就是好,它可以满足你的好奇心,虽然有些时候不是我们在玩代码而是代码在玩我们,(*^__^*) )。好了,废话不多说了。现列出我碰到的一些问题以及其解决办法,与诸位共享。
目录:
1.前提条件
2.执行的命令
3.执行命令时会遇到的问题
详细: details 
1.前提条件
前提是你安装好了openocd .  并且Openocd的配置文件也准备好。运行起。
2.命令搞起 :
2.1 运行openocd.cfg配置文件.   
首先我修改了samsung_s3c6410.cfg文件
在samsung_s3c6410.cfg中添加了如下语句
set _NANDNAME $_CHIPNAME.nand
nand device $_NANDNAME s3c6410 $_TARGETNAME

#openocd -f jlink.cfg -f samsung_s3c6410.cfg  

运行如下: 
openocd 命令行烧写ARM裸机程序   problems and solutions - Melchior - Melchiors Home
以为openocd不支持s3c6410的nand擦写功能。于是看了/board/mini6410.cfg中有段内容如下: 
 
targets
nand device $_CHIPNAME.flash s3c6400 $_CHIPNAME.cpu
明明是6410,为什么要写成6400呢 ,不管了 ,于是试着修改samsung_s3c6410.cfg文件为
set _NANDNAME $_CHIPNAME.nand
nand device $_NANDNAME s3c6400 $_TARGETNAME
 
结果就ok 了  。  
2.2 上面一步就完成jlink识别ARM的工作了。而且建立了telnet 服务器端口号 。现在我们要通过telnet与之建立通信 ,好能来使用openocd   
#telnet localhost 4444(telnet端口号设置为4444)
openocd 命令行烧写ARM裸机程序   problems and solutions - Melchior - Melchiors Home

> halt

target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x000001d3 pc: 0x00000030

> nand probe 0 

NAND flash device 'K9GAG08 2GB NAND 3.3V x8 MLC 2b/cell (Samsung)' found

> nand erase 0 0 0x100000(注:这个值应该是板子nand flash块的整数倍,0x100000为1M空间,足矣)

s3c2440_read_block_data: reading data: 0x8b94260, 0xbfe53d7a, 6
erased blocks 0 to 1 on NAND flash device #0 'K9GAG08 2GB NAND 3.3V x8 MLC 2b/cell'

> nand write 0 led.bin 0 

couldn't open led.bin
failed to open 'led.bin' for read access
in procedure 'nand'
 
solution: 无法读取led.bin,那我们就改为绝对路径来试试  : 
> nand write 0 /home/melchior/arm-work/1th_led/led.bin 0 
> reset 
JTAG tap: s3c6410.etb tap/device found: 0x2b900f0f (mfg: 0x787, part: 0xb900, ver: 0x2)
JTAG tap: s3c6410.cpu tap/device found: 0x07b76f0f (mfg: 0x787, part: 0x7b76, ver: 0x0)
found ARM1176
 
这样就ok了,ARM板子上的led就亮起来了 

关键字:openocd  命令行  烧写ARM  裸机程序 引用地址:openocd 命令行烧写ARM裸机程序 problems and solutions

上一篇:ATPCS ARM体系中汇编语言和c语言之间参数传递规则
下一篇:ubuntu下安装openocd ,利用Openocd + Jlink 调试ARM

推荐阅读最新更新时间:2024-03-16 15:01

[ARM裸机程序][4]ARM寄存器详解
ARM寄存器 ARM处理器总共有37个寄存器其可以分为以下两类: 通用寄存器(31个) 不分组寄存器(R0—R7) 分组寄存器(R8—R14) PC指针(R15) 状态寄存器(6个) CPSR(1个) SPSR(5个) ARM寄存器详解 不分组寄存器(R0—R7) 在所有的运行模式下都使用同一个物理寄存器,它们未被系统用作特殊的用途。 分组寄存器(R8—R14) 对于R8~R12,当使用FIQ(快速中断模式)时访问寄存器R8_fiq~R12_fiq,当使用除FIQ模式以外的其他模式时,访问寄存器R8~R12。 对于R13,R14来说,每个寄存器对应6个不同的物理寄存器,其中一个是用户模式与系统
[单片机]
[<font color='red'>ARM</font><font color='red'>裸机</font><font color='red'>程序</font>][4]<font color='red'>ARM</font>寄存器详解
c语言多文件 6410 led裸机程序
// led4 gpk7 // led3 gpk6 // led2 gpk5 // led1 gpk4 0 ,light //u32 rGPIOKCON0; //0x7f008800 // u32 rGPIOKCON1; //0x7f008804 // u32 rGPIOKDAT; //0x7f008808 //u32 rGPIOKPUD; //0x7f00880c #include def.h #include gpio.h #define led1on ~(1 4) #define led2on ~(1 5) #define led3on ~(1 6) #define led4on ~(1
[单片机]
uboot启动后在内存中运行裸机程序hello
如题,实现过程中发现3额问题,先写下来,待解答: 1、uboot启动后再dnw上打印许多信息,我想改变其中的打印信息或加上自己的打印信息以证明程序运行到何处。修改完后重新编译uboot.bin。 在DNW下执行dnw 50008000 USB下载uboot.bin到内存50008000处, go 50008000,从内存50008000处运行我刚下载的程序,发现我修改的内容并未显示。 重新执行dnw 50008000,nand erase 0 100000,nand write.uboot 50008000 0 100000,后从nand直接启动,发现我修改的内容被打印出来了。 总结:可能的原因:1、程序下载到50008000
[单片机]
智能命令行设计及其在SOPC系统中的应用
  命令行是计算机系统中最重要的组件之一。它可以帮助开发人员更方便的控制系统。在调试过程中,可以让开发人员随时变更测试方法。   FPGA的成本越来越低,FPGA上的嵌入式系统(SOPC)也应用得越来越广泛。但是相对其他成熟的计算机体系,SOPC系统现在还没有命令行。为了更好的推广SOPC应用,笔者开发了一个智能的命令行模块,可以调用系统中的任意函数,降低了开发人员的使用难度。在最小配置时,它只有大约1000行代码,占用14KB存储容量,可以放在完全由FPGA片内资源构成的计算机系统中。它的结构也具有很好的扩展性,开发人员可以结合自己的需求,轻松添加命令,丰富它的特性。    命令行框架设计   1 总体设计   好的命令
[嵌入式]
2440裸机程序——串口收发数据
工程当中需要添加 S3C2440A.s ;2440lib.c;main.c;uart0.c 这四个程序。 主程序: /********************************************************************************************* * File name: main.c * Author: ZXL * Description: 在PC机通过串口0向终端发送一行字符(以回车键结束),开发板接收串口数据后,保存在数组中,再传回到PC端,通过终端回显。 * History: 2013.5.8 *******************************
[单片机]
2440裸机程序——触摸屏测试程序
工程当中需要添加 S3C2440A.s ;2440lib.c;main.c;touchpanel.c这四个程序。 主程序: /********************************************************************************************* * File name: main.c * Author: ZXL * Description: 通过中断方式,返回触摸屏上某触点的X,Y坐标,并用串口打印出来 * History: 2013.5.10 *******************************************************
[单片机]
S3C2440开发板裸机程序系列09—PWM控制舵机
1. Timer1的PWM控制舵机 S3C2440的Timer0、Timer1、Timer2和Timer3具有PWM功能,以前的blog已经叙述过,详见: S3C2440开发板裸机程序系列05—定时器PWM TQ2440开发板的Timer0的TOUT0输出连接了Beep,所以,这次利用Timer1的TOUT1输出来连接舵机的控制信号。 舵机的内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。通过调整控制信号的高电平宽度,即可实现舵机不同转角的控制。 舵机控制原理详见:舵机的原理和控制 程序思路很简单: 设置GPB1为TOUT1的输出格
[单片机]
S3C2440开发板<font color='red'>裸机</font><font color='red'>程序</font>系列09—PWM控制舵机
TX2440裸机程序-LCD
一、LCD简介 LCD-liquid crystal display 的简称,液晶显示器按驱动方式分为1.静态驱动、2.简单矩阵驱动及3.主动矩阵驱动。 其中,简单矩阵又可分为1.扭转向列型(TN)和超转向列型(STN)两种,而主动矩阵驱动则以TFT为主。 TN与STN都采用场电压驱动方式,如果显示尺寸加大,中心部分对电机变化的反应时间就会变长,显示器的速度跟不上。为解决这个问题,主动矩阵驱动TFT被提出,他通过晶体管显示信号开启过关闭液晶分子的电压,从而避免了显示器对电场效应的依靠。 1.1LCD常见参数: 像素 :LCD屏上所能控制最小单位 分辨率:LCD屏像素总数,一般采用“横向像素点x纵向像素点”,如3
[单片机]
TX2440<font color='red'>裸机</font><font color='red'>程序</font>-LCD
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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