ADS调试心得(LPC2478的调试)

合集下载

ADS操作简略

ADS操作简略
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer
; dmc.o (+RW, +ZI) dmc_library.o (+RW, +ZI) } }
复杂的分区 简单的 AXF 的分区,认为程序只有一个 RO 段,一个 RW 段。但是在嵌入式程序,很多程 序需要更为复杂的分区,可能有好几个 RO 分不在同地址。在 GCC 中,非常规的分段需要 ld 调用 lds 脚本来设定,在 ADS 中,需要调用 scatter 描述文件来设置. 以下就是 6410 test 的 scatter 描述文件内容 可以看到除了传统的 RO,RW 外,它还增加了 IRAM 和 ITCM 段. DRAM 0x50200000 { CODE 0x50200000 { startup.o (Init,+FIRST) scatter_load.o (+RO)
ADS 的 IDE 实际上也是调用这一些工具来编译程序。如果你愿意,可以写脚本直接调用命 令行工具来编译。象 MTK 就是这样做的,它们写了一个 Makefile 脚本来直接调用编译器来 编译器---因为这个项目文件太多了。。
AXF 分区命名
一般的 C 程序对于程序分区,一般采用 TEXT/BSS/DATA 这样的分区.Gcc 的编译程序文件 成 功 后 , 最 后 都 会 生 一 个 .out 或 ELF 格 式 的 可 执 行 文 件 , 这 个 文 件 通 常 都 包 含 三 个 段.text,.data 和.bss 段,运行时,会在进程空间会生成.text,.data.bss 和 stack,heap 五个区. AXF 对于不同程序的分区采用另外命名.跟 GCC 程序对应,ADS 编写的程序也有两种状态, 一个保存状态.对于 ELF 可执行文件,一种是运行态,对应进程空间分区.

基于LPC2478的三相电力监测仪

基于LPC2478的三相电力监测仪

关键 词 智 能 电 网 ;三 相 电 力 监 测 仪 :
L C 4 8; S1 7 P 2 7 AD 8 1
中 图 分 类 号 T 36 P0 文献 标 志 码 A
图 1 监 测 仪 网 络 拓 扑 结 构
收 稿 日期 2 1 42 0 1 -0 作 者 简 介 茅 文 铭 , , 士 , 要 从 事 称 重 测 试 仪 器 男 硕 主 仪表以及智能 电网方面的研究与开发工作.
CL K
P M0 W
行 接 口和 P WM 等 , 还带 有外部 总 线接 口、 S 20全 UB.
系列 接 口、 A L N接 口 、4位 的彩 屏 L D控 制 器 以及 2 C
片上 R C A S 1 8是 T 公 司 的 8通 道 1 T . D 17 I 6位 的 同
图 3 A S 1 8与 L C 4 8的 接 口 D 17 P27
能 达 到 国标 A 级 .
种 功 能更 加 强 大 , 作更 加 稳定 , 工 测量 精 度更 高 , 讯 实 时性 更 好 , 通
监测 仪在 实 际运 用 中的 网络拓 扑结 构 如 图 1 所示 .
使用 更加 简单 和便 捷 , 成本 更 加低 廉 的新 型 电力 监测 仪 .
文章编号 :6 47 7 ( 0 1 0 - 5 -4 17 .00 2 1 ) 50 20 4
基 于 L C 4 8的三 相 电 力 监测 仪 P 27
茅文铭 王恒斌 陈军
摘 要 介 绍 了 国 家 智 能 电 网 需 求 的 一 款 新
0 引言
三相 电力 监 测 仪 在 实 际工 业 用 电 中 发 挥 着 巨 大 作 用 . 随着 国家 智能 电网战略的推进 以及微 电子技术 和信 息技术 的发展 , 市场需求

电路板调试步骤与心得体会

电路板调试步骤与心得体会

一.调试基本方法对于一个新设计的电路板,调试起来往往会遇到一些困难,特别是当板比较大、元件比较多时,往往无从下手。

但如果掌握好一套合理的调试方法,调试起来将会事半功倍。

通过测试区段供电柜3期电路板,我对调试电路板有了基本的认识和体会。

1.测量电压法要确认的是电源电压是否正常,检查各种参考电压是否正常,另外还有各点的工作电压是否正常等。

例如,一般的三极管导通时,BE结电压在0.7V左右,如果一个三极管的BE结电压明显大于0.7V,可能就是BE结就开路。

2.信号注入法将信号源加至输入端,然后测量输出波形,看是否正常。

例如,测试IO输入功能时,在输入端接高电平或低电平,查看DSP检测到的对应IO口的电平。

3.结合软件法有些功能的检测,结合软件会更简便。

例如,IO输出功能,利用软件程序,将DSP输出IO口电平置高或低;通讯功能,结合通讯程序,可快速判断通讯是否正常。

4.看看电容,二极管等有极性元件是否焊反(特别是有极性电容),看芯片是否焊得颠倒,看元件有无明显的机械损坏,看板子是否有明显的划痕(导致开路),看是否有焊接短路(特别是DSP相邻引脚),看是否有明显虚焊,看是否有元件未焊,看元件是否焊错(如:电阻焊成电容),看板子走线铜箔是否明显缺损,看是否冒烟,烧焦,火花等。

5.听听工作声音是否正常(要有经验),如:听继电器闭合断开的声音等。

6.闻闻是否有异味,例如烧焦的味道、电容电解液的味道等。

7.摸用手去试探器件的温度是否正常,例如太热,或者太凉。

一些功率器件,工作起来时会发热,如果摸上去是凉的,则基本上可以判断它没有工作起来,可能开路了。

如果过热也是不行的,例如摸DSP,觉得烫手,可能短路或供电电压过高了。

注意要先试探性的去摸,别把手烫伤了。

8.由前向后或由后向前查找故障原因当确认某一功能电路存在故障,又没有头绪时,要根据电路图,由前向后或由后向前依次用示波器观看各点波形,找出故障原因。

二.测试DSP板流程区段供电柜分为IO板,检测板,电源板,触发板,DSP板。

ADS出现问题

ADS出现问题

(一)ADS介绍ADS(ARM Developer Suite)是ARM处理器下最主要的开发工具,在1993年由Metrowerks公司开发.ADS只是用于编写无操作系统下的硬件程序,即裸机程序,但ADS对操作系统下的驱动程序也提供了帮助.它包括:(1) CodeWarrior IDECodeWarrior IDE是源代码浏览器、编辑器.其作用是1. 按照工程项目的方式来组织源代码文件、库文件以及其他文件2. 设置各种生成选项,以生成不同配置的映像文件(2) AXD DebuggerAXD Debugger是一个调试软件,运行该软件可以将映像文件下载到开发板的内存中,然后通过单步运行、断点调试、查看变量、寄存器状态等操作.这里,用户不需要仿真器,只需要并口的JTAG板或J-link.(二)ADS的破解(1) 解压并安装ADS软件.(2) 选择Install License.(3) 在Browse内加载破解文件,破解文件是CRACK/LICENSE.DAT.(三)ADS注意事项(1) 以.mcp结尾的文件就是ADS的工程文件.(2) ADS工程不能放在中文路径下,否则双击mcp文件时无法打开.(3) Make可以编译整个工程,并生成映像文件.在ADS中,ARM提供了三种映像文件,1. Debug: 使用本生成目标生成的映像文件中包含了所有的调试信息,用于开发过程中使用2. Release: 使用本生成目标生成的映像文件中不包含调试信息,用于生成实际发行的软件版本3. DebugRel: 使用本生成目标生成的映像文件中包含了基本的调试信息(常用的是DebugRel映像文件).(4) 使用Make编译整个工程文件时,可能提示:Error:(Fatal) Could not open fileE:2440test/DMA/DMA_Data/DebugRel/ObjectCode/2440init.o 这是由于用户改变了用户在Make之前改变了整个工程文件的路径,解决途径是执行菜单Project/Remove Object Code,清除以前已编译过的目标文件,再重新编译即可.(5) Dubug按钮用于调适,单击按钮后自动运行AXD Debugger,其功能有:1. 下载目标映像文件到目标系统中.2. 在目标程序中设置断点,包括程序端点和数据端点.3. 查看和修改断点处处理器状态.4. 查看和修改目标程序中变量的值.5. 单步执行目标程序,并可以显示反汇编的代码或者源程序代码.(四)CodeWarrior IDE新建工程文件步骤1:打开CodeWarrior IDE.执行菜单File/New,弹出新建对话框.在Project内选择ARM Executable Image(ARM可执行镜像).输入工程的名字及保存路径.注意,只需要输入工程名,不需要结尾,且保存路径必须是英文路径.这样就生成了以.mcp为结尾的工程文件.例如,输入工程名LED,路径D:/ARM/LED,这样就在D:/ARM 下自动生成了LED文件夹,在LED文件夹下有两个文件,分别是LED_Data、LED.mcp.步骤2:向工程中添加新建文件执行菜单File/New,弹出新建对话框.在File内输入文件的名字及保存路径.注意,需要输入以某种类型结尾的文件名,且保存路径必须是英文路径(系统默认新建文件的路径即为工程路径).选中"Add to Project",在Project栏内选择需要添加文件的工程,在Targets栏内只选择编译选项DebugRel(生成的镜像中只包含基本的调试信息).这样用户就可以在文件内进行编程,然后保存.例如,输入文件名main.c,(默认)路径D:/ARM/LED,选中Add to Project,在Project内选择需要添加文件的工程LED.mcp,在Targets栏内只选择编译选项DebugRel.步骤3:向工程中添加已存在的文件将已有文件或文件夹复制到新建工程的路径下,执行菜单Project/Add Files,添加文件夹内的各个文件,注意只能添加文件,不能添加文件夹.在添加文件的过程中,CodeWarrior IDE会提醒用户来选择编译选项,这里只选择DebugRel(生成的镜像中只包含基本的调试信息),不选择Release、Debug.比如,复制系统文件夹system、文件夹uart到路径D:/ARM/LED 下,执行菜单Project/Add Files,添加文件夹system、uart下的各个文件,并选择编译选项DebugRel.步骤4:新建的文件以及新加文件都被列出来,为了将这些文件按功能进行分类,执行菜单Project/Create Group,新建组.在Enter name for new group内输入组名,用户可以将各个文件按功能拖入组内.例如,执行菜单Project/Create Group,Enter name for new group内分别输入组名src、inc.其中,src表示存放系统的源码文件,inc 表示存放系统的头文件,然后将以.c结尾的文件拖入组src内,将.h结尾的文件拖入组inc内.当然,如果工程较大,可以按模块进行分组,这样便于管理.(五)CodeWarrior IDE的设置单击按钮DebugRel Settings,弹出DebugRel Settings对话框.<1>Target Settings如果要生成可执行文件,则在Post-linker内选择ARM fromELF.如果不想生成可执行文件,则选择None.<2>ARM Assembler在Architecture or Processor内选择ARM920T.<3>ARM C Compiler在Architecture or Processor内选择ARM920T.<4>ARM C++ Compiler在Architecture or Processor内选择ARM920T.<5>Thumb C Compiler在Architecture or Processor内选择ARM920T.<6>Thumb C++ Compiler在Architecture or Processor内选择ARM920T.<7>ARM Linker1.Output/Simple image栏:RO是内存的起始地址,即输入0x30000000.2.Options/Image entry point栏:填入内存的起始地址,即输入0x30000000.yout/Place at beginning of image/Object/Symbol栏:指定初始化代码的目标文件.初始化代码是已添加的汇编文件2440init.s,该文件编译后生成2440init.o,即输入2440init.oyout/Place at beginning of image/Section栏:输入Init打开初始化代码文件2440init.s,找到IMPORT Main ;The main entry of mon program //main函数的入口地址AREA Init,CODE,READONLY //定义名为Init的只读代码段.这个Init就是Section栏需要输入的.当然,用户也可以修改名字Init,然后将修改后的名字填入Section即可.此时,在Equivalent Command Line内会出现用户所设置的参数<8>ARM fromELF1.Output format:设置输出可执行文件的类型.选择Plain binary(二进制文件).2.Output file name:指定生成的可执行文件的文件名.当然也可以不用设置,系统默认生成以工程名加后缀.bin的文件.。

ADS集成开发环境的使用

ADS集成开发环境的使用

ADS集成开发环境的使用简介ADS(Advanced Development Studio)是一款专业的集成开发环墨拉环境,提供了丰富的功能和工具,帮助开发人员进行软件开发、调试和测试。

本文将介绍ADS集成开发环境的基本使用方法,让您快速上手并提高开发效率。

安装ADS在使用ADS之前,首先需要进行软件的安装。

您可以在官方网站上下载最新版本的ADS安装包,根据操作系统的不同选择对应的安装程序进行安装。

安装时请务必注意软件的安装路径和所需的依赖库。

启动ADS安装完成后,双击ADS的桌面图标或在命令行中输入相应的命令来启动ADS。

在启动过程中,您可以设置一些基本配置,如显示语言、主题等。

创建项目在ADS中,项目是进行开发工作的基本单位。

您可以通过菜单栏或快捷键来创建新项目。

在创建项目时,请选择项目类型、保存路径等信息。

一旦项目创建成功,您就可以开始编写代码了。

编写代码ADS集成了各种常用的编程工具,如代码编辑器、调试器、版本控制等。

您可以在代码编辑器中编写代码,并利用自动补全、语法检查等功能提高开发效率。

同时,ADS还支持多种编程语言,如Java、Python、C++等,满足各种开发需求。

调试程序在开发过程中,调试是必不可少的环节。

ADS提供了强大的调试工具,如断点调试、变量查看等功能,帮助您快速定位问题并解决bug。

代码版本控制为了管理项目代码的版本,避免不必要的冲突和错误,您可以使用ADS集成的版本控制工具,如Git、SVN等。

通过版本控制,您可以轻松地管理代码的变更、提交和回滚。

插件和扩展ADS支持丰富的插件和扩展,可以根据自己的需求进行定制和扩展。

通过安装适配的插件,您可以增加ADS的功能和性能,提高开发效率。

总结通过本文的介绍,您应该对ADS集成开发环境的基本使用有了初步了解。

在实际开发中,不同的项目和需求可能需要进一步的学习和实践。

希望本文能够帮助您更好地利用ADS进行软件开发工作。

祝您开发顺利!以上就是关于ADS集成开发环境的使用的相关内容,希望对您有所帮助。

单片机课设调试过程与心得

单片机课设调试过程与心得

一.实验目的课程标志性内容的设计理解和综合运用,鼓励独立性设计和功能扩展的创新实践。

二.实验设计功能:分离模块要求:(这个模块要求用汇编写)1)设计一个可以显示1234的显示电路,并利用单片机实现。

2)利用按键切换,然后显示I0Y3)按键切换的动作,全部用串口进行通信。

