当前位置:文档之家› FAQ

FAQ

武汉创维特信息技术有限公司产品F A Q

(2007-03-05)

一、ADT IDE仿真器系列 (5)

1、工作区(workspace)、工程(project)有什么区别? (5)

2、怎样改变当前活动工程? (5)

3、怎样在ADT IDE中编译程序? (6)

4、怎样在ADT IDE中下载调试程序? (6)

5、连接仿真器时提示仿真器没有找到,怎么办? (6)

6、连接目标板时提示目标板没有找到,怎么办? (7)

7、在Debugger Device中的各个设置有什么区别? (8)

8、链接脚本文件是什么,怎样编写? (8)

9、命令脚本文件是什么,怎样编写? (11)

10、怎样将ADT中的汇编程序移植到ADT中 (12)

11、编译错误1 (13)

12、编译错误2 (14)

13、SDT转化为GNU汇编的问题 (15)

二、EB44B0开发板 (16)

1、EB44B0开发板的链接脚本文件在哪里? (16)

2、EB44B0开发板的命令脚本文件在哪里? (16)

3、EB44B0开发板上电后超级终端没有打印信息? (16)

4、MTTTY是什么,使用Windows的超级终端可以吗? (17)

5、EB44B0如何烧写flash? (17)

6、EB44B0 BootLoader擦除后程序不能正常下载运行? (18)

7、我修改了BootLoader以后,通过仿真器下载到目标板,但是运行结果没

有变化,还是运行的Flash中的BootLoader,请问是怎么回事? (19)

8、怎样制作binary文件? (20)

9、如何编写代码在flash中,变量在ram中的链接脚本。 (20)

10、EB44B0 LCD显示函数PutPixelColor (22)

11、EB44B0超级终端设置问题 (22)

12、有关romstart.s 中的几个问题想问一下版主 (22)

13、有关串口超级终端设置产生的问题 (24)

14、请推荐一个LCD图像数据生成工具 (24)

三、EB44B0开发板uClinux专题 (25)

1、怎样在EB44B0开发板的uClinux中添加应用程序,请举个例子? (25)

2、EB44B0的uClinux采用的是哪个版本? (27)

3、EB44B0的uClinux采用的编译器是什么? (27)

4、怎样检测arm-elf-gcc编译器是否安装成功? (27)

5、怎样修改使用arm-elf-gcc编译器编译内核? (27)

6、使用arm-linux-gcc编译器能编译应用程序吗? (28)

7、如何配置应用程序自动运行? (28)

8、EB44B0 uClinux使用什么文件系统? (28)

9、怎样制作和修改ramdisk? (28)

10、怎样修改ramdisk的大小? (29)

11、怎样下载uCLinux映像 (29)

12、怎样下载uCLinux的ramdisk (30)

13、怎样在uClinux中测试以太网连接? (31)

14、uClinux ping不通? (32)

15、怎样连接网线? (32)

16、怎样修改IP地址? (32)

17、内核编译问题1? (33)

18、内核编译问题2? (33)

19、romfs问题? (34)

20、uClinux启动问题? (34)

四、JX44B0系列教学实验平台 (35)

1、JX44B0使用ADT1000仿真器连接时出现错误? (35)

2、JX44B0使用简易仿真器连接时出现错误? (35)

3、JX44B0使用ADT1000仿真器连接时提示找不到仿真器? (35)

4、JX44B0如何启动Flash中的uClinux? (35)

5、JX44B0的链接脚本文件在哪里? (35)

6、JX44B0的命令脚本文件在哪里? (36)

7、JX44B0的视频文件不能播放? (36)

8、JX44B0使用ADT1000仿真器下载程序时蜂鸣器嗤嗤响? (36)

9、只读属性问题 (36)

10、仿真器调试注意问题 (36)

11、教学系统核心板拔插问题 (37)

12、一块新的主板,参考JX44B0做的,怎样从头开始进行调试和开发..37

13、若干硬件问题 (38)

五、JX44B0教学实验平台uClinux专题 (39)

1、JX44B0的uClinux采用的是哪个版本? (39)

