私は理解しようと数日間過ごしますが、私は立ち往生しています。 STM32F429I-DISC1ボードに「bootm 8100000」と入力しても、「Starting kernel ...」というメッセージが表示されます。Cortex-M4でLinux 4.9を実行するSTM32F4(29I-DISC1)
2011年から2016年にubootを更新する前に "Starting Kernel ..." +無人例外HARDFAULTでしたが、 "Starting Kernel ..."というメッセージが表示されました。
MCUはstm32F429、2MB Flash + extです。 8MBのRAM。
フラッシュ開始addrが0x08000000(uboot addrの)であり、私は0x08100000で第二のフラッシュバンクの先頭に私のカーネルを置きます。
スタート外部8MBのRAMがが0xD0000000
U-ブート2016.11は、そのボード上でかなりよく実行するように思わあるBDI私を与える:
U-Boot > bdi
arch_number = 0x00000000
boot_params = 0xD0000100
DRAM bank = 0x00000000
-> start = 0xD0000000
-> size = 0x00800000
current eth = unknown
ip_addr = <NULL>
baudrate = 115200 bps
relocaddr = 0xD07D6000
reloc off = 0xC87D6000
irq_sp = 0xD05D3EE0
sp start = 0xD05D3ED0
Early malloc usage: e0/400
これは私がカーネルを構築する方法です。
make CROSS_COMPILE=arm-none-eabi- ARCH=arm uImage LOADADDR=08100000 -B
そして、これはbootmコマンドの完全な出力です:
「robutest」/「emcraft」カーネル/設定ファイルでU-Boot > bootm 8100000
## Booting kernel from Legacy Image at 08100000 ...
Image Name: Linux-4.9.0
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 839872 Bytes = 820.2 KiB
Load Address: 08100000
Entry Point: 08100000
Verifying Checksum ... OK
Loading Kernel Image ... OK
Starting kernel ...
それは私がアクティブにしようとしましたrobutest/emcraftカーネル上08100001.
だからエントリポイントがより正しいと思われる場合を除き、私は、同じログを得ましたボードの液晶画面が、何も起こらない。
私のテストではすべて、カーネル設定の "early printk"と "DEBUG_LL_xxx"を有効にしています。
これは私の.configファイルへのリンクです: http://pastebin.com/gBNYx3Gs
PS:私は何が起こっているのを見つけるためにしようとするいくつかは、uClinuxをのemcraft/robutestで試す作られたが、私の主な目標は、Linux 4.9を実行することです。
私を読んでくれてありがとう!
EDIT:歓迎です
U-Boot > bootm 08100000 - 08040000
## Booting kernel from Legacy Image at 08100000 ...
Image Name: Linux-4.9.0
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 805744 Bytes = 786.9 KiB
Load Address: 08100000
Entry Point: 08100000
Verifying Checksum ... OK
## Flattened Device Tree blob at 08040000
Booting using the fdt blob at 0x8040000
Loading Kernel Image ... OK
Loading Device Tree to d05ce000, end d05d2a9f ... OK
Starting kernel ...
私は絶望的だ、任意のアイデア:: '(
EDIT2:私はDTBを渡すために、 "古い方法" を試してみましたが、同じ結果とI私はDTBにメモリ/ USART1アドレスをチェックし、私はカーネルのないメッセージを持っていないなぜそれが大丈夫だ
:U-Boot > bootm 8100000 - 8040000
## Booting kernel from Legacy Image at 08100000 ...
Image Name: uImage
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 940696 Bytes = 918.6 KiB
Load Address: d0008000
Entry Point: d0008001
Verifying Checksum ... OK
## Flattened Device Tree blob at 08040000
Booting using the fdt blob at 0x8040000
Uncompressing Kernel Image ... OK
Loading Device Tree to d05ce000, end d05d2a9f ... OK
Starting kernel ...
EDIT3:U-ブートでカーネルを解凍しようとした、それは同じです。?
EDIT4:uxipImage付:
U-Boot > bootm 08060000 - 08040000
## Booting kernel from Legacy Image at 08060000 ...
Image Name: uxipImage
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1497396 Bytes = 1.4 MiB
Load Address: 08060000
Entry Point: 08060041
Verifying Checksum ... OK
## Flattened Device Tree blob at 08040000
Booting using the fdt blob at 0x8040000
Loading Kernel Image ... OK
Loading Device Tree to d05ce000, end d05d2a9f ... OK
Starting kernel ...
私は私が見つけた、別のエントリ・ポイントと0806万、08060040と08060041.
スタックオーバーフローは、プログラミングおよび開発に関する質問のサイトです。この質問は、プログラミングや開発に関するものではないので、話題にはならないようです。ヘルプセンターの[ここではどのトピックを参照できますか](http://stackoverflow.com/help/on-topic)を参照してください。おそらく、[スーパーユーザ](http://superuser.com/)や[Unix&Linux Stack Exchange](http://unix.stackexchange.com/)の方が良いかもしれません。また、[Dev Opsについての質問はどこに投稿しますか?](http://meta.stackexchange.com/q/134306) – jww
@jww組み込みデバイス用であっても、ソフトウェア開発者について言及しています。 出力UARTを設定する方法を教えてください。私はこの接続がdtbによって行われましたが。 「通常」のカーネルは、私が作品をRAMに解凍し、それらを起動をしない理由 – user2629409