设计一个开关,当进行切换后,程序再进入主要要求。

主模块要求:(这个模块可以用汇编,也可以用C语言写,要是用汇编,老师说基本就给优的了,要是用C语言,得有创新点才能给优)(1) 显示准确的北京时间(时、分),可用24小时制式;(2) 随时可以调校时间。

(3) 增加公历日期显示功能(月、日);(4) 随时可以调校月、日;(5) 允许通过转换功能键转换显示时间或日期。

(6) 所有按键需要通过串口自发自收来调校各种功能。

调试过程:1.串口,时钟等的设置参考了老师给的C语言版的例程。

2.在按键输入判断时,由于一开始遗忘了延时子程序的运用,导致功能不稳定,导致按键输入与功能显示不匹配,加入延时子程序后,该错误得以改正。

3.在用数码管显示时,由于P0是8位,而显示只需要用7位来确定,为了找出P0与数码管的7个显示管之间的对应关系,通过对A寄存器进行不同的赋值,即MOV A,#FEH和MOV A,#7FH,发现当A=FEH时数码管显示为8,即8位数据中最后一位不对数码管的显示七作用,而D7-D1分别对应着数码管的a-g。

4.由于一开始并不知道矩阵键盘与设置P2口所对应的关系,于是采用了测试的方法。