2、JX44B0的uClinux采用的编译器是什么? (39)

3、怎样检测arm-elf-gcc编译器是否安装成功? (39)

4、怎样制作uCLinux根文件系统 (39)

5、如何配置应用程序自动运行? (40)

6、怎样在uClinux中测试以太网连接? (40)

7、uClinux ping不通? (40)

8、怎样连接网线? (40)

9、怎样修改IP地址? (40)

10、RedHat下tftp问题? (41)

11、RedHat下ftp问题? (41)

12、uClinux安装问题 (41)

13、nfs_read_super: missing data argument问题 (41)

14、如何在JX44B0中添加nfs (42)

15、nfs mount 总是出现错误mount: RPC: Timed out (42)

16、怎样在JX44B0中添加telnet功能 (42)

六、JXARM9-2410系列教学实验平台 (43)

1、JXARM9-2410使用ADT1000仿真器连接时出现错误? (43)

2、JXARM9-2410使用简易仿真器连接时出现错误? (43)

3、JXARM9-2410使用ADT1000仿真器连接时提示找不到仿真器? (44)

4、u-boot环境变量问题 (44)

5、只读属性问题 (44)

6、uboot烧写问题 (44)

7、u-boot连接tftp服务器不成功怎么办? (45)

8、u-boot连接tftp服务器时总是提示“TT”? (46)

9、u-boot连接tftp服务器时提示“packet too big”? (46)

七、JXARM9-2410系列教学实验平台Linux操作系统专题 (47)

1、使用Ztelnet (47)

2、JXARM9-2410 mount U盘的问题: (48)

3、关于支持大RAMDISK的问题 (48)

4、以太网支持设置 (49)

5、如何在JXARM9-2410 Linux中制作jffs2文件系统 (49)

6、如何在JXARM9-2410 Linux中修改IP地址 (50)

7、请提供一个视频转换软件 (51)

8、JXARM9-2410系列教学实验系统GDB调试程序流程 (51)

9、JXARM9-2410系列教学实验系统中如何将应用程序添加到root文件系统

并设置启动时运行 (54)

八、JXARM9-2410系列教学实验平台WINCE操作系统专题 (55)

1、JXARM9-2410是否提供WINCE BSP,如果提供,提供的是那个版本 (55)

2、JXARM9-2410的WINCE都有哪些实验 (55)

3、JXARM9-2410的WINCE各个实验的开发平台是什么请简单说明 (56)

4、为什么我安装PB后并没有找到SMDK2410的Platform (57)

5、为什么我按照《ARM嵌入式WINCE实践教程》第一章内容提示总是编译不

通过 (58)

6、我按照《ARM嵌入式WINCE实践教程》附录C烧写u2410mon.bin文件后再按

照用户手册烧写uboot总是不成功,怎么办? (59)

7、请问ARM9实验箱WINCE是否提供LCD驱动,如果提供,请简单介绍。.59

8、我的实验箱触摸屏没有校准,点起来非常费力,请问如何校准 (59)

9、怎样再PB中使用命令行编译WINCE驱动程序 (60)

九、CVT-PXA255系列教学实验平台Linux操作系统专题 (61)

1、JXARM9-2410和JXSCLAE使用同样的编译器吗? (61)

2、将jffs2作为root文件系统时出现问题 (62)

3、mount nfs时出错 (62)

3、MMC卡怎样在Linux下使用 (62)

4、mount时出现错误 (64)

5、insmod提示错误 (64)

6、USB device怎样在Linux下使用 (64)

7、怎样在USB device模拟U盘 (65)

十、CVT-PXA270系列教学实验平台Linux操作系统专题 (65)

1、busybox编译问题 (65)

2、Linux从u盘挂载cramfs文件系统的方法 (65)

3、怎样启动实验箱上的Linux? (66)

4、Linux下MMC卡使用方法? (66)

5、Linux下摄像头的使用方法? (66)

十一、CVT-PXA270系列教学实验平台VxWorks操作系统专题 (66)

1、怎样启动实验箱上的VxWorks? (66)

2、怎样操作实验箱上的VxWorks? (67)

