3 执行HiTraining
打开HiTraining 视图,选择Kenel复选框,然后配置完成好选中项的信息,点击开始按钮,如果没选择,如图3-1:

在Hitraining视图中,支持Kernel Training, 进行选择并设置。
Kernel Training:
展开高级选项,如果使用默认值复选框被选中,(脚本文件、结果文件 、Reg 文件) 文本框将不能编辑,‘浏览’ 按钮将会禁用,如图3-2。

当使用默认值复选框被选中,它下面的两个下拉框将会被启用,下拉框后面的文本框将会根据下拉框中的值去Hitool本地存放目录(Hitool /Resources /HiTraining/ 当前运行的芯片名)中去加载脚本文件,如图3-3。

如果要加载的脚本文件不存在,如图3-4。

提示:(使用默认值复选框被选中时, 当前HiTool产品目录下的Resources文件夹中需存在HiTraining文件夹,HiTraining文件夹下保存了以芯片名命名的文件夹,芯片名文件夹中包含默认配置文件,要成功读取芯片默认配置文件,芯片名文件夹下需包含3个文件(文本框中加载的脚本文件,reg.bin和 result.txt),文件夹以及文件名区分大小写 )
点击开始按钮,Training 将会在当前Hitool产品Resources文件夹中的HiTraining目录下去搜索和当前芯片名匹配的芯片名文件夹,如果找到了,将会根据3个文件加载默认值,如果没有检索到:
Training将会弹出警告,如图3-5:

如果使用默认值复选框没有被选中(用户可手动配置这三个文件目录):
要用Kernel方式执行Training前,必须通过下列验证:
脚本文件输入框不能为空,如图3-6。

脚本文件输入框文件必须存在,如图3-7。

Reg输入框文件必须存在,如图3-8。

注意:
设置完成之后,点击开始按钮,执行的算法流程如下:
说明:
当registergroup中只定义了一个register时,以下称为Single。
当registergroup中定义了多个register时,以下称为Multiple。
1. 开始读取配置文件。
2. 启动watchdog。
3. 执行kocommand,kocommand从首选项配置中加载,执行regtool命令。
4. 读取需要遍历的寄存器保存起来,记为初始值。
5. 处理loops,然后循环处理每一个loops里面的loop。
6. 处理loop_level_begin。
说明:如果在执行过程中boot没有自动重启,工具将会提示手动重启。
7. 所有loops中loop_level全部执行完毕后,查找合并reg文件,处理并打印保存最优值结果。详细可参考下面说明。
说明:
根据每一个loop的执行结果集合,每一个loop取一个最优值。
说明:只是作为打印结果格式的参考,执行数据应以工具执行的数据为准。
每次执行一个loop,先打印description 。
如 :
dqs0 dq0 dq1 dq2 dq3 dq4 dq5 dq6 dq7 result
然后single循环的时候,如默认的dqs为3
| 7 0 0 0 0 2 2 1 fail |
| 6 0 0 0 0 2 2 1 ok |
| 5 0 0 0 0 2 2 1 ok |
| 4 0 0 0 0 2 2 1 ok |
执行Multiple循环时候
| 3 1 1 1 1 3 3 3 2 ok |
| 3 2 2 2 2 4 4 4 3 ok |
| 3 3 3 3 3 5 5 5 4 fail |
到第一个fail的就结束这个小项的循环,取中间一行为最佳值
也就是 4 0 0 0 0 2 2 2 1
打印出最佳值和默认值 : dqs0 dq0 dq1 dq2 dq3 dq4 dq5 dq6 dq7
| Default | 3 0 0 0 0 2 2 2 1 |
| Best | 4 0 0 0 0 2 2 2 1 |
当training类型为bittraining时,还会打印以下内容,无最大值时,将不会打印最大值那一列
MaxRegister:(loops指定的寄存器名称)
MaxValue:(loops指定的寄存器的最大值)
有效值组合(最大值列和每个loop的关键寄存器值)
| max | main1 | main2 | |
| Loop1: | 0 | 0 | |
| Loop2: | 0 | 0 |
整个loops的最佳值组合
| max | main1 | main2 | |
| best: | 0 | 0 | 0 |
DM:0
从输入Reg文件中查找匹配相同地址进行合并,并且更新合并后的值。
保存结果:
注意:training执行失败或中途取消操作,将不会保存结果到结果文件。
training正确执行成功后,保存training的最优结果到一个reg.bin文件,可以认为reg.bin文件的格式一个一系列的
struct regentry {
unsigned int reg_addr; ---- 寄存器地址
unsigned int value; -------寄存器的值
unsigned int delay;
unsigned int attr;
};结构体构成,如我们要把rddqs0和rddqs1的值都设为4,那么寄存器0x10100b4c的值就应该修改为0x24,
Reg文件格式
| Struct | Struct | Struct | ..... | Struct |
| regentry | regentry | regentry | ..... | Struct |