通过SHOW1234的调用程序来获取键盘的对应关系。

如用让R5=7EH,然后通过按如图所示的0位置和15位置,发现15位置时能够显示,即7EH代表了15位置,再用R5=7DH,再去测试图中所示的11位置和14位置,发现是11位置时能够显示,即可按照此规律确定其他键所对应的P2值。

5.在串口(CHUANKOU)子程序时,CMP2中的判断跳转语句原先为CJNER7,#31H,MAIN,则显示时间很短,不能够稳定在改状态,于是增加了跳转入口,改为CJNE R7,#31H,CMP3,并增加了CMP3,由此能够实现在没有别的操作下,可让显示稳定在一个状态。

ADS教程

ADS教程

ADS电路仿真分析基础介绍ADS2009仿真的基础内容,主要通过实例说明ADS2009电路仿真和系统仿真的一般方法。

包括用户基础界面的使用以及ADS建立原理图、仿真控件、仿真设置和数据显示等文件创建过程,还包括调谐与谐波平衡法仿真的简单实例。

1.建立新项目和原理图设计1)运行ADS(1)在“开始”菜单中选择“Advanced Design System 2009”→ “Advanced Design System 2009”,如图3-1所示。

(2)出现初始化界面(如图3-2所示)及ADS启动窗口(如图3-3所示)。