3、VxWorks下的PS/2鼠标是否支持热插拔? (67)

4、VxWorks下的触摸屏怎样校准? (67)

5、VxWorks的运行地址是多少? (67)

十二、CVT-PXA270系列教学实验平台Windows CE操作系统专题 (68)

1、Windows CE的运行地址是多少? (68)

2、Windows CE网卡的中断是多少? (68)

3、怎样支持USB同步功能? (68)

4. ftp和telnet服务器支持 (68)

5. USB鼠标支持 (68)

一、ADT IDE仿真器系列

1、工作区(workspace)、工程(project)有什么区别?

ADT IDE采用工作区加工程的管理方式(与Visual C++类似),工作区信息保存为扩展名为aws的文件,工程信息保存为扩展名为apj的文件。每个ADT IDE 实例最多只能打开一个工作区文件,而工作区文件中又可以包含多个工程,每个工程代表用户的单次编译或者调试动作。所有的编译或者调试动作必须针对打开工作区中的某个工程而言。因此必须在编译之前打开工程,然后才能编译。

下图是ADT IDE的工程管理示意图:

当前工作区为EB44B0,其下包含四个工程:BootLoader、demo、leddemo、seg7。其中以黑体字表示当前活动工程,在菜单的Build和Debug中许多操作都是针对当前活动工程而言的。

工作区

Demo工程

当前活动工程

2、怎样改变当前活动工程?

ADT IDE中有三种方法改变当前活动工程:

1)工具条:在Build工具条的组合框中选择工程名,强改变当前活动工程到该工程;

2)右键菜单:在工程管理窗口的树中选择待改变的工程名然后点击右键,在右键菜单中选择Set As Active Project菜单项。

3)菜单:在Build菜单Set Active Project中选择待改变的工程名。

3、怎样在ADT IDE中编译程序?

1)打开待编译的工作区,然后在工作区中选择待编译的工程为活动工程(见“2、怎样改变当前活动工程?”)。

2)选择Build菜单的Build菜单项或者Rebuild All菜单项进行编译,编译结果将显示在output窗口中。

4、怎样在ADT IDE中下载调试程序?

将编译成功的程序下载到目标板必须有几个前提:

1)程序编译成功;

2)目标板硬件正确并已经与仿真器进行连接;

3)目标板和仿真器均上电。

下载调试的过程包括:

1)目标板连接:选择Debug菜单的Remote Connect菜单项进行连接,连接成功将在output窗口中提示:

2)下载程序:在连接成功后在Debug菜单中的调试相关的菜单项将可用,此时选择Download菜单项将程序下载到目标板。

3)运行程序:下载成功后选择Debug菜单的Go菜单项运行程序。

5、连接仿真器时提示仿真器没有找到,怎么办?

问:在连接仿真器时,在output窗口中提示错误,如下图所示:

请问,可能是什么问题怎么解决?

答:请按照下列提示进行检查:

1)仿真器、计算机以及目标板之间连接是否正确;

2)仿真器是否上电;

3)如果上述设置都正确并且计算机并口是好的,请检查并口设置是否正确,方法是在工程设置对话框的General页中修改Debugger device

configuration的并口,点击OK,然后重新连接。

6、连接目标板时提示目标板没有找到,怎么办?

问:在连接目标板时,在output窗口中提示错误,如下图所示:

请问,可能是什么问题怎么解决?

答:请按照下列提示进行检查:

1)仿真器、计算机以及目标板之间连接是否正确;

2)目标板是否上电;

3)如果上述设置都正确并且计算机并口是好的,请检查调试设备是否正确,方法是在工程设置对话框的General页中检查Debugger device是否选

择正确,该选择必须与目标板对应。

7、在Debugger Device中的各个设置有什么区别?

ADT IDE采用插件方式支持各种目标设备,如ARM7、ARM9等。

在工程设置对话框的General页中的Debugger device组合框选择各种目标设备,各个设备说明如下:

1)SoftSim:软件仿真版本

2)Arm7Lpt:ARM7版本,支持ARM7内核处理器。

