NUC972学习历程之NUWRITER使用说明以及烧录模式的说明
3.1 簡介
Nu-Writer 工具能幫助使用者透過 USB ISP模式, 將Image檔案放入儲存體中, 例如:SPI Flash設備或 NAND Flash設備.
3.2 驅動程式安裝
Nu-Writer 必須在電腦中安裝VCOM驅動程式才能使用Nu-Writer工具. 請依據下列步驟來安裝VCOM驅動程式:
1. 將電腦與NUC970系列晶片開發板透過USB cable連接起來後.在電腦中執行WinUSB4NuVCOM.exe 開始安裝驅動程式. (在Linux BSP的Tools目錄中)
2. 開啟NUC970系列晶片開發板的電源之後, Windows 會發現新的設備, 然後會要求你安裝驅動程式.

3. 按下 “Next”. 這個畫面告訴你即將要安裝WinUSB4NuVCOM 1.0 驅動程式. 如下圖:

4. 選擇使用者想要安裝的路徑或使用預設的路徑, 確定以後按下“Next”. 如下圖:

5. 按下 “Next”. 如下圖:

6. 按下 “Install”. 如下圖:

7. 按下 “Finish”, 完成VCOM驅動程式的安裝. 如下圖:

8. 如果VCOM驅動程式是安裝成功, 可以在”Device Manager”中看到“WinUSB driver (Nuvoton VCOM)”. 如下圖:


3.3 USB ISP 模式設置
NUC970系列晶片提供jumpers 去選擇開機的方法. 選擇USB ISP 模式, 則 PA0和PA1 必須設定為低電平 . 其他開機設定可以參考下表:


開啟NUC970系列晶片開發板的電源並且設定為USB ISP模式和開啟電腦上的Nu-Writer 工具, 即可開始使用.
注意:如果電腦沒有找到VCOM驅動程式則Nu-Writer工具無法使用.
3.4 芯片設置
解開NuWriter-xxxxxxxx.7z(在BSP/Tools目錄下)壓縮包, 執行 “nuwriter.exe”, 第一個畫面如下.
選擇目前晶片, 目前支援NUC970系列 (NUC972, NUC976… 等)芯片. 如果選擇NUC970系列芯片, 則必須選擇DDR參數, DDR參數依據NUC970系列芯片的PID來選擇. 選擇完成後按下 “Continue”, 即可開始使用Nu-Writer工具.

DDR/SRAM 模式
DDR/SRAM模式可以將Image檔案直接下載到DDR 或 SRAM 記憶體中. 操作步驟如下:
1. 選擇 “DDR/SRAM”模式.
2. 選擇Image檔案.
3. 輸入Image檔案放在DDR/SRAM的位址. 注意:若要傳輸到 DDR 中, 位址必須介於0x00~0x1F00000(31MB).
4. 選擇”Download only”或是選擇”Download and run”
5. 按下 “Download.
DDR/SRAM模式可以將Image檔案和Divice Tree檔案(*.dtb)一起直接下載到DDR 或 SRAM 記憶體中. 操作步驟如下:
1. 選擇 “DDR/SRAM”模式.
2. DTB 檔案打開.
3. 選擇 DTB檔案
4. 輸入Image檔案放在DDR/SRAM的位址. 注意:不要被Image 檔案覆蓋.
5. 選擇Image檔案.
6. 輸入Image檔案放在DDR/SRAM的位址. 注意:若要傳輸到 DDR 中, 位址必須介於0x00~0x1F00000(31MB).
7. 選擇”Download only”或是選擇”Download and run”
8. 按下 “Download.

eMMC 模式
eMMC 模式 可以將Image檔案燒入到eMMC中,並且將Image檔案型態設定為Data、Environment、uBoot 、 Pack,四種型態中的其中一種 。