用户可以根据需要进行创建、打开项目等操作。

若想在下次打开主菜单之前不出现ADS启动窗口,可以勾选“Don’t display this dialog box again”。

(3)单击按钮,出现主界面窗口,如图3-4所示。

2)建立新项目(1)在界面主窗口执行菜单命令【File】/【New Project…】,或者单击按钮,创建新项目,如图3-5所示。

其中,项目的保存路径为ADS项目默认路径(一般安装时默认路径为C:\user\default,用户可以修改此路径,但要注意不能用中文名称或放到中文名称的目录中,以免仿真时引起错误)。

在“Name”栏输入项目名称“lab1”。

“Project Technology Files”用于单位设定,此处选择“mil”。

(2)单击按钮,出现电路原理图设计及仿真向导对话框,如图3-6所示。

在此有创建子电路向导、仿真向导、不使用向导3个选项。

若使用向导创建子电路或仿真,需要按向导要求给定端口或其他数据,单击按钮完成设置。

若选择不使用向导,单击按钮,就会出现用户自定义的原理图设计窗口,如图3-7所示。

在此可以根据用户要求进行原理图设计或电路仿真。

该原理图并没有命名,其默认的设计名为“untitled1”。

3)检查新项目内的文件(1)在图3-4左侧的文件浏览窗口查看文件→显示用户在“lab1”项目内。

