20170523_jeffrey - silenceuncrio/diary GitHub Wiki
0845
來準備一下待會做 M300 低溫開機的指令
預計調整的參數如下
- SPEED[7:6] - Speed Field
- 00 SPEED_0_low_50MHz_
- 01 SPEED_1_medium_100MHz_
- 10 SPEED_2_medium_100MHz_
- 11 SPEED_3_max_200MHz_
- DSE[5:3] - Drive Strength Field
- 000 DSE_0_output_driver_disabled_
- 001 DSE_1_R0_260_Ohm___3_3V__150_Ohm_1_8V__240_Ohm_for_DDR_
- 010 DSE_2_R0_2
- 011 DSE_3_R0_3
- 100 DSE_4_R0_4
- 101 DSE_5_R0_5
- 110 DSE_6_R0_6
- 111 DSE_7_R0_7
- SRE[0] - Slew Rate Field
- 0 SRE_0_Slow_Slew_Rate
- 1 SRE_1_Fast_Slew_Rate
目前的設定是
- SPEED[7:6] - Speed Field
- 10 SPEED_2_medium_100MHz_
- DSE[5:3] - Drive Strength Field
- 110 DSE_6_R0_6
- SRE[0] - Slew Rate Field
- 1 SRE_1_Fast_Slew_Rate
先調整 DSE[5:3] - Drive Strength Field
- 111 DSE_7_R0_7
0000 0000 0000 0000 1011 0000 1011 0001
---- ---- ---- ---- ---- ---- --++ +---
11 1
0000 0000 0000 0000 1011 0000 1011 1001
0 0 0 0 b 0 b 9
全部相關的暫存器一起設定的指令如下
mw 020e0404 0000b0b9 1
mw 020e0408 0000b0b9 1
mw 020e040c 0000b0b9 1
mw 020e0410 0000b0b9 1
mw 020e0414 0000b0b9 1
mw 020e0418 0000b0b9 1
mw 020e041c 0000b0b9 1
mw 020e0420 0000b0b9 1
mw 020e0424 0000b0b9 1
mw 020e0428 0000b0b9 1
mw 020e042c 0000b0b9 1
mw 020e0430 0000b0b9 1
mw 020e0434 0000b0b9 1
mw 020e0438 0000b0b9 1
mw 020e043c 0000b0b9 1
mw 020e0440 0000b0b9 1
mw 020e0444 0000b0b9 1
再來的嘗試是把速度調慢
- SPEED[7:6] - Speed Field
- 00 SPEED_0_low_50MHz_
- DSE[5:3] - Drive Strength Field
- 111 DSE_7_R0_7
- SRE[0] - Slew Rate Field
- 0 SRE_0_Slow_Slew_Rate
0000 0000 0000 0000 1011 0000 1011 0001
---- ---- ---- ---- ---- ---- ++++ +--+
0011 1 0
0000 0000 0000 0000 1011 0000 0011 1000
0 0 0 0 b 0 3 8
全部相關的暫存器一起設定的指令如下
mw 020e0404 0000b038 1
mw 020e0408 0000b038 1
mw 020e040c 0000b038 1
mw 020e0410 0000b038 1
mw 020e0414 0000b038 1
mw 020e0418 0000b038 1
mw 020e041c 0000b038 1
mw 020e0420 0000b038 1
mw 020e0424 0000b038 1
mw 020e0428 0000b038 1
mw 020e042c 0000b038 1
mw 020e0430 0000b038 1
mw 020e0434 0000b038 1
mw 020e0438 0000b038 1
mw 020e043c 0000b038 1
mw 020e0440 0000b038 1
mw 020e0444 0000b038 1
再開不起來的話就把 DSE[5:3]
調低成 001 DSE_1_R0_260_Ohm___3_3V__150_Ohm_1_8V__240_Ohm_for_DDR_
0000 0000 0000 0000 1011 0000 1011 0001
---- ---- ---- ---- ---- ---- ++++ +--+
0000 1 0
0000 0000 0000 0000 1011 0000 0000 1000
0 0 0 0 b 0 0 8
全部相關的暫存器一起設定的指令如下
mw 020e0404 0000b008 1
mw 020e0408 0000b008 1
mw 020e040c 0000b008 1
mw 020e0410 0000b008 1
mw 020e0414 0000b008 1
mw 020e0418 0000b008 1
mw 020e041c 0000b008 1
mw 020e0420 0000b008 1
mw 020e0424 0000b008 1
mw 020e0428 0000b008 1
mw 020e042c 0000b008 1
mw 020e0430 0000b008 1
mw 020e0434 0000b008 1
mw 020e0438 0000b008 1
mw 020e043c 0000b008 1
mw 020e0440 0000b008 1
mw 020e0444 0000b008 1
0935
直接調整 DSE[5:3]
成 001 DSE_1_R0_260_Ohm___3_3V__150_Ohm_1_8V__240_Ohm_for_DDR_
0000 0000 0000 0000 1011 0000 1011 0001
---- ---- ---- ---- ---- ---- --++ +---
00 1
0000 0000 0000 0000 1011 0000 1000 1001
0 0 0 0 b 0 8 9
全部相關的暫存器一起設定的指令如下
mw 020e0404 0000b089 1
mw 020e0408 0000b089 1
mw 020e040c 0000b089 1
mw 020e0410 0000b089 1
mw 020e0414 0000b089 1
mw 020e0418 0000b089 1
mw 020e041c 0000b089 1
mw 020e0420 0000b089 1
mw 020e0424 0000b089 1
mw 020e0428 0000b089 1
mw 020e042c 0000b089 1
mw 020e0430 0000b089 1
mw 020e0434 0000b089 1
mw 020e0438 0000b089 1
mw 020e043c 0000b089 1
mw 020e0440 0000b089 1
mw 020e0444 0000b089 1
1015
目前發現這些相關的暫存器改了 DSE[5:3]
之後就能開機的值如下
DSE[5:3]
-001 DSE_1_R0_260_Ohm___3_3V__150_Ohm_1_8V__240_Ohm_for_DDR_
- 0000b089
DSE[5:3]
-111 DSE_7_R0_7
- 0000b0b9
DSE[5:3]
-110 DSE_6_R0_6
- 0000b0b1
奇怪的是預設獨到的值為 0000b0b1
為什麼再寫入預設值一次就能開起來
先把所有可能的 DSE[5:3]
都掃一次
- DSE[5:3] - Drive Strength Field
- 000 DSE_0_output_driver_disabled_
0000 0000 0000 0000 1011 0000 1011 0001
---- ---- ---- ---- ---- ---- --++ +---
00 0
0000 0000 0000 0000 1011 0000 1000 0001
0 0 0 0 b 0 8 1
全部相關的暫存器一起設定的指令如下
mw 020e0404 0000b081 1
mw 020e0408 0000b081 1
mw 020e040c 0000b081 1
mw 020e0410 0000b081 1
mw 020e0414 0000b081 1
mw 020e0418 0000b081 1
mw 020e041c 0000b081 1
mw 020e0420 0000b081 1
mw 020e0424 0000b081 1
mw 020e0428 0000b081 1
mw 020e042c 0000b081 1
mw 020e0430 0000b081 1
mw 020e0434 0000b081 1
mw 020e0438 0000b081 1
mw 020e043c 0000b081 1
mw 020e0440 0000b081 1
mw 020e0444 0000b081 1
不能一口氣把 指令貼完
這一組 指令開不起來
1025
- DSE[5:3] - Drive Strength Field
- 010 DSE_2_R0_2
0000 0000 0000 0000 1011 0000 1011 0001
---- ---- ---- ---- ---- ---- --++ +---
01 0
0000 0000 0000 0000 1011 0000 1001 0001
0 0 0 0 b 0 9 1
全部相關的暫存器一起設定的指令如下
mw 020e0404 0000b091 1
mw 020e0408 0000b091 1
mw 020e040c 0000b091 1
mw 020e0410 0000b091 1
mw 020e0414 0000b091 1
mw 020e0418 0000b091 1
mw 020e041c 0000b091 1
mw 020e0420 0000b091 1
mw 020e0424 0000b091 1
mw 020e0428 0000b091 1
mw 020e042c 0000b091 1
mw 020e0430 0000b091 1
mw 020e0434 0000b091 1
mw 020e0438 0000b091 1
mw 020e043c 0000b091 1
mw 020e0440 0000b091 1
mw 020e0444 0000b091 1
不能一口氣把 指令貼完
這一組 指令 開機成功
1030
- DSE[5:3] - Drive Strength Field
- 011 DSE_3_R0_3
0000 0000 0000 0000 1011 0000 1011 0001
---- ---- ---- ---- ---- ---- --++ +---
01 1
0000 0000 0000 0000 1011 0000 1001 1001
0 0 0 0 b 0 9 9
全部相關的暫存器一起設定的指令如下
mw 020e0404 0000b099 1
mw 020e0408 0000b099 1
mw 020e040c 0000b099 1
mw 020e0410 0000b099 1
mw 020e0414 0000b099 1
mw 020e0418 0000b099 1
mw 020e041c 0000b099 1
mw 020e0420 0000b099 1
mw 020e0424 0000b099 1
mw 020e0428 0000b099 1
mw 020e042c 0000b099 1
mw 020e0430 0000b099 1
mw 020e0434 0000b099 1
mw 020e0438 0000b099 1
mw 020e043c 0000b099 1
mw 020e0440 0000b099 1
mw 020e0444 0000b099 1
不能一口氣把 指令貼完
這一組 指令 開機成功
繼續
- DSE[5:3] - Drive Strength Field
- 100 DSE_4_R0_4
0000 0000 0000 0000 1011 0000 1011 0001
---- ---- ---- ---- ---- ---- --++ +---
10 0
0000 0000 0000 0000 1011 0000 1010 0001
0 0 0 0 b 0 a 1
全部相關的暫存器一起設定的指令如下
mw 020e0404 0000b0a1 1
mw 020e0408 0000b0a1 1
mw 020e040c 0000b0a1 1
mw 020e0410 0000b0a1 1
mw 020e0414 0000b0a1 1
mw 020e0418 0000b0a1 1
mw 020e041c 0000b0a1 1
mw 020e0420 0000b0a1 1
mw 020e0424 0000b0a1 1
mw 020e0428 0000b0a1 1
mw 020e042c 0000b0a1 1
mw 020e0430 0000b0a1 1
mw 020e0434 0000b0a1 1
mw 020e0438 0000b0a1 1
mw 020e043c 0000b0a1 1
mw 020e0440 0000b0a1 1
mw 020e0444 0000b0a1 1
不能一口氣把 指令貼完
這一組 指令 開機成功
1035
- DSE[5:3] - Drive Strength Field
- 101 DSE_5_R0_5
0000 0000 0000 0000 1011 0000 1011 0001
---- ---- ---- ---- ---- ---- --++ +---
10 1
0000 0000 0000 0000 1011 0000 1010 1001
0 0 0 0 b 0 a 9
全部相關的暫存器一起設定的指令如下
mw 020e0404 0000b0a9 1
mw 020e0408 0000b0a9 1
mw 020e040c 0000b0a9 1
mw 020e0410 0000b0a9 1
mw 020e0414 0000b0a9 1
mw 020e0418 0000b0a9 1
mw 020e041c 0000b0a9 1
mw 020e0420 0000b0a9 1
mw 020e0424 0000b0a9 1
mw 020e0428 0000b0a9 1
mw 020e042c 0000b0a9 1
mw 020e0430 0000b0a9 1
mw 020e0434 0000b0a9 1
mw 020e0438 0000b0a9 1
mw 020e043c 0000b0a9 1
mw 020e0440 0000b0a9 1
mw 020e0444 0000b0a9 1
不能一口氣把 指令貼完
這一組 指令 開機成功
1045
簡單下個結論
- DSE[5:3] - Drive Strength Field
- 000 DSE_0_output_driver_disabled_
- mw 020e04xx 0000b081 1
- 開機失敗
- 001 DSE_1_R0_260_Ohm___3_3V__150_Ohm_1_8V__240_Ohm_for_DDR_
- mw 020e04xx 0000b089 1
- 開機成功
- 010 DSE_2_R0_2
- mw 020e04xx 0000b091 1
- 開機成功
- 011 DSE_3_R0_3
- mw 020e04xx 0000b099 1
- 開機成功
- 100 DSE_4_R0_4
- mw 020e04xx 0000b0a1 1
- 開機成功
- 101 DSE_5_R0_5
- mw 020e04xx 0000b0a9 1
- 開機成功
- 110 DSE_6_R0_6
- mw 020e04xx 0000b0b1 1
- 開機成功
- 111 DSE_7_R0_7
- mw 020e04xx 0000b0b9 1
- 開機成功
- 000 DSE_0_output_driver_disabled_
奇怪的現象是一開機後利用 md
去讀取相關暫存器時讀到的值是 0000b0b1
這表示 DSE[5:3] - Drive Strength Field
的預設值為 110 DSE_6_R0_6
但這時候並無法再零下30度的條件下開機
此時若利用 mw
來做寫入的動作
只要 DSE[5:3] - Drive Strength Field
不是設定成 000 DSE_0_output_driver_disabled_
的話
零下30度的條件下開機都成功
上面說的帶測物用的是 華邦 的 NAND Flash
待會來試一下我們目前正在用的 旺宏電子 的 NAND Flash
1300
目前的溫度條件為零下 40 度
待測物用的是 旺宏電子 的 NAND Flash
先看一下相關的暫存器的值
- 30.5.253 SW_PAD_CTL_PAD_NAND_RE_B SW PAD Control Register
- md 020e0404 1 - 0001f019h
- 30.5.254 SW_PAD_CTL_PAD_NAND_WE_B SW PAD Control Register
- md 020e0408 1 - 0001f019h
- 30.5.255 SW_PAD_CTL_PAD_NAND_DATA00 SW PAD Control Register
- md 020e040c 1 - 0001f019h
- 30.5.256 SW_PAD_CTL_PAD_NAND_DATA01 SW PAD Control Register
- md 020e0410 1 - 0001f019h
- 30.5.257 SW_PAD_CTL_PAD_NAND_DATA02 SW PAD Control Register
- md 020e0414 1 - 0001f019h
- 30.5.258 SW_PAD_CTL_PAD_NAND_DATA03 SW PAD Control Register
- md 020e0418 1 - 00013019h
- 30.5.259 SW_PAD_CTL_PAD_NAND_DATA04 SW PAD Control Register
- md 020e041c 1 - 000010b0h
- 30.5.260 SW_PAD_CTL_PAD_NAND_DATA05 SW PAD Control Register
- md 020e0420 1 - 000010b0h
- 30.5.261 SW_PAD_CTL_PAD_NAND_DATA06 SW PAD Control Register
- md 020e0424 1 - 000010b0h
- 30.5.262 SW_PAD_CTL_PAD_NAND_DATA07 SW PAD Control Register
- md 020e0428 1 - 000010b0h
- 30.5.263 SW_PAD_CTL_PAD_NAND_ALE SW PAD Control Register
- md 020e042c 1 - 000010b0h
- 30.5.264 SW_PAD_CTL_PAD_NAND_WP_B SW PAD Control Register
- md 020e0430 1 - 00007091h
- 30.5.265 SW_PAD_CTL_PAD_NAND_READY_B SW PAD Control Register
- md 020e0434 1 - 00007091h
- 30.5.266 SW_PAD_CTL_PAD_NAND_CE0_B SW PAD Control Register
- md 020e0438 1 - 00007091h
- 30.5.267 SW_PAD_CTL_PAD_NAND_CE1_B SW PAD Control Register
- md 020e043c 1 - 00007091h
- 30.5.268 SW_PAD_CTL_PAD_NAND_CLE SW PAD Control Register
- md 020e0440 1 - 00007091h
- 30.5.269 SW_PAD_CTL_PAD_NAND_DQS SW PAD Control Register
- md 020e0444 1 - 00007091h
這一台跟我在是溫的位置上的暫存器值不同
試著分析一下
0001f019
h
0000 0000 0000 0001 1111 0001 1001
b
- HYS[16] =
1
b- HYS_1_Hysteresis_Enabled — Hysteresis Enabled
- PUS[15:14] =
11
b- PUS_3_22K_Ohm_Pull_Up — 22K Ohm Pull Up
- PUE[13] =
1
b- PUE_1_Pull — Pull
- PKE[12] =
1
b- PKE_1_Pull_Keeper_Enabled — Pull/Keeper Enabled
- ODE[11] =
0
b- ODE_0_Open_Drain_Disabled — Open Drain Disabled
- SPEED[7:6] =
00
b- SPEED_0_low_50MHz_ — low(50MHz)
- DSE[5:3] =
011
b- DSE_3_R0_3 — R0/3
- SRE[0] =
1
b- SRE_1_Fast_Slew_Rate — Fast Slew Rate
000010b0
h
0000 0000 0000 0000 0001 0000 1011 0000
b
- HYS[16] =
0
b- HYS_0_Hysteresis_Disabled
- PUS[15:14] =
00
b- PUS_0_100K_Ohm_Pull_Down
- PUE[13] =
0
b- PUE_0_Keeper
- PKE[12] =
1
b- PKE_1_Pull_Keeper_Enabled
- ODE[11] =
0
b- ODE_0_Open_Drain_Disabled
- SPEED[7:6] =
10
b- SPEED_2_medium_100MHz_
- DSE[5:3] =
110
b- DSE_6_R0_6
- SRE[0] =
0
b- SRE_0_Slow_Slew_Rate
00007091
h
0000 0000 0000 0000 0111 0000 1001 0001
b
- HYS[16] =
0
b- HYS_0_Hysteresis_Disabled
- PUS[15:14] =
01
b- PUS_1_47K_Ohm_Pull_Up
- PUE[13] =
1
b- PUE_1_Pull
- PKE[12] =
1
b- PKE_1_Pull_Keeper_Enabled
- ODE[11] =
0
b- ODE_0_Open_Drain_Disabled
- SPEED[7:6] =
10
b- SPEED_2_medium_100MHz_
- DSE[5:3] =
010
b- DSE_2_R0_2
- SRE[0] =
1
b- SRE_1_Fast_Slew_Rate
從上面三種值看來
這 17 個暫存器為何是這三種值目前看不出甚麼結論
從 datasheet 上看到 從 30.5.253
到 30.5.269
這 17 個 rigester 的 reset value
都是 000010b0
h
不管目前這 17 個暫存器其值為何
就用這所謂的 reset value
直接對這 17 個 NAND 相關的暫存器全部都寫一次
mw 020e0404 000010b0 1
mw 020e0408 000010b0 1
mw 020e040c 000010b0 1
mw 020e0410 000010b0 1
mw 020e0414 000010b0 1
mw 020e0418 000010b0 1
mw 020e041c 000010b0 1
mw 020e0420 000010b0 1
mw 020e0424 000010b0 1
mw 020e0428 000010b0 1
mw 020e042c 000010b0 1
mw 020e0430 000010b0 1
mw 020e0434 000010b0 1
mw 020e0438 000010b0 1
mw 020e043c 000010b0 1
mw 020e0440 000010b0 1
mw 020e0444 000010b0 1
使用 旺宏電子 的 NAND Flash 的 M300 在 零下 40 度開機成功
使用 華邦 NAND Flash 的 M300 在 零下 40 度開機成功
1430
試著改變 DSE[5:3]
其餘的和 reset value 一樣
把全部的值都掃一次
1605
結論
在 零下40度 時
只要去設定 DSE[5:3] 的值並且不要是 000 DSE_0_output_driver_disabled_
便可以讓 M300 順利啟動
目前把 恆溫恆濕機 設定成 80 度再來做實驗
這樣便能決定一組值然後讓 uboot 去寫
1730
80 度的實驗得到一樣的結論
只要去設定 DSE[5:3] 的值並且不要是 000 DSE_0_output_driver_disabled_
便可以讓 M300 順利啟動
那就決定用 datasheet 上從 30.5.253
到 30.5.269
這 17 個 rigester 的 reset value
都是 000010b0
h
1755
修改後先 commit 到 local
build image 準備明天測試用