说明:本文仅在Windows环境下实验。
韦东山的JZ2440(v2),可以选择从Nor Flash启动,也可以选择从Nand Flash启动,不管从哪里启动,都需要Flash上有程序,没有程序的话,板子就是一块砖头。
按照常规思维,板子上应该有一个BootLoader,我们通过BootLoader来烧写Flash。现在的问题是,板子上连BootLoader也没有,我们该怎么办呢?
还好,板子上有JTAG接口,我们可以利用OpenJTAG或者J-link等,一端连接板子,一端连接PC的USB口,再利用某个软件把程序烧写到Flash里。
至于为什么可以通过JTAG接口烧写Flash,可以参考我的博文
http://blog.csdn.net/longintchar/article/details/70473887
本文主要介绍如何通过OpenJTAG烧写程序到Flash。
什么是OpenJTAG
根据维基百科,Open JTAG 项目是一个开源工程,它包括完整的硬件和软件设计参考,基于简单的硬件组成,包括一个 FTDI FT245 USB 前端和一个 Altera EPM570 MAX II CPLD。
这里我们不讨论这个开源工程,我只想说在嵌入式Linux学习中,“OpenJTAG”是一个看得见摸得着东西。下图就是我从韦东山老师那里买来的OpenJTAG。
这个东东有什么用呢?它有两大核心功能:
- USB 转串口
USB 转 JTAG
由于JZ2440(V2)已经集成了USB转串口的功能,所以我们主要用OpenJTAG的 “USB 转 JTAG”功能,基于这个功能,引出两个应用,一是用来烧写程序,二是用来调试。调试不是本文的重点,以后用到了再说。
安装OpenJTAG的驱动
当把这个黄色的东东插到电脑USB口的时候,会提示没有驱动,查看设备管理器如下图:
说明我们得安装驱动,不然无法使用。
一种安装方法是:鼠标移动到感叹号处,点击右键,选择【更新驱动程序软件】,再选择【浏览计算机以查找驱动程序软件】,如下图
点击【浏览】,选择驱动所在的文件夹,之后点击【下一步】就可以了。
此时再查看设备管理器,可以看到多了4项。
用oflash.exe烧写程序
OpenJTAG的用户手册上说,oflash.exe
是特别针对 OpenJTAG 编写的烧写工具,支持 s3c2410、 s3c2440 开发板,支持几乎所有类型的 Nor、 Nand Flash 烧写。
先不管这个软件是怎么弄出来的(其实我也很好奇),我们先用起来。使用步骤如下。
(0)接线,OpenJTAG一端连接PC的USB口,另一端(我的这个在侧面)通过排线连接板子的JTAG口。注意:排线端口的一侧有个小凸起,这个凸起一定要和板子上绘制的凸起标记相对应。
(1)把FTD2XX.dll
和oflash.exe
放到C:\WINDOWS\system32
目录下
(2)在命令行运行oflash
(3)输入“0”,表示OpenJTAG,回车;
Select the CPU:
0. S3C2410
1. S3C2440
2. S3C6410
Enter the number:
(4)选择CPU类型。我的板子是2440,所以选择1;
device: 4 “2232C”
deviceID: 0x14575118
SerialNumber: FTWLXFKQA
Description: USB<=>JTAG&RS232 AS3C2440 detected, cpuID = 0x0032409d
[Main Menu]
0:Nand Flash prog 1:Nor Flash prog 2:Memory Rd/Wr 3:Exit
Select the function to test:
(5)选择Nand或者Nor。因为我要烧写到Nand Flash,所以选择0;
(6)输入文件名:
Enter the file name:
比如输入
E:\韦东山\00_百问网JZ2440v2主光盘\bin\hardware\stdio.bin
(7)接着会显示:
[NAND Flash JTAG Programmer]
Scan nand flash:
Device 0: NAND 256MiB 3,3V 8-bit, sector size 128 KiB
Total size: 256 MiB
0:Nand Flash Program 1:Nand Flash Print BlkPage 2:Exit
Select the function to test :
再次输入0
[NAND Flash Writing Program]
Source size: 0x2e74
Available target block number: 0~2047
Input target block number:
(8)输入block number或者地址。这里我输入0,表示0地址,回车后等待
target start block number =0
target size (0x20000*1) =0x20000
STATUS:
Epppppp
(9)等命令行提示符出现后,就说明烧写完成了。
要看程序的运行效果,请把拨码开关拨到合适的位置(选择从Nand Flash启动还是从Nor Flash启动),并断开板子和OpenJTAG的连接。
【完】