Linux开发板 - 02 - eop/uboot下载

Linux开发板 - 02 - eop/uboot下载

前言:韦东山开发板学习笔记,第二篇。上一篇讲了:如何与ubuntu系统通讯,属于开发手册 “第三章-开发环境搭建” 的内容。这一篇讲如何给开发板下载程序,属于第四、五章的内容。

文章目录

零、相关资料

Linux开发板 - 02 - eop/uboot下载

  • 教程中的相关软件资料也能在官方提供的云盘地址中下载,但是官方放得点乱,而且我怕以后哪天就失效了。所以我就自己又在git备份了。下面提到的安装文件都能在本笔记的相同目录./下找到本文所提到的文件(程序、软件等)和使用的设备(开发板、下载器等)都来自韦东山(百问网)的JZ2400开发板及其相关资料文档

一、使用eop下载 ( EasyOpenJTAG )

  • EasyOpenJTAG 是一个下载器,和之前使用过的JTAGDAPST-Link类似,都是用来给单片机下载程序的,如果有仿真功能,还可以称作仿真器。
  • EasyOpenJTAG 下载器还需要搭配一个软件工具 —— oflash,才能为S3C2440单片机 下载程序。类似于之前使用的IDE,下载器需要通过IDE才能给单片机下载程序。不同的是,这次的软件工具只是单纯的下载程序,并没有IDE的其他功能,甚至连图像界面都没有,只有命令行界面。
  • 其实这个工具的名称好像不是叫 oflash,只是命令行启动的指令是 oflash ,所以别称它为 oflash ,方便理解。

1. 安装步骤

  • 安装 “应用程序”,安装完这个后,pc机就可以在终端使用oflash指令了。
  1. 安装 “应用程序” :./eop裸板烧写器.rar/01.OpenOCD with GUI setup.exe,双击打开安装文件。
  2. 安装只需要点下一步和修改安装地址即可,无其他需要设置。
  3. 安装完成后打开pc终端,输入oflash指令查看是否打印相关提示,若无报错则标明安装成功。
  • 安装 “驱动程序”,安装完这个后,pc机就可以识别下载器的usb设备了。
  1. 根据使用手册的教程,需要 “更改 Windows10 启动模式”。注意!!注意!!可能是我操作不但,我直接把自己系统变量里的Path变量的值全清空了。我也不知道我做了什么,最后结果就是Path值全清了,因为我安装了很多软件配置了很多环境变量。这个情况把我害惨了……建议先跳过这步,如果可以就不要乱改。要改就先备份一下path值……
  2. EasyOpenJTAG下载器设备插入pc机,打开 “设备管理器”,可以看到几个感叹号未识别设备。右键 - 更新驱动程序 - 选择./eop裸板烧写器.rar/驱动文件夹。电脑会自动搜索目录下的驱动文件并安装。几个感叹号设备都是如此安装。
  3. 安装完成后,再重新插拔下载器,就能看到没有感叹号设备了,取而代之的是几个新名称的设备。
  • 至此,就可以使用下载器给2440开发板下载程序了。

2. 下载步骤

  • 正常下载操作,下载器分别连接pc机和开发板,开发板上电。在需要下载的bin文件目录下打开终端,并输入oflash指令,一路输入:0、1、0、lens.bin(文件名字)、0、0,最后自动退出表示现在完成。

Linux开发板 - 02 - eop/uboot下载

具体就是如下:

  1. Select the JTAG type —— 选择JTAG类型;
  2. Select the CPU —— 选择CPU;
  3. [Main Menu] Select the function to test —— [返回菜单] 选择要测试的函数;
  4. Enter the file name —— 输入文件名;
  5. [NAND Flash JTAG Programmer] Select the function to test —— [NAND闪存的 JTAG程序] 选择要测试的函数;
  6. [NAND Flash Writing Program] Input target block number —— [NAND闪存的 写入程序] 输入目标块号;

3. NOR / NADN Flash

  • 第3点和第5点都需要选择NAND Flash,这是因为我下载的是裸机程序,裸机程序需要下载到NAND Flash中启动。第6点选择程序写入的开始地址,选0就好了。

那么问题来了,什么是NAND Flash?什么是NOR Flash?二者有什么区别?

阅读文章:杂谈闪存二:NOR和NAND Flash;观看视频:【每日精选】嵌入式038.Nandflash和Norflash的特点

  • 目前的简单理解:NAND存储裸机程序、经常需要修改的程序,NOR存储引导程序、不经常修改的程序。前期入门都还是单片机裸机程序,所以都是NAND程序。现在只需要注意,把程序下载到NAND后需要设置开发板从NAND启动,就能看到刚刚下载的流水灯程序的效果了。如果没效果,尝试断开下载器,重新上电试试。

