完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
------------------------------------------------------------------------------------------------
1、信息说明 硬件平台(开发板的型号):Marvell 88F6281 bootloader版本(如果是bootloader开发):u-boot1.1.4+marvell 3.6 patch 其他:eclipse 3.7,ubuntu 12.04 编译路径:$HOME/workspace/u-boot/u-boot-1.1.4 bin路径:$HOME/workspace/u-boot/images/DB-6281A-BP/LE/SPI/u-boot-db88f6281abp_400db_flash.bin 通过samba把$HOME映射到windows 7 sp1的Y:。 2、问题现象(最好是能贴出图片) 配置截图如下: 图1:main 图2:debugger 图3:commands 图4 path map 图5 openocd uboot.init的内容如下: /*************************************************************/ target remote 127.0.0.1:3333 # ARM-elf-gdb登录到openocd monitor halt # 停止单板 #monitor arm mcr 15 0 1 0 0 0 # 这两条命令是关MMU monitor step echo Configuring system...n monitor load_image /home/vincent/workspace/u-boot/images/DB-6281A-BP/LE/SPI/u-boot-db88f6281abp_400db_flash.bin 0x800000 # 下载init.bin到片内内存,目的是初始化DDR monitor resume 0x800000 # 运行 monitor halt # 停止 monitor wait_halt # 等待停止 /**********************************************************************************/ 调试console输出如下: ################################################### source Y:workspaceu-bootu-boot.init 0x00000000 in ?? () target state: halted target halted in ARM state due to debug-request, current mode: Supervisor cpsr: 0x400000d3 pc: 0x0063d6a4 MMU: disabled, D-Cache: disabled, I-Cache: enabled target state: halted target halted in ARM state due to single-step, current mode: Supervisor cpsr: 0x400000d3 pc: 0x0063d6a8 MMU: disabled, D-Cache: disabled, I-Cache: enabled Configuring system... couldn't open /home/vincent/workspace/u-boot/images/DB-6281A-BP/LE/SPI/u-boot-db88f6281abp_400db_flash.bin target state: halted target halted in ARM state due to debug-request, current mode: Supervisor cpsr: 0x60000013 pc: 0x0063d684 MMU: disabled, D-Cache: disabled, I-Cache: enabled set substitute-path /home/vincent/workspace/u-boot Y:workspaceu-boot load Loading section .text, size 0x439a4 lma 0x600000 Loading section .dummy, size 0x10 lma 0x6439a4 Loading section .rodata, size 0xc91 lma 0x6439b4 Loading section .rodata.str1.1, size 0xd57a lma 0x644645 Loading section .reset_vector_sect, size 0x18c lma 0x670000 Loading section .data, size 0x1b37 lma 0x67018c Loading section .u_boot_cmd, size 0x8f8 lma 0x671cc4 Start address 0x600000, load size 344442 Transfer rate: 26 KB/sec, 12757 bytes/write. break start_armboot Breakpoint 1 at 0x620778: file board.c, line 159. c Program received signal SIGINT, Interrupt. 0x00620778 in start_armboot () at board.c:159 in board.c 159 board.c: No such file or directory. Function "main" not defined. mi_cmd_var_create: unable to create variable object ################################################### 3、发表自己对问题的看法,并提问。 ----------------------------------------------------------------------------------------------- 我觉得可能存在如下问题: 1)目录映射的问题。主要反映在第一段红色字体上; 2)uboot.init存在语法错误; 3)telnet的端口可能不对,openocd设置为4444,但是uboot.init写的是3333,但我把uboot.init里的端口改成4444也照样出错; 麻烦韦老师帮我看看。另外还需要什么参数我都可以截图。 |
|
相关推荐
12个回答
|
|
couldn't open /home/vincent/workspace/u-boot/images/DB-6281A-BP/LE/SPI/u-boot-db88f6281abp_400db_flash.bin
你是在windows下操作吧? windows下当然没有这些目录 |
|
|
|
另外,set path....时, 号改为/
|
|
|
|
|
|
|
|
麻烦老师帮我看看这几个目录如何写:
1)uboot.init 2) path mapping; 3)set substitute-path; 另外,除了这些目录错误之外,还有没有其他错误? |
|
|
|
|
|
|
|
set subsititue-path 原来的目录 windows下的目录
并且在这个命令里,要改为/ u-boot.init也得改load_image windows下的目录 并且在这个命令里,要改为/ |
|
|
|
这样改之后基本可以跑了,但是存在2个问题:
1)行号对应不上,console输出如下: Start address 0x600000, load size 344370 Transfer rate: 122 KB/sec, 12754 bytes/write. break start_armboot Breakpoint 1 at 0x620778: file board.c, line 159. c Program received signal SIGINT, Interrupt. 0x00620778 in start_armboot () at board.c:159 159 in board.c No line 315 in file "board.c". 红色字体部分是在设置断点的时候的提示 2)程序运行后一直停留在如下程序段: static int init_baudrate (void) { DECLARE_GLOBAL_DATA_PTR; uchar tmp[64]; /* long enough for environment variables */ int i = getenv_r ("baudrate", tmp, sizeof (tmp)); gd->bd->bi_baudrate = gd->baudrate = (i > 0) ? (int) simple_strtoul (tmp, NULL, 10) : CONFIG_BAUDRATE; return (0); } 一直停留在红色字体那行,如何单步执行都是停留在这行。 |
|
|
|
|
|
|
|
|
|
|
|
jtag工具能用eclipse进行源码级别的调试有些前提:
1. 这个程序编译时要加-g选项,它给程序添加调试信息,arm-linux-gdb是根据这些信息来调试 2. 程序必须位于它的链接地址上面,因为arm-linux-gdb根据调试信息里的链接地址去找读写变量、打断点 所以,重定位之前的代码是没法调试的,因为这时候程序还没在它的链接地址上呢 另外因为程序要事先位于链接地址上,如果这个链接地址是SDRAM的话,那么就必须用JTAG工具来初始化SDRAM,并且程序里就不要去初始化SDRAM了 3. 链接文件必须是这样的形式: SECTIONS { . = xxxxxxx; .text : { *(.text) } .rodata ALIGN(4) : {*(.rodata)} .data ALIGN(4) : { *(.data) } .bss ALIGN(4) : { *(.bss) *(COMMON) } } 第3点已经满足,1、2需要你去修改 |
|
|
|
|
|
|
|
2)不用改;
3)在脚本里更改; 4)在start.S里去掉内存操作的代码; 参考:http://www.100ask.net/forum/showtopic-3768.aspx |
|
|
|
只有小组成员才能发言,加入小组>>
197个成员聚集在这个小组
加入小组为什么点亮LED的例子放在NORFlash上跑会出现奇怪的现象?
2157 浏览 6 评论
1964 浏览 5 评论
韦东山老师推出的《玩转ARM裸机实战》课程将帮你以上问题一扫而光!
4521 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 01:51 , Processed in 0.968433 second(s), Total 101, Slave 81 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号