sunshaoqing110 2015-03-01 07:43 采纳率: 66.7%
浏览 3543
已采纳

嵌入式编译zImage与uboot时出现问题,芯片是imx287

报错信息:sun@sun-X450CC:~/sun/Bootloader/imx-bootlets-src-2.6.35.3-1.1.0$ make BOARD=iMX28_EVK
by using the pre-build command line

force building linux_prep

make clean -C linux_prep
make[1]: 正在进入目录 /home/sun/sun/Bootloader/imx-bootlets-src-2.6.35.3-1.1.0/linux_prep'
Cleaning...
Files:
rm -rf ./core/entry.o ./core/resume.o ./core/cmdlines.o ./core/setup.o ./core/keys.o ./board/iMX28_EVK.o ./hw/lradc-buttons.o ./output-target/linux_prep.ld
Build output:
rm -rf ./output-target
Build system:
rm -rf ./include/arch
make[1]:正在离开目录
/home/sun/sun/Bootloader/imx-bootlets-src-2.6.35.3-1.1.0/linux_prep'
cross-compiling linux_prep
make -C linux_prep ARCH=mx28 BOARD=iMX28_EVK
make[1]: 正在进入目录 /home/sun/sun/Bootloader/imx-bootlets-src-2.6.35.3-1.1.0/linux_prep'
gcc -c -Wall -I./include -nostdinc -fno-builtin -O -DMX28 -DBOARD_MX28_EVK -D__ASSEMBLY__ -o core/entry.o core/entry.S
core/entry.S: Assembler messages:
core/entry.S:26: Error: unknown pseudo-op:
.code'
core/entry.S:31: Error: no such instruction: stmdb sp!,{r4-r12,lr}'
core/entry.S:34: Error: no such instruction:
ldr r4,entry_count'
core/entry.S:35: Error: expecting operand after ','; got nothing
core/entry.S:36: Error: no such instruction: bne start_kernel'
core/entry.S:42: Error: no such instruction:
bl try_to_resume'
core/entry.S:49: Error: too many memory references for add'
core/entry.S:50: Error: too many memory references for
str'
core/entry.S:53: Error: no such instruction: ldmia sp!,{r4-r12,lr}'
core/entry.S:54: Error: no such instruction:
bx lr'
core/entry.S:56: Error: unknown pseudo-op: .pool'
core/entry.S:64: Error: no such instruction:
bl clear_bss'
core/entry.S:67: Error: no such instruction: bl hw_init'
core/entry.S:70: Error: no such instruction:
bl setup_tags'
core/entry.S:71: Error: too many memory references for mov'
core/entry.S:74: Error: no such instruction:
ldr r1,=2531'
core/entry.S:77: Error: expecting operand after ','; got nothing
core/entry.S:80: Error: no such instruction: ldr lr,=(0x40000000+0x8000)'
core/entry.S:81: Error: too many memory references for
mov'
core/entry.S:83: Error: unknown pseudo-op: .pool'
core/entry.S:91: Error: no such instruction:
stmdb sp!,{r4-r6,lr}'
core/entry.S:92: Error: no such instruction: ldr r4,=_hwinit_start'
core/entry.S:93: Error: no such instruction:
ldr r5,=_hwinit_end'
core/entry.S:94: Error: no such instruction: ldr r6,[r4],'
core/entry.S:95: Error: too many memory references for
mov'
core/entry.S:96: Error: too many memory references for mov'
core/entry.S:97: Error: too many memory references for
cmp'
core/entry.S:98: Error: no such instruction: blo 1b'
core/entry.S:99: Error: no such instruction:
ldmia sp!,{r4-r6,lr}'
core/entry.S:100: Error: too many memory references for mov'
core/entry.S:102: Error: unknown pseudo-op:
.pool'
core/entry.S:107: Error: no such instruction: ldr r0,=_bss_start'
core/entry.S:108: Error: no such instruction:
ldr r1,=_bss_end'
core/entry.S:109: Error: expecting operand after ','; got nothing
core/entry.S:110: Error: invalid char '[' beginning operand 2 [r0]'
core/entry.S:111: Error: too many memory references for
cmp'
core/entry.S:112: Error: no such instruction: blo 1b'
core/entry.S:113: Error: too many memory references for
mov'
core/entry.S:115: Error: unknown pseudo-op: .pool'
core/entry.S:122: Error: too many memory references for
mov'
core/entry.S:125: Error: too many memory references for mov'
core/entry.S:128: Error: too many memory references for
mov'
make[1]: *** [core/entry.o] 错误 1
make[1]:正在离开目录 `/home/sun/sun/Bootloader/imx-bootlets-src-2.6.35.3-1.1.0/linux_prep'
make: *** [linux_prep] 错误 2

报错文件我找到了是这个:
/*

  • linux_prep entry code. *
  • Entered twice: *
  • - Before loading Linux kernel image to SDRAM to check
  • if CPU is being taken out of standby mode and resume
  • sleeping kernel. *
  • - After loading Linux kernel image to prepare Linux boot
  • paramteters and jump to the kernel *
  • Vladislav Buzov vbuzov@embeddedalley.com *
  • Copyright 2008 SigmaTel, Inc
  • Copyright 2008 Embedded Alley Solutions, Inc *
  • This file is licensed under the terms of the GNU General Public License
  • version 2. This program is licensed "as is" without any warranty of any
  • kind, whether express or implied. */ #include

#undef DEBUG

.code 32
.section ".start", "ax"

.global _start, _fail_reason

_start:
stmdb sp!, {r4-r12, lr}

/* Check entry counter */
ldr r4, entry_count
cmp r4, #0
bne start_kernel

/*
 * We may not return from there if system is resuming
 * from standby mode
 */
bl  try_to_resume

#ifdef DEBUG
mov r2, #0x80000000
orr r2, r2, #0x70000
str r0, [r2]
#endif
/* Update counter to show we were here */
add r4, r4, #1
str r4, entry_count

/* Return to ROM */
ldmia   sp!, {r4-r12, lr}
bx  lr

.pool

entry_count:
.long 0x00
_fail_reason:
.long 0x00

start_kernel:
bl clear_bss

/* Initialize HW modules relevant for linux_prep */
bl  hw_init

/* Setup tags for Linux kernel and save tags pointer in r2 */
bl  setup_tags
mov r2, r0

/* Store machine id in r1 */
ldr r1, =MACHINE_ID

/* Zero r0 register */
mov r0, #0

/* Jump to Linux kernel */
ldr lr, =KERNEL_BASE_ADDRESS
mov pc, lr

.pool

/*

  • This function initializes all HW modules anebled in
  • current configuration. It goes throgh .hwinitcall section
  • containing addresses of HW initialization routines.
    */
    hw_init:
    stmdb sp!, {r4-r6, lr}
    ldr r4, =_hwinit_start
    ldr r5, =_hwinit_end
    1: ldr r6, [r4], #4
    mov lr, pc
    mov pc, r6
    cmp r4, r5
    blo 1b
    ldmia sp!, {r4-r6, lr}
    mov pc, lr

    .pool
    /*

  • This function clears out the .bss section.
    */
    clear_bss:
    ldr r0, =_bss_start
    ldr r1, =_bss_end
    mov r2, #0
    1: str r2, [r0], #4
    cmp r0, r1
    blo 1b
    mov pc, lr

    .pool
    /*

  • ARM EABI toolchain needs divide by zero handler to be implemented

  • externally.
    */
    .globl __div0
    __div0:
    mov pc, lr
    .globl __aeabi_unwind_cpp_pr0
    __aeabi_unwind_cpp_pr0:
    mov pc, lr
    .globl raise
    raise:
    mov pc, lr

有没有知道哪里错了的,这个文件我没有动过,是不是有什么地方需要配置

  • 写回答

1条回答 默认 最新

  • 嵌云阁主 2015-03-01 09:21
    关注

    需要安装交叉编译工具,而且通过ARCH和CROSSCOMPILER传递给make
    从错误信息上看,你直接用的是gcc,当然编译错误

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退