﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-lgd5219</title><link>http://www.cnitblog.com/lgd5219/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 04 May 2026 19:27:25 GMT</lastBuildDate><pubDate>Mon, 04 May 2026 19:27:25 GMT</pubDate><ttl>60</ttl><item><title>三星实验板操作问题</title><link>http://www.cnitblog.com/lgd5219/archive/2008/06/10/45317.html</link><dc:creator>爱浪漫的</dc:creator><author>爱浪漫的</author><pubDate>Tue, 10 Jun 2008 06:10:00 GMT</pubDate><guid>http://www.cnitblog.com/lgd5219/archive/2008/06/10/45317.html</guid><wfw:comment>http://www.cnitblog.com/lgd5219/comments/45317.html</wfw:comment><comments>http://www.cnitblog.com/lgd5219/archive/2008/06/10/45317.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lgd5219/comments/commentRss/45317.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lgd5219/services/trackbacks/45317.html</trackback:ping><description><![CDATA[<table class=tf width="98%" border=0>
    <tbody>
        <tr>
            <td height=30><img src="http://www.embedchina.cn/images/icon/0.gif" align=absMiddle border=0>&nbsp;<font class=red_3><strong>三星实验板操作问答</strong></font></td>
        </tr>
        <tr>
            <td class=bw><font class=htd>拿到光盘，首先备份！使用前先阅读开发板使用说明文档，说明文档打开乱<br>码的请使用word打开。<br><span style="FONT-SIZE: 10pt">wzx<br>add:</span><a href="http://www.embedchina.cn/forum_view.asp?forum_id=18&amp;view_id=219"><span style="FONT-SIZE: 10pt">http://www.embedchina.cn/forum_view.asp?forum_id=18&amp;view_id=219</span></a><br>&nbsp;<br>初学者的使用误区：<br>大多数初学者都有这个疑问，开发板是否一定要使用操作系统，我这里要告诉大家的是，ARM开发板完全可以当作单片机一样使用，可<br>以编写自己的裸机程序，完全可以不使用操作系统，操作系统是在你需要使用它的时候使用，例如涉及到多任务。就象计算机你可以安<br>装windows，也可以安装dos一样，计算机一样能启动，但实现的功能不一样而已。<br>编写裸机程序，只需在ADS下编译即可，要使用uclinux，则需要在linux下编译。<br>&nbsp;<br>一，硬件连接<br>1，S3C4510套件使用5V/1A直流供电，S3C44B0套件使用9V/1A直流供电,千万要注意哦<br>有些兄弟不知道在哪购买，其实一般的电子市场和电脑市场都会有的。就说用在电路板上的直流电源，他们卖的人一般都知道的。<br><br>2，并口线与串口线都使用标准的(一头公，一头母），串口为9针的简单连接（2－2，3－3，5－5），并口为25针的。<br>3，红色小板上的两个头的用法<br>标有wiggler的那个头是下载用的（flashpgm)<br><br>标有sdt_25的那个头是sdt调试用的。使用ADS＋调试代理也可使用wiggler,在调试代理启动时选择wiggler即可。。<br><br>IDC20的彩色排线接开发板，另一头通过并口线接PC机。<br><br>4，网口的连接<br>开发板本身可以看作一台计算机，所以连接HUB或交换机时使用普通网线，连接本机时使用交叉网线。<br><br>5，插上简易JTAG，板子启动不正常的问题。<br>小板是经过我们改进的，调试起来会很好用，但插上后板子有时启动会不正常，大家不要担心，调试好的程序下载到板<br><br>子，拿掉简易JTAG即可正常启动，主要时考虑在正常使用时不会连上JTAG.<br><br>二，软件调试<br>1,&nbsp;提供的DEMO程序的使用问题<br>因为会有路径不兼容的的问题，使用的时候有三种办法：<br><br>a、在ADS里重建工程，把工程里原来包含的文件导入，重新编译即可。<br><br>b、删除目录里包含的*.o和*.axf文件，重新编译即可。<br><br>2，安装ADS时,系统会提示安装license,选择本地license,然后把crack93里的license文件导入即可.<br>3，flashPgm的安装和使用<br>请确定并口工作于EPP模式，如果不是，请在开机后进入COMS设置，把并口设为EPP模式。&nbsp;<br><br>安装后要执行破解（安装目录里象火一样的文件），破解flashPgm.exe后，第一次启动要输入序列号，随便输入即可，但一定要输<br><br>入，否则启动后program选项会不能用。<br><br>启动后导入本套件提供的S3C4510.OCD或S3C44B0.OCD即可完成配置，直接点击program。支持的文件包括*.axf,或按本网站介绍的<br><br>方法生成的*.hex文件。<br><br>特别注意：进入program界面后，应把下面的檫除选项选中。<br><br>4,调试代理安装使用方法<br>把光盘里的ARM调试代理目录下的ARMJtagDebugFinal.rar解压，点击安装驱动.exe.安装好驱动和OCX控件后，执行ARM7.EXE,<br><br>如果连接正常，应该可以检测到ARM7核。<br><br>并口连接PC,IDC20的彩色排线如果接的标有wiggler的那个头，则选择ARM7.EXE上的wiggler是应该可以检测到内核。<br><br>IDC20的彩色排线如果接的标有sdt_25的那个头，则选择ARM7.EXE上的sdt也应该可以检测到内核。调试时一定要选择SDT.<br><br>具体配置方法见：开板使用说明文档<br><br>特别注意：使用ADS进行调试时，ARM7.EXE不能关，这是服务程序，可以让他在后台工作。<br><br>5,uclinux下添加自己的应用和驱动的方法<br>添加自己的应用：<br>1.在/user/下建立目录，名为：charlcd，放入自己的程序，比如lcd.c,然后建立自己的makefile文件，如果不想建，可以把<br><br>user下的源程序中的某些程序，如果差不多，可以考过来，改改用就可以了，我的改动如下：<br><br>EXEC&nbsp;=lcd<br>OBJS&nbsp;=lcd.o<br>。。。。。。。。。其他可以不变&nbsp;<br><br>2.修改config/config.in，添加：<br><br>＃＃＃＃＃＃＃＃＃＃＃<br>mainmenu_option&nbsp;next_comment<br>comment&nbsp;'My&nbsp;New&nbsp;Application'<br>bool&nbsp;'lcd'&nbsp;CONFIG_USER_MYAPP_DEMO<br>comment&nbsp;'My&nbsp;New&nbsp;Application'<br>endmenu<br>###################<br><br>3.在user/Makefile中添加：<br><br><br>dir_$(CONFIG_USER_MYAPP_DEMO)&nbsp;+=charlcd<br><br>4.在user/charlcd下编译，先make，如果没有错误<br><br>5.make&nbsp;menuconfig<br><br><br>选择自己的应用<br><br>6.存盘，后再make&nbsp;dep<br><br>7.用arm-elf-gcc生成arm支持的执行文件：<br><br><br>arm-elf-gcc&nbsp;-Wall&nbsp;-elf2flt&nbsp;-mcpu=arm7tdmi&nbsp;lcd.c&nbsp;-lc&nbsp;-o&nbsp;lcd<br><br>8.make<br><br>9.下载<br><br>10.在终端的控制台中<br>》cd&nbsp;bin<br>》lcd<br>－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br><br>记住：每次make&nbsp;dep&nbsp;,都要make两次才能有效。<br><br><br>添加设备驱动的完整过程&nbsp;<br>下面以添加一个字符设备为例,说明添加设备驱动的过程.块设备与网络设备可以比照处理.&nbsp;<br><br><br>1.原文件放在&nbsp;linux-2.4.x/driver/char/&nbsp;本例中,名为xyz.c&nbsp;<br><br>2.设备驱动原文件必须包括这样的一个函数:&nbsp;<br>void&nbsp;xyz_init(void){register(254,&nbsp;'xyz',&nbsp;&amp;xyz_fops)}&nbsp;这个函数完成注册.在linux-2.4.x/driver/mem.c&nbsp;将会调用它.&nbsp;<br>这个函数也可以写成:&nbsp;<br>void&nbsp;__init&nbsp;xyz_init(void){register(254,&nbsp;'xyz',&nbsp;&amp;xyz_fops)}&nbsp;这样不必须在&nbsp;linux-2.4.x/driver/mem.c&nbsp;调用它&nbsp;<br><br>3.修改&nbsp;linux-2.4.x/driver/char/Makefile&nbsp;在适当位置添加一行:&nbsp;<br>obj_$(CONFIG_XYZ)&nbsp;+=&nbsp;xyz.o&nbsp;<br><br>4.修改linux-2.4.x/driver/char/Config.in,&nbsp;添加一行:&nbsp;<br>bool&nbsp;'xyz&nbsp;hahahaha'&nbsp;CONFIG_XYZ&nbsp;<br>便于在&nbsp;make&nbsp;menuconfig&nbsp;时选择&nbsp;<br><br>5.修改linux-2.4.x/driver/char/mem.c&nbsp;<br>在适当位置(你去找就会发现,在文件头部)添加:&nbsp;<br>#ifdef&nbsp;CONFIG_XYZ&nbsp;<br>extern&nbsp;void&nbsp;xyz_init(void);&nbsp;<br>#endif&nbsp;<br>在chr_dev_init()函数添加:&nbsp;<br>#ifdef&nbsp;CONFIG_XYZ&nbsp;<br>xyz_init();&nbsp;<br>#endif&nbsp;<br>6.&nbsp;修改vendor/Samsung/4510b/Makefile&nbsp;,建立设备节点;&nbsp;<br>在12---35行间,DEVICE&nbsp;部分添加&nbsp;如下内容&nbsp;<br>xzy,c,254,0&nbsp;<br><br>7.make&nbsp;menuconfig&nbsp;选中&nbsp;xyz&nbsp;hahahaha,&nbsp;<br>编译,下载;启动后你会看到&nbsp;/proc/devices&nbsp;中字符设备多了一项&nbsp;xyz&nbsp;254&nbsp;<br><br>&nbsp;<br><br>三，开发常见问题（由于使用的简易JTAG,所以在调试上肯定不会象仿真器那样稳定、顺畅，大家要有耐心）<br>1，JTAG连接不上的问题。<br>按照上面《调试代理安装使用方法》，检测ARM内核，如未能检测到，检查你的并口及连接，如内核检测正常，请严格按照使用文档的步骤仔细设置。<br><br>2，flashpgm编程下载的成功率太低的问题<br>对于有些计算机，如果使用flashpgm编程下载的成功率太低，可以把wiggler边上的那个reset跳<br><br>线短接。如果成功率高的话，就不用短接拉。<br><br>还有一个办法，不行时，断电，等30秒，重新加电，直接点击program,成功率80％<br><br>3，S3C4510开发板BIOS被损坏恢复办法：<br>a，下载本站提供的BinToS19.exe<br><br>b,&nbsp;在windows的命令行模式下，在bios.img所在目录下执行<br><br>BinToS19&nbsp;bios.img&nbsp;0&nbsp;bios.hex<br><br>c,将生成的bios.hex用套件提供的简易JTAG下载到板<br><br>4，使用套件提供的ADS下的DEMO程序下载bios.img时，别忘了把bios.img的属性中的只读去掉</font></td>
        </tr>
    </tbody>