新增Image檔案
1. 選擇 “eMMC” 模式, 表格只會紀錄當次燒錄的Image檔案,並不會讀取eMMC Flash中Image的資料。
2. 輸入 image檔案資料:
Image Name
Image Type
Image encrypt
Image execute address
Image start offset
3. 按下 “Burn”。
4. 等待進度表完成後,表格將會顯示這次燒錄完成的Image檔案。在完成以後,如果按下“Verify”即可確認燒入資料是否正確。
讀取eMMC
依照下列步驟即可以完成新增Image檔案:
1. 選擇 “eMMC” 模式。
2. 按下 “Read”。
3. 輸入儲存的檔案。
4. 輸入讀回來的sectors(1 sector is 512 bytes) 。
Start : Sector 起始位置
Length : Sector 長度
5. 按下 “OK”。即可完成。

格式化 (FAT32)
依照下列步驟即可以完成eMMC格式化:
1. 選擇 “eMMC” 模式。
2. 按下 “Format”。
3. 輸入保留空間(單位為512bytes)。注意:修改此參數可能造成Image或FAT32格式損毀。
4. 按下 “OK”。即可完成。

SPI 模式
SPI 模式 可以將Image檔案燒入到SPI Flash中, 並且將Image檔案型態設定為Data、Environment、uBoot 、 Pack, 四種型態中的其中一種 。
3.7.1 新增Image
依照下列步驟即可以完成新增Image檔案:
1. 選擇 “SPI” 模式, 表格只會紀錄當次燒錄的Image檔案,並不會讀取SPI Flash中Image的資料。
2. 輸入 image檔案資料:
Image Name 選擇要燒錄的 loader 檔案
Image Type 選擇燒錄 Image的型態
Image encrypt 設置是否需AES加密, 若是, 設置秘鑰文件
Image execute address 設置 loader 執行位置, 依編譯設定而輸入.
Image start offset 燒錄起始塊位置
3. 按下 “Burn”.
4. 等待進度表完成. 在完成以後如果按下“Verify”即可確認燒入資料是否正確.

3.7.2 讀取Image
依照下列步驟即可以完成讀取Image:
1. 選擇 “SPI” 模式。
2. 按下 “Read”。
3. 選擇要儲存檔案的位置。
4. 輸入讀回來的blocks,Block 大小是依據SPI FLASH規格所決定。
Start : Block 起始位置
Length : Block 長度
5. 按下 “OK”, 即可完成Image讀取。

3.7.3 移除 Image
依照下列步驟即可以完成移除Image檔案:
1. 選擇 “SPI” 模式。
2. 按下 “Erase all”,即可完成移除Image。
NAND 模式
NAND模式 可以將Image檔案燒入到NAND Flash中, 並且將Image檔案型態設定為Data、Environment、uBoot 、 FS、Pack, 五種型態中的其中一種 . FS型態目前支援YAFFS2與UBIFS兩種檔案系統格式。這兩種格式都可以選擇FS型態,將做好的Image存放到NAND Flash對應的位址。讓使用者可以透過uBoot或Linux來讀取檔案系統。YAFFS2與UBIFS的Image檔的製作可以參考3.8.4章節
3.8.1 新增Image
依照下列步驟即可以完成新增Image檔案:
1. 選擇 “NAND” 模式, 表格只會紀錄當次燒錄的Image檔案,並不會讀取NAND Flash中Image的資料.
2. 按下 “Add new”. (當選擇NAND模式時, 預設為“Add new”頁面)
3. 輸入 image檔案資料:
Image Name 選擇要燒錄的 loader 檔案
Image Type 選擇燒錄 Image的型態
Image encrypt 設置是否需AES加密, 若是, 設置秘鑰文件
Image execute address 設置 loader 執行位置, 依編譯設定輸入.
Image start offset 燒錄起始塊位置
4. 按下 “Burn”.
5. 等待進度表完成. 在完成以後如果按下“Verify”即可確認燒入資料是否正確

讀取Image
依照下列步驟即可以完成讀取Image:
1. 選擇 “NAND” 模式。
2. 按下 “Read”。
3. 選擇要儲存檔案的位置。
4. 輸入讀回來的blocks,Block 大小是依據NAND FLASH規格所決定。
Start : Block 起始位置
Length : Block 長度
5. 按下 “OK”, 即可完成Image讀取。

