2013-03-01 13 views
7

Bir bölüm içeriğini iki bitişik olmayan bellek bölgesine yazmak için bir linker komut dosyası yazmaya çalışıyorum.gnu linker bölümü

Bu konuda bu posta listesindeki eski bir iplik bulduk: "ld bağlayıcı komut ve bitişik olmayan bellek bölge" http://sourceware.org/ml/binutils/2012-01/msg00188.html

bu sorun için C28x derleyici gelen bir özellik biliyorum çatlıyor çoklu bellek bölümleri boyunca bölümler: (bir veya işlevle)

BÖLÜMLER {.text: {* (. text)} >> FLASH1 | FLASH3}

Burada anlatılan: http://processors.wiki.ti.com/index.php/C28x_Compiler_-_Understanding_Linking

Ben başarılı olamadı denemek var. Şu anda yumruk hafızasını elle doldurmam gerekiyor. ama kod cadı parçalarını aramak için zor bir gelecekte değişmeyecek ve ilk bellek bölgesini tamamen sığacak ve doldurun.

GNU bağlayıcısında böyle bir özellik uygulanmış mı? Ya da kimse daha iyi bir fikre sahip Bu sorunu nasıl çözebilirim?

cevap

1

En kolay yol (ve belki de tek yol) bölümünüzü iki bölüme ayırmak, sonra bir bölümü birinci bellek bölgesine ve ikinci bölümü ikinci bellek bölgesine atamak olacaktır.

Muhtemelen bunu önceden görmüştür, ama link komut oldukça özlü bir açıklamasıdır: http://www.math.utah.edu/docs/info/ld_3.html

+0

Bu çok eski bir soru olduğunu biliyorum ama elle olmadan iki bölüme bölmek için iyi bir yol yoktur X bölümü A ve Y bölüm B'ye eşleniyor mu? Tüm programı (.text, .data ve .bss) içine yerleştirmek için üç bitişik olmayan anım var ve bunları ayırmak için bir ayı olacaktır. – rjp