NUC970系列资料之NuWriter使用手册

NUC970系列资料之NuWriter使用手册

1 概述

新唐科技NUC970系列芯片支持下列四种启动方式:

eMMC启动

SPI Flash启动

Nand Flash启动

USB ISP启动

以上四种启动方式是通过Power-setting(PA0和PA1)来选择的。使用NuWriter工具在USB ISP模式下,可以将镜像文档烧写到eMMC、SPI Flash、Nand Flash等外部存储设备中。

clip_image002

上图为NUC970系列芯片启动流程,启动时通过上电设置来决定使能或禁止如下功能:

看门狗定时器禁止/使能,定时器禁止/使能,时钟源选择,JTAG接口的使能/禁止。设定方法具体如下表:

Descriptor

Register Bit

Value

Mode

USB0 function setting

PWRON[16]

(USB0_ID)

0

Used as USB Host

1

Used as USB Device

Boot Source

PWRON[1:0]

(PA[1:0])

00

Boot from USBD

01

Boot from eMMC

10

Boot from NAND Flash

11

Boot from SPI Flash

System Clock Source

PWRON[2]

(PA.2)

0

System clock from 12MHz HXT

1

System clock from UPLL

Watchdog Timer On/Off

PWRON[3]

(PA.3)

0

WDT Off after power-on

1

WDT On after power-on

JTAG interface On/Off

PWRON[4]

(PA.4)

0

PJ[4:0] GPIO

1

PJ[4:0] JTAG interface

UART0 On/Off

PWRON[5]

(PA.5)

0

UART0 output ON

1

UART0 output OFF

NAND Flash Page Size

PWRON[7:6]

(PA[7:6])

00

2KB Page Size NAND Flash

01

4KB Page Size NAND Flash

10

8KB Page Size NAND Flash

11

Ignore Power-On Setting

NAND Flash ECC Type

PWRON[9:8]

(PA[9:8])

00

BCH T12

01

BCH T15

10

BCH T24

11

Ignore Power-On Setting

系统启动后,将进入上述四种启动方式之一。

1.1 Nand Flash启动

clip_image004

Nand启动流程:

l 检测PWRON[7:6]确定Page Size

l 检测PWRON[9:8]确定Nand Flash ECC Type

l 检测boot header。读取Nand Flash中Boot Code Marker,并判断Boot Code Marker是否正确。先读Block0的,如果不正确,继续读取Block1的,如果不正确,依次读取Block2、Block3中的Boot Code Marker。如果Block0 ~Block3中都找不到正确的Boot Code Marker,就跳到USB启动。

l 初始化DDR。

l 判断SHA是否使能,使能则计算SHA并确认是否正确。正确则执行SHA启动。不正确继续。

l 判断AES加密,如加密则作解密,没有则跳过解密。

l 将检测到的uBoot中存放的Image复制到对应的DDR位置。

l 程序跳转到相应位置执行。

注意:

uBoot中存放的Image加上boot header和DDR参数的总大小不能超过一个block大小,即

uBoot Image + Header + DDR Parmater < Block Size

Nand flash的启动有两部分:u-boot-spl.bin和u-boot.bin,这里所说的uBoot是指u-boot-spl.bin。

1.2 SPI Flash启动

clip_image006

SPI启动流程:

l 读取Boot Code Marker,从SPI Flash的0x0000 0000位置读取boot header的Boot Code Marker,判断Boot Code Marker是否正确,如果不正确则跳转到USB驱动。

l 初始化DDR。

l 判断SHA是否使能,若使能进行SHA启动。计算SHA,判断SHA是否正确。

l 检测AES加密是否使能。如有加密则解密,否则跳过解密。

l 将uBoot中存放的Image复制到对应DDR位置。

l 跳转到相应Image位置,执行Image。

1.3 eMMC启动

clip_image008

eMMC开机流程:

l 读取Boot Code Marker,并判断是否正确,不正确跳转到USB启动。从eMMC的0x0000 0400位置读取Boot Code Marker。

l DDR初始化。

