资讯
HOME
资讯
正文内容
2440 uboot nand ARM裸机加强版维基教程_开发板熟悉与体验
发布时间 : 2025-04-26
作者 : 小编
访问数量 : 23
扫码分享至微信

ARM裸机加强版维基教程_开发板熟悉与体验

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

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

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

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

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

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

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

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

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

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

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

连接示意图如下:

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

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

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

第003节_eop常见问题

eop常见问题通常有如下7个,我们可以根据oflash的提示信息,来大致判断是何种情况导致的问题。未连接op/eop到电脑;有其他程序在使用op/eop (同一时间只能有一个程序使用它);jtag线未接;开发板未上电;oflash xxx.bin 时当前目录下没有xxx.bin;烧写完后没有正确设置启动开关;烧写完后,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启动,启动我们烧写的程序。

操作步骤如下:

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

第005节_恢复出厂系统

开发板买来就是学习的,就是用来“破坏的”,不要担心上面的东西被破坏,因为我们有办法恢复出厂系统。我们先对比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 然后重启再次校准);

「新品首发」STM32MP157开发板火爆预售!首批仅300套

uboot常用命令汇总

我们经常使用uboot命令,虽然资料光盘->常见问题目录有U-boot常用命令汇总文档,但从大家的反馈来看,并没有很多人注意到这个文档,所以把它挪到这里。如此全的uboot命令汇总,建议收藏。

注意:不同版本的uboot,它的命令有所不同,这里使用u-boot 1.1.6。

一、nandflash分区信息

OpenJTAG>mtdpart

device nand0 <nandflash0>, # parts = 4

#:name size offset

0: bootloader 0x00040000 0x00000000

1: params 0x00020000 0x00040000

2: kernel 0x00200000 0x00060000

3: root 0x0fba0000 0x00460000

二、设置机器ID

set machid 16a // JZ2440,也可以用setenv machid 16a

set machid 7CF // mini2440

三、设置环境变量

print // 打印环境变量

save // 保存环境变量

setenv bootdelay 5 // 设置bootdelay 为5setenv ipaddr 192.168.1.226 // 设置开发板ip为192.168.1.226setenv serverip 192.168.1.200 // 设置服务器ip为192.168.1.200

setenv gatewayip 192.168.1.1 // 设置网关为 192.168.1.1setenv netmask 255.255.255.0 // 设置子网掩码

// 由于是两条指令,因此需要用单引号引起来

// 读取内核 并启动

setenv bootcmd 'nand read.jffs2 0x30007FC0 kernel ; bootm 0x30007FC0'

// 使用flash中的文件系统启动,默认为yaffs2文件系统,如果是jffs2文件系统,添加 rootfstype=jffs2

// yaffs2

setenv bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200

// jffs2setenv bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200 rootfstype=jffs2

// 使用nfs网络文件系统启动,默认为yaffs2文件系统,如果是jffs2文件系统,添加rootfstype=jffs2

举例:

虚拟机ip :192.168.1.2

网关 :192.168.1.1

开发板ip : 192.168.1.3

子网掩码 :255.255.255.0

文件系统目录:/work/nfs_root/xxxx

// yaffs2 ,注意是一行

setenv bootargs noinitrd root=/dev/nfs console=ttySAC0

nfsroot=192.168.1.2:/work/nfs_root/xxxxip=192.168.1.3:192.168.1.2:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc

// jffs2 ,注意是一行

setenv bootargs noinitrd root=/dev/nfs console=ttySAC0

nfsroot=192.168.1.2:/work/nfs_root/xxxxip=192.168.1.3:192.168.1.2:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc rootfstype=jffs2

// 清除某个环境变量

setenv bootargs //以bootargs为例

save

// 清除全部的环境变量

nand erase params

四、tftp烧写

// 通过tftp烧写u-boot.bin到nand Flash步骤:

打开 tftpd32.exe 软件, 将u-boot.bin 拷贝至工作目录

在SecureCRT中依次输入:

tftp 0x30008000 u-boot.bin //将uboot.bin 下载到sdram 0x30008000地址处

nand erase bootloader // 擦除bootloader区域

nand write 0x30008000 bootloader // 烧写到bootloader

// 通过tftp烧写uImage到nand Flash步骤:

打开 tftpd32.exe 软件, 将 uImage 拷贝至工作目录

在SecureCRT中依次输入:

tftp 0x30008000 uImage

nand erase kernel

nand write 0x30008000 kernel

// 烧写YAFFS文件系统至Nand Flash

打开 tftpd32.exe 软件, 将 fs_mini.yaffs2 拷贝至工作目录

在SecureCRT中依次输入:

tftp 0x30008000 fs_mini.yaffs2

nand erase root

nand write.yaffs 0x30008000 root $(filesize) // $(filesieze) 是fs_mini.yaffs2 的大小

// 烧写JFFS文件系统至Nand Flash

//使用 jffs2 文件系统启动时记得修改 bootargs 添加 rootfstype=jffs2

打开 tftpd32.exe 软件,将 fs_mini.jffs2 拷贝至工作目录

在SecureCRT中依次输入:

tftp 0x30008000 fs_mini.jffs2

nand erase root

nand write.jffs2 0x30008000 root $(filesize) // $(filesieze) 是fs_mini.yaffs2 大小

当然,之前的所有下载也可以换成 nfs ,

假设虚拟机 ip 为 192.168.1.123

nfs共享目录(在ubuntu 的 /etc/exports设置)为: /work/nfs_root

那么nfs下载命令如下:

nfs 0x30008000 192.168.1.123:/work/nfs_root/u-boot.bin // nfs下载u-boot.bin

nfs 0x30008000 192.168.1.123:/work/nfs_root/uImage // nfs下载uImage

nfs 0x30008000 192.168.1.123:/work/nfs_root/fs_mini.yaffs2 // nfs下载fs_mini.yaffs2

nfs 0x30008000 192.168.1.123:/work/nfs_root/fs_mini.jffs2 // nfs下载fs_mini.jffs2

- end -

相关问答

修改 uboot 时defined(CONFIG_S3C2410) || \ 中的||\符号是什...

[回答]相当与目录的意思,最后一个是不需要的,就是说这几个文件都是同级的,没有先后之分,根据你板子的型号选择其中一个。简言之,并列。并列=||相当与目...

 甄子丹事件  王子文孩子是谁的 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部