20160722_jeffrey - silenceuncrio/diary GitHub Wiki

Index

  • 0920 - 寫 KPI
  • 1000 - M300 meeting - aaron 確定 八月一號 報到
  • 1035 - 繼續 NAND Flash 問題
  • 1325 - 套用 How-To use NAND boot on i.MX6UL EVK boardmx6ul_14x14_evk.h
  • 1405 - 將 U-Boot 燒錄到 NAND Flash - kobs-ng init -x -v --chip_0_device_path=/dev/mtd0 $FILE
  • 1415 - 試 MfgTool - L3.14.52_1.1.0_ga-mfg-tools.tar.gz
  • 1510 - MXIC FAE Frank 電話
  • 1530 - winston 示範 怎麼看 code 有寫到 NAND Flash 去
  • 1625 - 0x87800000 address - RAM 裡面的 U-Boot
  • 1700 - local.conf UBOOT_CONFIG = "nand" - SD Card 開機 - U-Boot 有 nand command 可以使用

0920

先來寫 KPI

參考上一次的

  • KPI -SW-Jeffrey-2015-H2.xls
  • KPI -SW-Jeffrey-2016-H1.xls

針對 KPI -SW-Jeffrey-2016-H1.xls 來自評

再把下半年的 KPI -SW-Jeffrey-2016-H2.xls 寫一寫

1000

M300 meeting

john 也有參加

aaron 確定八月一號會報到

1035

繼續追 NAND Flash 的問題

1325

避免後續溝通上的麻煩

完全套用 How-To use NAND boot on i.MX6UL EVK boardmx6ul_14x14_evk.h

MfgTool 只燒錄 U-Boot 的 log 檔請看 - 2016-07-22-MfgTool.log

1405

該 log 其實有相當豐富的資訊

將 U-Boot 燒錄到 NAND Flash 去要使用 kobs-ng init -x -v --chip_0_device_path=/dev/mtd0 $FILE

試著在 NXP 官網找 kobs-ng 相關的討論串

從 log - 2016-07-22-MfgTool.log 發現

Linux version 4.1.15-1.0.0-mfgtool+g3924425

我們用來搭配 kobs-ng 的 kernel 版本是 4.1.15-1.0.0-mfgtool+g3924425

目前使用的 MfgTool 是從官方下載的 L4.1.15_1.0.0_ga-mfg-tools.tar.gz

試著利用比較早的 MfgTool 看看

1415

試一下 MfgTool - L3.14.52_1.1.0_ga-mfg-tools.tar.gz

一樣只燒錄 U-Boot

log - 2016-07-22-01-MfgTool.log

Linux version 3.14.52-1.1.0_ga-mfgtool+g5f6f0a5

不過調整 boot mode 從 nand 開機一樣看不到 console 的任何訊息

1510

根根根 MXIC 的 FAE Frank 通完電話

他會請他們工程師幫忙試一下

我們將連結 - How-To use NAND boot on i.MX6UL EVK board mail 給 Frank 請他幫忙

1530

winston 來關心一下 NAND Flash boot 的 issue

使用我們自己有焊 NAND Flash 的 CPU 板從 SD Card 開機進 U-Boot

winston 示範一下怎麼看我們的 code 有寫到 NAND Flash 去

console 記錄在 sd_boot_winston_01.log

觀察 U-Boot build 出來的

  • u-boot.map
  • u-boot.bin

觀察 u-boot.map

*(.vectors)
 .vectors       0x87800000      0x300 arch/arm/lib/built-in.o
                0x87800000                _start
                0x87800020                _undefined_instruction
                0x87800024                _software_interrupt
                0x87800028                _prefetch_abort
                0x8780002c                _data_abort
                0x87800030                _not_used
                0x87800034                _irq
                0x87800038                _fiq
                0x87800040                IRQ_STACK_START_IN

可知 0x87800000 - 啥?

然後 winston 在 U-Boot 下使用 md.b 87800000 100