l 判断SHA是否使能,若使能,则进入SHA启动。判断SHA是否正确。

l 检测AES加密是否使能,若使能则做解密,否则跳过解密。

l 将检测到启动文件的镜像复制到对应的DDR位置。

l 跳转到相应的DDR处,执行启动程序。

1.4 USB启动

clip_image010

USB启动流程:

l 等待PC端的NuWriter连接上NUC970。

l 等待NuWriter传送DDR初始化参数,并完成DDR初始化。

l 等待接收xusb.bin,并跳转执行xusb.bin.

l xusb.bin启动后,负责与NuWriter沟通,完成NuWriter的一些操作。

2 安装NuWriter驱动程序

NuWriter必须在电脑中安装VCOM驱动程序才能使用NuWriter工具。请按照下面的步骤来安装WinUSB4NuVCOM驱动程序:

将电脑与NUC970系列芯片通过USB cable连接起来。在电脑中执行WinUSB4NuVCOM.exe开始安装驱动程序。给NUC970的上电后,Window会发现新的设备,然后要求安装驱动程序。

clip_image012

按下“Next”。这个画面告诉你即将安装WinUSBNuVCOM 1.0驱动程序。如下图:

clip_image014

选择使用者想要安装的路径或使用默认路径,确定以后按下“Next”,得到下图界面:

clip_image016

按下“Next”,得到下图:

clip_image018

按下“install”,得到下图:

clip_image020

按下“Finish”,完成VCOM驱动程式的安装。

如果VCOM驱动程序是安装成功,可以在“Device Manager”中看到“WinUSB driver (Nuvoton VCOM)”。如下图所示:

clip_image022

3 USB ISP模式

NUC970系列芯片使用跳线来选择启动方式。当PA0和PA1设定为高时,选择USB ISP启动模式。其他启动设定可参考下表:

启动设定

PA1

PA0

USB ISP启动

Low

Low

eMMC启动

Low

High

NAND启动

High

Low

SPI启动

High

High

将NUC970设定为USB ISP模式后,给系统上电,通过USB连接到电脑,电脑识别出WinUSB driver设备后,启动NuWriter程序。程序连接到NUC970后即可使用NuWriter工具。

注意:只有在正确安装WinUSB4NuVCOM程序,且正确识别出WinUSB driver (Nuvoton VCOM)设备后,NuWriter才能与NUC970建立连接,才能使用NuWriter工具。

4 NuWriter工具

执行nuwriter.exe的第一个界面如下,选择芯片,目前支持NUC970系列芯片。

clip_image023

选择NUC970系列芯片,须同时选择DDR参数,DDR参数依据NUC970系列芯片的型号来选择。支持的芯片型号如下表:

clip_image025

clip_image027

选择所使用的NUC970系列芯片的型号,并选择相应的DDR参数后,按下“Continue”开始使用NuWriter工具。

4.1 DDR/SRAM模式

4.1.1操作方法

clip_image029

依照上图步骤即可在DDR/SRAM模式下完成将Image文件直接下载到DDR或SRAM中。操作步骤如下:

l 选择“DDR/SRAM”模式

l 选择Image文件

l 输入将Image文件放到DDR/SRAM的位置。注意:若要传输到DDR中,地址必须介于0x0000 0000 ~ 0x01F0 0000(31MB)之间。

l 选择“Download only”或是选择“Download and run”。

l 按下“Download”。

4.2 Nand Flash模式

Nand 模式可以将Image文件烧写到Nand Flash中,并且将Image文件类型设置为uBoot、Data、Environment、Pack等四种类型之一。

4.2.1 Image类型

uBoot型:一般为启动引导程序。

是系统启动后运行的第一个程序,NUC970系列芯片上电后会读取uBoot类型的Image并执行,不限定一定要存放uBoot,一般程序也可以用作uBoot类型的Image来作为上电后第一个被执行的程序。uBoot类型Image的header后增加了16字节对齐的DDR参数,uBoot镜像的结构具体如下:

clip_image031

Boot Code Marker = {0x20,’T’,’V’,’N’}