3)Arm9Lpt:ARM9版本,支持ARM9内核处理器。

4)Arm7Simple:ARM7简易仿真版本,适用于武汉创维特信息技术有限公司的JX44B0系列教学实验系统的简易仿真器;

5)Arm9Simple:ARM9简易仿真版本,适用于武汉创维特信息技术有限公司的JXARM9-2410系列教学实验系统的简易仿真器;

8、链接脚本文件是什么,怎样编写?

链接定位是系统级软件开发过程中必不可少的一部分,嵌入式软件开发均属于系统级开发,绝大部分嵌入式软件都涉及到链接定位脚本文件;链接定位脚本使得我们的目标代码组织更加灵活。

1)链接定位脚本文件说明

链接定位过程一般由链接器根据链接定位脚本完成,比较简单的系统可以通过设置链接器开关选项取代链接定位脚本;链接定位的关键是链接定位脚本的编写。我们从典型的目标文件结构开始,来介绍链接定位脚本文件的编写。下面是该系统一个目标文件的典型组织:

其中第二栏开始分别展示了该文件各个段(Sections)的属性:名称(Name)、类型(Type)、地址(Addr)、偏移(Offs)、大小(Size)、固定单元大小(Es)、标志(Flg)、连接依赖(Lk)、附加属性(Inf)、字节对其宽度(Al)。

地址部分(Addr)描述了这一段在目标系统中的地址,而偏移(Offs)则记载了该段在目标文件中的偏移,大小(size)表示该段的实际长度;比如上图中.Text段的地址为0x0c700000,偏移为0x008000,大小为0x00d950,说明该段位于文件的偏移0x008000处,它将被下载到目标板0x0c700000处。

从段的分类来看,第7段以后的内容仅仅与调试有关,涉及到定位的也就是前面几段:.text、.data、.rodata、.bss,下面是一个具体的链接定位脚本文件:

SECTIONS

{

. = 0x0c200000; /*赋当前地址,后续的代码将从该地址开始存放 */

.text : { (.text) } /*.text段表示代码段,从0x0c200000开始放置代码*/

Image_RW_Base = .; /* RW(可写数据)基址,实际上是在这里声明了一个全局符号,我们可以在程序中使用该符号,它等同于在代码中声明一个全局变量,但它的值由链接器指定,在这里“=.”表示该符号的值等于当前地址;下面的定义类似*/

.data : { (.data) } /*数据段, 保存已经初始化的全局数据 */

.rodata : { *(.rodata) } /*只读数据段, 保存已经初始化的全局只读数据*/

Image_ZI_Base = .; /*ZI基地址, 需要清零的区域 zero init*/

.bss : { *(.bss) } /*堆栈段,未初始化的全局变量也保存在此*/

__bss_start__ = .; /* bss的基地址*/

__bss_end__ = .; /* bss的结束地址*/

__EH_FRAME_BEGIN__ = .; /* FRAME开始地址(基地址)*/

__EH_FRAME_END__ = .; /* FRAME结束地址,gcc编译器使用 */

PROVIDE (__stack = .); /* 当前地址赋给栈,栈地址一般是可读写区最高处*/

end = .; /* 结束地址*/

_end = .; /* 结束地址*/

.debug_info 0 : { *(.debug_info) } /*调试信息*/

.debug_line 0 : { *(.debug_line) } /*调试信息*/

.debug_abbrev 0 : { *(.debug_abbrev)} /*调试信息*/

.debug_frame 0 : { *(.debug_frame) } /*调试信息*/

}

text段是程序代码段,紧随其后的是几个符号定义,它们是由编译器在编译连接时自动计算的,当我们在链接定位文件中申明这些符号后,编译连接时,该符号的值会自动代入到源程序的引用中,如果你想进一步了解连接定位的一些含义,可以参考编程手册中的ld一章。

data段的起始位置也是由连接定位文件所确定,大小在编译连接时自动分配,它和我们的程序大小没有关系,但和程序使用到的全局变量,常量数量相关。

