Linux开发板 - 02 - eop/uboot下载
前言:韦东山开发板学习笔记,第二篇。上一篇讲了:如何与ubuntu系统通讯,属于开发手册 “第三章-开发环境搭建” 的内容。这一篇讲如何给开发板下载程序,属于第四、五章的内容。
文章目录
零、相关资料
- 对于
eop/uboot下载
,韦东山还有两小节免费的课程可看。讲得很纤细,第一眼还想吐槽视频很老旧,但确实很实用:第6课_第3节_eop使用的常见问题以及解决方法、第6课_第4节_使用uboot烧写裸板程序;配套文档:第006课 开发板熟悉与体验。 - 以下我参考的手册目录。该文档的下载地址为:官方提供的云盘地址,目录为:配套资料下载 - 下载方式一 - JZ2440资料光盘 - 资料光盘 - B盘 - 开发板使用手册。
-
教程中的相关软件资料也能在官方提供的云盘地址中下载,但是官方放得点乱,而且我怕以后哪天就失效了。所以我就自己又在git备份了。下面提到的安装文件都能在本笔记的相同目录
./
下找到。本文所提到的文件(程序、软件等)和使用的设备(开发板、下载器等)都来自韦东山(百问网)的JZ2400开发板及其相关资料文档。
一、使用eop下载 ( EasyOpenJTAG )
-
EasyOpenJTAG
是一个下载器,和之前使用过的JTAG
、DAP
、ST-Link
类似,都是用来给单片机下载程序的,如果有仿真功能,还可以称作仿真器。 -
EasyOpenJTAG
下载器还需要搭配一个软件工具 ——oflash
,才能为S3C2440
单片机 下载程序。类似于之前使用的IDE
,下载器需要通过IDE
才能给单片机下载程序。不同的是,这次的软件工具只是单纯的下载程序,并没有IDE
的其他功能,甚至连图像界面都没有,只有命令行界面。 - 其实这个工具的名称好像不是叫 oflash,只是命令行启动的指令是 oflash ,所以别称它为 oflash ,方便理解。
1. 安装步骤
- 安装 “应用程序”,安装完这个后,pc机就可以在终端使用
oflash
指令了。
- 安装 “应用程序” :
./eop裸板烧写器.rar/01.OpenOCD with GUI setup.exe
,双击打开安装文件。- 安装只需要点下一步和修改安装地址即可,无其他需要设置。
- 安装完成后打开pc终端,输入
oflash
指令查看是否打印相关提示,若无报错则标明安装成功。
- 安装 “驱动程序”,安装完这个后,pc机就可以识别下载器的
usb
设备了。
- 根据使用手册的教程,需要 “更改 Windows10 启动模式”。
注意!!注意!!可能是我操作不但,我直接把自己系统变量里的Path
变量的值全清空了。我也不知道我做了什么,最后结果就是Path
值全清了,因为我安装了很多软件配置了很多环境变量。这个情况把我害惨了……建议先跳过这步,如果可以就不要乱改。要改就先备份一下path值……- 将
EasyOpenJTAG
下载器设备插入pc机,打开 “设备管理器”,可以看到几个感叹号未识别设备。右键 - 更新驱动程序 - 选择./eop裸板烧写器.rar/驱动
文件夹。电脑会自动搜索目录下的驱动文件并安装。几个感叹号设备都是如此安装。- 安装完成后,再重新插拔下载器,就能看到没有感叹号设备了,取而代之的是几个新名称的设备。
- 至此,就可以使用下载器给2440开发板下载程序了。
2. 下载步骤
- 正常下载操作,下载器分别连接pc机和开发板,开发板上电。在需要下载的bin文件目录下打开终端,并输入
oflash
指令,一路输入:0、1、0、lens.bin(文件名字)、0、0,最后自动退出表示现在完成。
- 其中输入的每个参数是对应不同的选项,韦东山的第六课第三节视频有讲,也可以看看这篇笔记ubuntu下oflash的使用。
具体就是如下:
Select the JTAG type
—— 选择JTAG类型;Select the CPU
—— 选择CPU;[Main Menu] Select the function to test
—— [返回菜单] 选择要测试的函数;Enter the file name
—— 输入文件名;[NAND Flash JTAG Programmer] Select the function to test
—— [NAND闪存的 JTAG程序] 选择要测试的函数;[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启动,就能看到刚刚下载的流水灯程序的效果了。如果没效果,尝试断开下载器,重新上电试试。
下图中,⑪
启动选择
就是选择NAND
或NOR
启动的开关;⑫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.bin
2个下载文件,功能分别是点亮单个灯和流水灯。可以分别下载,看看效果,验证程序确实下载进去了。再次说明,是要下载到NAND
中,也从NAND
中启动。
二、使用 uboot 下载 (USB DEVICE)
什么是
uboot
?阅读文章:什么是uboot?uboot有什么用?。
- 个人对
uboot的
理解,如上文章中所说,就是一段程序,起到类似引导的作用,它位于NOR Flash
中。单片机从NOR Flash
启动,运行uboot
,然后接收串口的指令或数据,做出相应的动作。比如将USB数据烧写进NAND Flash
,此时NAND Flash
就好比一块普通的内存空间、或硬盘。
uboot
和eop
用起来有什么不同?
- 下图中对比
uboot
和eop
所需的接线,eop
下载只需要接一个下载接口就可以了。而uboot
下载就需要两个接口:一个串口通讯接口,和一个USB设备接口。串口通讯接口是经过一个USB转串口芯片;USB设备接口是直接连接单片机的。
- 下图就是USB转串口
PL2303HX
芯片的原理图;这个串口的作用有点像之前用过的FreeRTOS
和RT-Thread
系统的FinSH 控制台,使用串口通讯,用出终端命令行(又或者说是黑白的pc机BIOS)的感觉。
- 下图就是
USB DEVICE
(USB 设备)的原理图;这个USB设备的功能(应该)就是快速传输的作用。用串口输入相应下载指令后,单片机就可以使用USB设备功能快速传输数据(也就是下载程序)。
之前我制作过CH32V103单片机的下载器,那个下载器就是用单片机的USB设备引脚
DN
与DP
与pc机交互数据。
1. 安装步骤
- 先假设你的开发板
NOR Flash
中没有uboot
程序,需要先下载。用上一章的eop
方式下载。找到我git库中的下载文件bin
目录下的程序u-boot.bin
文件,将它下载进NOR Flash
中。注意,是NOR Flash。uboot
需要下载到NOR Flash
。
下载步骤的第3、5点需要选择
NOR Flash
,得到的反馈信息会和选择NAND Flash
不太一样,但是步骤还是一样的。具体如下图,另外下载时间很长。
- 下载成功后,对开发板进行如下操作:
- 断电;
- 断开
eop
下载口;- 连接 两个USB接口;
- 将启动开关设置为
NOR
;- 先不急着开机;
-
先安装串口通讯所需要的串口驱动,我git库
./串口驱动/PL2303_Prolific_DriverInstaller_v1.7.0.exe
的文件双击运行。再打开串口通讯上位机软件工具(
有没有人吐槽一下这个超长的名称);这里为了方便使用uboot
的类FinSH
模式(还不知道怎么称呼这个类),使用FinSH
模式,姑且先这样称呼,也好理解MobaXterm
做演示。
- 先打开
MobaXterm
串口工具(上一篇01笔记的知识),再给开发板上电。如果不进行任何操作,应该能看到串口打印如下内容。uboot
会在开机3秒倒计时后启动Linux
系统内核,运行Linux系统,之后就能看到开发板上的屏幕亮了,显示Linux桌面。
- 我们要使用
uboot
下载程序,而不希望它启动Linux系统。类比:启动pc机,想进入BIOS修改设置,而不是进入win10一样。只需要在开机的前3秒内按下空格就可以进入uboot
命令模式了。按空格后需稍等片刻才弹出菜单,为什么我弹出两遍?因为我不小心按多了一次空格。
- 然后需要安装USB设备驱动,我git库中
./USB DNW/zadig-2.3.exe
文件双击运行。该目录还有下载软件dnw_100ask.exe
和PDF版使用教程。安装细则和使用细则可以看PDF教程,很详细、简单。驱动安装后,开发板需要重新连接PC机/重新上电。然后就算准备完前期安装步骤了。
注意顺序,先启动再安装驱动。(
我安装过后再重新打开安装程序,不知道为何没有选项了,所以无法截图,借用韦东山教程里的图吧。)
- 总结一下:先在
NOR
安装uboot
,再启动uboot
,最后安装USB DNW
驱动,在重新上电就好了。
2. 下载步骤
- 重新上电,进入
uboot
模式,方法和上面一样。然后得到菜单,不同的uboot
返回的菜单可能不一样,只需要找准需要的功能即可,以后也可以自己修改uboot
程序代码(?)。
- 我需要的是使用功能:
Download u-boot to Nand Flash
(下载,从u-boot
到Nand Flash
),这个翻译不太给力。其实就是把程序下载到NAND
中。输入关键字n
即可选择。然后得到提示:USB host is connected. Waiting a download.
(USB主机已连接。等待下载)。
- 这时再打开我git库中
./USB DNW/dnw_100ask.exe
文件,点击USB Port - Transmit
选择下载文件,即可完成下载。注意,该软件标题框上出现[USB:OK]
,才表示可以下载。
- 下载完成后,可以看到串口窗口已经有打印信息了。如下。(
这个菜单在下载完成后又重新刷了一次)
3. 总结
-
大体流程:进入uboot,选择指令,开发板等待下载完成,打开下载软件,选择下载文件,开发板下载完成。开发板重新上电,选择
NOR/NAND
启动,查看程序运行效果。 -
uboot
下载需要两根线,一根串口通讯,一根数据传输。 -
如果开发板没有
uboot
程序,需要先下载。而是需要下载到NOR FLASH
中。 -
如果
uboot
串口通讯时乱码,尝试修改波特率,一般为115200
。
三、总结
就个下载程序居然就折腾了我那么久。认真看发现韦东山的视频和教程都挺详细的,就是语速慢了一点,还有就是太乱了。我找了好久才找到,应该从哪里开始看,和开始时要看的文件。
- “太简单了”,只是下载程序,还未到修改程序。下篇笔记大概就是修改简单的裸机程序。
1. 恢复出厂系统
- 在第六课的最后一节中,讲述了如何恢复出厂系统。就是使用uboot下载程序而已。只是这个程序比较大,覆盖了大部分存储空间。
- 我还没需要用到这个功能,所以没试过,以下内容直接转载自:第006课 开发板熟悉与体验_韦东山嵌入式专栏-CSDN博客;
开发板买来就是学习的,就是用来“破坏的”,不要担心上面的东西被破坏,因为我们有办法恢复出厂系统。
我们先对比PC看看出厂系统有哪些东西:【图片没了】
可以看到我们的东西都放在Flash上面,对于我们的JZ2440,有256M的
Nand Flash
和2M的Nor Flash
,所以我们内核、根文件系统那么多的文件,应该是放在Nand Falsh
。Nand Falsh
内部数据分布如下:【图片没了】
其中
bootloader
既可以在Nand Flash
也可以在Nor Flash
,params
的变量存储有uboot
的参数信息。恢复出厂系统的具体步骤如下:
- 使用
op/eop
烧写u-boot
到nor/nand
, 设置为nor/nand
启动;- 上电与开发板的
usb device
口; 安装驱动;- 下载内核: 在UBOOT的串口菜单中输入
k
;- 使用
dnw_100ask.exe
发送uImage
文件;uboot
即会自动接收、烧写uImage
文件;- 下载文件系统: 在UBOOT的串口菜单中输入y;
- 使用
dnw_100ask.exe
发送fs_qtopia.yaffs2
文件;uboot
即会自动接收、烧写根文件系统;- 输入
q
退出UBOOT串口菜单, 执行命令删除参数分区:nand erase params
;- 重启(对于QT文件系统,第一次重启时会要求你较准触摸屏);
(如果触摸不准,可以等系统启动后在串口执行:rm /etc/pointercal
然后重启再次较准)
————————————————
版权声明:本文为CSDN博主「韦东山」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/thisway_diy/article/details/79385286