Execute Address = 通过IBR将uBoot复制到{Execute Address} 位置。

Image Size = {uBoot文件长度}。

Decrypt Address = {0xFFFFFFFF}。

DDR – Initial Marker = {0x55AA55AA}。

DDR – Counter = DDR 参数的长度,是计算下图所选择DDR参数NUC72DF62Y.ini的长度,该参数文件可以在NuWriter\sys_cfg\中找到。

clip_image033

NUC72DF62Y.ini存放的是DDR的参数,内容如下:

clip_image034

举例NUC72DF62Y.ini内容如下:(实际DDR参数如上图所示,是没有加入行数的)

clip_image036

clip_image038

依据NUC72DF62Y.ini内容可以计算出DDR – Counter = 42。

DDR – Address 0 = {0xB0000220}。DDR – Value0 = {0x01000000}。

DDR – Address 1 = {0xB0000264}。 DDR – Value1 = {0xC0000018}。

DDR – Address 2 = {0xB0000220}。 DDR -Value2 = {0x01000018}。

DDR – Address 3 = {0x55AA55AA}。 DDR – Value3 = {0x1}。

DDR – Address 4 = {0x55AA55AA}。DDR – Value4 = {0x1}。

依次类推…

DDR – Address 39 = {0xB0000218}。DDR – Value39 = {0x00000008}。

DDR – Address 40 = {0xB8003160}。 DDR – Value40= {0x00008000}。

DDR – Address 41 = {0xB80031A0}。DDR – Value41 = {0x00008000}。

DDR – Dummy = {0x00000000},DDR参数存放在存储器中必须以16字节对齐,不足部分需要以Dummy不足。

uBoot =存放启动boot二进制代码。对于nand flash启动来说,存放时u-boot-spl.bin。

再烧入到Nand flash的Block0,Block1,Block2,Block3中,共保存四份相同的uboot文件,如下图所示。

clip_image040

下图为实际从NAND Flash中读取出来的资料,由下图可知:

Boot Code Marker = {0x20,’T’,’V’,’N’}。

Execute Address = 0x00000200。

Image Size = 0x0000A628。

Decrypt Address = 0xFFFFFFFF。

DDR – Initial Marker = 0x55AA55AA。

DDR – Counter = 0x0000002A。

DDR – Address 0 = 0xB0000220, DDR – Value0 = 0x01000000。

依次类推…

DDR – Address 40 = 0xB8003160。DDR – Value40= 0x00008000。

DDR – Address 41 = 0xB80031A0。DDR – Value41 = 0x00008000。

DDR – Dummy = 0x00000000。DDR – Dummy = 0x00000000。

uBoot = address 0x00000170 ~ 0x00000170 + 0x0000A628。

但是NAND Flash启动时,uBoot类型必须满足下面的限制:

uBoot Image + Header + DDR parmater ≤ Block Size

clip_image042

针对Nand Flash启动,uboot类型的Image为u-boot-spl.bin,该镜像的execute address一般设为0x200。

DATA型:执行程序,一般为后续引导程序或kernel。

主要指那些不要进行处理,直接写入到Nand Flash指定位置的镜像文件。依据输入的Image start offset的值(需要Page Size对齐,Page Size是由Nand Flash规格所决定的),决定将Data存放在NAND Flash的那个位置,如果Image start offset = 0x10000,则将Data存放到Nand Flash的0x10000地址,此方式主要可以帮助使用者依据个人需求配置NAND Flash。

对nuc970系列芯片的nand flash启动,DATA类型Image主要有u-boot和kernel:u-boot镜像一般为u-boot.bin;Kernel镜像一般为970image.ub。u-boot.bin一般烧写到0x100000,这个地址是由u-boot-spl.bin决定的,在编译时可通过修改CONFIG_SYS_NAND_U_BOOT_OFFS(nuc970_evb.h中)的定义来修改。Kernel镜像是由u-boot来引导的,其烧写位置是由u-boot的bootcmd变量决定的,并且要与nand flash的分区一致。

FS型:文件系统