下图中,⑪启动选择就是选择NANDNOR启动的开关;⑫256M byte NAND FLASH就是NAND芯片;对应⑩2M byte NOR FLASH就是NOR芯片。对比之下,NOR芯片容量明显少得可怜。还有⑭32M*2 byte SDRAM作为“内存条”的掉电不保存的数据存储芯片,和⑮S3C2440A单片机。

Linux开发板 - 02 - eop/uboot下载

下图就是我用的JZ2440开发板,侧面右边的开关就是⑪启动选择。下图中是拨到了NOR启动,所以看到屏幕显示的是系统界面。如果拨到NAND就不会运行系统程序,而是运行我刚刚下载的流水灯程序。

Linux开发板 - 02 - eop/uboot下载

4. 下载失败

  • 可能是电脑没有连接下载器。或者是打开了2个终端运行oflash指令,获得以下报错内容,提示OpenJTAG没有连接,或是被占用。

Linux开发板 - 02 - eop/uboot下载

  • 可能是下载器没有连接开发板,获得以下报错内容,提示:cpuID = 0xffffffff

Linux开发板 - 02 - eop/uboot下载

  • 可能是开发板没有上电,获得以下报错内容,提示:cpuID = 0x00000000

Linux开发板 - 02 - eop/uboot下载

  • 以上错误均是在下载步骤第二步后、第三步前出现的错误。最还有一个是第三步输入文件名后的报错;
  • 如果输入的文件名字有误,又或是该文件不在当前终端目录下,都会获得以下报错内容;(下图中,文件名我输入"1")

Linux开发板 - 02 - eop/uboot下载

5. 总结

  • 使用eop下载时,不需要考虑开关是处于NAND或是NOR,经过测试是没有影响的。当前处于什么模式下不影响eop对单片机的下载,因为eop是独立的下载器,下载程序是直接写入操作。这一点,是和以前用过的下载器相同的。
  • 根据韦东山教程是说法,当程序较大时,使用eop下载会很慢,可能高达几分钟之久。这一点在后面下载uboot系统程序时就体现了,目前只是下一两个裸机电灯程序,所以感受不到。
  • 在我的git仓库有./下载文件bin/led_on.bin和leds.bin2个下载文件,功能分别是点亮单个灯和流水灯。可以分别下载,看看效果,验证程序确实下载进去了。再次说明,是要下载到NAND中,也从NAND中启动。

二、使用 uboot 下载 (USB DEVICE)

什么是uboot?阅读文章:什么是uboot?uboot有什么用?

  • 个人对uboot的理解,如上文章中所说,就是一段程序,起到类似引导的作用,它位于NOR Flash中。单片机从NOR Flash启动,运行uboot,然后接收串口的指令或数据,做出相应的动作。比如将USB数据烧写进NAND Flash,此时NAND Flash就好比一块普通的内存空间、或硬盘。

ubooteop用起来有什么不同?

  • 下图中对比ubooteop所需的接线,eop下载只需要接一个下载接口就可以了。而uboot下载就需要两个接口:一个串口通讯接口,和一个USB设备接口。串口通讯接口是经过一个USB转串口芯片;USB设备接口是直接连接单片机的。

Linux开发板 - 02 - eop/uboot下载

  • 下图就是USB转串口PL2303HX芯片的原理图;这个串口的作用有点像之前用过的FreeRTOSRT-Thread系统的FinSH 控制台,使用串口通讯,用出终端命令行(又或者说是黑白的pc机BIOS)的感觉

Linux开发板 - 02 - eop/uboot下载

  • 下图就是USB DEVICE(USB 设备)的原理图;这个USB设备的功能(应该)就是快速传输的作用。用串口输入相应下载指令后,单片机就可以使用USB设备功能快速传输数据(也就是下载程序)。

之前我制作过CH32V103单片机的下载器,那个下载器就是用单片机的USB设备引脚DNDP与pc机交互数据。

Linux开发板 - 02 - eop/uboot下载

1. 安装步骤

  1. 先假设你的开发板NOR Flash中没有uboot程序,需要先下载。用上一章的eop方式下载。找到我git库中的下载文件bin目录下的程序u-boot.bin文件,将它下载进NOR Flash中。注意,是NOR Flashuboot需要下载到NOR Flash

