第006课 开发板熟悉与体验(免费)

来自百问网嵌入式Linux wiki

第001节_开发板接口介绍与串口连接

在前面的视频里,我们涉及四个接口,两个开关。

四个接口:电源接口、USB串口、USB下载口、JTAG下载口;

两个开关:电源开关、启动选择开关;

分别对应下图中的1、8、6、7、1、11;

Chapter6 lesson1 001.png

我们买开发板的目的就是把电脑上编写编译好的程序烧写到板子上验证学习。因此开发板上一定有个烧写口,例如JTAG烧写口。但电脑上是不会有这个JTAG口的,因此需要一个USB烧写器将两者连接,例如Jlink、OP/EOP。Jlink本来用的人很多,但随着版权意识的提高以及Jlink公司对盗版的打击,Jlink现在用得越来越少了。EesyOpenJtag是OpenJtag的便宜版本,他和我们的开发板是绝配,他可以直接烧写Nand Flash和Nor Flash,操作简单,价格便宜。

对于程序员来说,我们程序都是三分写,七分调,调试非常重要。对于我们电脑,我们可以在屏幕上显示,对于我们开发板,我们可能连显示屏都没有,并且屏幕的操作比较复杂,不太适合用于调试。那我们这里就需要一个比较简单的设备提供调试信息——串口。通过串口,可以把PC上的数据传到开发板,开发板也可返回数据。开发板的串口,不能直接与电脑的USB相连,中间需要一个串口转USB的芯片,这个芯片集成到了开发板上,因此可以直接使用USB线将电脑与开发板连接进行通信。

现在再说一下烧写,我们之前说可以通过Jtag进行烧写,它非常的可靠,当我们板子变成了砖头的时候,可以使用Jtag进行烧写,但他的速度很慢。当我们烧写很大程序的时候,会崩溃的。因此我们可以借助USB口进行烧写,前提是板子上已经运行有一个程序,这个程序用来支持USB下载

  1. 接电源,按下开关;
  2. 使用串口(USB串口)观察信息;
  3. 使用JTAG(USB烧写器)烧写程序;
  4. 如果板上程序支持USB下载,可以使用板子的USB Device连接电脑下载;
  5. 启动选择开关;

对开发板上电启动,出厂的时候默认烧写一个Linux系统。我们上电后可以看到Linux的企鹅图标,然后自动启动Qt。

再将开发板的串口与电脑相连,自动/手动安装好串口驱动后,使用MobaXterm软件的Serial功能,即可通过串口 输入Linux命令。

连接示意图如下:

Chapter6 lesson1 002.png

第002节_使用eop烧写裸板程序

烧写裸板程序,需要用到的软件是oflash.exe,使用到的硬件是op/eop(easy open Jtag),以及相应的驱动程序。 操作步骤如下:

  1. eop连接到PC;
  2. 安装驱动;
  3. 安装APP;
  4. 开发板的排线连接到eop,eop的USB接口连接到电脑;
  5. 执行:oflash xxx.bin
  6. 开发板断开eop,eop的USB接口最好也断开电脑;
  7. 设置从Nor/Nand启动;
  8. 重新上电;

第003节_eop常见问题

eop常见问题通常有如下7个,我们可以根据oflash的提示信息,来大致判断是何种情况导致的问题。

  1. 未连接op/eop到电脑;
  2. 有其他程序在使用op/eop (同一时间只能有一个程序使用它);
  3. jtag线未接;
  4. 开发板未上电;
  5. oflash xxx.bin 时当前目录下没有xxx.bin;
  6. 烧写完后没有正确设置启动开关;
  7. 烧写完后,op/eop与开发板之间的排线未断开, 导致程序无法运行;
  • 当oflash显示unable to open ftdi devive:2,

则可能是未连接op/eop到电脑和有其他程序在使用op/eop。

  • 当oflash显示Description: USB<=>JTAG&RS232 ANo CPU detectred, cupID = 0xffffffff,

则可能是Jtag线未接。

  • 当oflash显示Description: USB<=>JTAG&RS232 ANo CPU detectred, cupID = 0x00000000,

则可能是开发板未上电。

  • 当oflash显示ERROR: can't find the file : xx.bin.,

则可能是当前路径下没用xx.bin,应该使用绝对路径或者复制到指定目录再切换到该目录。

  • 当烧写好程序后,开发板上电后却没有运行,

则可能是没有正确设置启动开关或者是op/eop与开发板之间的排线未断开, 导致程序无法运行。

第004节_使用uboot烧写裸板程序

在前面,使用eop烧写一个200多k的uboot时,耗费了几分钟,这速度实在太慢了,在后续的开发过程中,我们的程序可能有许多错误,需要反复修改烧写,如果继续用eop将会浪费很多时间。那么有没有更快的烧写方式呢?有的,我们用uboot进行烧写。

在2440上面,有两种flash:Nand Flash和Nor Flash。我们可以首先把uboot烧到Nor Flash,然后Nor启动运行uboot,使用uboot的USB下载功能接收PC传来的文件,然后uboot将收到的文件烧写到Nand Flash,最后Nand启动,启动我们烧写的程序。

操作步骤如下:

  1. 使用op/eop把u-boot.bin烧到nor flash;
  2. 开发板设置为nor启动, 上电后马上在串口输入空格键,使板子进入UBOOT而不是启动板子上的内核;
  3. 连接PC与开发板的usb device口,如果没有驱动,安装驱动;
  4. 在UBOOT的串口菜单中输入n (表示接收USB文件并烧写到NAND);
  5. 使用dnw_100ask.exe发送bin文件;
  6. uboot即会自动接收、烧写bin文件;
  7. 断电、设为NAND启动、上电:运行nand上烧好的程序;

第005节_恢复出厂系统

开发板买来就是学习的,就是用来“破坏的”,不要担心上面的东西被破坏,因为我们有办法恢复出厂系统。

我们先对比PC看看出厂系统有哪些东西:

Chapter6 lesson5 001.png


可以看到我们的东西都放在Flash上面,对于我们的JZ2440,有256M的Nand Flash和2M的Nor Flash,所以我们内核、根文件系统那么多的文件,应该是放在Nand Falsh。Nand Falsh内部数据分布如下: Chapter6 lesson5 002.png


其中bootloader既可以在Nand Flash也可以在Nor Flash,params的变量存储有uboot的参数信息。

恢复出厂系统的具体步骤如下:

  1. 使用op/eop烧写u-boot到nor/nand, 设置为nor/nand启动;
  2. 上电与开发板的usb device口; 安装驱动;
  3. 下载内核: 在UBOOT的串口菜单中输入k;
  4. 使用dnw_100ask.exe发送uImage文件;
  5. uboot即会自动接收、烧写uImage文件;
  6. 下载文件系统: 在UBOOT的串口菜单中输入y;
  7. 使用dnw_100ask.exe发送 fs_qtopia.yaffs2 文件;
  8. uboot即会自动接收、烧写根文件系统;
  9. . 输入q退出UBOOT串口菜单, 执行命令删除参数分区: nand erase params;
  10. . 重启(对于QT文件系统,第一次重启时会要求你较准触摸屏);

(如果触摸不准,可以等系统启动后在串口执行:rm /etc/pointercal 然后重启再次较准);