目前支持YAFF2与UBIFS两种文件系统格式,这两种格式的文件系统Image都可以使用FS类型来烧写到NAND Flash中。用户可以通过u-boot或Linux来读该文件系统。

YAFFS2制作Image的命令如下:

#mkyaffs2 –nuc970-ecclayout -p 2048 rootfs rootfs_yaffs2.img

–nuc970-ecclayout:使用NUC970硬件ECC

-p:设定Nand Flash页的大小(Page Size)。

使用上面的命令就可以将rootfs文件夹压缩成rootfs_yaffs2.img,而后就可以通过NuWriter将它烧写到NAND Flash中。这样系统启动后,就可以通过如下命令将YAFFS2文件系统挂载到flash文件夹。

#mount -t yaffs2 /dev/mtdblock2 /flash

YAFFS2的相关工具可以在yaffs2utils套件中找到。

制作UBIFS Image的命令如下:

clip_image044

mkfs.ubifs使用的参数说明如下:

-F:设定文件系统未使用的空间优先mount。

-x:压缩的格式,“lzo”,“favor_lzo”,“zlib”或“none”(默认为:“lzo”)。

-m:最小的I/O操作的大小,也就是Nand Flash一个页的大小。

-e:逻辑擦除块的大小(logical erase block size)。因为实际擦除块(PEB)为128KB,所以逻辑擦除块设定为124KB = 126976

-c:最大的擦除块的号码(maximum logical erase block count)。

-o:输出文件。

ubinize使用的参数说明如下:

-o:输出文件。

-m:最小输入/输出的大小,也就是NAND Flash一个页的大小。

-p:实际擦除块大小,128KB= 131072。

-O:VID文件偏移位置。

-s:使用最小输入/输出的大小,存放UBI文档头

rootfs_ubinize.cfg内容如下:

[rootfs-volume]

mode=ubi

image=rootfs_ubifs.img

vol_id=0

vol_size=92946432

vol_type=dynamic

vol_name=system

vol_flags=autoresize

使用上面的命令即可将rootfs文件夹压缩成ubi.img,然后就可以将ubi.img 通过NuWriter烧写到Nand Flash相应位置中。

系统启动后,可通过下面的命令UBIFS文件系统挂载到flash文件下:

需要参考/sys/class/misc/ubi_ctrl/dev的内容,假设内容为10:56,则设定如下

clip_image046

UBIFS相关命令可以在mtd-utils套件中找到。

Linux内核中必须打开相应文件系统的支持才能使用上述两种文件系统,相应的设置如下:

YAFFS2:

clip_image048

UBIFS:

clip_image050

相关套件的编译:

l 压缩解压缩工具:lzo-2.09.tar.gz

交叉编译名如下:

#cd lzo-2.09

#./configure –host=arm-linux –prefix=$PWD/../install

#make

#make install

l 产生通用唯一识别码的工具:libuuid-1.0.3.tar.gz

交叉编译命令如下:

#cd libuuid-1.0.3

#./configure –host=arm-linux –prefix=$PWD/../install

#make

#make install

l mtd-utils工具:mtd-utils.tar.gz

交叉编译命令如下:

交叉编译mtd-utils需要使用到lzo-2.09.tar.gz和libuuid-1.0.3.tar.gz

#cd mtd-utils

#export CROSS=arm-linux-

#export WITHOUT_XATTR=1

#export DESTDR=$PWD/../install

#export LZOCCPFLAGS=-I/home/install/include

#export LZOLDFLAGS=-L/home/install/lib

#make

#make install

l yaffs2命令工具:yaffs2utils.tar.gz

交叉编译命令:

#make

Environment

environment型主要用来将uboot的环境参数烧写到Nand Flash的指定位置,u-boot通过读取文件来获取环境变量。Image start offset的值(需要Page Size对齐)决定将Enviroment存放在Nand Flash的那个位置,如果Image start offset = 0x10000,则将Enviroment存放到Nand Flash的0x10000地址。

env.txt存放的是u-boot的环境参数及其值,内容举例如下:

clip_image052

Pack型镜像