=> md.b 87800000 100
87800000: be 00 00 ea 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5    ................
87800010: 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5    ................
87800020: 60 00 80 87 c0 00 80 87 20 01 80 87 80 01 80 87    `....... .......
87800030: e0 01 80 87 40 02 80 87 a0 02 80 87 ef be ad de    ....@...........
87800040: de c0 ad 0b 00 f0 20 e3 00 f0 20 e3 00 f0 20 e3    ...... ... ... .
87800050: 00 f0 20 e3 00 f0 20 e3 00 f0 20 e3 00 f0 20 e3    .. ... ... ... .
87800060: 28 d0 1f e5 00 e0 8d e5 00 e0 4f e1 04 e0 8d e5    (.........O.....
87800070: 13 d0 a0 e3 0d f0 69 e1 0f e0 a0 e1 0e f0 b0 e1    ......i.........
87800080: 48 d0 4d e2 ff 1f 8d e8 50 20 1f e5 0c 00 92 e8    H.M.....P ......
87800090: 48 00 8d e2 34 50 8d e2 0e 10 a0 e1 0f 00 85 e8    H...4P..........
878000a0: 0d 00 a0 e1 60 09 00 eb 00 f0 20 e3 00 f0 20 e3    ....`..... ... .
878000b0: 00 f0 20 e3 00 f0 20 e3 00 f0 20 e3 00 f0 20 e3    .. ... ... ... .
878000c0: 88 d0 1f e5 00 e0 8d e5 00 e0 4f e1 04 e0 8d e5    ..........O.....
878000d0: 13 d0 a0 e3 0d f0 69 e1 0f e0 a0 e1 0e f0 b0 e1    ......i.........
878000e0: 48 d0 4d e2 ff 1f 8d e8 b0 20 1f e5 0c 00 92 e8    H.M...... ......
878000f0: 48 00 8d e2 34 50 8d e2 0e 10 a0 e1 0f 00 85 e8    H...4P..........

便可和 u-boot.bin 來交叉比對我們有沒有把 U-Boot image 燒錄到 SD Card 去

be00 00ea 14f0 9fe5 14f0 9fe5 14f0 9fe5
14f0 9fe5 14f0 9fe5 14f0 9fe5 14f0 9fe5
6000 8087 c000 8087 2001 8087 8001 8087
e001 8087 4002 8087 a002 8087 efbe adde
dec0 ad0b 00f0 20e3 00f0 20e3 00f0 20e3
00f0 20e3 00f0 20e3 00f0 20e3 00f0 20e3
28d0 1fe5 00e0 8de5 00e0 4fe1 04e0 8de5
13d0 a0e3 0df0 69e1 0fe0 a0e1 0ef0 b0e1
48d0 4de2 ff1f 8de8 5020 1fe5 0c00 92e8
4800 8de2 3450 8de2 0e10 a0e1 0f00 85e8
0d00 a0e1 4f09 00eb 00f0 20e3 00f0 20e3
00f0 20e3 00f0 20e3 00f0 20e3 00f0 20e3
88d0 1fe5 00e0 8de5 00e0 4fe1 04e0 8de5
13d0 a0e3 0df0 69e1 0fe0 a0e1 0ef0 b0e1
48d0 4de2 ff1f 8de8 b020 1fe5 0c00 92e8
4800 8de2 3450 8de2 0e10 a0e1 0f00 85e8
...

1625

尷尬的是 0x87800000 這個 address 讀到的是 RAM 裡面的 U-Boot

把 SD Card 拔掉後再做一次就會發現還是讀到一樣的東西

回頭再看 i.MX 6UltraLite Applications - Processor Reference Manual

Chapter 8 System Boot

看看有沒有什麼 address 可以直接 dump 出 NAND Flash 裡的值

1700

local.confUBOOT_CONFIG = "nand" 這樣敘述的狀態下

還是可以 build 出 SD Card 用的 image

開機進 U-Boot 後就可以發現有 nand 這個 command 可以使用

=> nand
nand - NAND sub-system

Usage:
nand info - show available NAND devices
nand device [dev] - show or set current device
nand read - addr off|partition size
nand write - addr off|partition size
    read/write 'size' bytes starting at offset 'off'
    to/from memory address 'addr', skipping bad blocks.
nand read.raw - addr off|partition [count]
nand write.raw - addr off|partition [count]
    Use read.raw/write.raw to avoid ECC and access the flash as-is.
nand write.trimffs - addr off|partition size
    write 'size' bytes starting at offset 'off' from memory address
    'addr', skipping bad blocks and dropping any pages at the end
    of eraseblocks that contain only 0xFF
nand erase[.spread] [clean] off size - erase 'size' bytes from offset 'off'
    With '.spread', erase enough for given file size, otherwise,
    'size' includes skipped bad blocks.
nand erase.part [clean] partition - erase entire mtd partition'
nand erase.chip [clean] - erase entire chip'
nand bad - show bad blocks
nand dump[.oob] off - dump page
nand scrub [-y] off size | scrub.part partition | scrub.chip
    really clean NAND erasing bad blocks (UNSAFE)
nand markbad off [...] - mark bad block(s) at offset (UNSAFE)
nand biterr off - make a bit error at offset (UNSAFE)
=>