//----------------------------------------------------------------------------------------
// 题 目:用JLink(V8) + AXD烧写FL2440的BootLoader并利用USB线下载WinCE和Linux
// 作 者:Leo
// 版 权:九江学院·信息科学与技术学院·嵌入式开发团队(江西)
// 平 台:WinXP + 飞凌FL2440开发板
// 发布日期:2011年03月18日(V1.0)
// 最后修改:
// 注意事项:未经作者同意,不得在转载时候擅自修改、删除文章的任何部分
//----------------------------------------------------------------------------------------
一、起因:
飞凌公司在FL2440开发板出厂时,将WinCE启动后的窗口设置成横的,而正常情况下应该是竖屏幕。这样,启动开发板的WinCE后,对其中的网络连接、USB连接进行设置时,所有参数、名称输入完成后,却发现对话框的确认按钮被 WinCE 任务栏遮挡住,无法进行下一步,非常不便。
后来从著名嵌入式技术网友goooglman处得知,可以将屏幕旋转程序rotate.exe 拷贝到开发板NAND Flash文件夹下,然后每双击一次,屏幕都会自动旋转90度。
当时没有仔细考虑所谓 NAND Flash 具体路径指的是什么,就给开发板上电并按任意键调出Boot页面的Select Menu菜单,选其中的[1] Download to flash。
接着是选了0 :……[boot],或是1 :[bootParam],或是7 :……[wince]已经记不清了。
操作下来,BootLoader 就没有了,开发板无法正常启动。 为了解决这个问题,花了好几天时间。想不到有这么麻烦。使用的软、硬件包括: Ø 软件:DNW + ADS1.2中的AXD + SEGGER JLink ARM + USB驱动程序 Ø 硬件:笔记本电脑 + FL2440开发板 + JLink V8 + 三口转接板 + 转接板与开发板JTAG口之间用的排线 + USB线 + 力特USB转串口线 以上软件或驱动程序的在FL2440开发板的配套光盘上都可以找到。 软件或驱动程序的安装和使用方法在FL2440开发板的配套光盘上《开发板使用手册》、《开发板准备实验(必读)》、《飞凌开发板配套教程》纸质稿中都有描述。 硬件连接请参考下图(图片来自gooogleman的淘宝店JLink商品页面贴图)。
图中红色小板是三口转接板。
注意:
记得要在上图红框所示USB插口(在开发板电源插孔旁边)与笔记本电脑之间连USB线。但不必在烧写BootLoader时就连上。
二、基本过程
1、先利用JLink将BootLoader烧写到开发板上。
2、BootLoader烧写成功后,开发板断电,并将JLink与开发板的连接断开。这点很重要。不熟悉的人或初学者常常在这一步发生问题。
3、开发板重启,将USB线与开发板连接。
4、先下载WinCE6.0操作系统——开发板使用手册等资料上说,下载WinCE6.0之前,要先将Linux的文件系统擦除!一定要记得这个提示。否则先下载了Linux操作系统之后,再下载WinCE6.0操作系统时,就会出问题,而且还不知道为什么!!!
注意:
这里“操作系统”是指Linux = 内核 + 文件系统;或 WinCE6.0 = 内核 + EBoot
本人没有试过只下载了Linux内核而没有下载其文件系统时,下载WinCE6.0操作系统的后果。上面的提示没包括Linux内核在内,那么这样做应该没问题吧。
5、然后下载Linux操作系统。
注意:
随板光盘上有2.6.12和2.6.28两个内核,区别只在于触摸屏驱动不同。在开发板光盘上的文件夹Linux2.6.12和文件夹Linux2.6.28里有说明。
而且在文件夹Linux2.6.12中有zImage1和zImage2两个内核映像文件,分别适用于不同尺寸的触摸屏。本人开发板是3.5寸的触摸屏。所以选用文件夹Linux2.6.12中zImage1和qte_touch.yaffs来下载。这样可以保证下载成功后,初次启动Linux时,在QTopia下对触摸屏校准一次性通过。
三、烧写BootLoader
按照FL2440开发板配套光盘上的《开发板准备实验(必读)》之《使用AXD烧写BootLoader》的步骤,同时参考网上资料。
打开DNW。
板子启动了,但DNW中没有选Serial PortàConnect时,注意红框中字样。
打开AXD。会依次出现下面两个对话框。直接关闭即可。
在打开的AXD界面中,点OptionàConfigure Target…后,在出现的对话框中选JLinkRDI.dll。 初次点OptionàConfigure Target…时没有此项,点Add,在JLink安装目录下找到JLinkRDI.dll,如“C:/Program Files/SEGGER/JLinkARM_V408l/JLinkRDI.dll” 注意下图中的蓝色框所示,表示JLink尚未找到开发板的MPU。
点上图红框中的Configure,弹出下图的对话框,选其中的CPU查看。在纸质稿《飞凌开发板配套教程》里,要求不选Allow instruction set simulation,并将Reset Strategy选为No Reset。本人没这样配置。要是你烧写BootLoader没成功。可以试试这个配置。
在选定JLinkRDI.dll后,按其所在对话框的“OK”按钮。出现如下所示窗口。 注意:下图左侧红框内是ARM79_0,在资料光盘的实验说明里是ARM920T。这一点很迷惑人,因为都知道2440是ARM9核。而且下图右侧红框内已经是ARM9。所以总认为不对。
在AXD中点FileàLoad Image,加载2440init.axf文件。可以直接使用光盘上提供的。本人笔记本上源码压缩包解压缩后的路径为:
F:/飞凌(FL)2440/Bootloader/源码/2440BOOT_V5.1_FL/2440boot_Data/DebugRel
下图中上面的红框中表示加载映像文件。第二个红框中有关于什么是 .axf 文件……,哈哈。
网上有资料说在这一步,是把对话框关闭!!!试过了,一定不成的。估计是笔误?
找到2440init.s文件并打开后,如下图。按F5或在菜单栏中点ExecuteàGo,运行之。
运行2440init.s几秒钟后,按Shift + F5或在菜单栏中点ExecuteàStop,停止2440init.s运行。 此时,这个2440init.s关闭与否都没关系。 然后,在AXD中点FileàLoad Image,加载2440boot.axf文件。可以直接使用光盘上提供的。本人笔记本上源码压缩包解压缩后的路径为: F:/飞凌(FL)2440/Bootloader/源码/2440BOOT_V5.1_FL/2440boot_Data/DebugRel
确定打开后,会自动打开如下图中所示的2440init.s文件。按F5或在菜单栏中点ExecuteàGo,运行之。
结果会自动弹出下面的对话框,注意红框中的文字是要求用户找到名为u2440mon.c的文件并打开。
u2440mon.c在本人笔记本电脑上源码压缩包解压缩后的路径是:
F:/飞凌(FL)2440/Bootloader/源码/2440BOOT_V5.1_FL/src/u2440mon.c
确定打开后,会自动打开如下图中所示的u2440mon.c文件。按F5或在菜单栏中点ExecuteàGo,运行之。注意下图中红框内的进度条。它是不断地显示的。
注意:不要停止程序运行。同时会发现开发板液晶屏会有由亮——暗——亮的变化。
在DNW中选Serial PortàConnect时,注意红框中字样的变化。显示出串口编号参数。前文中此处是 x。
注:可以在DNW一打开之后,就点Serial PortàConnect来连接。那么会在加载2440boot.axf之
后,出现如下图所示
然后按笔记本键盘上的任意键。Select Menu开始出现。选[1] Download to flash。
注意:此时AXD中程序“u2440mon.c”的运行不能停!
选0 :……[boot]。
注意:下图中DNW窗口标题栏中的[USB:x]表示当前USB口是不通的。将USB线连接好之后,就会看到[USB:OK]。
然后在DNW的菜单栏点USB PortàTransmit,找到2440bootV5.1.bin 。本人笔记本电脑上源码压缩包解压缩后的路径是:
“F:/飞凌(FL)2440/Bootloader/目标文件/ 2440bootV5.1.bin”。
Ø 在AXD中停止u2440mon.c的运行;
Ø 板子关电;
Ø 将JLink与开发板一侧的连接断开——这是关键!!!这样,开发板重启后,才能在DNW中自动弹出Boot菜单。
否则,开发板重启时,即使JLink与笔记本电脑一侧的连接是断开的,在DNW中也无法自动弹出Boot菜单,会让人以为烧写不成功。由此可看出,JTAG调试的级别之高。
Ø USB线拔除或不拔除都可以。如果重启后发现DNW标题栏目中[USB:x]没有变为[USB:OK],则可以重新插拔一下USB线,USB就通了。此方法在《开发板使用手册》、或《开发板准备实验(必读)》、或纸质的《飞凌开发板配套教程》作为提示出现,可以查到。
然后,开发板重新上电;
Ø 确保重启后DNW标题栏目中[USB:x]变为[USB:OK]USB线——这是要!否则USB连接不通。无法达到下图红框中所示的效果,当然也无法通过USB下载。
DNW标题栏目中[USB:x]变为[USB:OK]后可以按任意键,调出Select Menu菜单。
四、通过USB线向FL2440开发板下载WinCE
为了试个彻底,索性将开发板上的出厂资源全部擦除。利用上述Select Menu,选上图中[6] Erase Flash Partition,将下图中2 : ……到 7:…… 全部擦除。
在《开发板使用手册》、或《开发板准备实验(必读)》、或纸质的《飞凌开发板配套教程》中有一条信息,即“下载WinCE6.0之前,要将Linux的文件系统擦除”。
这也是为什么本文将下载WinCE6.0列在下载Linux之前。
其他操作步骤按《开发板使用手册》、或《开发板准备实验(必读)》中的说明进行即可。一定要注意其中的提示!!!
有时,eboot.nb0烧写成功,但下载xip.bin过程中有如下错误,如下图红框中信息所示:
上述错误的原因:
就是在烧写EBoot.nb0成功后,没有将开发板断电,再重启并在Select Menu中选[5] Boot WinCE!
所以,一定要记得在烧写成功后,将开发板断电,然后上电重启。再按实验步骤下载WinCE6.0的xip.bin。
这个在《开发板使用手册》中相应部分有提示。可惜试来试去得昏了头,当时忘记了。
在没有找到上述错误真正原因的情况下,为了消除上述错误,在Select Menu中选[6] Erase Flash Partition,然后在如下所示菜单中选7 : ……[wince]。反复多次的结果,就是导致出现如下图红框中所示错误。显示已经在NAND Flash中出现了一个坏块!
这是反复多次擦除、烧写NAND Flash所致。代价惨重!!!
五、通过USB线向FL2440开发板下载Linux
先下载内核,然后下载文件系统。按照在《开发板使用手册》、或《开发板准备实验(必读)》、或纸质的《飞凌开发板配套教程》上的步骤来就可以。一定要注意其中的提示!!!
FL2440开发板光盘提供了2.6.12和2.6.28两个版本的Linux内核。
注意:
Linux2.6.12文件夹中有两个Image文件——zImage1是用于3.5和7寸液晶屏的。这个在该文件中的readme.txt文件中有说明。
本人的FL2440开发板上的液晶屏是3.5寸的。
六、再次强调
BootLoader烧写完成后,一定要将JLink线与开发板连接的一侧断开,这样才能够在DNW中自动弹出Boot菜单。
否则,即使JLink与笔记本电脑一侧的连接断开,而JLink的另一端仍然与开发板连接,(假设已经向板子中下载了启动画面)则开发板液晶屏仍然是白亮的。DNW中不会自动弹出Boot菜单。让人以为烧写不成功。个人猜测很多人可能是由于这个原因才认为JLink+AXD烧写BootLoader无法成功的。
反之,如果将JLink与开发板一侧的连接断开,而其另一侧仍然与笔记本电脑连接,那也不会妨碍开发板启动后,DNW中自动弹出Boot菜单。其实就这么简单。“内牛满面”?哈哈
本文写成博客文章后记:
太麻烦。排版还好,图片上传与加入真不方便。
希望大家喜欢。看到排版、图片都不错的网络文章不容易。努力做到效果好一点。