ADS教程应用详解

ADS教程应用详解

第一讲、ADS概述与基本操作1。

运行ADS在开始菜单中选择“Advanced Design System2009 → Advanced Design System”(见图一)。

图一、开始菜单中ADS 2009的选项用鼠标点击后出现初始化界面.图二、ADS 2009初始化界面随后,很快出现ADS主菜单。

图三、ADS主菜单如果,你是第一次打开ADS,在打开主菜单之前还会出现下面的对话框。

询问使用者希望做什么.图四、询问询问使用者希望做什么的对话框其中有创建新项目(Create a new project);打开一个已经存在的项目(Open a existing project);打开最近创建的项目(Open a recently used project)和打开例子项目(Open an example project)四个选项。

你可以根据需要打开适当的选项。

同样,在主菜单中也有相同功能的选项。

如果,你在下次打开主菜单之前不出现该对话框,你可以在“Don't display this dialog box again”选项前面的方框内打勾。

2.建立新项目a.在主窗口,通过点击下拉菜单“File→New Project…"创建新项目。

图五、创建新项目对话框其中,项目的名称的安装目录为ADS项目缺省目录对应的文件夹。

(一般安装时缺省目录是C:\user\default,你可以修改,但是注意不能用中文名称或放到中文名称的目录中,因为那样在模拟时会引起错误)。

