1- 使用JTAG+oflash烧写程序
借助oflash工具,使用JTAG将bin文件烧写到Nand/Nor flash中。
缺点:比较慢,后期不用该方法
1.1- 连线
a- 连接电源线
b- 连接串口线(需要安装驱动)
c- 链接EOP烧写器线(需要安装驱动)
注意:安装EOP,在windows设备管理其中可能设备不可用。需要禁用系统的签名,参考:禁用签名
禁用签名后,点击设备管理器中的JTAG设备,右击-更新驱动–选择本地驱动路径 “\eop裸板烧写器\驱动\OpenJTAG”
就可正常安装JTAG驱动程序
1.2- 安装烧写工具
安装OpenOCD with GUI setup.exe
安装成功后在cmd窗口数如oflash,可以显示提示信息。
该工具用于烧写bin文件到开发板,包括u-boot.bin,以及裸板程序的bin文件。
可以将裸板程序的bin文件烧写到Nand flash中。
可以将u-boot.bin文件烧写到Nor/Nand flash中。
注意:烧写完注意将设置对应的启动方式;将JTAG线拔掉(有复位引脚)。
1.3- 实际烧写
1.3.1- 烧写裸板程序到Nandflash
a- 连接好开发板线缆,并上电
b- 切换到bin文件路径。
示例:
d:
cd D:\hardware
c- cmd窗口执行oflash,并选择对应的选项。
1.3.2- 烧写u-boot.bin到Nor flash
同3.1步骤。烧写u-boot.bin文件比较慢。
2- 使用uboot+dnw_100ask工具下载程序
前提:开发板上已经烧写了u-boot程序,如果没有烧写参考1.3.2方法在Nor上烧写u-boot程序
原理:使用dnw_100ask工具将bin文件通过USB口传输到uboot,使用uboot启动菜单的下载功能将程序下载到Nand/Nor flash中。
2.1- 准备工作
a- 开发板已经烧写了u-boot程序。
b- 连接开发板电源线
c- 连接开发板串口线
d- 连接开发板usb线。需要通过zadig-2.3软件设置一些参数,否则u-boot检测不到usb设备。
2.2- 烧写
a- 设置为Nor启动(u-boot烧写在了Nor flash中)
b- 打开moba,系统启动过程中输入空格,进入到u-boot模式。如果已经进入到了系统,重新启动开发板即可。
根据提示输入n,准备将程序通过u-boot下载到Nand flash中。之后会提示已经有USB设备连接,等待文件传输。
c- 上传文件。打开dnw_100ask软件,点击USP Port–Tranmit–选择对应的bin文件。
下载成功后,串口会有打印。
d- 开发板启动方式设置为Nand启动(程序下载到了Nand flash中),重启开发板即可。
注意:如果在u-boot菜单中输入了q,可以使用menu方式重新进入u-boot。
2.3- 使用uboot+dnw_100ask工具恢复出厂系统
简单来讲就是重新烧写内核+文件系统。
在2.2基础上,我们已经在Nand/Nor flash上烧写了u-boot。
接下来我们利用u-boot和dnw_100ask工具将内核已经文件系统烧写到开发板上。
a- 上电进入到uboot
b- 烧写内核。在uboot菜单选项中选择k。 即:[k] Download Linux kernel uImage
在dnw_100ask中选择内核文件:uImage。内核文件上传到flash中。
c- 烧写文件系统内。在uboot菜单中选择y。即:[y] Download root_yaffs image。烧写yaffs文件系统。
在dnw_100ask中选择文件系统文件:fs_qtopia.yaffs2。文件系统文件上传到flash中。
d- 删除参数分区。退出uboot菜单选项,输入
OpenJTAG>nand erase params
e- 重启开发板,此时开发板上已经有uboot、内核、文件系统。
3- uboot使用tftp网络下载版本
设置windows主机、虚拟机(ubuntu)、开发板uboot处于同一网段, 然后在windows打开tftp客户端,在uboot上使用tftp命令从windows路径获取版本。
开始前,
∗
∗
关
闭
w
i
n
d
o
w
s
防
火
墙
∗
∗
\textcolor{Red}{**关闭windows防火墙**}
∗∗关闭windows防火墙∗∗
∗
∗
一
定
要
烧
结
上
电
开
启
网
络
的
u
b
o
o
t
版
本
!
!
u
−
b
o
o
t
e
n
a
b
l
e
E
t
h
e
r
n
e
t
.
b
i
n
∗
∗
\textcolor{Red}{**一定要烧结上电开启网络的uboot版本!!u-boot_enable_Ethernet.bin**}
∗∗一定要烧结上电开启网络的uboot版本!!u−bootenableEthernet.bin∗∗
上电使能网络功能的uboot上电有打印如下信息:
U-Boot 1.1.6 enable Ethernet alltime(May 15 2018 - 19:44:59)
3.1- 虚拟机网络设置
对于虚拟机设置为桥接网卡模式。并选择对应的网卡。
对于我的电脑,只有无线网卡,所以桥接网卡选择无线网卡。
如果你的电脑既有无线网卡、又有有线网卡,
∗
∗
选
择
你
用
于
连
接
开
发
板
的
网
卡
为
桥
接
网
卡
∗
∗
\textcolor{Red}{**选择你用于连接开发板的网卡为桥接网卡**}
∗∗选择你用于连接开发板的网卡为桥接网卡∗∗。同时禁用另一个网卡。
这里设置ubuntu的ip为:
192.168.0.7
\textcolor{Red}{192.168.0.7}
192.168.0.7
附:
对于电脑安装了ubuntu虚拟机在windows控制面板–网络连接中可以看到两个vmnet1和vmnet8。
vmnet1用于windows和虚拟机通过host-only连接
vmnet8用于windows和虚拟机通过NAT方式连接
具体怎么工作我也不清楚,可以自行百度。
3.2- windows网络设置
由于我的电脑只有无线网卡,我要设置无线网卡的IP和虚拟机的IP处于同一网段。
设置windwos IP为:
192.168.0.3
\textcolor{Red}{192.168.0.3}
192.168.0.3
不会设置自行百度。
windows和ubuntu就可以互相ping 通了。
3.3- 开发板uboot网络设置
再次申明我的电脑只有无线网卡。
将开发板的网口和无线路由器相连。
开发板上电,在uboot中输入q进入OpenJTAG命令行模式。
输入print,可以看到相关参数。
设置开发板uboot IP ; 192.168.0.15 \textcolor{Red}{192.168.0.15} 192.168.0.15
设置开发板IP:set ipaddr 192.168.0.15
设置服务端IP(即windows IP): set serverip 192.168.0.3
保存设置: save
查看信息:print
∗ ∗ 注 : ∗ ∗ \textcolor{Red}{**注:**} ∗∗注:∗∗ : 如果要删除相关参数,例如删除ipaddr:
set ipaddr
这样就可以在开发板中ping通windows和ubuntu的IP,同样另外两者也可以ping通开发板。下面是开发板上ping windows的打印。出现alive表示可以ping 通。不用关心没有建立连接的打印。
OpenJTAG> ping 192.168.0.3
dm9000 i/o: 0x20000000, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 08:00:3e:26:0a:5b
could not establish link
host 192.168.0.3 is alive
我们打开tftpd32.exe,就可以将文件传输到开发板上。具体步骤:
a- 已经设置好上述IP,并可以在windwos和开发板间ping通
b- 打开tftpd32.exe软件,设置服务IP(windows IP)和需要传输的文件路径。
c- 传输文件。 开发板上输入:
tftp 30000000 文件名
等待烧写完成。
4- 遇到问题
4.1- 不知道电脑只有无线网卡
现在的超薄本为了最求简单、美观,将很多功能干掉了。比如外接网口,甚至连有线网卡也干掉了。
我还傻傻的以为只是设置成USB口了,买了个USB转网口的线。。。。
当我认识到我只有无线网卡时,才将ubuntu的桥接网卡设置成无线网卡;将开发板直连到无线路由器上。。。。
之前竟然傻傻地将开发板直连到电脑上,还纳闷为哈有限网络一直显示断开。
直到现在都不理解电脑上地“Sangfor SSL VPN CS Support System VNIC ”时虚拟网卡还是实体网卡。。。。
4.2- uboot中一直有两个ipaddr
一直有两个ipaddr,都不知道那个在起作用。使用set ipaddr只能删除其中一个,另外一个一直残留。。。
直到现在都没找到解决方案。
已找到解决方案:
初始化参数:
uboot下输入
m
t
d
\textcolor{Red}{mtd}
mtd 查看分区
然后输入初始化参数命令:
n
a
n
d
e
r
a
s
e
p
a
r
a
m
s
\textcolor{Red}{nand erase params}
nanderaseparams
OpenJTAG> mtd
device nand0 <nandflash0>, # parts = 4
#: name size offset mask_flags
0: bootloader 0x00040000 0x00000000 0
1: params 0x00020000 0x00040000 0
2: kernel 0x00200000 0x00060000 0
3: root 0x0fda0000 0x00260000 0
active partition: nand0,0 - (bootloader) 0x00040000 @ 0x00000000
defaults:
mtdids : nand0=nandflash0
mtdparts: mtdparts=nandflash0:256k@0(bootloader),128k(params),2m(kernel),-(root)
OpenJTAG> nand erase params
NAND erase: device 0 offset 0x40000, size 0x20000
Erasing at 0x40000 -- 100% complete.
OK
4.3- windows无法ping通开发板
开发板可以ping通windows和ubuntu,但是windows无法ping通开发板。。。
一直不知道怎么回事。
但好歹有个传输文件的方式,先不管了,先学着。
4.4- 开发板可以ping通windows和ubuntu,但是windows/ubuntu ping不通开发板
正常情况。 对 于 w i n d o w s / u b u n t u 发 来 的 p i n g 包 , u b o o t 不 会 回 应 \textcolor{Red}{对于windows/ubuntu发来的ping包,uboot不会回应} 对于windows/ubuntu发来的ping包,uboot不会回应 。
4.5- UBOOT怎样给windows要文件的
具体原理不直到,但是大致猜测下。
在uboot中设置了server IP=windows IP,且将uboot IP设置为和windows IP为同一网段。
然后windwos中打开tftp服务,且将tftp文件路径设置为文件路径。
这样在uboot中输入
t
f
t
p
30000000
待
传
输
的
文
件
\textcolor{Red}{tftp 30000000 待传输的文件}
tftp30000000待传输的文件
uboot开启了请求文件服务,windows开启了监听服务。当uboot请求文件时候,windows侧的tftp程序将对应路径下的文件传输到uboot侧。应该和socket通讯差不多。
纯属瞎猜,误轻信谣言。。。
4.6- 使用小米路由器作为无线中继如何设置IP
还是那句话
手
头
电
脑
只
有
无
线
网
卡
\textcolor{Red}{手头电脑只有无线网卡}
手头电脑只有无线网卡,需要借助无线路由器将电脑和开发板连接在同一网段。
小米路由器的IP通常为:
192.168.31.1
\textcolor{Red}{192.168.31.1}
192.168.31.1,所以如果使用小米路由器,需要将ubuntu、windows、开发板uboot的IP设置在192.168.31.xx范围内,否则ping报
故
障
\textcolor{Red}{故障}
故障。
另外注意,物理连线大致形式为:
开发板网口–小米路由器
∗
∗
l
a
n
∗
∗
\textcolor{Red}{**lan**}
∗∗lan∗∗口,这里一定要注意,开发板的网口
∗
∗
一
定
不
要
连
接
到
无
线
路
由
器
的
i
n
t
e
r
n
e
t
口
∗
∗
\textcolor{Red}{**一定不要连接到无线路由器的internet口**}
∗∗一定不要连接到无线路由器的internet口∗∗(接移动宽带的网口)
4.7- 其他问题
如果连ubuntu和windows都ping不同,大概率 ∗ ∗ 没 有 关 闭 防 火 墙 ∗ ∗ \textcolor{Red}{**没有关闭防火墙**} ∗∗没有关闭防火墙∗∗