- 論壇徽章:
- 0
|
我需要通過交叉編譯生成可執(zhí)行文件,在ARM裸板(不帶操作系統(tǒng))上運(yùn)行
基于上述前提,現(xiàn)在遇到幾個(gè)問題,求高手幫忙解答,多謝
1.從網(wǎng)上下載了arm-linux-gcc4.3.2, 同時(shí)下載了32位的lib庫,在64位ubuntu上搭建了交叉編譯環(huán)境。如果不帶編譯選項(xiàng),arm-linux-gcc -o main xxx.c xxx.c可以編譯生成目標(biāo)文件,如果帶-mcpu cortex-m4 會提示error.bad value(cortex-m4) for -mcpu=switch,請問這個(gè)怎么解決?
我的arm是STM32F429,對應(yīng)的架構(gòu)就是cortex-m4,另外我試過帶其它選項(xiàng),-mcpu=cortex-a8則會提示warning:switch -mcpu=cortex-a8 conflicts with -mcpu=switch,assuming cpu feature set,此時(shí)可以生成目標(biāo)文件
2.第一個(gè)問題沒解決,我就不帶編譯選項(xiàng)繼續(xù)往下走,通過file查看生成的可執(zhí)行文件
main: ELF 32-bit LSB executable, ARM, EABI5 Version 1(SYSV), dynamically linked(uses shared libs), for GNU/Linux 2.6.14, not stripped
請問這個(gè)怎么確認(rèn)這個(gè)文件可以在哪些架構(gòu)的arm上執(zhí)行?
3. 用IAR編譯我的工程生成main.bin,通過j-tag加載可以運(yùn)行并能夠從串口打印數(shù)據(jù)。通過arm-linux-gcc生成目標(biāo)文件main,
用J-TAG加載提示不支持這個(gè)文件類型,我手動將main修改為main.bin,J-TAG就可以識別并加載,請問這個(gè)手動修改對文件有影響嗎?
4.將手動修改的main.bin通過J-TAG加載到arm中,輸入開始地址08000000,執(zhí)行program&verifyy,但是不通過串口看到打印輸出,說明有問題。請問生成的文件可以直接在裸板上執(zhí)行嗎?執(zhí)行main之前是否需要初始化、設(shè)置堆棧等操作?如果需要,應(yīng)該怎么做?
另外,因?yàn)槲业墓こ滩灰蕾嚾魏螏旌瘮?shù),printf\memset\memcpy等都是自己重新寫的,所以交叉編譯環(huán)境也沒有下載ARM需要的內(nèi)核lib,這個(gè)應(yīng)該不影響吧?
先多謝各位幫忙解答的大牛們 |
|