在项目名称栏输入项目名称“lab1”.对话框下面的项目技术文件主要用于设定单位。

在微带线布局时有用,我们选择mil。

b.点击OK,此时出现电路原理图向导.图六、创建子电路和仿真向导界面这里有三个选项,一个是创建子电路向导、一个是仿真向导、另外一个是不使用向导.如果,使用向导创建子电路或仿真,你需要按要求给定端口或其它数据。

最后点击“Finish”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、在调试“E:\htwang\smart2200v201\ARM嵌入式系统实验教程(二)\开发板出厂编程程序\液晶显示程序\LCM_Disp”的程序时,想使用外部RAM进行仿真调试,在将ADS1.2中的“DebugInExram Settings…->Arm Linker -> Output -> Equivalent Command Line”的“-info totals -entry 0x8100000-scatter .\src\mem_b.scf”改为“-info totals -entry 0x80000000-scatter .\src\mem_b.scf”时,编译时总是出现错误信息“Error: L6206E: Entry point(0x80000000) lies outside the images”,经梁工(宝琼)提示:“这是由于程序空间超出范围,需要改一个参数。

”打开关于外部RAM调试的分散加载文件“mem_b.scf”发现所有的程序调试地址都是指向0x81000000的Flash地址空间,而不是0x80000000的RAM地址空间(此时硬件电路板上的短路片RAM接CS0、Flash接CS1),后把0x81******全部改为0x80******,编译调试都正常。

2、不正常现象:在调试“SmartARM2200 V2.02”实验箱时,每次实验箱断电或实验箱上复位按键后,H-Flash的Load操作都要重新执行一遍(或者简单一点:只要在H-Flash -> Programming -> Check 按钮上点击一下也可以),否则下载程序后实验箱运行不了。

(先是在选用DebugInExram出现这种情况,后选用RelOutChip则不会出现这种情况。

)<2008-9-12> 另外,每次重新启动H-JTAG和H-Flash后,都要将H-Flash重新设一遍。

3、现象:在调试GB_Disp工程时,程序无法正常运行。

分析:当调试的程序中包含中断时,分散加载文件“mem_*.scf”的“IRAM ”项设置不能从0x40000000开始,而应该从0x40000040开始(给中断向量留下空间),否则程序无法调试。

(先是在选用RelOutChip出现这种情况,后选用DebugInExram也出现这种情况。

)< 2008-9-12 htwang注: 上面的解释并不正确,因为在调试其他中断实验的过程中,配置文件“mem_*.scf”的“IRAM ”项设置成从0x40000000开始也可以正常运行。

(估计可能是存储器映射的问题)打开GB_Disp工程“target.c”文件,果然发现在函数“void TargetResetInit(void)”中将存储器映射寄存器初始化成“MEMMAP =0x2”,这是选用的用户RAM模式,中断向量也从静态RAM重新映射。

如果想映射到用户外部存储器模式,应该改为“MEMMAP =0x3”(见《ARM嵌入式系统基础教程》P166 或《****ARM7—LPC2200》P119)。

按此方式更改后,实际调试也正常。

