仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 410|回复: 8
打印 上一主题 下一主题

[其他Linux] 来谈谈:嵌进式技能:ARM的三种中止调试办法

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 16:43:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
使用gcc或g++进行编译,使用gdb进行调试;
1嵌进式软件开辟流程
参照嵌进式软件的开辟流程。第一步:工程创建和设置。第二步:编纂源文件。第三步:工程编译和链接。第四步:软件的调试。第五步:实行文件的固化。
在全部流程中,用户起首必要创建工程并对工程做开端的设置,包含设置处置器和设置调试设备。编纂工程文件,包含本人编写的汇编和C言语源程序,另有工程编译时必要编写的链接剧本文件,调试过程当中必要编写存储区映像文件和命令剧本文件,和上电复位时的程序运转出口的启动程叙文件。
对后四种文件的了解很主要,其感化注释以下。
(1)链接剧本文件:在程序编译时起感化。该文件形貌代码链接定位的有关信息,包含代码段,数据段,地点段等,链接器必需利用该文件对全部体系的代码做准确的定位。在SDRAM中调试程序、在Flash中调试或固化后运转的链接剧本文件应加以辨别。(在IDE开辟情况中利用扩大名*.ld)
(2)命令剧本文件:在SDRAM中调试程序时起感化。在集成情况与方针毗连时、软件调试过程当中和方针板复位后,偶然必要集成情况主动完成一些特定的操纵,好比复位方针板、扫除看门狗、屏障中止存放器、存储区映照等。这些操纵能够经由过程实行一组命令序列来完成,保留一组命令序列的文本文件称为命令剧本文件(在IDE开辟情况中利用扩大名*.cs)。
(3)存储区映像文件:在SDRAM中调试程序时起感化。在软件调试过程当中会见不法存储区在部分处置器和方针板上会发生非常,假如非常没有处置,则会招致软件调试历程没法持续,为了避免以上成绩并调剂仿真器会见速率以到达最符合的程度,供应如许一种用于形貌各个存储区性子的文件叫存储区映像文件(在IDE开辟情况中利用扩大名*.map)。
在程序的调试过程当中能够选择利用存储区映像文件*.map和命令剧本文件*.cs共同程序的调试。
(4)启动文件:它次要是完成一些和硬件相干的初始化的事情,为使用程序做筹办。一样平常,启动代码的第一步是设置中止和非常向量;第二步是完成体系启动所必需的存放器设置;第三步设置看门狗及用户计划的部格外围电路;第四步是设置体系所利用的存储辨别配地点空间;第五步是变量初始化;第六步是为处置器的每一个事情形式设置栈指针;最初一步是进进初级言语出口函数(Main函数)。
2中止程序计划
中止调试方面能够接纳相似矢量中止静态处置体例,让中止对应切实其实定地点代码调转到RAM的流动地点处,界说一个函数指针指向该流动地点,就能够随时经由过程交换RAM流动地点处的代码,完成静态改动中止处置函数。
详细办法是:
(1)将中止源函数指针界说在RAM中绝对的流动地点,创建中止矢量表;
voidSetInterrupt(U32vector,void(*handler)())
{
InterruptHandlers[vector]=handler;
}

(2)在程序中,挪用详细某中止源的中止处置函数;
如:SetInterrupt(IIC_INT,IICWriteIsr);
/*声明IIC中止处置函数,个中IIC_INT为IIC中止源序号,IICWriteIsr为IIC的写中止处置函数*/
(3)在0x18处的IRQ或0x1C处的FIQ中止出口函数中,猎取中止源、扫除中止挂起标记、经由过程已界说的中止源函数指针进进用户详细某中止处置程序。
voidISR_IrqHandler(void)
{
IntOffSet=(unsignedint)INTOFFSET;
Clear_PendingBit(IntOffSet>>2);
(*InterruptHandlers[IntOffSet>>2])();
//挪用详细某中止处置程序
}

