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

发布者:VS821001最新更新时间:2018-10-12 来源: 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

上一篇:OK6410开发板uboot烧写
下一篇:Tiny210和Tiny4412裸板程序烧写比较

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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