Pack型用来将Pack.bin烧写到Nand Flash中。Pack.bin的原理可以参考Pack模式章节。

坏块处理

NuWriter可以将四种类型的Image烧写到Nand Flash中,烧写时遇到坏块时,则跳过坏块,烧写到下一后续块中。

4.2.2 操作方法

烧写image

clip_image053

Nand Flash Image烧写步骤:

l 选择“NAND”模式,上图左边的表格只记录本次烧录的Image文件,并不读取Nand Flash中已烧写的Image

l 输入Image文件资料:

Image Name:选择要烧写的Image文件。

Image Type:选择Image的类型。

Image encrypt:设置是否需要AES加密,若是则设置密钥文件。FS型Image无法使用AES加密。

Image execute address:设置Image的执行地址,只对烧写uBoot型Image有效。

Image start offset:设置Image烧写到Nand Flash的偏移位置

l 按下“Burn”,开始烧写。

l 等待烧写完成,在表格中回显示出这次烧写完成的Image文件。

l 在烧写完成后,可以通过“Verify”按钮来校验,烧写的资料是否正确。

读取Image

clip_image054

读取Image的步骤:

l 选择“NAND”模式。

l 按下“Read”。

l 选择文件存储位置

l 输入要读取的Block的数目(每一Block大小是由Nand Flash的型号决定的)

l 按下“OK”,即可完成Image读取。

擦除Image

clip_image055

擦除Image步骤:

l 选择“NAND”模式。

l 按下“Erase all”,擦除Nand Flash中的所有Image。

4.3 SPI模式

4.3.1 Image类型

uBoot

uBoot型Image是系统启动后运行的第一个程序,当系统上电后,IBR会将uBoot型Image读取到DDR RAM中并执行。uBoot型Image一般用来烧写u-boot.bin,也可用来烧写一般程序来作为系统启动后执行的第一个程序。NuWriter会先在uBoot的Image前增加16byte的文件头和DDR参数,然后把它们一起写到SPI Flash中去,写到SPI Flash中的最终数据的结构如下图所示:

clip_image058

详细的内容可以参考Nand Flash模式中的uBoot型章节。NuWriter会增加好文件头和DDR参数的Image烧写到SPI Flash的0x0地址。

clip_image060

DATA

DATA型用来烧写那些不需要做处理的image文件,NuWriter把Image读取后直接烧写到SPI Flash中。Image start offset(Block Size对齐,Block Size由SPI Flash的型号决定)是Data需要烧写的地址,如Image start offset = 0x10000,则将DATA烧写到SPI Flash 的0x10000地址。该地址由用户自由设置,例如当Linux Kernel需要由uBoot型Image引导起来时,若Linux Kernel的加载地址为0x8000,则以DATA型方式烧写Linux Kernel到0x8000地址。

Enviroment

用来烧写U-Boot的环境变量到SPI Flash的指定偏移位置,U-Boot启动时会读取该环境变量。Image start offset用来指定烧写地址,须按块对齐,如Image start offset = 0x10000,则将Enviroment型Image烧写到SPI Flash的0x10000偏移位置。

Pack

用来将打包好的Image文件烧写到SPI Flash相应位置。打包的原理请参照Pack模式章节。

4.3.2 操作方法

烧写Image

clip_image062

烧写Image的步骤:

l 选择“SPI”模式,左边表格只记录当前烧写的Image文件信息,并不会读取SPI Flash中已烧写的Image资料信息

l 输入Image的信息:

Image Name:选择要烧写的Image文件

Image Type:选择Image类型

Image encrypt:设置是否需要AES加密,若需要AES,则选择密钥文件。

Image execute address:设置Image的执行位置,根据编译设定输入,只在烧写uBoot型Image才需输入该值。

Image start offset:设置Image需要烧写的位置,在SPI Flash中的偏移地址。

l 按下“Burn”,开始烧写。

l 等待烧写完成后,左边表格将会显示该次烧写的Image的信息。

l 在烧写完成后,可通过“Verify”来校验Image是否已经正确烧写到Flash中。

读取Image

clip_image064

读取Image的步骤:

