2015-11-03 26 views
2

我有一個嵌入式C項目,我使用的Eclipse編譯陣列。 我需要將二進制文件作爲常量數組讀取到應用程序代碼中。包含二進制文件作爲常量

該二進制文件大約爲200kB,需要成爲應用程序代碼的一部分,以便應用程序代碼可以隨時讀取二進制映像並將其加載到需要此初始化映像的主板上的其他設備中。

我將在圖像通常加載到在基板上的非易失性存儲器,然後將其讀和移動它,但在這裏,是不可行的,它必須是可執行映像的一部分。

我可以.bin文件鏈接到某個地址爲此在生成文件中,或者在C代碼類似

const char binFileImage [] = { file.bin }; 

這顯然是不行的,但我還沒有想出語法這將工作。

僅供參考,file.bin真的是一個二進制文件。

有關如何做到這一點的任何想法?

+0

的[可能的複製有沒有辦法來加載一個二進制文件作爲在編譯時在C中const變量](http://stackoverflow.com/questions/22455274/is-there-a-way-to-load-a-binary-file-as-a-const-variable-in-c特技的編譯時) –

回答

3

使用鏈接腳本將二進制文件中的特定地址可能是最好的,最簡單的解決方案。

其他解決方案包括使用一些程序由生成文件調用以將該文件轉換成含有有效陣列定義一個源文件。例如,可以說,該文件與值開始0x230x050xb30x8f,然後自動生成的源文件可能看起來像

const uint8_t binary_file_data[] = { 
    0x23, 0x05, 0xb3, 0x8f, ... 
}; 
+0

您好,我看到你這個打算,但如果我看起來瓷磚我看到 – Martin

+0

FF FF FF FF EB ......不是0xFF的0xFF的 - 我需要一個應用程序做轉換,我不知道一個程序可以很好地工作,我希望隨時做,因爲.bin文件可能會改變 – Martin

+2

@ user2969503寫你自己的。除此之外,您還可以使用binutils中的'objcopy'來執行此操作。 – fuz