仓酷云 发表于 2015-1-16 16:43:53

linux教程之嵌进式技能:ARM的三种中止调试办法先容

有些人号称用过十几种甚至几十种linux,向人谈论起来头头是到,好像懂的很多。
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=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)();
//挪用详细某中止处置程序
}
接纳静态的中止处置办法,在中止源较多的情形下,中止呼应工夫和程序功能失掉优化。别的,在调试方面,此处置办法具有便于跟踪调试的长处,而且依据必要,能够便利变更中止处置函数。
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>
安装和登录命令:login、shutdown、halt、reboot、mount、umount、chsh

小女巫 发表于 2015-1-17 19:49:57

对我们学习操作系统有很大的帮助,加深我们对OS的理解。?

柔情似水 发表于 2015-1-21 09:12:27

尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。

精灵巫婆 发表于 2015-1-30 13:10:49

眼看这个学期的Linux课程已经告一段落了,我觉得有必要写一遍心得体会来总结一下这学期对着门课程的学习。

简单生活 发表于 2015-2-6 12:44:46

再次,Linux是用C语言编写的,我们有学习C语言的基础,读程序和编写代码方面存在的困难小一点,也是我们能较快掌握的原因之一。?

仓酷云 发表于 2015-2-16 04:08:47

可以说自己收获很大,基本上完成了老师布置的任务,对于拔高的题目没有去做,因为我了解我的水平,没有时间和精力去做。?

变相怪杰 发表于 2015-3-4 23:44:50

众所周知,目前windows操作系统是主流,在以后相当长的时间内不会有太大的改变,其方便友好的图形界面吸引了众多的用户。

冷月葬花魂 发表于 2015-3-11 21:37:15

我们自学,就这个循环的过程中,我们学习了基本操作,用vi,shell,模拟内存的分配过程等一些OS管理。

愤怒的大鸟 发表于 2015-3-28 17:17:09

发问的时候一定要注意到某些礼节。因为Linux社区是一个松散的组织、也不承担回复每个帖子的义务。它不是技术支持。
页: [1]
查看完整版本: linux教程之嵌进式技能:ARM的三种中止调试办法先容