l 选择“SPI”模式。

l 按下“Read”。

l 选择文件存储位置。

l 输入需要读出Block的数目

l 按下“OK”,完成Image的读取。

clip_image066

擦除Image

擦除Image步骤:

l 选择“SPI”模式

l 按下“Erase All”,删除SPI Flash中所有Image文件。

4.4 eMMC模式

4.4.1 Image类型

uBoot

uBoot型Image是系统启动后运行的第一个程序。给nuc970系列芯片上电后,IBR会读取指定位置的uBoot型Image并执行。uBoot型Image一般用来烧写U-Boot.bin,但其他一般程序也可烧写成uBoot型的Image。NuWriter会在该Image前增加16bytes档头和DDR参数,具体如下图所示:

clip_image068

具体说明可以参考Nand Flash模式中的uBoot型章节,处理后的Image会被烧写到eMMC的0x400偏移位置。如下图所示:

clip_image070

DATA

DATA型用来烧写那些不需要做任何处理的Image。NuWriter直接将Image烧写到eMMC设定的地址中,烧写地址由image start offset(需要512字节对齐)来设定。如果Image start offset = 0x10000,则将Data型Image烧写到eMMC的0x10000地址,此方式给用户提供一种灵活配置eMMC的功能。

Environment

用来烧写将U-Boot的环境变量到eMMC的指定位置中,烧写地址由Image start offset(需要512字节对齐)指定。如Image start offset = 0x10000,则将Environment烧写到eMMC的0x10000地址。

Pack

根据Pack.bin的内容,将Pack中的Image放到对应的eMMC的地址。Pack.bin的原理可以参考Pack模式章节。

格式化(FAT32)

因为部分空间需要存放uBoot型的Image或其他型的Image,所以必须设定保留空间来存放,不能让使用户来修改这部分空间,保留空间是以512字节为单位,使用者可以根据情况设定保留空间的大小。

注意:修改此参数可能造成已烧写的Image或文件系统格式的损坏。

4.4.2 操作方法

烧写Image

clip_image072

烧写Image的步骤:

l 选择“eMMC”模式,左边表格只记录本次烧写的Image文件,并不读取eMMC中的Image的信息。

l 输入Image的信息:

Image Name:选择要烧写的Image的文件

Image Type:选择烧写Image的类型

Image encrypt:设置是否需要AES加密,若是则设置密钥文件

Image execute address:设置Image的执行地址,根据编译设定输入,只对uBoot型Image有效。

Image start offset:设置Image烧写在eMMC的地址。

l 按下“Burn”,开始烧写。

l 等待烧写完成后,在左边表格中会显示本次烧写完成的Image的信息。

l 在烧写完成后,可以选择按下“Verify”,来校验烧写是否正确。

读取Image

clip_image074

读取Image步骤:

l 选择“eMMC”模式。

l 按下“Read”

l 输入存储的文件名。

l 输入需要读回的Sector数目(1 sector is 512 bytes)

l 按下“OK”。即可完成。

