ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2021-07-12 11:01:47  阅读:183  来源: 互联网

标签:02 uboot Flash NAND 开发板 串口 下载


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

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

文章目录

零、相关资料

在这里插入图片描述

  • 教程中的相关软件资料也能在官方提供的云盘地址中下载,但是官方放得点乱,而且我怕以后哪天就失效了。所以我就自己又在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,最后自动退出表示现在完成。

在这里插入图片描述

具体就是如下:

  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单片机。

在这里插入图片描述

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

在这里插入图片描述

4. 下载失败

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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设备接口是直接连接单片机的。

在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

1. 安装步骤

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

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

在这里插入图片描述

  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桌面。

在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

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

2. 下载步骤

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

标签:02,uboot,Flash,NAND,开发板,串口,下载
来源: https://blog.csdn.net/Lovely_him/article/details/118669734

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有