Amlogic烧录工具V2使用手册V0.9
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Application Notes
Amlogic 烧录工具V2使用手册
Revision 0.9
Amlogic,Inc.
2518Mission College Blvd Santa Clara,CA 95054
U.S.A.
Legal Notices
©2014Amlogic,Inc.All rights reserved.Amlogic ®is registered trademarks of Amlogic,Inc.All other registered trademarks,trademarks and service marks are property of their respective owners.This document is Amlogic Company confidential and is not intended for any external distribution.
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
目录
1.概要说明 (4)
1.1简介.....................................................................................................................................................................................41.2术语.....................................................................................................................................................................................42.SDK 与工具获取 (5)
2.1代码下载与固件打包..........................................................................................................................................................52.2PC 工具获取.........................................................................................................................................................................73.Sdcard 烧录使用说明 (9)
3.1整包烧录 (9)
3.2单个分区烧录(开发者用户使用)B 烧录使用说明.. (14)
4.1工具与驱动安装................................................................................................................................................................144.2整包烧录............................................................................................................................................................................154.3单个分区烧录(开发者用户使用)................................................................................................................................165.Key 的配置与烧录 (20)
5.1编译与配置支持................................................................................................................................................................205.2使用USB 烧录工具烧录key .............................................................................................................................................255.3使用usb 命令工具烧录key ..............................................................................................................................................28A
m
l o
g i c
C
o n
f i d
e n
t i a l !
文档版本版本日期
作者修改
0.1Aug.13,2013Sam Wu 初稿,只包含命令工具使用说明0.5Aug.16,2013Sam Wu 增加USB 整包烧录工具使用说明
0.6Aug.23,2013Sam Wu Support g18/g24/g33in m6kernel3.8development 0.7Oct.09,2013Sam Wu Support k100/k101/k200of m8platform
0.8Oct.15,2013Sam Wu Sdcard burning support output dynamic progress bar on LCD,and enabled on k100/k1010.9
Feb.10,214
Sam Wu
Add key burning description
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
1.概要说明
1.1
简介
本文档介绍Amlogic kernel3.10下支持的镜像烧录方式,镜像烧录目前包括USB 烧录和sdcard 烧录两种。
本文档适用Amlogic Kernel 3.10SDK 的开发,Kernel 3.0方案不支持此方式.
本文档暂不描述OTA 方式升级的相关内容。
1.2术语
1)Version 2烧录:一种基于Amlogic 的NFTL 驱动接口和worldcup USB 协议,在uboot 下实现
的按镜像方式烧录,目前支持USB 烧录和sdcard 烧录两种烧录方式。
2)AmlUsbBurning 2.0.xx:version2对于的USB 烧录工具,目前支持win7/winxp 等windows OS.
3)Update.exe:基于Amlogic libusb 驱动的命令行工具,也相当于uboot 的usb 终端,可以通
过libusb 驱动给uboot 发送命令,主要用于开发用户部分烧录,也可以用于调试。
4)Update:uboot 下命令,使平台进入worldcup 协议模式,用于进入Amlogic 的USB 烧录模式。
5)Sdc_update:uboot 命令,用于从tf 卡读取一个文件并烧录到平台一个分区。
6)Sdc_burn:uboot 命令,用于从tf 卡上读到配置文件并读取Amlogic 格式的烧录包进行烧录。
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
2.SDK 与工具获取
2.1代码下载与固件打包
2.1.1
code download
仅介绍m8支持的kernel 3.10+android 4.4.
a.
android:+uboot
repo init -u git:///platform/manifest.git -b kk-amlogic --repo-url=git://10.8.9.5/tools/repo.git repo sync
Note:uboot 代码仍然单独编译,但code 已经包含在sdk 根目录下,即/uboot/。
2.1.2
system build
a.uboot:
i.
uboot config
config command for k200:"make m8_k200_v1_config"config command for k100:"make m8_k100_v1_config"config command for k101
:"make m8_k101_v1_config"
ii.uboot make;
iii.
uboot output (uboot\build\)
copy uboot\build\u-boot.bin to directory device/amlogic/gxxxx/Copy uboot\build\ddr_init.bin to directory device/amlogic/gxxx/Copy uboot\build\u-boot-orig.bin to directory device/amlogic/gxxx/
b.
Android:
i.source build/envsetup.sh ii.
K100:
lunch k100-userdebug
K101:
lunch k101-userdebug K200:
Lunch k200-userdebug
2.1.3
Make out burning package
生成大的完整烧录包:
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
Lunch 到相应方案后,在sdk 的root 目录下直接make(或者make otapackage)即可在对应的out 路径(如out\target\product\k100)下生成完整的烧录包aml_upgrade_package.img.
aml_upgrade_package.img 烧录包可同时用于USB 烧录和卡烧录两种烧录方式。
如果make tool 提示没有aml_upgrade 的rule 可生成,或者aml_upgrade_package.img 没有生成,说明您的所在项目代码没有在makefile 中enable TARGET_SUPPORT_USB_BURNING_V2相关编译宏,请联系项目的对应owner 。
生成用于烧录的单个分区镜像
1)在android 根目录下使用Make bootimage 生成boot.img 2)
在uboot 目录下make 生成u-boot.bin.
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
2.2PC 工具获取
因为烧录有USB 烧录和SDcard 烧录两种,对应的工具也分USB 烧录工具和sdcard 烧录工具。
2.2.1
USB 烧录工具
USB 烧录工具分为整包烧录工具和命令行烧录工具:1
整包烧录工具
USB 烧录最新工具请从ftp 下载,ftp 地址:
ftp:///tools/testing_release/USB_Burning_Tool/
烧录工具界面预览:
2
命令行烧录工具
工具下载地址:ftp:///tools/testing_release/USB_Burning_Tool/update-20131008.zip 命令行工具update.exe 的help 界面:
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
请使用带如上help 界面的Update.exe
2.2.2Sdcard 烧录制作工具
Sdcard 烧录制作工具有两个,请从ftp 下载,ftp 地址为:
2.2.2.1启动卡制作工具:
ftp:///tools/testing_release/Boot_Card_Maker/
目前sdcard 烧录需要”卡启动制作工具”,使用“卡启动制作工具”烧录u-boot.bin 到用于烧录的tf
卡。
约束:1,如果您的卡未用于过卡启动与卡烧录,则卡需要被分区和格式化。
2,卡启动制作工具支持windows xp 和Windows 7(win7supported).
卡启动制作工具预览:
2.2.2.2卡烧录制作工具
卡烧录制作工具用于将整个完整的烧录包(默认名称是aml_upgrade_package.img)烧录到烧录卡中,可以一键完成制作此卡的多个步骤。
工具地址:ftp:///tools/testing_release/Burn_Card_Maker
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
3.Sdcard 烧录使用说明
3.1整包烧录
整包烧录,同样使用”make aml_upgrade”或者“make”命令编译出烧录包。
整包烧录,您需要制作一张用于烧录的tf card.
如果tf 卡未正确分过区,则卡需要被格式化;
如果已经正确分过区,则卡上内容不受破坏。
3.1.1制作烧录卡
(一)使用工具制作烧录卡(推荐方式):
使用工具Burn_card_Maker ,选择烧录包aml_upgrade_package.img 可以一键制作烧录卡。
工具地址:ftp:///tools/testing_release/Burn_Card_Maker
3.1.2
烧录卡制作工具选项说明:
工具选项其实就是修改aml_sdc_burn.ini,此ini 脚本与recovery 烧录时的
factory_update_param.aml 类似,目前用户需要指定的选项有四个:
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
1)To Partition and Format:此选项会重新格式化你的tf 卡,如果已经分过区的卡不需要
选择此项。
如果没有分区过需要选项此选项,否则uboot 的fatload 等fat 相关命令无法识别到卡(此选项不在aml_sdc_burn.ini 脚本中)。
2)Erase_flash:
i.值为1,与工具“普通擦除”对应,表示烧录之前会先擦除flash 的所有分区内容和uboot ,相当于先
手动erase 再进行烧录;
ii.值为2,与工具的“强制擦除”对应,与1一样会擦除所有分区内容和uboot ,但是使用是用scrub 而
非erase .
iii.值为3,与工具的“擦除所有”对应,会同时擦除所有分区内容、uboot 和flash key .iv.值为4,与工具的“擦除擦除所有”对应,功能与3一样,但使用的是去保护模式。
3)Erase_bootloader:如果为1,烧录时平台会从最新的tf 卡上的bootloader 启动,保证使用最新的
bootloader 进行卡烧录(默认选项,为使烧录时运行最新的code ,请保留此默认勾选选项)。
4)P ackage:允许卡上存在很多烧录包,此选项指定哪个烧录包为要更新的烧录包。
(与
factory_update_param.aml 中的--update_package 含义相同)
(二)手动制作卡烧录卡:
1使用”SDcardMaker.exe”,将编译出来的u-boot.bin 烧录到你的tf 卡上。
2将整个aml_upgrade_package.img 拷贝到tf 卡上。
3
从device\amlogic\k100下获得aml_sdc_burn.in ,并将package 项的名字改为您的固件包名字(默认为
aml_upgrade_package.img),拷贝aml_sdc_burn.ini 到tf 卡。
3.1.3
进入烧录模式
如果您的平台是空板,即没有烧录过,插入制作好的tf 卡并重新上电,就可以自动进入烧录模式。
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
如果您的平台是非空板并且烧录的是新的code ,您可以用组合键的方式进入tf 卡烧录。
有串口的情况下在uboot 命令行模式下使用”run update”命令开始烧录。
⏹Note:uboot 下的’run update’命令支持多种烧录方式,
i.最先会尝试usb 连接,有连接就进入usb 烧录模式;
ii.如果没有usb 连接就先寻找卡上的aml_sdc_burn.ini ,如果存在则会进行uboot 下的卡烧录;iii.没有找到卡烧录脚本,就寻找自动擦除脚本aml_autoscript ,有则执行此脚本;
iv.
最后会跳转进入recovery 烧录。
所以,如果希望一直用recovery 方式烧录,可以直接运行’run recovery’或者将卡上的’aml_sdc_burn.ini’rename.
3.1.4烧录过程
在uboot 下使用命令[sdc_burn $sdcburncfg]或者“run update”即可完成整包烧录的过程。
烧录过程在下方会有不断更进度条,以k101为例,会显示如下进度界面
其中:a.
左上角数字为主要步骤的log.
b.
中间图标表示烧录状态:通常有三种图标:开始烧录,正在烧录(图示为正在烧录),烧录完成与烧录失败。
c.
正下方进度条的快慢反映烧录需要多少时间。
(固件越大则进度条更新也相应变慢)
3.1.
4.1
百分比进度的含义:
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
3.1.
4.1.10~2%:
此过程完成:
1)如erase_bootloader 被选择,则擦除bootloader 并重启。
2)
初始化烧录环境,从烧录包中获取图片资源等。
!如果烧录失败并且停留在2%,则表示flash 初始化失败!
3.1.
4.1.22%~5%:
此过程是flash 初始化,如果erase_flash 被选择则同时擦空flash.
3.1.
4.1.36%~94%:
此过程烧录除bootloader 外的数据分区,如果进度停留在这个阶段,则表示烧录分区失败。
3.1.
4.1.496%~98%:
此过程烧录bootloader.
3.1.
4.1.5100%:
烧录完成
3.1.
4.2
烧录成功与烧录失败:
1)
烧录成功会显示如下图logo:
烧录成功时需要按一下power key 以关闭平台。
2)烧录失败会显示如下logo :
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
烧录失败时需要长按power key 以关闭平台,或者保留现场让相关开发人员查看。
3.2单个分区烧录(开发者用户使用)
3.2.1命令使用举例:
Use UBoot command [sdc_update]to burn a partition E.g.:
Update partition boot:
s dc_update boot boot.img
Update partition bootloader :
sdc_update bootloader u-boot.bin
...apply this rule to other partitions.[system/recovery/boot and etc..]
Generally,after burn succussed,pls use UBoot command [reset]to reboot the
platform.
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
B 烧录使用说明
4.1工具与驱动安装
4.1.1工具安装
ftp:///tablet/tmp/tools/Usb_burning/
请从上述ftp 地址处获取最新工具进行安装。
4.1.2驱动安装
如从未使用过Amlogic 的usb 烧录工具,您需要安装相应的USB 设备驱动程序。
安装步骤:
1)Step 1:进入USB 烧录模式
如果是烧录过code 的平台,请在uboot 模式下输入update 命令,则串口有如下打印:
如果uboot 不识别update 命令,请更新你的uboot code 并重新烧录uboot.
2)Step 2:install the driver
如果平台otg 口与pc 连接正常,请查看windows 设备管理器,如查看到如下设备代表驱动正常:
如未识别到此设备并且有未知USB 设备,请从ftp 处获得driver 并手动install driver:
Driver 的ftp 地址:ftp:///tools/testing_release/USB_Burning_Tool/AmlogicusbBurningdriver.zip
a)
Step 4:安装完成后,确认识别到如图的libusb-win32设备,正常识别后请手动插拔一次USB 线。
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
4.2整包烧录
这是推荐的烧录方式,因为可以全部更新平台的code 分区,
4.2.1
进入烧录模式
进入烧录模式:请先连接好USB 线!
如果您的平台是空板,连接好USB 后重新上电即可进入烧录模式。
(注意区分不同的USB 口) 如果平台是烧录过code 的,并且code 是新的,可用组合键进入烧录。
在android 下使用”reboot usb_burner_reboot”或“reboot update”,或在uboot 命令行模式下使用update 命令进入烧录模式。
4.2.2Pc 操作:
以g33为例,整包烧录即使用“make aml_upgrade “or “make”编译出来的image 进行烧录,image 生成路径
为AndroidRoot/out/target/product/g33refNew/aml_upgrade_package.img 。
在工作显示连接成功的情况下(连接好pc 并且成功进入烧录模式工具才会显示连接正常),导入烧录包
aml_upgrade_package.img 。
4.2.3界面选项说明:
界面有三个选项:1)
擦除flash:如果您之前烧录过旧的code ,尤其是flash 相关的driver 有更新,或者需要格式化所有分区,请勾选此选项。
勾选此选项后不需要手动擦除,会在烧录之前使用烧录包中最新code 擦除掉整个flash ,擦除flash
需要时间,时间多少与您所使用的平台flash 容量相关,容量越大擦除时间越久,通常大约是1sec/GB.
为了提高工厂烧录的直通率,目前flash team 建议在烧录时默认使用擦除选项。
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
2)擦除bootloader:如果uboot 或者分区表配置有更新,请选择此选项,这是默认选项,通常情况必须选中。
3)
烧录成功后重启:此选项会在烧录完成后reset 平台,选中后在烧录完成后你可看到启动logo.
4.2.4烧录完成
烧录完成后,工具会在UI 上显示绿色的烧录完成标识。
4.3单个分区烧录(开发者用户使用)
单分区烧录,即使用命令行工具update.exe,在命令行模式使用命令行单独烧录一个分区镜像,因为省去了编译出整包的时间和只更新一个分区,所以相对快捷且高效。
注意:单个分区烧录的目的是为了debug 您的code,所以单个分区烧录,您必须使用整包烧录方式烧录自己编译出来的整个包,否则很可能只更新单个分区会导致烧录之后启动不正常。
4.3.1
常用命令举例:使用USB 命令行更新pc 上的一个分区.
4.3.1.1
进入usb 烧录模式
进入usb 烧录模式有两种:
1)在android 模式下使用“reboot usb_burner_reboot”或reboot update 使android reboot 到UBOOT 的烧录模式.
2)在uboot 下执行update 命令或者run update 以进入USB 烧录模式.
3)
如果您需要烧录bootloader/boot/recovery 之外的分区,在进行实际烧录之前还需要执行flash 命令的初始化:[update bulkcmd “disk_initial”]
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
4.3.1.2
Command example
Command:update.exe partition partition_name partition_image_path E.g.:
Update partition boot with boot.img:
Update.exe partition boot boot.img
Update partition bootloader with u-boot.bin:
update.exe partition bootloader u-boot.bin
...apply this rule to other partitions
For system:Update partition system system.img
For recovery:update partition recovery recovery.img
Note:
1)建议将您的Update.exe 所在的path 加入到您windows 的Environment path,这样您可以在任何地方通过cmd.exe 调用update.exe.
2)更换比较多时,尤其是uboot 切换不同config 时,需要make distclean 再重新编译!
4.3.1.3After burn
烧录完成:
请使用update bulkcmd “reset”重启平台即可;
4.3.2其它命令简介
可直接输入update+回车查看update.exe 的简单帮助。
a.常用命令及格式:
命令名命令格式
命令功能
命令参数含义与举例Partition
Update partition [dev0]part_name image_path
烧录一个分区镜像到平台,此命令功能是mwrite 命令的简化和子集
推荐先将分区镜像拷贝到本地,避免网络问题。
bulkcmd Update.exe bulkcmd [dev0]“cmd_str”
执行USB 烧录支持的命令,或者一个普通的不需要交互的uboot 命令。
Cmd_str 长度不能超过62个字节
[Update bulkcmd “disk_initial”]用于初始化flash 。
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
[update bulkcmd “reset”]用于重启平台。
mwrite
Update.exe mwrite dev0
partition_img_file store part_name [file_format]
烧录一个分区镜像
Partition 命令是对mwrite 命令的一个封装,mwrite 还可以用来写内存和key ,但Partition 不可以。
Parttition_img_file:镜像文件。
Store:为nand/emmc/spi 中的一种,驱动为根据平台自动识别。
Part_name:分区名字。
File_format:sparse/normal
Mread
Update.exe mread [dev0]part_name normal nBytes_to_dump dump_file
将平台端分区part_name 的前nBytes_to_dump 个字节的内容dump 到pc ,存储为dump_file
Part_name:分区名字,与分区表对应。
Normal:固定参数。
Nbytes_to_dump:要dump 的字节数
Dump_file:将数据另存为文文件
Eg:
[update mread store boot normal 0x100000boot.dump]将平台分区boot 的前1M 内容dump 到pc 并存为boog.dump 文件。
[update mread store mem 0x10100000normal 0x2000001.dump]
将平台内存地址0x10100000开始的2M 内容dump 到pc 并存为文件。
Write
Update.exe write dev0file memory_addr
将文件file 下载到平台memory ,下载地址为memory_addr
File:要下载的文件路径Memory_addr:平台相关的地址
Run Update.exe run dev0memory_addr
运行平台端入口地址为memory_addr 的程序
Memory_addr:已经load 到内在中的程序的入口地址
b.命令举例:
A
m
l o
g i c C o n f i d e n t i a l !
i.
在uboot 下进入worldcup 模式更新system.img
如图示,
1)先使用bulkcmd “disk_initial 0”为烧录作flash 初始化,注意结果必须为success.2)使用mwrite 命令将system.img 以sparse 压缩格式烧录到system 分区。
如果此时不需要进行其它分区的烧录,可调用update bulkcmd dev0“reset”重启平台,抑或直接bootm
启动.
ii.在uboot 下进入optimus 模式更新boot.img
与烧录system.img 流程一样,但注意boot.img 为非压缩格式,即normal 格式。
iii.在uboot 下进入optimus 模式更新u-boot.bin
注意,这种情况只适用于不需要u-boot 中烧录以及flash 驱动相关没有更新的情况,如flash driver 及烧录相关code 需要更新,参见[空片情况]章节。
Uboot 下使用update.exe 更新u-boot 命令:update.exe mwrite dev0u-boot.bin store bootlader normal
4.3.3
空片情况
空片情况请使用完整的烧录先烧录一次,如要使用命令行方式会比较复杂,此版本暂不说明。
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
5.Key 的配置与烧录
M8平台下key 分为3类,flash key (包括nand key 和emmc key),efuse key 和secure storage key.一个key 最多可存在于这三类介质中的一类中,具体在哪一类中由dts 配置决定,不需要用户层关注。
新工具的KEY 烧录以工具为中心分为三个部分,
一是可供客户二次开发的DLL ,此DLL 用于解析客户key source ,获取key 的内容,即管理KEY ;
一是烧录工具,烧录工具使用DLL 中提供的确定API ,根据key 的配置来向DLL 获取key 的内容,获取成功之后进行烧录;(即工具的流程是确定,
原则上不修改)
一是UBOOT 端实际烧录key 的代码:uboot 端分为烧录流程代码和key 驱动代码,key 驱动代码原则上不修改,烧录流程代码用户可视需要进行扩
展。
如果用户向平台传递是一个加密的KEY ,那需要在uboot 端烧录流程的代码上增加解密的代码,解密完成再调用key 驱动实际烧录。
(由于不同客户方案的uboot 允许有差异,所以差异化的uboot 端代码与dll 一样由客户自己维护)
烧录一个新的KEY 的流程如下:
1)用户配置DTD ,在DTD 中增加key 驱动要求的描述,如烧录到efuse 或者nand ,读写属性等;根据这些配置,客制化工具会生成新的烧录
包和key 烧录需要的配置文件。
2)工具加载烧录包中key 配置文件获得要烧录哪些key 的key name,并根据这些key name 从用户DLL 中获得key 内容。
根据key 名字和key 内
容,工具可使用烧录协议进行key 烧录。
3)uboot 端在接收到key 内容后,根据不同Key name 对key 做不同处理,处理完成后调用key 驱动接口进行烧录。
(key 烧录到哪种介质由dtd
和key driver 决定)
5.1编译与配置支持
有配置3个地方,一是Uboot,一是kernel,一是dts.
5.1.1
Uboot 中配置
Uboot 中需要确认以下3个编译宏在对应的项目头文件中是否已经打开,如果没有则添加之。
a)
#define CONFIG_UNIFY_KEY_MANAGE
此宏打开则unify_key 驱动被使能,工具烧录key 使用的是此driver 的接口。
通常情况下uboot 中仅需要确认此宏是否打开即可。
b)
#define CONFIG_SECURITYKEY
如果对应方案的key 是写到flash ,需要确认此宏是否已经打开。
c)
#define CONFIG_EFUSE 1
如果对应方案需要支持efuse key,请确认此宏打开。
5.1.2
Kernel 中配置
在kernel 的menuconfig 中打开此配置选项:
Amlogic key management Support --->
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
[*]unify key management Driver
5.1.3Dts 配置
Dts 配置由uboot 中的driver keymanage 和kernel 中的driver unify key management 这两个driver 共同读取,通常uboot 对key 存在读和写两种操作,在kernel 中仅对key 作读取操作。
用户层访问key 使用“mac 、mac_bt,hdcp”等用户意义的名字去访问一个key,driver 中对各种key 进行管理。
Dts 配置文件路径为:arch\arm\boot\dts\amlogic\之下。
一个dts 配置举例:
///***************************************************************************************///
-Securitykey
//$$MODULE="Securitykey"//$$DEVICE="securitykey"//$$L2PROP_STR ="status"securitykey{
compatible ="amlogic,aml_keys";status ="ok";
};
///***************************************************************************************///
-Unifykey
//$$MODULE="Unifykey"
//$$DEVICE="securitykey"
//$$L2PROP_STR ="status"
//$$L3PROP_U32="unifykey-num"
//$$L2PROP_CHOICE "Unifykey_0_match"="unifykey-index-0"//$$L2PROP_CHOICE "Unifykey_1_match"="unifykey-index-1"//$$L2PROP_CHOICE "Unifykey_2_match"="unifykey-index-2"//$$L2PROP_CHOICE "Unifykey_3_match"="unifykey-index-3"//$$L2PROP_CHOICE "Unifykey_4_match"="unifykey-index-4"
unifykey{
compatible ="amlogic,unifykey";
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
status ="ok";
efuse-version =<20>;/*m8/m6/m8efuse version 20/2/1,not config efuse version in default*/unifykey-num =<5>;
unifykey-index-0=<&keysn_0>;unifykey-index-1=<&keysn_1>;unifykey-index-2=<&keysn_2>;unifykey-index-3=<&keysn_3>;unifykey-index-4=<&keysn_4>;
//$$MATCH "Unifykey_0_match"=<&keysn_0>//$$L2PROP_STR ="key-name"//$$L2PROP_STR ="key-device"//$$L2PROP_STR ="key-dataformat"//$$L2PROP_STR 3="key-permit"
keysn_0:key_0{
key-name ="usid";
key-device ="nandkey";
key-dataformat ="hexdata";
key-permit ="read","write","del";
};
//$$MATCH "Unifykey_1_match"=<&keysn_1>//$$L2PROP_STR ="key-name"
//$$L2PROP_STR ="key-device"
//$$L2PROP_STR ="key-dataformat"//$$L2PROP_STR 3="key-permit"
keysn_1:key_1{
key-name ="mac_wifi";key-device ="efusekey";key-dataformat ="hexdata";key-permit ="read","write","del";
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
};
//$$MATCH "Unifykey_2_match"=<&keysn_2>//$$L2PROP_STR ="key-name"//$$L2PROP_STR ="key-device"//$$L2PROP_STR ="key-dataformat"//$$L2PROP_STR 3="key-permit"
keysn_2:key_2{
key-name ="mac_bt";key-device ="nandkey";key-dataformat ="hexdata";key-permit ="read","write","del";
};
//$$MATCH "Unifykey_3_match"=<&keysn_3>
//$$L2PROP_STR ="key-name"//$$L2PROP_STR ="key-device"//$$L2PROP_STR ="key-dataformat"//$$L2PROP_STR 3="key-permit"
keysn_3:key_3{
key-name ="mac";key-device ="nandkey";key-dataformat ="hexdata";key-permit ="read","write","del";
};
//$$MATCH "Unifykey_4_match"=<&keysn_4>//$$L2PROP_STR ="key-name"//$$L2PROP_STR ="key-device"//$$L2PROP_STR ="key-dataformat"//$$L2PROP_STR 3="key-permit"
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
keysn_4:key_4{
key-name ="hdcp";key-device ="nandkey";key-dataformat ="hexdata";key-permit ="read","write","del";
};
};//end:unifykey
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
5.2使用USB 烧录工具烧录key
由于key 通常需要跟第三方购买,在使用USB 烧录工具烧录key ,您需要先获得key 的license 文件。
USB 烧录工具只作为key 的传输通道,一个key 内容如何获取可通过对keyProvider.dll ,而一个key 如何解析由Uboot 中key 烧录代码决定。
5.2.1使用Customer tool 配置烧录包
DTD 中配置平台方案支持哪些key ,而customer tool 配置哪些key 需要被烧录。
i.下载安装customer tool ,
ii.在此选项卡页面勾选需要烧录哪些key,勾选完成后选择“写入密钥文件”;
iii.“写入密钥文件”之后您可以直接压缩成一个新的烧录包,此烧录包会同时烧录code 镜像和key;
iv.
如果需要单独烧录key,需要要“设置”子菜单中,选择“生成烧录key 镜像”,这样会生成一个只烧录key 的烧录包。
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
5.2.2
常见类型key 的烧录
常见类型key,指那些已经在发布版本的keyProvider.dll 中和平台烧录代码都已经集成有解析代码的key ,即公版本默认支持的key 类型,这些类型的key 只需要在PC 上对应位置添加license 文件即可以进行烧录。
添加license 文件文件并烧录
i.
在安装目录下创建license 目录,如win7下的C:\Program Files (x86)\Amlogic\USB_Burning_Tool\license 。
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
ii.
将需要烧录的key license 文件放置到License 目录下。
iii.常见类型key 的模板举例
Note:此模板仅是目前keyProvider 的代码中支持的,近期keyProvider 会扩展并根据需求使模板做成更灵活配置以支持更多的项目。
Key name Key license file
comment
Usid
[Group1]
base =PMP118243start =00100end =20001used =2
base 为固定前缀
Start 为起始值(10进制)End 为最大值(10进制)Used 为已经使用的key 个数
Mac
[Group1]
start =0f:0f:a3:45:a0:12end =0f:0f:a3:45:a1:34used =18
Start 为起始的ascii 字符串End 为最大的ascii 字符串Used 为已经使用mac 地址个数
iv.配置好烧录包和license 文件之后,使用烧录工具导入烧录包即可以进行key 烧录。
Note:烧录工具在右侧对烧录key 有一个“覆盖密钥”的选项,此选项的含义是,在选择时,如果平台已经烧录过key 则再次覆盖烧录;如果没有选择,那已经有key 的平台将不会被更新key.
5.2.3特定方案key 的烧录
对于特定方案key 的烧录,公版没有支持,所以相应方案需要先对keyProvider.dll 和方案的SDK 代码进行修改以支持。
i.KeyProvider.dll 的二次开发请参见《keyProvider 设计.doc 》by jinkai.Li .
ii.
如果传输到平台的key 在写到flash 之前需要先做解析与校验,需要修改uboot 中的key 相关代码.
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
5.3使用usb 命令工具烧录key
命令行方式需要使用Update.exe.
5.3.1进入烧录模式
连接好USB 线之后,在
1,uboot 执行run update 或者update 2,android 下执行reboot update
》确保连接正常,查看设备管理器是否有Libusb-win32设备
5.3.2下载dts 配置meson.dtb 到平台
update mwrite “Z:\mx-4.4-myamlogic_demo\out\target\product\k200\meson.dtb”mem dtb normal
注:对于MID 平台,uboot 启动时会自动加载dtb ,所以此步骤可省略。
而对于mbox 平台此步骤是需要的。
5.3.3初始化uboot 下的key driver
update bulkcmd "key init 0x12345
Note:key driver 需要一个数值种子来初始化,如果需要烧录secure storage 的key ,此seed value 有用,如果不
需要烧录secure storage,此seed value 为任意值。
5.3.4烧录一个名字为key0的key:
如果key0的值是ASCII 字符串,可使用bulkcmd 命令烧录。
update bulkcmd “key write key0valueStr"
如果key0的值是任意值(包括ASCII 字符串),可使用mwrite 命令烧录先将key0的value 存储到文件中并存储为keyFile.bin ,执行命令Update.exe mwrite keyFile.bin key key0normal
5.3.5
判断key0是否已经烧录过
在下载dtb 和初始化key driver 之后,可使用bulkcmd 可判断key0是否已经烧录过
Update bulkcmd "key is_burned key0
A
m
l o
g i c
C
o n
f i d
e n
t i a l !
Note :If the key0value is configured in dtd in ASCII format,you can read it back with [update bulkcmd “key read key0”]
5.3.6退出烧录模式重启或者关闭平台
update bulkcmd "reset/poweroff
A
m
l o
g i c
C
o n
f i d
e n
t i a l !。