﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>P.Linux Laboratory &#187; 嵌入式</title>
	<atom:link href="http://www.penglixun.com/category/tech/embedded/feed" rel="self" type="application/rss+xml" />
	<link>http://www.penglixun.com</link>
	<description>MySQL DBA &#38; Linux SA</description>
	<lastBuildDate>Sun, 22 Jan 2012 16:34:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>BlackBerry 8700刷机流程</title>
		<link>http://www.penglixun.com/tech/embedded/blackberry_8700_flush_rom.html</link>
		<comments>http://www.penglixun.com/tech/embedded/blackberry_8700_flush_rom.html#comments</comments>
		<pubDate>Sun, 14 Mar 2010 10:53:34 +0000</pubDate>
		<dc:creator>P.Linux</dc:creator>
				<category><![CDATA[嵌入式]]></category>
		<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[黑莓]]></category>

		<guid isPermaLink="false">http://www.penglixun.com/?p=1058</guid>
		<description><![CDATA[本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/tech/embedded/blackberry_8700_flush_rom.html 昨天因为BlackBerry摔白屏了，以... ]]></description>
			<content:encoded><![CDATA[<p><span style="color: #888888;">本文内容遵从<a href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh" target="_blank">CC版权协议</a>, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明</br>网址: http://www.penglixun.com/tech/embedded/blackberry_8700_flush_rom.html </p>
<p></span>昨天因为BlackBerry摔白屏了，以为要刷机，结果应该是显示屏排线松了，猛敲一阵自己好了，不过刷机过程还是折腾了好久，记录一下。</p>
<p>1. 首先需要一个WIPE工具，把黑莓连上电脑，不要开桌面管理器，然后点击WIPE.bat就会把机器清空，然后就可以刷机了。<br />
Note: There is a file embedded within this post, please visit this post to download the file.<br />
2. 安装桌面管理器，我装的是最新版5.1：<a href="http://cn.blackberry.com/services/desktop/">下载地址</a>。<br />
3. 下载需要的ROM版本：<a href="http://www.smartone-vodafone.com/jsp/business/mobile_email/blackberry/tchinese/software_download.jsp">下载地址</a><br />
4. 安装ROM，安装的时候不要打开桌面管理器。<br />
5. 打开桌面管理器：选项&#8211;>连接选项，选择正确的接口，都能显示出BlackBerry XXXX<br />
6. 删除C:\Program Files\Common Files\Research In Motion\AppLoader\Vensor.xml<br />
7. 点击应用程序加载器&#8211;>更新软件，选择需要的版本，下一步就OK。<br />
8. 安装东亚版的要注意：必须选择“笔画输入法”和“繁体支持”，这样才会有中文，否则中文是框框。<br />
9. 刷机，等待完成~</p><h2  class="related_post_title">随机显示文章</h2><ul class="related_post"><li>2009年11月3日 -- <a href="http://www.penglixun.com/tech/program/frist_contribution_for_open_source.html" title="第一次为开源社区贡献代码">第一次为开源社区贡献代码</a> (0)</li><li>2011年06月2日 -- <a href="http://www.penglixun.com/tech/database/think_about_mysql_create_and_optimize_index.html" title="MySQL中创建及优化索引组织结构的思路">MySQL中创建及优化索引组织结构的思路</a> (0)</li><li>2009年01月11日 -- <a href="http://www.penglixun.com/tech/ai/mechanization_of_the_simple_geometric_proof_of_further_study.html" title="[论文]对简易几何机械化证明的进一步研究">[论文]对简易几何机械化证明的进一步研究</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.penglixun.com/tech/embedded/blackberry_8700_flush_rom.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>qtopia-opensource-4.3.2在YC2440/utu2440开发版的移植</title>
		<link>http://www.penglixun.com/tech/embedded/tran_qtopia_in_yc2440_utu2440.html</link>
		<comments>http://www.penglixun.com/tech/embedded/tran_qtopia_in_yc2440_utu2440.html#comments</comments>
		<pubDate>Wed, 14 Oct 2009 04:53:30 +0000</pubDate>
		<dc:creator>P.Linux</dc:creator>
				<category><![CDATA[嵌入式]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Qtopia]]></category>
		<category><![CDATA[utu2440]]></category>
		<category><![CDATA[YC2440]]></category>

		<guid isPermaLink="false">http://www.penglixun.com/PLX/Blog/?p=418</guid>
		<description><![CDATA[本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/tech/embedded/tran_qtopia_in_yc2440_utu2440.html 当年做移动通讯自组织网络... ]]></description>
			<content:encoded><![CDATA[<p><span style="color: #888888;">本文内容遵从<a href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh" target="_blank">CC版权协议</a>, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明</br>网址: http://www.penglixun.com/tech/embedded/tran_qtopia_in_yc2440_utu2440.html </p>
<p></span>当年做移动通讯自组织网络的时候移植系统的文档。</p>
<p>Qtopia的版本的确是相当的混乱，去官网的<acronym title="File Transfer Protocol">FTP</acronym>上看看你就知道有多乱了，无数的版本，若不提前了解一下各个版本的信息，单从文件名是根本无法分辨出哪个才是需要移植的源码包。</p>
<p>经过研究后简单总结如下：qtopia-opensorce是整个qtopia的一个解决方案，包括手机和<acronym title="Personal Digital Assistant">PDA</acronym>两个界面，并且还有诸多上层的应用程序，编译安装后应该可以直接使用。而qtopia-core是qtopia-opensource的一个子集，如其名字只包含核心库文件，相当于一个qtopia环境而已。</p>
<p>所以在这里，我们选择的包是：qtopia-opensource-src-4.3.2.tar.gz<br />
<span id="more-418"></span><br />
 </p>
<p>在上一个正式版4.2.4中，ubuntu下编译时会出现libxext包不兼容的问题，经过对配置命令所输出信息的研究，猜想是4.2.4版本不支持64位系统导致的软件包不兼容，所以是i386架构的朋友可以试试看，装有其他Linux x86_64发行版的朋友也可以试试，这仅仅是笔者猜想，或许还有其他问题，或者根本就是与ubuntu不兼容……</p>
<p> </p>
<p>一、编译环境的准备</p>
<p>qtopia的编译是一个相当复杂也相当漫长的过程，从网上各大论坛所搜集的qtopia经典编译错误就可见一斑，所以对编译环境的精心准备是确保整个过程顺利的重要部分。</p>
<p>先介绍一下我的软硬件环境：</p>
<p>CPU: Intel Core Duo T7250(2.00GHz)</p>
<p>Chipset: Intel P965M</p>
<p>Memory: 3G DDR2</p>
<p>Graphic: Geforce 8400MG</p>
<p> </p>
<p>Linux: ubuntu 8.04</p>
<p>Architecture: x86_64</p>
<p>Kernel: 2.6.24-21-generic</p>
<p>Host GCC: gcc (GCC) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)</p>
<p>Target GCC: arm-linux-gcc (GCC) 3.4.1</p>
<p> </p>
<p>个人觉得这是大多数普通桌面Linux用户的选择，当然，对于编译和安装qtopia而言，也许并不是最好的。其中很多的莫名其妙问题和一些诡异的编译错误也许都可以在suse下轻松解决，毕竟一直以来suse对qt(qtopia)的支持都是很好的。</p>
<p>此外对于交叉编译器的选择也是一个问题，在这里笔者选择的是使用最为广泛的经典3.4.1版本，理由很简单：大部分嵌入式Linux内核使用的编译器都是3.4.1版本的，用同样版本的编译器编译qtopia可以达到更好的兼容性，并且该版本极容易在网上找到。当然你可以选择更新的4.2.1版本，虽然难找，但是碰到编译错误实在无奈的时候也可以拿它试试。虽然笔者手中也有4.2.1的编译器，但并没有实验，毕竟编译一个qtopia是一个巨大的时间开销（在笔者的机器上大概需要75分钟左右的编译时间），有兴趣的朋友可以试验一下4.2.1的编译器，呵呵。</p>
<p> </p>
<p>下面开始介绍一下具体的操作过程：</p>
<p>一、编译环境的配置</p>
<p>说明：</p>
<p>1、由于编译出来的qtopia大小很可能超过开发板的Flash大小，所以我们采用nfs方式进行开发和调试，之后再考虑精简。</p>
<p>2、为避免麻烦，以下操作一律在root下执行。</p>
<p> </p>
<p>1、设置环境变量，方便下文的描述和自己的使用：</p>
<p>#export QTOPIA_DEPOT_PATH=/project/work/qtopia/qtopia-opensource-4.3.2</p>
<p>#export QTOPIA_IMAGE=/project/work/nfs/qtopia</p>
<p>#export QTOPIA_RUN_ON_TARGET=/opt/qtopia</p>
<p>QTOPIA_DEPOT_PATH：主机上qtopia的源码包目录，即安装源。</p>
<p>QTOPIA_IMAGE：编译后生成的image存放的位置。</p>
<p>QTOPIA_RUN_ON_TARGET：qtopia在target板文件系统中的所在路径。以后使用NFS挂载的时候，该目录即为qtopia的根目录。</p>
<p> </p>
<p>2、加入宏定义，使得qtopia支持触摸屏：</p>
<p>vim $QTOPIA_DEPOT_PATH/qtopiacore/qconfig-qpe.h</p>
<p>然后在文件末尾添加宏定义:</p>
<p>#define QT_QWS_IPAQ</p>
<p>#define QT_QWS_IPAQ_RAW</p>
<p> </p>
<p>在笔者的utu2440开发板上，不定义这两个宏似乎也能够使用触摸屏，但无论怎么改内核，死活就是校不准触摸屏……</p>
<p> </p>
<p>3、修改时区信息的读取路径</p>
<p>#vim $QTOPIA_DEPOT_PATH/qtopiacore/qconfig-qpe.h</p>
<p>在文件末尾添加宏定义：</p>
<p>#define QTOPIA_ZONEINFO_PATH “/opt/qtopia/etc/zoneinfo/”</p>
<p>QTOPIA_ZONEINFO_PATH即时区文件所在的路径，因为默认qtopia会在/usr/share/zoneinfo寻找时区信息。</p>
<p>这里的路径一定要设置为$ATOPIA_RUN_ON_TARGET/etc/zoneinfo。</p>
<p>当然也可以不改使用其默认路径，但是还是建议改一下。</p>
<p> </p>
<p>4、安装libxtst-dev：</p>
<p>#apt-get install libxtst-dev</p>
<p>这个软件包在编译过程中会用到，若不安装会出错。</p>
<p> </p>
<p>5、修改编译器的.h文件：</p>
<p>由于3.4.1的编译器不支持qtopia4.3.2的一些特性，所以需要修改以下两文件，否则会出现编译错误：</p>
<p>#vim /usr/local/arm/3.4.1/arm-linux/include/linux/videodev2.h</p>
<p>#vim /usr/local/arm/3.4.1/arm-linux/sys-include/linux/videodev2.h</p>
<p>在俩文件的208行后添加：（俩文件是一样的）</p>
<p>/* see <a href="http://www.siliconimaging.com/RGB%20Bayer.htm">http://www.siliconimaging.com/RGB%20Bayer.htm</a> */</p>
<p>#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc(&#8216;B&#8217;,'A&#8217;,&#8217;8&#8242;,&#8217;1&#8242;) /* 8 BGBG.. GRGR.. */</p>
<p> </p>
<p>笔者曾经就该问题搜索过互联网的一些信息，有人说使用3.3.2版本的编译器可以正常编译通过，笔者猜想4.2.1的编译器也有可能能编译通过，但都未作尝试，下次有时间试验一下。</p>
<p> </p>
<p>6、生成Makefile</p>
<p>首先一定要确认上文所提到的环境变量设置正确，然后开始生成Makefile：</p>
<p>在$QTOPIA_DEPOT_PATH的上层目录新建build文件夹：</p>
<p>#mkdir $QTOPIA_DEPOT_PATH../build</p>
<p>然后进入build，执行如下命令：</p>
<p>#cd $QTOPIA_DEPOT_PATH../build</p>
<p>#../qtopia-opensource-4.3.2/configure -image $QTOPIA_IMAGE -prefix $QTOPIA_RUN_ON_TARGET -xplatform linux-arm-g++ -arch arm -displaysize 240&#215;320 -no-qvfb -no-bluetooth -no-infrared -no-modem -no-drm -voip -extra-qtopiacore-config “-depths 4,8,16,32 -qt-mouse-linuxtp -no-mouse-pc -no-mouse-bus -no-mouse-yopy -no-mouse-vr41xx -no-mouse-tslib -no-mouse-qvfb” -extra-qt-config “-qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libjpeg” 2&gt;&amp;1 | tee logfile</p>
<p> </p>
<p>说明：</p>
<p>对于这其中的配置参数，有些虽然是qtopia编译的默认参数，但为了保险起见还是加上了。</p>
<p>笔者也曾经参考过其他网友高手的参数，经过认真的研究和比较后还是用了如上的参数，值得注意的是对于笔者手上的这块板子就是不能定义很多高手介绍经验时提供的-defaultbuttons phone参数，否则启动的时候会出现很多”Can not map the key to QMenu”之类的错误，而且进入图形界面后就死机了……</p>
<p>各个参数的配置可以参考官方文档，该参数也只适合笔者手上的2440扳子，朋友可以按实际情况修改使用。</p>
<p> </p>
<p>这里建议一些自己学习的朋友，可以将配置命令甚至以后编译过程中的信息输出到文件中加以详细研究，如上参数所示，将所有屏幕输出保存在了logfile里。若以后出现编译错误，这个文件是很有价值的，笔者就曾经这样获得过一些诡异问题的解决思路。</p>
<p> </p>
<p>二、编译&amp;安装</p>
<p>#make</p>
<p>#make install</p>
<p>说明：make install默认将将编译完成后的IMAGE安装在$QTOPIA_IMAGE指定的地方，当然你也可以通过make install IMAGE=$OTHER_PLACE重新指定安装的位置。</p>
<p> </p>
<p>由于qtopia安装的时候没有为我们拷贝zoneinfo，所以我们还需要手动拷贝一下：</p>
<p>#cp -avf $QTOPIA_DEPOT_PATH/etc/zoneinfo $QTOPIA_INSTALL/etc</p>
<p> </p>
<p>qtopia运行的时候需要一些运行库，手动拷贝一下：</p>
<p>#cd /usr/local/arm/3.4.1/arm-linux/lib</p>
<p>#cp -v libstdc++*so* $QTOPIA_IMAGE/lib/</p>
<p> </p>
<p>备注：</p>
<p>有网友说如下一些库文件也要拷，但是笔者实验后发现不拷也行，本着“精简”的原则就没拷，但是还是列出来供参考：</p>
<p>#cp -v libdl*so* $QTOPIA_IMAGE/lib/</p>
<p>#cp -v libpthread*so* $QTOPIA_IMAGE/lib/</p>
<p>#cp -v libgcc_s*so* $QTOPIA_IMAGE/lib/</p>
<p> </p>
<p>三、挂载，运行</p>
<p>通过nfs方式挂载后，先定义一下qtopia运行需要的环境变量：</p>
<p>#export PATH=$PATH:/opt/qtopia/bin</p>
<p>#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/qtopia/lib</p>
<p>#export QWS_MOUSE_PROTO=LinuxTP:/dev/ts0</p>
<p>#export QWS_DISPLAY=”LinuxFb:mmWidth35:mmHeight45:0&#8243;</p>
<p> </p>
<p>注意：</p>
<p>其中关于QWS_MOUSE_PROTO的定义，在笔者的板子上触摸屏是/dev/ts0，但是有些（好像更多的）是/dev/touchscreen/0，若出现找不到触摸屏的情况可以考虑更改此处的定义，必要的时候可能还需要在/dev下新建个链接来兼容qtopia。</p>
<p> </p>
<p>若嫌这样还不爽，你可以直接改源码，该文件在$QT_DEPOT_PATH/qtopiacore/qt/src/gui/embedded/qmouselinuxtp_qws.cpp。</p>
<p>以上方法都不行，那么可能需要tslib来帮忙了，具体方法就google吧……</p>
<p> </p>
<p>说明：</p>
<p>其中“mmWidthXX:mmHeightXX”为屏幕的可视面积大小，与具体的设备尺寸有关系，不过笔者试了几组，好像没什么影响……</p>
<p> </p>
<p>加载qtopia：</p>
<p>#qpe&amp;</p>
<p>待屏幕出现画面后校准触摸屏：</p>
<p>#qcop service send Launcher “execute(QString)” “calibrate”</p>
<p> </p>
<p>到此你应该在屏幕上看到启动好以后的qtopia手机版界面了，接着就是自己完善其中的一些功能，个展宏图咯！</p>
<p> </p>
<p>附一些笔者所碰到问题和网上搜集的一些问题的解决方法：</p>
<p>1、编译错误：</p>
<p> </p>
<p>解决方法：安装libxtst-dev包。</p>
<p>#apt-get install libxtst-dev</p>
<p> </p>
<p>2、编译错误：</p>
<p>V4L2_PIX_FMT_SBGGR8</p>
<p>解决方法：</p>
<p>1、检查是否按照第一部分的步骤五正确修改了编译器的.h文件。</p>
<p>2、尝试换用其他版本的交叉编译器。</p>
<p> </p>
<p>3、编译错误：</p>
<p>PAGE_SIZE and PAGE_MASK</p>
<p> </p>
<p>解决方法：</p>
<p>#vim /usr/local/arm/3.4.1/arm-linux/include/asm/page.h</p>
<p>#vim /usr/local/arm/3.4.1/arm-linux/sys-include/asm/page.h</p>
<p>把语句</p>
<p>#ifdef __KERNEL__</p>
<p>移动到定义</p>
<p>15 /* PAGE_SHIFT determines the page size */</p>
<p>16 #define PAGE_SHIFT     12</p>
<p>17 #define PAGE_SIZE      (1UL &lt;&lt; PAGE_SHIFT)</p>
<p>18 #define PAGE_MASK      (~(PAGE_SIZE-1))</p>
<p>后面</p>
<p> </p>
<p>4、NFS挂载失败：</p>
<p>尝试增加参数”-o nolock”，即：</p>
<p>mount -t nfs xx xx -o nolock</p>
<p> </p>
<p>5、nfs挂载超时：</p>
<p>尝试增加参数”rsize=1024,wsize=1024,timeo=15&#8243;，即：</p>
<p>mount -t nfs xx xx -o nolock,rsize=1024,wsize=1024,timeo=15</p><h2  class="related_post_title">类似的文章</h2><ul class="related_post"><li>2009年10月14日 -- <a href="http://www.penglixun.com/tech/embedded/tran_qtopia_in_s3c2440.html" title="Qtopia在S3C2440开发板上的移植">Qtopia在S3C2440开发板上的移植</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.penglixun.com/tech/embedded/tran_qtopia_in_yc2440_utu2440.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qtopia在S3C2440开发板上的移植</title>
		<link>http://www.penglixun.com/tech/embedded/tran_qtopia_in_s3c2440.html</link>
		<comments>http://www.penglixun.com/tech/embedded/tran_qtopia_in_s3c2440.html#comments</comments>
		<pubDate>Wed, 14 Oct 2009 04:47:27 +0000</pubDate>
		<dc:creator>P.Linux</dc:creator>
				<category><![CDATA[嵌入式]]></category>
		<category><![CDATA[Qtopia]]></category>
		<category><![CDATA[S3C2440]]></category>

		<guid isPermaLink="false">http://www.penglixun.com/PLX/Blog/?p=415</guid>
		<description><![CDATA[本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/tech/embedded/tran_qtopia_in_s3c2440.html 继续发现重要文档，上学期实验... ]]></description>
			<content:encoded><![CDATA[<p><span style="color: #888888;">本文内容遵从<a href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh" target="_blank">CC版权协议</a>, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明</br>网址: http://www.penglixun.com/tech/embedded/tran_qtopia_in_s3c2440.html </p>
<p></span>继续发现重要文档，上学期实验写的，也比较重要，丢这。</p>
Note: There is a file embedded within this post, please visit this post to download the file.<h2  class="related_post_title">类似的文章</h2><ul class="related_post"><li>2009年10月14日 -- <a href="http://www.penglixun.com/tech/embedded/tran_qtopia_in_yc2440_utu2440.html" title="qtopia-opensource-4.3.2在YC2440/utu2440开发版的移植">qtopia-opensource-4.3.2在YC2440/utu2440开发版的移植</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.penglixun.com/tech/embedded/tran_qtopia_in_s3c2440.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用PCI转并口实现SJF刷写嵌入式开发板</title>
		<link>http://www.penglixun.com/tech/embedded/sjf_board_usingpci_to_ltp.html</link>
		<comments>http://www.penglixun.com/tech/embedded/sjf_board_usingpci_to_ltp.html#comments</comments>
		<pubDate>Wed, 14 Oct 2009 04:41:40 +0000</pubDate>
		<dc:creator>P.Linux</dc:creator>
				<category><![CDATA[嵌入式]]></category>
		<category><![CDATA[GiveIo]]></category>
		<category><![CDATA[PCI]]></category>
		<category><![CDATA[SJF]]></category>

		<guid isPermaLink="false">http://www.penglixun.com/PLX/Blog/?p=413</guid>
		<description><![CDATA[本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/tech/embedded/sjf_board_usingpci_to_ltp.html 整理电脑文件发现曾经写的这... ]]></description>
			<content:encoded><![CDATA[<p><span style="color: #888888;">本文内容遵从<a href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh" target="_blank">CC版权协议</a>, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明</br>网址: http://www.penglixun.com/tech/embedded/sjf_board_usingpci_to_ltp.html </p>
<p></span>整理电脑文件发现曾经写的这个文档，怕找不到了，丢这吧。</p>
<p>引言：<br />
目前越来越多的高端主板取消了并口的设计，对于需要使用并口来刷写开发板的嵌入式开发者是极其不方便的，通过PCI插槽转接出并口是相对廉价的解决方案。但是使用PCI转接的并口，并口地址与刷写软件默认的地址往往不一致，这就需要对刷写软件进行修改。本文就解决了三星S3C 2440刷写程序SJF2440.exe的代码修改，使其可以支持任何PCI转接口上转接出的并口用JTAG刷机。<br />
<span id="more-413"></span><br />
方法：<br />
1.	安装GiveIo驱动<br />
为了让Windows可以读写I/O端口，必须安装GiveIO驱动。<br />
2.	获取并口地址<br />
将PCI转接卡接入主板，并安装好并口。<br />
右击 我的电脑->属性->硬件->设备管理器->端口（COM和LPT）->双击xx*[1] PCI ECP Parallel Port（LPTx*[2]）->资源。这样就可看到“输入/输出范围CD00-CD07”和“输入/输出范围CC00-CC07”。可以读出并口地址CD00，当外接有多个并口时，则依次使用后续的地址。<br />
3.	利用H-JTAG获取信号连接情况<br />
打开H-JTAG，点击H-Jtag菜单上的settings->port settings，选择LPx。在LPx右边框填入0xCD00，这样就设置好了并口的地址，对开发板上电，H-JTAG就可以识别出接入的开发板。<br />
然后点击H-Jtag菜单栏上的settings->jtag settings，可以在Wiggler Pin Assignment里看到TMS/TCK/TDI/TD0/nTRST/nSRST对应的针脚号。<br />
例如我的S3C2440开发板是<br />
TMS->Pin3 D1<br />
TCK->Pin4 D2<br />
TDI->Pin5 D3<br />
TD0->Pin11 Busy<br />
4.	修改SJF代码使其支持外接的PCI口<br />
有了上面获取的信息就可以来修改SJF的源代码了。<br />
以SJF2440为例，SJF2410同理。<br />
A：修改源代码中的ppt.h头文<br />
#define LPT1 0&#215;378<br />
#define LPT2 0&#215;278<br />
#define LPT3 0x3bc<br />
将这三行改为<br />
#define LPT1 0xcd00<br />
#define LPT2 0xcd00<br />
#define LPT3 0xcd00<br />
对于我的PC机来说修改LPT1就够了。具体看各位装完PCI驱动后用了哪个LPT。<br />
B：修改源代码中的jtag.h头文件<br />
#define TCK_H   0&#215;01<br />
#define TDI_H   0&#215;40<br />
#define TMS_H  0&#215;02<br />
将这三行修改为<br />
#define TCK_H   0&#215;04<br />
#define TDI_H   0&#215;08<br />
#define TMS_H  0&#215;02<br />
为什么如此修改呢？<br />
对于上面获取的TMS TDI TCK 三个信号，分别对应D1,D2,D3三个针脚。则有如下关系：<br />
D7  D6  D5  D4  D3  D2  D1  D0<br />
0     0    0     0    0    0     1    0 (TMS_H)<br />
0     0    0     0    0     1    0    0 (TCK_H)<br />
0     0    0     0    1    0     0    0 (TDI_H)<br />
用转为十六进制表示则是TMS_H=0&#215;02,TCK_H=0&#215;04,TDI_H=0&#215;08。<br />
5.	如此修改完之后，用VC++进行编译，通过，然后刷机，获得成功！</p><h2  class="related_post_title">随机显示文章</h2><ul class="related_post"><li>2010年07月11日 -- <a href="http://www.penglixun.com/life/feeling/about_china_good_students.html" title="[转] 所谓”优秀生”">[转] 所谓”优秀生”</a> (0)</li><li>2010年05月30日 -- <a href="http://www.penglixun.com/life/%e6%af%8f%e5%91%a8%e6%8e%a8%e7%89%b9-2010-05-30.html" title="每周推特 2010-05-30">每周推特 2010-05-30</a> (0)</li><li>2009年10月14日 -- <a href="http://www.penglixun.com/tech/program/orm_or_rom.html" title="ORM or ROM？">ORM or ROM？</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.penglixun.com/tech/embedded/sjf_board_usingpci_to_ltp.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