</table>
<img src ="http://www.cnitblog.com/lgd5219/aggbug/45317.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lgd5219/" target="_blank">爱浪漫的</a> 2008-06-10 14:10 <a href="http://www.cnitblog.com/lgd5219/archive/2008/06/10/45317.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ARM JTAG调试常见问题 （供新手参考）</title><link>http://www.cnitblog.com/lgd5219/archive/2008/06/08/45146.html</link><dc:creator>爱浪漫的</dc:creator><author>爱浪漫的</author><pubDate>Sun, 08 Jun 2008 06:42:00 GMT</pubDate><guid>http://www.cnitblog.com/lgd5219/archive/2008/06/08/45146.html</guid><wfw:comment>http://www.cnitblog.com/lgd5219/comments/45146.html</wfw:comment><comments>http://www.cnitblog.com/lgd5219/archive/2008/06/08/45146.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lgd5219/comments/commentRss/45146.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lgd5219/services/trackbacks/45146.html</trackback:ping><description><![CDATA[<div class=postText>这篇文章总结了刚接触ARM的网友们的常见问题，希望对快速掌握ARM调试有帮助。<br>----from :twentyone <a href="http://forum.eepw.com.cn/forum/main?url=http%3A%2F%2Fbbs.edw.com.cn%2Fthread%2F125927%2F1"><span style="FONT-SIZE: 10pt"><font color=#cc9966>http://forum.eepw.com.cn/forum/main?url=http%3A%2F%2Fbbs.edw.com.cn%2Fthread%2F125927%2F1</font></span></a><br><br>1 - 检测不到目标系统<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 调试前，请把目标板连接好，然后用调试软件检测目标系统。如果检测不到目标系统，请做<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 以下的检查。<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; A - 有些芯片是可以加密的，加密后JTAG接口就自动被禁用掉了；<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; B - 确定你的连接是正确的；<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; C - 确定你使用的仿真器是被调试软件支持的<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; D - 对WIGGLER而言，因为没有固定的电路图，所以需要在软件里做相应的设置；<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; E - 对LPC2000系列而言，RTCK管脚一般是用来控制是否使能JTAG接口的，请查阅数据手册；<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; F - 如果你用的芯片比较特殊，例如STR91X，因为内部扫描链是串接的，请设置好TAP，以<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 让仿真器知道扫描链的长度；<br><br>2 - 程序下载不正确，程序跑飞<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 一般的用户，刚开始调试的时候，编译好程序，就直接点击调试。但结果发现调试根本没有<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 按照预期的进行。发生这种问题一个最常见的原因是程序根本没有正确下载到目标系统中去。<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 对SDRAM而言，上电后一般都是不可以使用的，需要进行相应的配置才可以使用。所以如果<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 是在SDRAM里进行调试，请先对SDRAM进行配置，或者确定SDRAM已经初始化好了。如果是内部<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SRAM，一般来说，可以直接使用。所以，做一般的测试，最简单的办法是使用片内SRAM。<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 在调试的时候，最好是自己通过内存观察窗口判断一下，程序是否是下载到期望的地址去了，<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 下载是否正确。以免出现调试跑飞的问题。<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>3 - 软件断点和硬件断点的区别和数量限制<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 所有的ARM7/ARM9芯片，内部有2个断点单元。断点单元可以用于设置硬件断点或是软件断点。<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 先说说硬件断点和软件断点的区别。硬件断点是通过监测地址来触发断点的。所以，硬件断<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 点可以设置在任何地方，不管是FLASH，ROM还是RAM，只要给定地址就可以了。而软件断点是<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 通过监测特定的指令来触发断点的。在某个地址设置软件断点的时候，仿真器会将这个地址<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 的数据/指令替换成一个特殊格式的指令。断点单元通过监测这个特殊格式的指令来触发断点。<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 因为需要执行替换操作，所以软件断点只能设置在RAM里面。如果断点单元设置成监测某个地<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 址，那一个断点单元只能监测一个地址，所以只能设置2个硬件断点。如果断点单元设置成监<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 测某个固定格式的指令，那一个断点单元可以支持数量没有限制的软件断点。因为设置软件<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 断点的时候只需要把要说着断点的位置的数据替换成被监测的固定格式的指令就可以了。这<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 就是为什么大家经常看到说支持2个硬件断点和数目不限的软件断点。但这里还是要提醒以下，<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 如果2个断点单元都用于硬件断点，那用户就不可以设置软件断点了。<br><br>4 - 在FLASH内进行调试<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 在FLASH进行调试，本质上来说，和在SDRAM/SRAM里调试是一样的。区别是，FLASH是只读的，<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 对FLASH进行写操作的时候，需要特别的命令。如果IDE支持直接将程序烧写到FLASH进行调试，<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 那调试就会和在RAM里差不多。如果IDE不支持自动下载，可以先通过烧写软件将要调试的程序<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 烧写到FLASH里面，然后在进行调试。在FLASH和RAM里面进行调试的另外一个区别在与可使用<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 的断点数量。因为FLASH是只读的，所以只能使用硬件断点，所以最多只能使用2个断点。很多<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 时候，单步运行也需要一个断点来实现，所以，用户只能使用一个断点。清楚了这点，碰到提<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 示说没有断点可以使用了，不能设置断点，或者不能单步运行的时候，就知道是怎么回事情了。<br><br>5 - 软件断点被覆盖<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 前面我们提到，软件断点是通过替换指令来实现的。这就存在一个可能，设置好的软件断点被<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 覆盖掉了。特别是自拷贝程序，仿真器在拷贝前在某个地址设置了一个软件断点。然后执行拷<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 操作，这样的结果是设置断点的位置的值由于自拷贝而发生了改变，由于新的值并不是被监测<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 的特殊指令，所以这个断点就会失效。造成在这个位置程序不能停止的情况。这样的情况相对<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 来说比较少，这里只是提醒一下，希望对碰到类似情况的朋友有帮助。<br><br>6 - 反汇编调试<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 在调试的时候，一般看的都是源文件，汇编或C语言。如果调试的时候发现运行与期望的不一<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 或是跑飞，可以看看反汇编，单不运行几步，然后通过观察寄存器和内存来判断每条指令的运<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 行是否正确。 </div>
<img src ="http://www.cnitblog.com/lgd5219/aggbug/45146.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lgd5219/" target="_blank">爱浪漫的</a> 2008-06-08 14:42 <a href="http://www.cnitblog.com/lgd5219/archive/2008/06/08/45146.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>