历史上的今天
返回首页

历史上的今天

今天是:2024年12月05日(星期四)

正在发生

2019年12月05日 | 【AT91SAM3S】英蓓特EM-SAM3S开发板例子工程中的启动文件分析

2019-12-05 来源:elecfans

手上一块英倍特的EM-SAM3S开发板,拿到已经有一个月了。本来是做uLoong活动使用的板子,可当初由于不熟悉这个芯片,使用了STM32F4当作了替代。最近准备抽点时间折腾下这个板子。


这个板子的资源如下:

MCU:ATMEL Cortex M3 AT91SAM3S4C (主频 64MHz )

FLASH:片内256KB,片外2Gb NandFlash

SDRAM :片内48KB

接口:MicroSD I/F、LCD I/F、RS232 I/F 、USB I/F、JTAG I/F、 Audio I/F 、RS485 I/F

其他功能:RTC、LED×2、USE Button、Zigbee、QTOUCH接口、Free IO、AD

电源:USB供电或者外接5V电源

今天从启动开始看看。以下内容是我分析英倍特提供的例程时的产物。


【预备知识】

Cortex-M3内核规定,起始地址必须存放堆顶指针,而第二个地址则必须存放复位中断入口向量地址,这样在Cortex-M3内核复位后,会自动从起始地址的下一个32位空间取出复位中断入口向量,跳转执行复位中断服务程序。对比ARM7/ARM9内核,Cortex-M3内核则是固定了中断向量表的位置而起始地址是可变化的。


【启动分析】

在例子程序中,MCU启动时,会将vector中定义的第二个地址作为程序的入口地址。即Reset_Handler。

至于为什么会从vector加载,可以查看分散加载文件(.sct)。这里有这么一段:

Vector_region 0x400000

{

    board_cstartup_keil.o (vectors, +FIRST)

}

这个声明就是让链接器将board_cstartup_keil.o加载到0x400000。

而0x400000就是内部flash的起始地址:

clip_image002

board_cstartup_keil.o由board_cstartup_keil..c生成。这个文件中,定义了两个东西:__vector_table[]和static void _Reset_Handler( void )

__vector_table就是中断向量表,__vector_table的第二个地址就是_Reset_Handler。因此,MCU启动时将向量表加载完成后,就开始执行_Reset_Handler这个函数。


在这个函数中跳转到main函数。好了,花花丽丽的C开始了。


(至于为什么加载到了0x400000是__vector_table而不是_Reset_Handler,那是因为那个+FIRST这个属性)


【总结一下】

1、在分散加载文件中,设置程序加载到的位置。加载到0x400000这个地址的,就会在启动时候执行。

2、这里的启动文件有很简单的两个东西,中断向量表和函数_Reset_Handler。中断向量表的第二个地址就是复位中断程序入口地址。

3、汇编文件workaround.s没用了。删掉里边的内容都没关系。于是一行汇编代码都没有了,这也算是自己写sct文件的好处吧。


推荐阅读

史海拾趣

Conxall公司的发展小趣事

在国内市场取得一定成绩后,Conxall公司开始将目光投向海外市场。公司积极参加国际电子展,与海外客户建立联系,拓展销售渠道。同时,公司还针对不同国家和地区的市场需求,推出定制化产品,赢得了海外客户的青睐。

Hongfa公司的发展小趣事

宏发公司始终坚持“以质取胜”的发展战略。早在1988年,公司就确立了“以市场为导向,以质取胜”的经营方针。为了保证产品质量,宏发不仅制定了严格的生产流程规则,还在国内行业中建成了设备最先进的实验室,并获得了世界三大认证机构的认证。这种对质量的执着追求,使得宏发的产品在国际市场上获得了高度认可,也为公司的长远发展奠定了坚实的基础。

华宇创公司的发展小趣事

为了进一步扩大市场份额,华宇创开始积极拓展国内外市场。公司参加了多场国际电子展和博览会,与全球各地的客户建立了广泛的联系。同时,华宇创还与国际知名电子企业建立了战略合作关系,共同研发新技术、新产品。这些国际合作不仅为华宇创带来了更多的商业机会,也提升了公司在国际市场的地位和影响力。

Filtran Ltd公司的发展小趣事

随着业务规模的扩大,Filtran Ltd意识到供应链管理的重要性。公司开始在全球范围内寻找优质原材料供应商,并在亚洲和欧洲建立了生产基地,以降低成本并缩短交货周期。同时,通过引入先进的ERP系统和数字化管理工具,实现了供应链的高效协同。这一战略调整不仅提高了生产效率,还增强了公司对市场变化的快速响应能力。

G-Two Inc公司的发展小趣事

背景:随着企业规模的扩大和业务的拓展,福斯特对资金的需求也越来越大。

