4

Freescalemx28evkボードでUbootを実行しようとしています。それはうまくコンパイルされ、SDカードにddコピーできる画像を私に与えます。

ボードの電源を入れると、シリアルデバッグコンソールから出力が表示されず、エラーメッセージも表示されません。ボードがカード上の別の作業イメージで正常に機能していることは確認できます。

問題の原因を見つけるための適切な次のステップは何でしょうか?uBootパーティションに有効なuBootであることを確認するために探すことができるパターンやマジックナンバーはありますか?

4

2 に答える 2

6

u-boot-2013.07などの構成で U-Boot バージョンを構成し、 などのツールチェーンを使用して Makefile ターゲットをmx28evk_configビルドし、を使用してターゲットをファイルに変換したと仮定すると、最も可能性の高い問題は、PMU またはSDRAM 構成。これらの構成に誤りがあると、U-Boot バナーの印刷に到達する前にリセットが発生するリセット ループが発生する可能性があります。u-boot.sbarm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2.sd./tools/mxsboot sd u-boot.sb u-boot.sd

EVK スイッチがDenx U-Bootdoc/README.mx28evkファイルで指定されているとおりに設定されていることを確認します。ブート モードの DIP スイッチを次のように設定します。

  • Boot Mode Select: 1 0 0 1 (SD カードスロット 0 - U42 から起動)
  • JTAG PSWITCH RESET: 右へ (リセット無効)
  • バッテリーソース: ダウン
  • 壁 5V: アップ
  • VDD 5V: 左へ (オフ)
  • ホールドボタン:ダウン(オフ)

この種の問題をデバッグするために必要な次のステップは、SPL SRAM コードにシリアル出力を早期に配置することです。putcにステートメントを入れることから始めarch/arm/cpu/arm926ejs/mxs/spl_boot.c:mxs_common_spl_init()ます。例えば:

void mxs_common_spl_init(const iomux_cfg_t *iomux_setup,
                    const unsigned int iomux_size)
{
    struct mxs_spl_data *data = (struct mxs_spl_data *)
            ((CONFIG_SYS_TEXT_BASE - sizeof(struct mxs_spl_data)) & ~0xf);

    debug_putc('a');

    uint8_t bootmode = mxs_get_bootmode_index();

    debug_putc('b');

    mxs_iomux_setup_multiple_pads(iomux_setup, iomux_size);

    debug_putc('c');

    mxs_power_init();

    debug_putc('d');

    mxs_mem_init();

    debug_putc('e');

    data->mem_dram_size = mxs_mem_get_size();

    data->boot_mode_idx = bootmode;

    mxs_power_wait_pswitch();
}

これputcに使用する は、Freescale i.MX28 ブートレット コードから借用したものです。

void debug_putc(char ch)
{
    int loop = 0;
    while (((*(volatile hw_uartdbgfr_t *) ((0x80000000 + 0x74000) + 0x18)).U)&0x00000020)
    {
            loop++;
            if (loop > 10000)
            break;
    };
    ((*(volatile hw_uartdbgdr_t *) ((0x80000000 + 0x74000) + 0x0)).U = (ch));
}

必要なタイプは次のとおりです。

typedef unsigned int   reg32_t;
typedef unsigned short reg16_t;
typedef unsigned char  reg8_t;

typedef union
{
    reg32_t  U;
    struct
    {
        unsigned DIV_EMI            :  6;
        unsigned RSRVD1             :  2;
        unsigned DIV_XTAL           :  4;
        unsigned RSRVD2             :  4;
        unsigned DCC_RESYNC_ENABLE  :  1;
        unsigned BUSY_DCC_RESYNC    :  1;
        unsigned RSRVD3             :  8;
        unsigned BUSY_SYNC_MODE     :  1;
        unsigned BUSY_REF_CPU       :  1;
        unsigned BUSY_REF_EMI       :  1;
        unsigned BUSY_REF_XTAL      :  1;
        unsigned SYNC_MODE_EN       :  1;
        unsigned CLKGATE            :  1;
    } B;
} hw_clkctrl_emi_t;

typedef union
{
    reg32_t  U;
    struct
    {
            unsigned TRG               :  5;
            unsigned RSRVD1            :  3;
            unsigned BO_OFFSET         :  3;
            unsigned RSRVD2            :  1;
            unsigned LINREG_OFFSET     :  2;
            unsigned RSRVD3            :  2;
            unsigned DISABLE_FET       :  1;
            unsigned ENABLE_LINREG     :  1;
            unsigned DISABLE_STEPPING  :  1;
            unsigned PWDN_BRNOUT       :  1;
            unsigned RSRVD4            : 12;
    } B;
} hw_power_vddactrl_t;


typedef union
{
    reg32_t  U;
    struct
    {
            reg8_t   DATA;
            unsigned FE           :  1;
            unsigned PE           :  1;
            unsigned BE           :  1;
            unsigned OE           :  1;
            unsigned RESERVED     :  4;
            reg16_t  UNAVAILABLE;
    } B;
} hw_uartdbgdr_t;

typedef union
{
    reg32_t  U;
    struct
    {
            unsigned CTS          :  1;
            unsigned DSR          :  1;
            unsigned DCD          :  1;
            unsigned BUSY         :  1;
            unsigned RXFE         :  1;
            unsigned TXFF         :  1;
            unsigned RXFF         :  1;
            unsigned TXFE         :  1;
            unsigned RI           :  1;
            unsigned RESERVED     :  7;
            reg16_t  UNAVAILABLE;
    } B;
} hw_uartdbgfr_t;

void debug_putc(char c);

arch/arm/cpu/arm926ejs/mxs/mxs_init.h型をに、putc実装を に入れましたspl_boot.cputc私はまた、多くのステートメントをspl_power_init.candに入れる傾向がありspl_mem_init.cます。

PMU のプログラミングを誤るspl_power_init.cとリセットが発生する可能性があることに注意してくださいspl_mem_init.c。これであなたをだまさないでください。

于 2013-08-19T17:27:21.420 に答える
1

U-Boot なしで SD カードを作成してみてください ( mk_mx28_sd /dev/sdX)

U-Boot (mk_mx28_sd -u /dev/sdX) で SD カードを作成する前に、ブートレット (./ltib -p boot_stream.spec -f) を再コンパイルしてみてください。

于 2012-09-14T17:52:45.893 に答える