bss的初始值也是由我们自己定义的连接定位文件所确定,我们应该将它定义在可读写的RAM区内,stack的顶部在可读写的RAM区的最后,我们可以非常灵活的定义其起点和大小,但对大部分情况来说,程序区在ROM或FLASH中,可读写区域在SRAM或DRAM中,我们可以考虑一下自己程序规模,函数调用规模,存储器组织,然后参照一个连接定位文件稍加修改就可以了。

2)链接定位脚本修改实例

SECTIONS

{

. = 0x00000000; /*将代码段起始地址修改到0*/

.text : { *(.text) }

Image_RW_Base = .;

.=0xc0000000 /*设置数据段从0xc0000000开始存放*/

.data : { *(.data) }

.=0xd0000000 /*设置只读数据段从0xd0000000开始存放*/

.rodata : { *(.rodata) }

Image_ZI_Base = .;

.bss : { *(.bss) }

Image_ZI_Limit = .;

/*申明一个符号download_size */

download_size = SIZEOF(.text)+SIZEOF(.data)+SIZEOF(.rodata)+SIZEOF(.bss);

__bss_start__ = .;

__bss_end__ = .;

__EH_FRAME_BEGIN__ = .;

__EH_FRAME_END__ = .;

PROVIDE (__stack = .);

end = .;

_end = .;

.debug_info 0 : { *(.debug_info) }

.debug_line 0 : { *(.debug_line) }

.debug_abbrev 0 : { *(.debug_abbrev)}

.debug_frame 0 : { *(.debug_frame) }

}

9、命令脚本文件是什么,怎样编写?

命令脚本文件是目标板连接以后程序下载之前对目标板进行的一系列初始

化动作的脚本文件,其主要的目的就是在目标板连接以后初始化RAM区,以使程序能够成功下载到RAM中。

其设置方法为:在工程设置对话框中的Debug页中的Action after target connected选项组中选择系统连接目标板后的动作,支持三种方式的动作: 1)None选项表示连接目标板后系统无任何行为。

2)设置Auto download选项将在连接目标板后自动下载设定的下载文件。

3)Command script选项用于选取在系统连接目标板后将根据命令脚本文件自动完成一系列命令,请使用绝对路径。

命令脚本文件由一系列调试命令组成,可以使用该文件来读写一些必须配置的寄存器(如配置RAM的寄存器、清除中断、关闭中断等),用来完成目标平台的初始化,该命令脚本使用纯文本的方式,下面是一个脚本例子:

mem.write -l 0x01e00000 0x07000000 # INTCON

mem.write -l 0x01E0000C 0xffffff07 # INTMSK

mem.write -l 0x01D30000 0x0 # WTCON

#****************************************************

#* Set memory control registers (every CS control) *

#****************************************************

#Bank0=OM[1:0], Bank1-5=8bit, Bank6-7,16BITS

mem.write -l 0x01C80000 0x02000011

mem.write -l 0x01C80004 0x700 #GCS0 ; BOOT ROM

mem.write -l 0x01C80008 0x700 #GCS1

mem.write -l 0x01C8000C 0x700 #GCS2

mem.write -l 0x01C80010 0x700 #GCS3

mem.write -l 0x01C80014 0x700 #GCS4

mem.write -l 0x01C80018 0x700 #GCS5 ;

mem.write -l 0x01C8001C 0x08800100 #GCS6 ;

mem.write -l 0x01C80020 0x00800100 #GCS7 ; NONE

#REFRESH RFEN=1, TREFMD=0, trp=3.5clk, trc=7clk, tchr=1clk,count=1579

#refcount = 2048+1-MCLK*ref_period ==2049-66*16= 993 =0x3e1

mem.write -l 0x01C80024 0xe103ac00

mem.write -l 0x01C80028 0x16000000 #SCLK power mode, BANKSIZE 8M/8M

mem.write -l 0x01C8002C 0x20000000 #MRSR6 CL=2clk

mem.write -l 0x01C80030 0x20000000 #MRSR7

10、怎样将ADT中的汇编程序移植到ADT中

1、注释行以“#”或“/* ... */”代替“;”

2、伪操作符替换:

INCLUDE 替换成 .INCLUDE