发展:2014年,福斯特成功在上交所上市,通过资本市场融资,为公司的发展注入了强劲动力。上市后,公司继续加大研发投入和市场开拓力度,加速企业发展步伐。

成果:上市以来,福斯特的营收和利润均保持快速增长态势,企业规模和实力不断提升。同时,公司还通过并购重组等方式,进一步巩固和扩大市场份额。

以上五个故事概述了福斯特在电子行业,特别是光伏材料领域的发展历程和成就。这些故事不仅展现了福斯特的创业精神和创新能力,也反映了中国光伏产业从无到有、从小到大的发展历程。

Britool Expert公司的发展小趣事

背景:在光伏胶膜领域取得成功后,福斯特开始寻求多元化发展。

发展:公司依托在光伏材料领域的技术积累和市场优势,逐步向电子电路、锂电等新材料领域拓展。同时,公司还成立了新材料研究院,专注于新材料的研发和创新。

成果:目前,福斯特在电子电路、锂电等领域也取得了显著成绩,为公司带来了新的增长点。

问答坊 | AI 解惑

ARM嵌入式平台的VGA接口设计(ADV7120)

大多数嵌入式产品的显示终端都选择LCD,但在某些需要大屏幕显示的应用中,工业级LCD的价格比较昂贵,且现有的大屏幕显示器(包括CRT显示器和LCD显示器)一般都采用统一的15针VGA显示接口.三星公司ARM9芯片S3C2410以其强大的功能和高性价比在目前嵌入式产 ...…

查看全部问答>

求助

朋友们帮我个忙,我急需一份“基于FPGA的数字钟设计”的毕业论文,用VHDL语言,实现的功能有:时分秒显示,准确计时,定时闹钟,时间复位,有一些资料也可以,非常感谢!如果有的话,请发送至我的邮箱xjb415730@126.com…

查看全部问答>

发现函数被多次调用!!!急

我用的单片机是F149,在程序中发现有只用一次的屏幕显示函数被调用多次,请大家给分析一下,我自己认为是TimerA引起的。 我的这段程序是单片机C语言,在运行时发现屏幕显示函数被多次调用,实际我只用了一次。大家给点意思看看是哪里的问题。我自 ...…

查看全部问答>

各位ggjj求助:IAR中修改程序,可是可执行文件没有变化!

我在IAR编译器中,直接修改程序代码,进行编译以后,生成的可执行文件,跟修改之前的一模一样,没有变化。 我整整调试了一晚上了,出现这种问题,好郁闷!!! 这是怎么回事,我该怎么解决???…

查看全部问答>

跨导放大器求助

各位前辈,我是菜鸟,只有14分了,见谅!    下面说我的问题,做了一个电流/电压转换器,PCB如图1所示(4层板),但是用五位半万用表测,总是不对。结构很简单,按照图二的五种形式用五位半万用表测,测量结果如图中文字记述,有什么不对 ...…

查看全部问答>

AM3517 MCBSP2 通讯速率不对

MCBSP2 外接ALC5621 codec IC,在播放音乐时,不能发声,输出仅变成了高电平。 MCBSP2_CLKX 1.536M,MCBSP2_FSX 48K,以下是相关寄存器 配置。 MCBSPLP_PCR_REG配置成下降沿发送数据, CLKXP Transmit Clock Polarity RW 0x0 0x0: Transmit dat ...…

查看全部问答>

基于TLC2543的多路数据采集系统

本设计要求作出一种多路模拟信号采集模块,从多个通道轮流采集数据一次,并将数据保存于记录。本系统采用AT89C52作为控制系统,核心器件采用TI公司的高精度12BIT ,11通道一步采样AD芯片TLC2543。分别从11路采样模拟信号,实现11路数据采集。为了做 ...…

查看全部问答>

[BBB方案提交]基于BBB 的简单频谱仪

实现功能 将音频频谱显示在BBB 的液晶屏上 硬件设计电路 音频采集电路,以及一些信号放大电路 软件设计 使用BBB的AD  将信号前端处理后的信号进行AD 转换,然后使用fftw进行傅里叶变换,根据需要决定是否使用neon指令集和posix线程库 预 ...…

查看全部问答>

【瑞萨R7F0C80212试用】一步一步玩R7F0C80212之第二弹 上电初实验

      根据第一弹的描述,相信大家对于板子的所有套件以及板子的布局已经了如指掌了,既然已经开始拿到板子了,我们就开始来上电试试有什么效果吧。。              开发板 ...…

查看全部问答>

旋转倒立摆分享!!!

这是在国赛前做的,为准备国赛练练手,没做全题 动力用的是57步进;步进电机驱动器是 TB-6560;1000线编码器;F103主控。 使用编码器需要注意的问题:虽然使用编码器能够得到准确的角度信息,基本用不上滤波,可以直接使用,但是对角速度信 ...…

查看全部问答>