>(2008-9-12)结论:要么把该工程文件“mem_bscf”中的“IRAM ”项改成从0x40000040开始;要么把该工程文件“target.c”中的存储器映射初始化为“MEMMAP =0x3”。

4、在调试中断程序时,如果使用IRQ.S中的汇编宏定义程序和“IRQ_Eint3_Handler HANDLER IRQ_Eint3”代替原来的C语言函数中断方式(当然同时将代码“VICVectAddr0 = (uint32)IRQ_Eint3;”改为“VICVectAddr0= (uint32)IRQ_Eint3_Handler; ”),则应将C语言中断函数“void __irqIRQ_Eint3(void)”改写成“void IRQ_Eint3(void)”。

否则调试是出现的情况就是程序在“IRQ_Eint3_Handler HANDLERIRQ_Eint3”和中断函数“void __irq IRQ_Eint3(void){}”里面反复执行,再也退不出来。

2008-9-12 调试“SmartARM2200 V2.02实验箱”心得:5、现象:在自己编写定时器中断程序时,如果自己用工程模板“ARM Executable Image for lpc2200”建立工程并编写中断程序后,调试过程中总是不能进入中断,但是用定时中断的事例程序可以进入。

原因:经将自己建立的模板工程文件中的“Startup.s”文件和事例程序中的比较,发现在模板工程的“Startup.s”文件中的堆栈初始化代码“InitStack …”中有一行语句为:;设置系统模式堆栈MSR CPSR_c, #0xdfLDR SP, =StackUsr这就将IRQ和FIQ都禁止了,需要将“MSR CPSR_c, #0xdf”改为“MSR CPSR_c, #0x5f”来打开IRQ中断才行。

6、现象:用C语言编写中断函数时,如void __irq Timer0Int(void){ },该中断函数必须放在主函数main()的上方,否则编译时会出现错误(因为主函数需要调用语句“VICVectAddr0 = (uint32)Timer0Int;”):1)Error: (Serious) C2933E: type disagreement for “Timer0Int”2) Error: C2456E: undeclared name, inventing …extern int Timer0Int‟解决方法:在主函数前面加上声明“void __irq Timer0Int(void);”(ZLG李工),此时编译应该不会再出现上述的问题,但如果此时Debug运行时不正常,需在ADS1.2(编程软件)执行操作“Project -> Remove Object Code… ”后,再重新编译调试。

如果把C语言编写的中断函数放到其他文件中,也是类似的处理方法,如:“extern void __irq Timer0Int(void);”7、在ADS软件中int类型占用4个字节的空间。

8、ALIGN=2 ,即定义2的n次幂对齐方式(梅工(程宇))。

(见ARM指令集ARM_zhiling.pdf)9、SvcStackSpace SPACE SVC_STACK_LEGTH * 4;其中的SPACE为字节空间定义(梅工(程宇)),并用0对之进行初始化。

(见ARM指令集ARM_zhiling.pdf)10、要想看到所有文件(函数)对FLASH和RAM的使用情况,在编译选项设置->ARM Linker -> Listings -> Listings的“Image map”和“Symbols”前面的复选框选中,编译后即可输出想要的详细信息(梅工(程宇))。

11、实验箱上的ZLG7290芯片由于内部键盘处理程序没有去抖动和防连击处理,所以用起来不太好用。

(据说ZLG7290芯片只是ZLG用一款单片机写了软件贴了个商标)2008-9-16 调试“SmartARM2200 V2.02实验箱”心得:12、中断使能寄存器VICVectEnable写入1,对应通道的中断使能;写入0,无效。

如指令:VICIntEnable = 1 << 6;VICIntEnable = 1 << 4;指令这两条指令之后,通道6和通道4都被中断使能。

(课本《****ARM7--LPC2200》的P164有详细说明)13、在任务Task定义的局部变量与定义的静态局部变量功能等同,因为任务不可能返回,只能被中断(大部分是定时中断,也可能是其他中断)所打断,这时中断会保存相应的现场。