TCLK2 EQU PB25 替换成 .equ TCLK2, PB25 EXPORT 替换成 .global

IMPORT 替换成 .extern

DCD 替换成 .long

IF :DEF: 替换成 .IFDEF

ELSE 替换成 .ELSE

ENDIF 替换成 .ENDIF

:OR: 替换成 |

:SHL: 替换成 <<

END 替换成 .end

符号定义加":"号

AREA Word, CODE, READONLY --> .text

AREA Block, DATA, READWRITE --> .data

CODE32 --> .arm

CODE16 --> .thumb

LTORG --> .ltorg

% --> .fill

3、操作数及运算符号替换

ldr pc, [pc, #&18] 替换成 ldr pc, [pc, #+0x18]

“&”以“+0x”号替换

另外,romstart.s中有中断处理,即直接跳转到0x0c000020运行,但是在bootloer程序中没有开中断,因此没有进一步处理中断,对于ramstar.s运行时产生中断,首先是运行0x18 -> 0x0c000020 -》ramstar.s中的中断处理。

romstart.s从flash中开始运行时需要拷贝代码,ramstar.s中没有拷贝代码。

11、编译错误1

问:编译时提示如下错误,请问时什么回事,怎样解决?

答:该问题是由于没有正确设置链接脚本引起,请在工程设置对话框的Link 页中的Link Script中选择正确的链接脚本文件。该文件可以使用全局路径或者相对路径,相对路径是相对于当前工程文件的路径而言的。

如果该选项已经设置,请检查该文件是否存在,或者路径是否正确,或者该文件语法是否正确。关于链接脚本文件的编写方法请参考“8、链接脚本文件是什么,怎样编写?”。

12、编译错误2

问:编译时提示如下错误,请问时什么回事,怎样解决?

-------------------- Configuration : com - DEBUG --------------------

com.c

C:/ADT1000/zzm/chapter5/com/com.c: In function `com':

C:/ADT1000/zzm/chapter5/com/com.c:18: warning: large integer implicitly truncated to unsigne d type

C:/ADT1000/zzm/chapter5/com/com.c:37:9: warning: no newline at end of file

Link ......

.\debug\com.o(.text+0x58): In function `com':

C:/ADT1000/zzm/chapter5/com/com.c:19: undefined reference to `__floatsidf'

.\debug\com.o(.text+0x6c):C:/ADT1000/zzm/chapter5/com/com.c:19: undefined reference to `__di vdf3'

.\debug\com.o(.text+0x80):C:/ADT1000/zzm/chapter5/com/com.c:19: undefined reference to `__fl oatsidf'

.\debug\com.o(.text+0x9c):C:/ADT1000/zzm/chapter5/com/com.c:19: undefined reference to `__di vdf3'

.\debug\com.o(.text+0xb0):C:/ADT1000/zzm/chapter5/com/com.c:19: undefined reference to `__ad ddf3'

.\debug\com.o(.text+0xbc):C:/ADT1000/zzm/chapter5/com/com.c:19: undefined reference to `__fi xdfsi'

com.elf - build uncompleted.

答:该问题是由于没有正确设置C库产生的问题。

1) 在工程设置的Link页设置工程所包含的库(Include Objects and Library Modules),请注意不要弄错顺序。

2)在工程设置的Link页设置库的搜索路径(Library search path);

图B-12 设置工程包含的库的搜索路径

13、SDT转化为GNU汇编的问题

问:下面的汇编如何转化为gnu的汇编?

;//------------------------------------------------------------------------- //

; Align Exception Handler Area...for 8 exception sources...

; RAM Exeption Handle Table

^ 0xD0000

HandleReset # 4 ;0x00000

HandleUndef # 4 ;0x00004

HandleSwi # 4 ;0x00008

HandlePrefetchAbort # 4 ;0x0000c

HandleDataAbort # 4 ;0x00010

HandleReserv # 4 ;0x00014

HandleIrq # 4 ;0x00018

>HandleFiq # 4 ;0x0001c

答:此段汇编可以翻译如下:

.EQU _ISR_STARTADDRESS , 0xD0000