移除 Image
依照下列步驟即可以完成移除Image檔案:
1. 選擇 “NAND” 模式。
2. 按下 “Erase all”,即可完成移除Image。
3.8.4 製作File System Image
這裡說明如何製作YAFFS2(yaffs2的tag儲存在DATA區塊中)和UBIFS,這兩種File System都可以使用DATA型態燒入到 NAND flash中,依據下列步驟即可完成製作File System Image。
1. YAFFS2製作In-band tags Image命令如下:(yaffs2的tag儲存在DATA區塊中)

--inband-tags:yaffs2的tag儲存在DATA區塊。
-p:設定NAND Flash頁的大小(Page Size)。
即可將rootfs資料夾壓縮成rootfs_yaffs2.img,再透過NuWriter放到相對應NAND Flash的位址。輸入下列命令即可將YAFFS2 inband-tags 檔案系統掛在flash資料夾中:

YAFFS2的指令可以在yaffs2utils套件中找到。YAFFS2文件系統設置可以參考5.3.4章節。
UBIFS製作Image命令如下:

mkfs.ubifs 使用的參數說明如下: -F :設定檔案系統未使用的空間優先mount. -x: 壓縮的格式,"lzo", "favor_lzo", "zlib" 或 "none" (預設:"lzo") -m:最小的I/O操作的大小,也就是NAND Flash一個頁的大小。 -e:邏輯擦除塊的大小(logical erase block size)。因為實體擦除塊(PEB)為128KiB,所以邏輯擦除塊設定為124KiB=126976。 -c:最大的擦除塊的號碼(maximum logical erase block count)。
-o:輸出檔案。
ubinize使用的參數說明名如下:
-o:輸出檔案。 -m:最小輸入/輸出的大小,也就是NAND Flash一個頁的大小。 -p:實體擦除塊大小,128KiB=131072。
-O:VID檔頭位移位置。
-s:使用最小輸入/輸出的大小,存放UBI檔頭。
ubinize.cfg


即可將rootfs資料夾壓縮成ubi.img,再透過NuWriter放到相對應NAND Flash的位址。
輸入下列命令即可將UBIFS檔案系統掛在flash資料夾中:
需要參考/sys/class/misc/ubi_ctrl/dev內容,假設內容為 10:56,則設定如下:

UBIFS相關指令可以在mtd-utils套件中找到。UBIFS文件系統設置可以參考5.3.4章節。
3.9 MTP 模式
MTP模式可以將你選擇的鑰匙檔案燒入到NUC970系列晶片的 MTP中, 藉由此鑰匙來保護NUC970系列晶片使用到存儲體(eMMC, NAND, SPI FLASH)中的程式碼.
3.9.1 新增key檔案
1. 進入資料夾key_cfg如下圖.

2. 建立文字檔和輸入密碼, 密碼格式如下, 第一行一定是 256. 之後連續 8 行大端模式密鑰.


3. 重新開啟Nu-Writer工具, 並選擇 “MTP” 模式.
4. 選擇剛剛建立的文字檔.
5. 選擇燒入的方式
開機模式選擇: eMMC, NAND, 或 SPIFLASH
保護模式選擇: SHA 或 AES
啟動模式選擇: Enable 或 Disable
上鎖模式選擇: 如果此模式開啟時,則永久無法修改MTP相關的設定,使用此模式時請小心
6. 按下 “Burn”. 即可完成燒錄動作.