格式化(FAT32

clip_image076

“eMMC”格式化步骤:

l 选择“eMMC”模式

l 按下“Format”。

l 输入保留空间的大小(以512bytes为单位)。注意修改此参数可能造成既有Image或文件系统的格式损坏。

l 按下“OK”,即可完成格式化。

4.5 Pack模式

将几个Image文件合并成一个Pack.bin文件,uBoot与16bytes文件头和DDR参数合并,具体如下:

clip_image078

Initial Marker = {0x0000 0005}。

File Length = {所有Image的长度},64K字节对齐。

File Number = {有多少个Image文件}。

Child0-File Length = {第一个Image资料的长度}

Child0-File Address = {第一个Image烧写的地址}

Child0-data = {第一个Image文件的实际数据}

Child1-File Length = {第二个Image资料的长度}

Child1-File Address = {第二个Image烧写的地址}

Child1-data = {第二个Image文件的实际数据}

假设在NuWriter的Pack模式下输入两个Image文件分别为u-boot-spl-NAND.bin和u-boot-NAND.bin,如下图所示:

clip_image080

Pack后的Pack.bin的格式如下:

Initial Marker = 0x0000 0005

File Length = 0x00050000(0x0000a798+0x0003c998)

File Number = 2

Child0-File Length = 0x0000a798

Child0-File Address = 0

Child0-data = ={address 0x00000020 + 0x00000000 ~ 0x00000020 + 0x0000a798}

Child-File Length = 0x3c998

Child-File Address = 0xA0000

Child-data = = {address 0x0000a7c8 + 0x00000000 ~ 0x0000a7c8 + 0x0003c998

clip_image082

4.5.1 操作方法

Pack模式可以将多个Image文件合并成一个Pack Image文件,以后就可以利用NuWriter将这个Pack Image直接快速的烧入到对应的存储器(如eMMC,Nand Flash,SPI Flash)中。

增加Image

clip_image084

增加Image步骤:

l 选择“PACK”模式。

l 输入Image文档信息:

Image Name:选择要烧写的文件

Image Type:选择Image类型

Image encypt:设置是否需要AES加密,若是则设置密钥文件

Image execute address:设置Image执行地址,根据编译设定输入,只有uBoot型Image需要设置该项。

Image start offset:烧写起始位置

l 按下“Add”。

修改Image信息

clip_image086

l 修改Image信息的操作步骤如下:

l 选择“PACK”模式

l 在表格上面连续按两下需要修改的Image。

l 修改Image文档信息

Image Name:更改需要烧写文件

Image Type:修改Image的类型

Image encrypt:更改AES加密设置及密钥文件

Image execute address:修改Image的执行地址

Image start offset:修改烧写起始位置

l 按下“Modify”。

删除Image

clip_image088

删除Image的操作步骤:

l 选择“PACK”模式

l 在表格上点一下要删除的Image

l 按下“Delete”

输出PACK文档

clip_image090

输出Pack文档的步骤:

l 选择“PACK”模式。

l 按下“Output”。

l 设置输出的文件名。

l 按下“Open”即可产生Pack Image。

烧写PACK文档

clip_image092

上图展示了以NAND Flash烧写Pack档的步骤:

l 选择烧写的存储器(eMMC/Nand Flash/ SPI Flash)

l 在Image Name选择要烧写的打包好的Pack文件

l Image Type选择Pack类型

l 按下“Burn”。

4.5.2 制作和烧写Pack的范例

准备相关的镜像文件:

1. u-boot.bin(默认offset为0xA0000,执行地址位置为0xE00000)。

2. u-boot-spl.bin(默认DDR执行地址为0x200)。

3. env.txt(默认offset为0x80000)

目前假设需要将env.txt、u-boot.bin和u-boot-spl.bin制作成一个Pack档并烧录到Nand Flash中,按照下列步骤完成Pack档的制作:

1.选择PACK模式

2.选择env.txt,并设定如下:

clip_image094

3.按下Add

4.选择u-boot-spl.bin,并设定如下:

clip_image096

5.按下Add

6.选择u-boot.bin,并设置如下:

clip_image098

7.按下Add

8.按下“Output”,产生Pack档。

按照下列步骤完成Pack档的烧写:

1.选择NAND模式

2.选择刚刚打包的Pack档,并设定如下:

clip_image100

3.按下“Burn”,完成Pack档的烧写

4.6 MTP模式

MTP模式用来密钥文件烧写到NUC970芯片的MTP中,该密钥用来保护存储器(eMMC,NAND Flash,SPI Flash)中的NUC970程序。

4.6.1 操作方法

clip_image102

烧写新的Key的步骤如下:

l 进入key_cfg文件夹,如下图:

clip_image104

l 新建文本文档并输入密码,密码格式如下,第一行一定是256,之后是连续8行的密钥(大端模式)。

clip_image105

l 重新启动NuWriter工具,并选择“MTP”模式。

l 选择刚刚新建的密钥文本文档。

l 选择烧写的方式:

启动模式选择:eMMC,NAND 或SPI Flash

加密模式选择:SHA或AES

l 按下“Burn”,完成密钥的烧写。