下载步骤的第3、5点需要选择NOR Flash,得到的反馈信息会和选择NAND Flash不太一样,但是步骤还是一样的。具体如下图,另外下载时间很长。

Linux开发板 - 02 - eop/uboot下载

  1. 下载成功后,对开发板进行如下操作:
  1. 断电;
  2. 断开eop下载口;
  3. 连接 两个USB接口;
  4. 将启动开关设置为NOR
  5. 先不急着开机;
  1. 先安装串口通讯所需要的串口驱动,我git库./串口驱动/PL2303_Prolific_DriverInstaller_v1.7.0.exe的文件双击运行。

    再打开串口通讯上位机软件工具有没有人吐槽一下这个超长的名称);这里为了方便使用uboot的类FinSH模式(还不知道怎么称呼这个类FinSH模式,姑且先这样称呼,也好理解),使用MobaXterm做演示。

  1. 先打开MobaXterm串口工具(上一篇01笔记的知识),再给开发板上电。如果不进行任何操作,应该能看到串口打印如下内容。uboot会在开机3秒倒计时后启动Linux系统内核,运行Linux系统,之后就能看到开发板上的屏幕亮了,显示Linux桌面。

Linux开发板 - 02 - eop/uboot下载

  1. 我们要使用uboot下载程序,而不希望它启动Linux系统。类比:启动pc机,想进入BIOS修改设置,而不是进入win10一样。只需要在开机的前3秒内按下空格就可以进入uboot命令模式了。按空格后需稍等片刻才弹出菜单,为什么我弹出两遍?因为我不小心按多了一次空格。

Linux开发板 - 02 - eop/uboot下载

  1. 然后需要安装USB设备驱动,我git库中./USB DNW/zadig-2.3.exe文件双击运行。该目录还有下载软件dnw_100ask.exe和PDF版使用教程。安装细则和使用细则可以看PDF教程,很详细、简单。驱动安装后,开发板需要重新连接PC机/重新上电。然后就算准备完前期安装步骤了。

注意顺序,先启动再安装驱动。(我安装过后再重新打开安装程序,不知道为何没有选项了,所以无法截图,借用韦东山教程里的图吧。

Linux开发板 - 02 - eop/uboot下载

  • 总结一下:先在NOR安装uboot,再启动uboot,最后安装USB DNW驱动,在重新上电就好了。

2. 下载步骤

  1. 重新上电,进入uboot模式,方法和上面一样。然后得到菜单,不同的uboot返回的菜单可能不一样,只需要找准需要的功能即可,以后也可以自己修改uboot程序代码(?)。

Linux开发板 - 02 - eop/uboot下载

  1. 我需要的是使用功能: Download u-boot to Nand Flash(下载,从u-bootNand Flash),这个翻译不太给力。其实就是把程序下载到NAND中。输入关键字n即可选择。然后得到提示:USB host is connected. Waiting a download.(USB主机已连接。等待下载)。

Linux开发板 - 02 - eop/uboot下载

  1. 这时再打开我git库中./USB DNW/dnw_100ask.exe文件,点击USB Port - Transmit选择下载文件,即可完成下载。注意,该软件标题框上出现[USB:OK],才表示可以下载。

Linux开发板 - 02 - eop/uboot下载

  1. 下载完成后,可以看到串口窗口已经有打印信息了。如下。(这个菜单在下载完成后又重新刷了一次

Linux开发板 - 02 - eop/uboot下载

3. 总结

  • 大体流程:进入uboot,选择指令,开发板等待下载完成,打开下载软件,选择下载文件,开发板下载完成。开发板重新上电,选择NOR/NAND启动,查看程序运行效果。

  • uboot下载需要两根线,一根串口通讯,一根数据传输。

  • 如果开发板没有uboot程序,需要先下载。而是需要下载到NOR FLASH中。

  • 如果uboot串口通讯时乱码,尝试修改波特率,一般为115200

三、总结

就个下载程序居然就折腾了我那么久。认真看发现韦东山的视频和教程都挺详细的,就是语速慢了一点,还有就是太乱了。我找了好久才找到,应该从哪里开始看,和开始时要看的文件。

  • “太简单了”,只是下载程序,还未到修改程序。下篇笔记大概就是修改简单的裸机程序。

1. 恢复出厂系统

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

【图片没了】

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

【图片没了】

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

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

  1. 使用op/eop烧写u-bootnor/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 然后重启再次较准)
    ————————————————
    版权声明:本文为CSDN博主「韦东山」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/thisway_diy/article/details/79385286
上一篇:flash_acr_latency


下一篇:Vue3使用keep-alive实现组件缓存