NUC972学习历程之NUWRITER使用说明以及烧录模式的说明的更多相关文章
- python学习历程之split()方法获取cmd mysql 结果集
if __name__=='__main__': FServerId = raw_input("Please input source id:") GetFileKey(FServ ...
- Tomcat 学习进阶历程之Tomcat架构与核心类分析
前面的http及socket两部分内容,主要是为了后面看Tomcat源代码而学习的一些网络基础.从这章開始.就開始实际深入到Tomcat的'内在'去看一看. 在分析Tomcat的源代码之前,准备先看一 ...
- ROS机器人程序设计(原书第2版)学习镜像分享及使用说明
ROS机器人程序设计(原书第2版)学习镜像分享及使用说明 系统用于ROS爱好者学习交流,也可用于其他用途,并不局限于ROS. 这款镜像文件是基于一年前的Ubuntu ROS Arduino Gazeb ...
- vuejs 学习旅程之 vue-resource
如上图,所有的数据是从php获取过来的.所以就引出了vuejs 与php通信之说.百度了一下需要使用到一个vue插件 就是今天的主题 vuejs 学习旅程之 vue-resource vue-reso ...
- 850 USB 烧录模式
/************************************************************************* * 850 USB 烧录模式 * 说明: * 本文 ...
- thinkphp学习笔记3—项目编译和调试模式
原文:thinkphp学习笔记3-项目编译和调试模式 1.项目编译 在章节2.4项目编译中作者讲到使用thinkphp的项目在第一次运行的时候会吧核心需要加载的文件去掉空白和注释合并到一个文件中编译并 ...
- 深度学习篇——Tensorflow配置(傻瓜安装模式)
前言 如果你是一个完美主义者,那么请绕过此文,请参考<深度学习篇——Tensorflow配置(完美主义模式)> 安装 pip install tensorflow ok,只要不报错,安装就 ...
- I.MX6 不一定要设置BOOT_MODE进入烧录模式
/************************************************************************* * I.MX6 不一定要设置BOOT_MODE进入 ...
- 新唐ARM9之NUC972学习历程之系统的搭建和BSP包的使用
说到嵌入式,我们首先想到的,就是它的复杂程度,LINUX,BSP,UBOOT,交叉编译,寄存器配置,等等一系列的问题,甚至有的时候我们对此一头雾水,很是头疼,不过我们今天要说的就是关于NUC972的一 ...
随机推荐
- string 与 char 的区别
1.char是字符类型 2.string是字符串类型 虽然一字之差,但其本质是很大的. 1. char属于基础类型(C++),在C#中它属于值类型(Value Type).char类型的长度是固定的, ...
- #include <algorithm>中sort的一般用法
1.sort函数的时间复杂度为n*log2(n),执行效率较高. 2.sort函数的形式为sort(first,end,method)//其中第三个参数可选. 3.若为两个参数,则sort的排序默认是 ...
- 为gridview的每个单元格添加鼠标悬停提示文本(tooltip)
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { for (int i ...
- C语言 · 关联矩阵
算法训练 关联矩阵 时间限制:1.0s 内存限制:512.0MB 问题描述 有一个n个结点m条边的有向图,请输出他的关联矩阵. 输入格式 第一行两个整数n.m,表示图中结点和边的数目 ...
- HAProxy+Varnish+LNMP实现高可用负载均衡动静分离集群部署
HAProxy高可用负载均衡集群部署 基本信息: 系统平台:VMware WorkStation 系统版本: CentOS Linux release 7.2.1511 (Core) 内核版本: 3. ...
- [LintCode]计算两个数的交集(二)
问题分析: 用两个指针分别遍历即可. 问题求解: public class Solution { /** * @param nums1 an integer array * @param nums2 ...
- 浏览器向下兼容之polyfill[阅后即瞎]
我们入门JavaScript的时候都写过polyfill: 比如手写一个弹窗, 手动模拟实现一个表格, 这些魔力的对象都是浏览器原生支持的, 虽然当我成为JS专家之后再也没造过轮子, 但是最近才发现我 ...
- RTMP规范 消息与消息块
Real Time Messaging Protocol(实时消息传输协议) 应用层协议 RTMP协议中, 基本数据单元称为消息(Message).当RTMP协议在互联网中传输数据的时候,消息会被拆分 ...
- 关于SqlServer数据库C盘占用空间太大问题
工程需要用上了SQL SERVER2008 ,主要作为数据仓库使用,使用SSIS包从ORACEL10G中抽取数据到MS SQL中.环境是win2003x64的,驱动使用的oracle10gX64.使用 ...
- 关于Cocos2d-x对象的定义和创建
游戏可以包含很多个场景,每个场景又包含很多的层,每个层又包含很多的节点,这些节点,层,场景都可以看成一个一个的对象,我们把每一个彼此不同但又是同类型的对象归为一个类,为它创建一个单独的类,这个类有这些 ...