(自我理解,没有看到相关资料上如此解释)14、用typedef定义的结构体不能多次用#include 包含,否则会出现错误:Error:(Serious) C2930E: duplicate definition of … ***‟<2008-9-16 htwang注:上述结论并不正确,出现这种情况是因为一个有typedef的头文件在同一个文件中include包含了两次。

>2008-9-17 调试“SmartARM2200 V2.02实验箱”心得:15、因为任务创建成功后OSTaskCreate()即进行任务的调度OS_Sched(),因而与此相关的事件创建(如消息邮箱)程序要放在先创建的任务中,而不是放在即将创建的高优先级任务中。

<2008-9-17 htwang注:上述结论不正确,因为任务创建后并不会马上运行,它创建后的切换操作总是会切换到最高优先级的任务运行,而一般我们都是用高优先级的任务进行所有低优先级任务的创建,因此任务仍然会返回起始任务继续创建其它任务。

所以与此相关的事件创建(如消息邮箱)程序必须要放在相关的即将创建的高优先级任务中。

>16、现象:在使用消息邮箱进行工程“E:\htwang\uCOS_Homework\uCOS_Homework”调试时,发现消息邮箱的指针DispMbox总是被不正常修改(因此程序也就不能正常运行)。

检查调试:经反复检查调试,发现在一个任务中使用了一个100字节的字符数组,而给这个任务分配的堆栈长度只有64个字节,分析应该是由于堆栈溢出造成的上述现象。

于是把该任务的堆栈长度分配为256个字节,不正常现象消失。

17、在调液晶显示程序时,液晶显示速率非常慢,经查是由于uC/OS II工程模板的Startup.s文件中的总线速率配置太慢。

原值为:;IDCY = 0x0f(最大值), WST1 = 0x1f(最大值), WST2=0x1f(最大值);RBLE=1(字节选择有效),MW=1(16位宽总线)LDR R0, =BCFG0LDR R1, =0x1000ffefSTR R1, [R0];IDCY = 0x0f(最大值), WST1 = 0x1f(最大值), WST2=0x1f(最大值);RBLE=1(字节选择有效),MW=1(16位宽总线)LDR R0, =BCFG1LDR R1, =0x1000ffefSTR R1, [R0];IDCY = 0x0f(最大值), WST1 = 0x1f(最大值), WST2=0x1f(最大值);RBLE=1(字节选择有效),MW=2(32位宽总线); LDR R0, =BCFG2; LDR R1, =0x2000ffef; STR R1, [R0];IDCY = 0x0f(最大值), WST1 = 0x1f(最大值), WST2=0x1f(最大值);RBLE=1(字节选择有效),MW=2(32位宽总线); LDR R0, =BCFG3; LDR R1, =0x2000ffef; STR R1, [R0]修改后的总线配置为:; 定义总线速度控制字BCFG_DEF EQU 0x10000400IDCY EQU (0x00<<0)WST1 EQU (0x01<<5)WST2 EQU (0x01<<11)BCFG3_SET EQU (BCFG_DEF | IDCY | WST1 | WST2)IDCYFS EQU (0x01<<0)WST1FS EQU (0x03<<5)WST2FS EQU (0x03<<11)BCFG_FS EQU (BCFG_DEF | IDCYFS | WST1FS | WST2FS) LDR R0, =BCFG0LDR R1, =BCFG_FSSTR R1, [R0]LDR R0, =BCFG1LDR R1, =BCFG_FSSTR R1, [R0]LDR R0, =BCFG2LDR R1, =0x1000ffefSTR R1, [R0]LDR R0, =BCFG3LDR R1, =BCFG3_SETSTR R1, [R0]分析:由于液晶接在CS3,而CS3的总线配置在uC/OS II工程模板的Startup.s 文件中被分号所屏蔽,所以其值为默认值(最大延时)。

相关文档
最新文档