/var/log/messages

debugging with sixth sense

RPi な U-Boot の動作確認

結線してシリアル接続な日曜夜。

以下な出力を確認。

U-Boot 2014.04-rc1-g0b635b1-dirty (Apr 28 2014 - 21:12:34)

DRAM:  448 MiB
WARNING: Caches not enabled
MMC:   bcm2835_sdhci: 0
Using default environment

In:    serial
Out:   lcd
Err:   lcd
Net:   Net Initialization Skipped
No ethernet found.
** No partition table - mmc 0 **
Hit any key to stop autoboot:  0 

ちなみに mmcinfo てきにはデバイス認識しています。

U-Boot> mmcinfo
Device: bcm2835_sdhci
Manufacturer ID: 28
OEM: 4245
Name:       
Tran Speed: 50000000
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: 7.5 GiB
Bus Width: 4-bit

raspi な u-boot は SDCard 自体は認識しているけれど、区画の情報は認識できてない、ということなのかな。No partition table でソースを確認なのかどうか。

$ find |xargs grep 'No partition table' 2>/dev/null
Binary file ./u-boot.bin matches
Binary file ./u-boot matches
Binary file ./disk/built-in.o matches
./disk/part.c:   * No partition table on device,
./disk/part.c:          printf("** No partition table - %s %s **\n", ifname,

disk/part.c の該当部分が以下ですね。

    /*
     * No partition table on device,
     * or user requested partition 0 (entire device).
     */
    if (((*dev_desc)->part_type == PART_TYPE_UNKNOWN) ||
        (part == 0)) {
        if (!(*dev_desc)->lba) {
            printf("** Bad device size - %s %s **\n", ifname,
                   dev_str);
            goto cleanup;
        }

        /*
         * If user specified a partition ID other than 0,
         * or the calling command only accepts partitions,
         * it's an error.
         */
        if ((part > 0) || (!allow_whole_dev)) {
            printf("** No partition table - %s %s **\n", ifname,
                   dev_str);
            goto cleanup;
        }

これ、どーゆー意味なのかな。ちなみに上記の記述は get_device_and_partition という手続きになっている模様。

ちなみに U-Boot for Raspberry Pi, step 8: SDHC support の出力が以下。

U-Boot 2012.04.01-00479-gb58d9ae-dirty (Jun 20 2012 - 11:47:13)

DRAM:  128 MiB
WARNING: Caches not enabled
MMC:   CAPS: 00000000
bcm2835_sdh: 0
Using default environment

ん、これって SDCard の種類てきに何か限定なのかな。find|grep したら以下な出力を確認したんですが

./board/raspberrypi/rpi_b/rpi_b.c:  return bcm2835_sdhci_init(BCM2835_SDHCI_BASE,

これって何となく限定されてる風ですね。board_mmc_init という手続きで最終てきにこの手続きの戻りが、という形らしいです。確認してみたんですが使ってる SDCard は SDHC って書いてあるんだけどなぁ。

継続

別途、drivers/mmc/bcm2835_sdhci.c を確認の方向にて。あと以下な差分がアレ

実機の出力が以下で

MMC:   CAPS: 00000000
bcm2835_sdh: 0

U-Boot for Raspberry Pi, step 8: SDHC support の出力が以下。

MMC:   bcm2835_sdhci: 0

ここを足がかりに何とかなるのかどうか。

Comments