2016-05-25 6 views
2

OCRAMにあるU-Boot SPLのグローバル変数(構造体)内のMMC/SDカードからファイルをコピーしようとしています。これまでのところ私は、DRAM(DDR3/DDR4)作品(私はRAMのアドレスで&my_structを交換した場合、呼び出しが成功すると、私は正確に戻ってRAMからファイルを読み込むことができます)にコピーするのでu-boot mmc read_block制限

mmc->block_dev.block_read(0, file_sector, 4, &my_struct); 

を使用しようとしています私のファイルはセクターfile_sectorの冒頭に位置していると確信しています。

しかし、このコードで、私が取得:

ERROR: v7_dcache_inval_range - start address is not aligned - 0x100082f4 
ERROR: v7_dcache_inval_range - start address is not aligned - 0x10008af4 

は、いくつかの要件/制限は、私がblock_readの目的地の場所にオフに注意する必要がありますありますか?

+0

'mmc_read'は、文字バッファを使って作業する必要があります。特定の位置合わせを必要とすべきではありません。 – LPs

+0

"DDRAM"とは何ですか? – Olaf

+0

私の悪い、これはタイプミスです。 DRAMを読んでください(ドキュメントはDDR3/DDR4と書いてあります) – Vinz

答えて

1

したがって、答えの一部はエラーメッセージの右側に記載されています。どこに 'mystruct'があるのか​​は、キャッシュで整列されていないので、私たちが行うフラッシュは有効ではありません。 ALLOC_CACHE_ALIGN_BUFFERマクロを使用し、前述の@LPとして、文字バッファにコピーする必要があります。

+0

チップをありがとうございます。 common.hの文書から、マクロがスタックに割り当てられることがわかります。頭に割り当てられるのと同等のものはありますか?私はヘッダーを埋める必要があり、それを2つの別々のファイルに読み戻す必要があります。 – Vinz

+1

ヒープを意味しますか? DDRが初期化されている場合は、memalign.hのmalloc_cache_aligned()を使用できます。 –

+0

はい..ヒープ...申し訳ありません:)答えてくれてありがとう! – Vinz