接纳静态的中止处置办法,在中止源较多的情形下,中止呼应工夫和程序功能失掉优化。别的,在调试方面,此处置办法具有便于跟踪调试的长处,而且依据必要,能够便利变更中止处置函数。
3中止调试
软件调试能够在SDRAM中或FLASH中举行。在SDRAM中,读写便利,会见速率快。一样平常软件调试应在RAM中完成,但当RAM空间小于FLASH程序空间,程序只能在FLASH运转和调试时,大概用户但愿懂得程序在FLASH中实践运转情形时,就能够在FLASH中举行程序调试。
举行中止调试时,应注重中止出口位于SDRAM中或FLASH中0x18或0x1c地点,链接剧本文件必需使全部体系的代码准确定位于0x0肇端处,但SDRAM或FLASH对应的链接剧本文件及工程设置注重区分。
(1)程序在SDRAM中运转
在SDRAM中调试,利用SDRAM对应的链接剧本文件。调试历程必要以下几步:编译、链接工程;毗连仿真器和电路板;下载程序(在IDE开辟情况中利用扩大名*.elf);调试。
下载程序前必需启动命令剧本文件完成前述的一些特定的操纵,命令剧本文件的启动在毗连仿真器时主动举行,个中存储区映照应与程序在SDRAM中运转时不异,包管全部体系的代码准确定位于0x0肇端处。下载程序的肇端地点也为0x0,下载乐成后即可举行调试事情。
(2)程序在FLASH中运转
在FLASH中调试,利用FLASH对应的链接剧本文件。调试历程必要以下几步:编译、链接工程;毗连仿真器和电路板;程序格局转换(*.elf转换为*.bin);固化*.bin程序;调试。
毗连仿真器后不必要下载程序,存储区映照由自己工程中启动文件运转完成,不必要命令剧本文件。在本情况调试过程当中,能够设置两个硬件断点。
(3)程序从FLASH中调到SDRAM中运转
在某些使用场所,夸大程序运转速率的情形下,但愿程序在SDRAM中运转,如许就必要将FLASH中存储的程序,在体系上电后搬运到SDRAM某空间地位,然后主动运转。这类所谓的Bootloader手艺,在DSP体系中常被接纳。
调试历程分两步:
(a)起首将用户程序在SDRAM中调试经由过程,然后将*.bin文件固化到FLASH某一非0扇区地点空间;
(b)将本人编写的Bootloader搬运程序调试经由过程并将Bootloader.bin文件固化到FLASH的0扇区地点空间,搬运程序在体系上电后,将(a)中FLASH某一非0扇区地点空间存储的程序,搬运到在SDRAM调试中一样的空间地位,完成程序在SDRAM中运转的目标。
别的注重,由于用户实践的程序中止出口必需位于FLASH的0x18或0x1c地点,以是Bootloader搬运程序还应具有中止出口的跳转功效,即把PC指针由此转向处于SDRAM空间的中止程序出口表,就是全部用户程序被搬运到SDRAM的那一名置。
如:LDRPC,=HandleIRQ
//HandleIRQ位于SDRAM空间中止程序出口表

</p>
要明白学好linux不是一件一蹴而就的事,一定要能坚持使用它,特别是在使用初期。
老尸 该用户已被删除
沙发
发表于 2015-1-18 16:52:24 | 只看该作者
一些显而易见的小错误还是用vi改正比较方便。以后的大一点的程序就得在Linux下调试了,因为有的头文件在VC里面说找不到。?
分手快乐 该用户已被删除
板凳
发表于 2015-1-23 14:38:47 | 只看该作者
学习Linux系统在服务中的配置方法及使用方法。Linux在服务器中应用相当广,应对常用的apache,samba,ftp等服务器基本配置清楚了解。[重点,应巩固学习]
因胸联盟 该用户已被删除
地板
发表于 2015-1-31 18:15:37 | 只看该作者
任何人都可以根据自己的喜好来定制适合自己的操作系统,Linux?是抢占式多任务多用户操作系统.
愤怒的大鸟 该用户已被删除
5#
发表于 2015-2-6 21:51:27 | 只看该作者
有疑问前,知识学习前,先用搜索。
再见西城 该用户已被删除
6#
发表于 2015-2-18 23:14:42 | 只看该作者
和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。
灵魂腐蚀 该用户已被删除
7#
发表于 2015-3-6 11:38:48 | 只看该作者
尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。
活着的死人 该用户已被删除
8#
发表于 2015-3-13 00:58:34 | 只看该作者
随着Linux应用的扩展,出现了不少Linux社区。有一些非常优秀的社区往往是Linux高手的舞台,如果在探讨高级技巧的论坛张贴非常初级的问题经常会没有结果。
只想知道 该用户已被删除
9#
发表于 2015-3-20 08:24:16 | 只看该作者
熟悉操作是日常学习Linux中的三大法宝。以下是作者学习Linux的一些个人经验,供参考:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 06:45

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表