.EQU HandleReset , _ISR_STARTADDRESS

.EQU HandleUndef , _ISR_STARTADDRESS + 0x04

.EQU HandleSwi , _ISR_STARTADDRESS + 0x08

.EQU HandlePrefetchAbort , _ISR_STARTADDRESS + 0x0c

二、EB44B0开发板

1、EB44B0开发板的链接脚本文件在哪里?

在开发板光盘的src\targets\demoprogldscript文件中。

2、EB44B0开发板的命令脚本文件在哪里?

在开发板光盘的src\targets\ EB44B0_load.csf文件中。

3、EB44B0开发板上电后超级终端没有打印信息?

请按照如下步骤进行检查:

1)连接串口0(不要接错)到PC的串口。

2)启动并正确配置超级终端,MTTTY的设置请参考用户手册,如果使用Windows 超级终端,请按照如下配置:

3)目标板上电,在超级终端或者MTTTY中可以看到BootLoader启动信息; 4)如果先上电然后打开超级终端,请在超级终端中输入回车键,将看到启动信息;

5)如果仍然没有启动信息,则目标板的BootLoader已经被擦除,必须使用仿真器重新烧写BootLoader。

4、MTTTY是什么,使用Windows的超级终端可以吗?

在EB44B0开发板中,我们在BootLoader的程序烧写过程中通过串口下载数据,因此,如果要通过BootLoader烧写flash必须使用MTTTY,如果仅仅用于交互目的也可以使用Windows的超级终端。

5、EB44B0如何烧写flash?

两种方式:

1)使用BootLoader的flash烧写功能,具体使用请参考用户手册,请注意小心烧写BootLoader部分,如果BootLoader被烧写,而烧写的程序又

不能够运行,则必须使用第二种方法进行烧写;

2)使用flash编程器进行烧写:

使用Debug菜单的Flash Programmer菜单项,将弹出flash编程器对话框。

设置请参照上图,其中Sector From表示操作起始扇区,从1开始。To表示操作结束扇区,从1开始。

编程方法为:

正确设置以后先点击Erase按钮擦除flash,然后点击Program按钮编程flash。

在EB44B0开发板中的flash空间分配可以参照用户手册或者查看

BootLoader启动信息的提示,如下图所示:

6、EB44B0 BootLoader擦除后程序不能正常下载运行?

EB44B0中BootLoader擦除后必须做命令脚本,请检查工程设置对话框中的Debug选项,加上Command Script。然后重新连接、下载。

7、我修改了BootLoader以后,通过仿真器下载到目标板,但是运行结果没有变化,还是运行的Flash中的BootLoader,请问是怎么回事?

在BootLoader的工程设置对话框的Assemble页中,有一个Predefines编辑框,去掉该框中的宏定义,然后点击OK,重新编译、连接下载、运行。

该宏用于设置BootLoader中是否从Flash中拷贝代码到SDRAM中,如果通过调试器下载到目标板则不能使用该宏定义,如果需要做烧写到flash中的代码则必须选择该宏,该宏定义在romstart.s文件中使用。

8、怎样制作binary文件?

通过ADT IDE编译生成的elf文件为调试格式文件,不能直接下载运行或者烧写到flash中运行,必须制作相应的binary文件,方法为:

1)编译工程,如果成功。

2)选择tools下面的elf to binary菜单,将自动在相应的debug目录下生成.bin文件,该文件为binary文件。

3)或者在dos命令行使用ADT1000\bin目录下的elf2bin和

arm-elf-objcopy工具:

elf2bin test.elf test.bin 或者

arm-elf-objcopy –O binary test.elf test.bin

9、如何编写代码在flash中,变量在ram中的链接脚本。

问:在一个项目中,我们的系统(1M Flash, 128K Ram, uc/osII)需要在Flash中执行。但是连接脚本总不正确,请问因该如何编写才能实现代码和常数在flash中,变量在ram中的目的?

答:参照如下编写链接脚本文件,其中0地址为flash,0x0C000000为SDRAM。

SECTIONS

{

相关主题
文本预览
相关文档 最新文档