阿莫电子论坛


手抄报内容 2019-09-22 05:25:11 手抄报内容
[摘要]第一篇阿莫电子论坛:硬件工程师面试试题,超简单的 (amoBBS 阿莫电子论坛)模拟电路1、基尔霍夫定理的内容是什么?(仕兰微电子)2、平板电容公式(C=εS 4πkd)。(未知)3、最基本的如三极管曲线特性。(未知)4、描述反馈电路的概念,列举他们的应用。(仕兰微电子)5、负反馈种类(电

【www.shanpow.com--手抄报内容】

第一篇阿莫电子论坛:硬件工程师面试试题,超简单的 (amoBBS 阿莫电子论坛)


模拟电路
1、基尔霍夫定理的内容是什么?(仕兰微电子)
2、平板电容公式(C=εS/4πkd)。(未知)
3、最基本的如三极管曲线特性。(未知)
4、描述反馈电路的概念,列举他们的应用。(仕兰微电子)
5、负反馈种类(电压并联反馈,电流串联反馈,电压串联反馈和电流并联反馈);
负反 馈的优点(降低放大器的增益灵敏度,改变输入电阻和输出电阻,改善放大器的线性和非 线性失真,有效地扩展放大器的通频带,自动调节作用)(未知)
6、放大电路的频率补偿的目的是什么,有哪些方法?(仕兰微电子)
7、频率响应,如:怎么才算是稳定的,如何改变频响曲线的几个方法。(未知)
8、给出一个查分运放,如何相位补偿,并画补偿后的波特图。(凹凸)
9、基本放大电路种类(电压放大器,电流放大器,互导放大器和互阻放大器),优缺 点,特别是广泛采用差分结构的原因。(未知)
10、给出一差分电路,告诉其输出电压Y+和Y-,求共模分量和差模分量。(未知)
11、画差放的两个输入管。(凹凸)
12、画出由运放构成加法、减法、微分、积分运算的电路原理图。并画出一个晶体管级的 运放电路。(仕兰微电子)
13、用运算放大器组成一个10倍的放大器。(未知)
14、给出一个简单电路,让你分析输出电压的特性(就是个积分电路),并求输出端某点 的 rise/fall时间。(Infineon笔试试题)
15、电阻R和电容C串联,输入电压为R和C之间的电压,输出电压分别为C上电压和R上电 压,要求制这两种电路输入电压的频谱,判断这两种电路何为高通滤波器,何为低通滤 波器。当RC<< period - setup – hold
16、时钟周期为T,触发器D1的建立时间最大为T1max,最小为T1min。组合逻辑电路最大延 迟为T2max,最小为T2min。问,触发器D2的建立时间T3和保持时间应满足什么条件。(华 为)
17、给出某个一般时序电路的图,有Tsetup,Tdelay,Tck->q,还有 clock的delay,写出决 定最大时钟的因素,同时给出表达式。(威盛VIA 2003.11.06 上海笔试试题)
18、说说静态、动态时序模拟的优缺点。(威盛VIA 2003.11.06 上海笔试试题)
19、一个四级的Mux,其中第二级信号为关键信号 如何改善timing。(威盛VIA 2003.11.06 上海笔试试题)
20、给出一个门级的图,又给了各个门的传输延时,问关键路径是什么,还问给出输入, 使得输出依赖于关键路径。(未知)
21、逻辑方面数字电路的卡诺图化简,时序(同步异步差异),触发器有几种(区别,优 点),全加器等等。(未知)
22、卡诺图写出逻辑表达使。(威盛VIA 2003.11.06 上海笔试试题)
23、化简F(A,B,C,D)= m(1,3,4,5,10,11,12,13,14,15)的和。(威盛)
24、please show the CMOS inverter schmatic,layout and its cross sectionwith P- well process.Plot its transfer curve (Vout-Vin) And also explain the operation region of PMOS and NMOS for each segment of the transfer curve? (威 盛笔试题circuit design-beijing-03.11.09)
25、To design a CMOS invertor with balance rise and fall time,please define the ration of channel width of PMOS and NMOS and explain?
26、为什么一个标准的倒相器中P管的宽长比要比N管的宽长比大?(仕兰微电子)
27、用mos管搭出一个二输入与非门。(扬智电子笔试)
28、please draw the transistor level schematic of a cmos 2 input AND gate and explain which input has faster response for output rising edge.(less delay time)。(威盛笔试题circuit design-beijing-03.11.09)
29、画出NOT,NAND,NOR的符号,真值表,还有transistor level的电路。(Infineon笔 试)
30、画出CMOS的图,画出tow-to-one mux gate。(威盛VIA 2003.11.06 上海笔试试题)
31、用一个二选一mux和一个inv实现异或。(飞利浦-大唐笔试)
32、画出Y=A*B+C的cmos电路图。(科广试题)
33、用逻辑们和cmos电路实现ab+cd。(飞利浦-大唐笔试)
34、画出CMOS电路的晶体管级电路图,实现Y=A*B+C(D+E)。(仕兰微电子)
35、利用4选1实现F(x,y,z)=xz+yz’。(未知)
36、给一个表达式f=xxxx+xxxx+xxxxx+xxxx用最少数量的与非门实现(实际上就是化 简)。
37、给出一个简单的由多个NOT,NAND,NOR组成的原理图,根据输入波形画出各点波形。 (Infineon笔试)
38、为了实现逻辑(A XOR B)OR (C AND D),请选用以下逻辑中的一种,并说明为什 么?1)INV 2)AND 3)OR 4)NAND 5)NOR 6)XOR 答案:NAND(未知)
39、用与非门等设计全加法器。(华为)
40、给出两个门电路让你分析异同。(华为)
41、用简单电路实现,当A为输入时,输出B波形为…(仕兰微电子)
42、A,B,C,D,E进行投票,多数服从少数,输出是F(也就是如果A,B,C,D,E中1的个数比0 多,那么F输出为1,否则F为0),用与非门实现,输入数目没有限制。(未知)
43、用波形表示D触发器的功能。(扬智电子笔试)
44、用传输门和倒向器搭一个边沿触发器。(扬智电子笔试)
45、用逻辑们画出D触发器。(威盛VIA 2003.11.06 上海笔试试题)
46、画出DFF的结构图,用verilog实现之。(威盛)
47、画出一种CMOS的D锁存器的电路图和版图。(未知)
48、D触发器和D锁存器的区别。(新太硬件面试)
49、简述latch和filp-flop的异同。(未知)
50、LATCH和DFF的概念和区别。(未知)
51、latch与register的区别,为什么现在多用register.行为级描述中latch如何产生的。 (南山之桥)
52、用D触发器做个二分颦的电路.又问什么是状态图。(华为)
53、请画出用D触发器实现2倍分频的逻辑电路?(汉王笔试)
54、怎样用D触发器、与或非门组成二分频电路?(东信笔试)
55、How many flip-flop circuits are needed to divide by 16? (Intel) 16分频?
56、用filp-flop和logic-gate设计一个1位加法器,输入carryin和current-stage,输出 carryout和next-stage. (未知)
57、用D触发器做个4进制的计数。(华为)
58、实现N位Johnson Counter,N=5。(南山之桥)
59、用你熟悉的设计方式设计一个可预置初值的7进制循环计数器,15进制的呢?(仕兰 微电子)
60、数字电路设计当然必问Verilog/VHDL,如设计计数器。(未知)
61、BLOCKING NONBLOCKING 赋值的区别。(南山之桥)
62、写异步D触发器的verilog module。(扬智电子笔试) module dff8(clk , reset, d, q); input clk; input reset; input [7:0] d; output [7:0] q; reg [7:0] q; always @ (posedge clk or posedge reset) if(reset) q <= 0; else q <= d; endmodule
63、用D触发器实现2倍分频的Verilog描述? (汉王笔试) module divide2( clk , clk_o, reset); input clk , reset; output clk_o; wire in; reg out ; always @ ( posedge clk or posedge reset) if ( reset) out <= 0; else out <= in; assign in = ~out; assign clk_o = out; endmodule
64、可编程逻辑器件在现代电子设计中越来越重要,请问:a) 你所知道的可编程逻辑器 件有哪些? b) 试用VHDL或VERILOG、ABLE描述8位D触发器逻辑。(汉王笔试) PAL,PLD,CPLD,FPGA。 module dff8(clk , reset, d, q); input clk; input reset; input d; output q; reg q; always @ (posedge clk or posedge reset) if(reset) q <= 0; else q <= d; endmodule
65、请用HDL描述四位的全加法器、5分频电路。(仕兰微电子) 66、用VERILOG或VHDL写一段代码,实现10进制计数器。(未知) 67、用VERILOG或VHDL写一段代码,实现消除一个glitch。(未知)
68、一个状态机的题目用verilog实现(不过这个状态机画的实在比较差,很容易误解 的)。(威盛VIA 2003.11.06 上海笔试试题)
69、描述一个交通信号灯的设计。(仕兰微电子)
70、画状态机,接受1,2,5分钱的卖报机,每份报纸5分钱。(扬智电子笔试)
71、设计一个自动售货机系统,卖soda水的,只能投进三种硬币,要正确的找回钱 数。 (1)画出fsm(有限状态机);(2)用verilog编程,语法要符合fpga设计 的要求。(未知)
72、设计一个自动饮料售卖机,饮料10分钱,硬币有5分和10分两种,并考虑找零:(1) 画出fsm(有限状态机);(2)用verilog编程,语法要符合fpga设计的要求;(3)设计 工程中可使用的工具及设计大致过程。(未知)
73、画出可以检测10010串的状态图,并verilog实现之。(威盛)
74、用FSM实现101101的序列检测模块。(南山之桥) a为输入端,b为输出端,如果a连续输入为1101则b输出为1,否则为0。 例如a: 0001100110110100100110 b: 0000000000100100000000 请画出state machine;请用RTL描述其state machine。(未知)
75、用verilog/vddl检测stream中的特定字符串(分状态用状态机写)。(飞利浦-大唐 笔试)
76、用verilog/vhdl写一个fifo控制器(包括空,满,半满信号)。(飞利浦-大唐笔试)
77、现有一用户需要一种集成电路产品,要求该产品能够实现如下功能:y=lnx,其中,x 为4位二进制整数输入信号。y为二进制小数输出,要求保留两位小数。电源电压为3~5v假 设公司接到该项目后,交由你来负责该产品的设计,试讨论该产品的设计全程。(仕兰微 电子)
78、sram,falsh memory,及dram的区别?(新太硬件面试)
79、给出单管DRAM的原理图(西电版《数字电子技术基础》作者杨颂华、冯毛官205页图9 -14b),问你有什么办法提高refresh time,总共有5个问题,记不起来了。(降低温 度,增大电容存储容量)(Infineon笔试)
80、Please draw schematic of a common SRAM cell with 6 transistors,point out which nodes can store data and which node is word line control? (威盛笔试题 circuit design-beijing-03.11.09)
81、名词:sram,ssram,sdram 名词IRQ,BIOS,USB,VHDL,SDR IRQ: Interrupt ReQuest BIOS: Basic Input Output System USB: Universal Serial Bus VHDL: VHIC Hardware Description Language SDR: Single Data Rate   压控振荡器的英文缩写(VCO)。   动态随机存储器的英文缩写(DRAM)。 名词解释,无聊的外文缩写罢了,比如PCI、ECC、DDR、interrupt、pipeline、 IRQ,BIOS,USB,VHDL,VLSI VCO(压控振荡器) RAM (动态随机存储器),FIR IIR DFT(离散 傅立叶变换)或者是中文的,比如:a.量化误差 b.直方图 c.白平衡

第二篇阿莫电子论坛:终于让360和谐了,爽! (amoBBS 阿莫电子论坛)


 本帖最后由 tianyieyu 于 2014-6-12 01:09 编辑
上班的地方可以上网,安得是有线路由,规定在工作时间内不准上外网;因此只能在中午休息时间内上上网;因工作中电脑用的较多,在中午休息时上网也的趴在电脑前,经常觉得坐的太累,有时就想如果能坐的舒服一点用手机上网,那就爽多了,虽然手机可以上网,但流量伤不起呀。同时在日常工作中经常要将一些工作存放在手机中,以便随时可以修改和发邮件,造成经常用数据线插来插去,觉得非常不方便;以上问题一直也没有太好的解决方法。直到最近看到同事都在用360随身wifi上网,同时也极力向我推荐,因对360不感冒,我的电脑没安装任何360软件,用ie上网,就一直很犹豫,在同事们不断的推荐下,同时看他们用的也很不错,也就随波逐流买了一个。买到后虽不抱太大希望,但想也不会太出格吧!在安装驱动时发现我的防火墙怎么被关闭了,遂打开,继续安装;安完后,设置很简单,但功能很固定几乎没有选择,这时可以连上手机和共享互联网;这时发现电脑有点慢,也就没在意,后因故退出360wifi软件,发现我的防火墙怎么被关闭了,遂打开。第二天早上打开电脑,我的防火墙怎么被关闭了,昨天下班的时候记得是打开的,遂打开。工作中感觉电脑各种慢,一肚子的火,中午用360随身wifi上了会网,速度还行,无意中试了一下电脑,早上电脑的各种慢一扫而光,速度飞快;下午将360wifi软件关闭后,咦!防火墙怎么又被关闭了,遂打开;使用中电脑又是各种慢;又是一肚子的火。回想这两天没安装别的软件,只装了360随身wifi的软件呀。就尝试着将软件卸载,卸完后,防火墙怎么又被关闭了,遂打开。再用电脑速度还可以。带着一肚子的疑问,下班后在自家电脑上进行各种尝试,确实存在卸载和关闭软件后自动关闭防火墙以及ie浏览器慢的问题,至此开始窝火。同时想360哪有生产能力都是找别人代工的,遂打开外壳,看到了里面的芯片。本着内事不绝问百度的态度,上百度一搜还真有和谐的方法,立即着手解决,下芯片厂家公版驱动,安装,没反应;卸载硬件驱动,重装,没反应,卸软件重装,重装硬件驱动还没反应,试了n次依然不认。此时胸中奔腾着各种草泥马,老子掏了钱,竟然只有你爽,老子不爽!不行老子也的爽。于是继续度娘,继续各种折腾。终于,在折腾过n种方法之后,终于将360和谐了,终于爽了!终于将原厂驱动装上了,世界至此安静了! 现将和谐过程记录如下,以方便大家可以使用360WiFi的信号接收以及更改WiFi名称等被他阉割了的功能,以实现无线网卡的功能。
二代360随身WiFi,使用的是MediaTek MT7601的芯片
这是雷凌公司的芯片,雷凌公司现在是联发科的一个部门。在驱动之家下载MediaTek MT7601芯片的驱动。
安装
双击ralink_5_1_7_0_win.exe文件开始安装程序。
选择我接受许可证协议中的条款
选择驱动程序与ralink无线网络设定程序,因为我们需要使用这个网络设定程序来设置WiFi的具体使用功能;下一步选择ralink无线网络设定程序,下一步到最后就可以了,最后还要重启电脑才能使用这个网络设定程序以及驱动。
重启后,找到安装目录下的文档。
分别找到以下三个文件。
C:\Program Files\Ralink\RT2870 Wireless LAN Card\SoftAP目录下HWID.ini文件
C:\Program Files\Ralink\RT2870 Wireless LAN Card\Utility目录下HWID.ini文件
C:\Program Files\Ralink\Common目录下HWID.ini文件
用记事本分别打开,分别找到【RT3070】的子项下,这类子项下有类似DeviceID_157=USB\VID_148F&PID_7601的项目。
在这个子项类得最后,添加了一行DeviceID_161=USB\VID_148F&PID_760B(本机),修改后关闭保存即可。
三个文件都修改完后,插入360随身WiFi,会在下方提示您找到USB无线网卡,并安装驱动。
完成后,看到下面的通知,重启电脑就可以使用完整的无线网卡功能了
设置手机共享电脑互联网
在ralink的网络设定中,AP模式就是360随身WiFi提供的手机共享电脑WiFi功能,我们再系统托盘右键单击ralink的设置图标,选择切换AP模式,如果没有那么您就是在AP模式无需切换。
点击上方图标的第一个,像信号塔一样的按钮,弹出设置您的共享互联网的无线连接名称和密码,而且可以选择隐藏网络名称(就是不能看到您的无线网络的名称,会在列表下方显示一个其他网络,进去需要输入无线网络名称和密码),选择向右箭头进入下一步
频道选择,默认,下一步
加密方式,选择您想使用的加密模式,想了解相关加密的经验,请到百度搜索,这里不赘述,下一步
密码可以自己设置,下面一项默认即可,这样您就可以使用手机共享电脑互联网上网了
使用client模式即接收模式
在ralink网络设置上选择切换client模式进入接收模式,这个模式可以让您不具备无线接收能力的设备可以使用无线,比如一般台式机就没有WiFi模块,把无线网卡插上就可以接收无线信号了,可以实现两天电脑互连传输,取代网线等功能
如果在上方单击放大镜图标,进入选择项登录的无线网络,如图选择
输入您想登录无线网络的密码,向右箭头下一步
登录成功后可以在网络连接属性看到如图界面证明成功连接,这样您的360随身WiFi就具备了无线接收功能
如果在主界面上显示ip地址等信息,选择上方左边第一个按钮,双击电脑形状图标后,重新登录需要登录的WiFi即可
这样就可以使用原厂的驱动程序,利用360WiFi进行信号的接收以实现无线网卡的功能;实现无线路由功能以及手机和电脑之间文件的互传功能,这就不必再进行数据线的频繁拔插。
手机和电脑之间文件的互传本人推荐使用茄子快传软件来进行,该软件功能简单,方便。值得一用。
这篇文章希望能大家一点帮助。

第三篇阿莫电子论坛:解析STM32启动过程 (amoBBS 阿莫电子论坛)http://www.amobbs.com/thread-5462931-1-1.html

相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的启动方式有了比较大的变化。ARM7/ARM9内核的控制器在复位后,CPU会从存储空间的绝对地址0x000000取出第一条指令执行复位中断服务程序的方式启动,即固定了复位后的起始地址为0x000000(PC = 0x000000)同时中断向量表的位置并不是固定的。而Cortex-M3内核则正好相反,有3种情况:
1、 通过boot引脚设置可以将中断向量表定位于SRAM区,即起始地址为0x2000000,同时复位后PC指针位于0x2000000处;
2、 通过boot引脚设置可以将中断向量表定位于FLASH区,即起始地址为0x8000000,同时复位后PC指针位于0x8000000处;
3、 通过boot引脚设置可以将中断向量表定位于内置Bootloader区,本文不对这种情况做论述;
而Cortex-M3内核规定,起始地址必须存放堆顶指针,而第二个地址则必须存放复位中断入口向量地址,这样在Cortex-M3内核复位后,会自动从起始地址的下一个32位空间取出复位中断入口向量,跳转执行复位中断服务程序。对比ARM7/ARM9内核,Cortex-M3内核则是固定了中断向量表的位置而起始地址是可变化的。
有了上述准备只是后,下面以STM32的2.02固件库提供的启动文件“stm32f10x_vector.s”为模板,对STM32的启动过程做一个简要而全面的解析。程序清单一:
;文件“stm32f10x_vector.s”,其中注释为行号
DATA_IN_ExtSRAM EQU 0 ;1
Stack_Size EQU 0x00000400 ;2
AREA STACK, NOINIT, READWRITE, ALIGN = 3 ;3
Stack_Mem SPACE Stack_Size ;4
__initial_sp ;5
Heap_Size EQU 0x00000400 ;6
AREA HEAP, NOINIT, READWRITE, ALIGN = 3 ;7
__heap_base ;8
Heap_Mem SPACE Heap_Size ;9
__heap_limit ;10
THUMB ;11
PRESERVE8 ;12
IMPORT NMIException ;13
IMPORT HardFaultException ;14
IMPORT MemManageException ;15
IMPORT BusFaultException ;16
IMPORT UsageFaultException ;17
IMPORT SVCHandler ;18
IMPORT DebugMonitor ;19
IMPORT PendSVC ;20
IMPORT SysTickHandler ;21
IMPORT WWDG_IRQHandler ;22
IMPORT PVD_IRQHandler ;23
IMPORT TAMPER_IRQHandler ;24
IMPORT RTC_IRQHandler ;25
IMPORT FLASH_IRQHandler ;26
IMPORT RCC_IRQHandler ;27
IMPORT EXTI0_IRQHandler ;28
IMPORT EXTI1_IRQHandler ;29
IMPORT EXTI2_IRQHandler ;30
IMPORT EXTI3_IRQHandler ;31
IMPORT EXTI4_IRQHandler ;32
IMPORT DMA1_Channel1_IRQHandler ;33
IMPORT DMA1_Channel2_IRQHandler ;34
IMPORT DMA1_Channel3_IRQHandler ;35
IMPORT DMA1_Channel4_IRQHandler ;36
IMPORT DMA1_Channel5_IRQHandler ;37
IMPORT DMA1_Channel6_IRQHandler ;38
IMPORT DMA1_Channel7_IRQHandler ;39
IMPORT ADC1_2_IRQHandler ;40
IMPORT USB_HP_CAN_TX_IRQHandler ;41
IMPORT USB_LP_CAN_RX0_IRQHandler ;42
IMPORT CAN_RX1_IRQHandler ;43
IMPORT CAN_SCE_IRQHandler ;44
IMPORT EXTI9_5_IRQHandler ;45
IMPORT TIM1_BRK_IRQHandler ;46
IMPORT TIM1_UP_IRQHandler ;47
IMPORT TIM1_TRG_COM_IRQHandler ;48
IMPORT TIM1_CC_IRQHandler ;49
IMPORT TIM2_IRQHandler ;50
IMPORT TIM3_IRQHandler ;51
IMPORT TIM4_IRQHandler ;52
IMPORT I2C1_EV_IRQHandler ;53
IMPORT I2C1_ER_IRQHandler ;54
IMPORT I2C2_EV_IRQHandler ;55
IMPORT I2C2_ER_IRQHandler ;56
IMPORT SPI1_IRQHandler ;57
IMPORT SPI2_IRQHandler ;58
IMPORT USART1_IRQHandler ;59
IMPORT USART2_IRQHandler ;60
IMPORT USART3_IRQHandler ;61
IMPORT EXTI15_10_IRQHandler ;62
IMPORT RTCAlarm_IRQHandler ;63
IMPORT USBWakeUp_IRQHandler ;64
IMPORT TIM8_BRK_IRQHandler ;65
IMPORT TIM8_UP_IRQHandler ;66
IMPORT TIM8_TRG_COM_IRQHandler ;67
IMPORT TIM8_CC_IRQHandler ;68
IMPORT ADC3_IRQHandler ;69
IMPORT FSMC_IRQHandler ;70
IMPORT SDIO_IRQHandler ;71
IMPORT TIM5_IRQHandler ;72
IMPORT SPI3_IRQHandler ;73
IMPORT UART4_IRQHandler ;74
IMPORT UART5_IRQHandler ;75
IMPORT TIM6_IRQHandler ;76
IMPORT TIM7_IRQHandler ;77
IMPORT DMA2_Channel1_IRQHandler ;78
IMPORT DMA2_Channel2_IRQHandler ;79
IMPORT DMA2_Channel3_IRQHandler ;80
IMPORT DMA2_Channel4_5_IRQHandler ;81
AREA RESET, DATA, READONLY ;82
EXPORT __Vectors ;83
__Vectors ;84
DCD __initial_sp ;85
DCD Reset_Handler ;86
DCD NMIException ;87
DCD HardFaultException ;88
DCD MemManageException ;89
DCD BusFaultException ;90
DCD UsageFaultException ;91
DCD 0 ;92
DCD 0 ;93
DCD 0 ;94
DCD 0 ;95
DCD SVCHandler ;96
DCD DebugMonitor ;97
DCD 0 ;98
DCD PendSVC ;99
DCD SysTickHandler ;100
DCD WWDG_IRQHandler ;101
DCD PVD_IRQHandler ;102
DCD TAMPER_IRQHandler ;103
DCD RTC_IRQHandler ;104
DCD FLASH_IRQHandler ;105
DCD RCC_IRQHandler ;106
DCD EXTI0_IRQHandler ;107
DCD EXTI1_IRQHandler ;108
DCD EXTI2_IRQHandler ;109
DCD EXTI3_IRQHandler ;110
DCD EXTI4_IRQHandler ;111
DCD DMA1_Channel1_IRQHandler ;112
DCD DMA1_Channel2_IRQHandler ;113
DCD DMA1_Channel3_IRQHandler ;114
DCD DMA1_Channel4_IRQHandler ;115
DCD DMA1_Channel5_IRQHandler ;116
DCD DMA1_Channel6_IRQHandler ;117
DCD DMA1_Channel7_IRQHandler ;118
DCD ADC1_2_IRQHandler ;119
DCD USB_HP_CAN_TX_IRQHandler ;120
DCD USB_LP_CAN_RX0_IRQHandler ;121
DCD CAN_RX1_IRQHandler ;122
DCD CAN_SCE_IRQHandler ;123
DCD EXTI9_5_IRQHandler ;124
DCD TIM1_BRK_IRQHandler ;125
DCD TIM1_UP_IRQHandler ;126
DCD TIM1_TRG_COM_IRQHandler ;127
DCD TIM1_CC_IRQHandler ;128
DCD TIM2_IRQHandler ;129
DCD TIM3_IRQHandler ;130
DCD TIM4_IRQHandler ;131
DCD I2C1_EV_IRQHandler ;132
DCD I2C1_ER_IRQHandler ;133
DCD I2C2_EV_IRQHandler ;134
DCD I2C2_ER_IRQHandler ;135
DCD SPI1_IRQHandler ;136
DCD SPI2_IRQHandler ;137
DCD USART1_IRQHandler ;138
DCD USART2_IRQHandler ;139
DCD USART3_IRQHandler ;140
DCD EXTI15_10_IRQHandler ;141
DCD RTCAlarm_IRQHandler ;142
DCD USBWakeUp_IRQHandler ;143
DCD TIM8_BRK_IRQHandler ;144
DCD TIM8_UP_IRQHandler ;145
DCD TIM8_TRG_COM_IRQHandler ;146
DCD TIM8_CC_IRQHandler ;147
DCD ADC3_IRQHandler ;148
DCD FSMC_IRQHandler ;149
DCD SDIO_IRQHandler ;150
DCD TIM5_IRQHandler ;151
DCD SPI3_IRQHandler ;152
DCD UART4_IRQHandler ;153
DCD UART5_IRQHandler ;154
DCD TIM6_IRQHandler ;155
DCD TIM7_IRQHandler ;156
DCD DMA2_Channel1_IRQHandler ;157
DCD DMA2_Channel2_IRQHandler ;158
DCD DMA2_Channel3_IRQHandler ;159
DCD DMA2_Channel4_5_IRQHandler ;160
AREA |.text|, CODE, READONLY ;161
Reset_Handler PROC ;162
EXPORT Reset_Handler ;163
IF DATA_IN_ExtSRAM == 1 ;164
LDR R0,= 0x00000114 ;165
LDR R1,= 0x40021014 ;166
STR R0,[R1] ;167
LDR R0,= 0x000001E0 ;168
LDR R1,= 0x40021018 ;169
STR R0,[R1] ;170
LDR R0,= 0x44BB44BB ;171
LDR R1,= 0x40011400 ;172
STR R0,[R1] ;173
LDR R0,= 0xBBBBBBBB ;174
LDR R1,= 0x40011404 ;175
STR R0,[R1] ;176
LDR R0,= 0xB44444BB ;177
LDR R1,= 0x40011800 ;178
STR R0,[R1] ;179
LDR R0,= 0xBBBBBBBB ;180
LDR R1,= 0x40011804 ;181
STR R0,[R1] ;182
LDR R0,= 0x44BBBBBB ;183
LDR R1,= 0x40011C00 ;184
STR R0,[R1] ;185
LDR R0,= 0xBBBB4444 ;186
LDR R1,= 0x40011C04 ;187
STR R0,[R1] ;188
LDR R0,= 0x44BBBBBB ;189
LDR R1,= 0x40012000 ;190
STR R0,[R1] ;191
LDR R0,= 0x44444B44 ;192
LDR R1,= 0x40012004 ;193
STR R0,[R1] ;194
LDR R0,= 0x00001011 ;195
LDR R1,= 0xA0000010 ;196
STR R0,[R1] ;197
LDR R0,= 0x00000200 ;198
LDR R1,= 0xA0000014 ;199
STR R0,[R1] ;200
ENDIF ;201
IMPORT __main ;202
LDR R0, =__main ;203
BX R0 ;204
ENDP ;205
ALIGN ;206
IF :DEF:__MICROLIB ;207
EXPORT __initial_sp ;208
EXPORT __heap_base ;209
EXPORT __heap_limit ;210
ELSE ;211
IMPORT __use_two_region_memory ;212
EXPORT __user_initial_stackheap ;213
__user_initial_stackheap ;214
LDR R0, = Heap_Mem ;215
LDR R1, = (Stack_Mem + Stack_Size) ;216
LDR R2, = (Heap_Mem + Heap_Size) ;217
LDR R3, = Stack_Mem ;218
BX LR ;219
ALIGN ;220
ENDIF ;221
END ;222
ENDIF ;223
END ;224-----------------------------------------------------------------------------------------------------------------------------------------------------------------
如程序清单一,STM32的启动代码一共224行,使用了汇编语言编写,这其中的主要原因下文将会给出交代。现在从第一行开始分析:
第1行:定义是否使用外部SRAM,为1则使用,为0则表示不使用。此语行若用C语言表达则等价于:
#define DATA_IN_ExtSRAM 0
第2行:定义栈空间大小为0x00000400个字节,即1Kbyte。此语行亦等价于:
#define Stack_Size 0x00000400
第3行:伪指令AREA,表示
第4行:开辟一段大小为Stack_Size的内存空间作为栈。
第5行:标号__initial_sp,表示栈空间顶地址。
第6行:定义堆空间大小为0x00000400个字节,也为1Kbyte。
第7行:伪指令AREA,表示
第8行:标号__heap_base,表示堆空间起始地址。
第9行:开辟一段大小为Heap_Size的内存空间作为堆。
第10行:标号__heap_limit,表示堆空间结束地址。
第11行:告诉编译器使用THUMB指令集。
第12行:告诉编译器以8字节对齐。
第13—81行:IMPORT指令,指示后续符号是在外部文件定义的(类似C语言中的全局变量声明),而下文可能会使用到这些符号。
第82行:定义只读数据段,实际上是在CODE区(假设STM32从FLASH启动,则此中断向量表起始地址即为0x8000000)
第83行:将标号__Vectors声明为全局标号,这样外部文件就可以使用这个标号。
第84行:标号__Vectors,表示中断向量表入口地址。
第85—160行:建立中断向量表。
第161行:
第162行:复位中断服务程序,PROC…ENDP结构表示程序的开始和结束。
第163行:声明复位中断向量Reset_Handler为全局属性,这样外部文件就可以调用此复位中断服务。
第164行:IF…ENDIF为预编译结构,判断是否使用外部SRAM,在第1行中已定义为“不使用”。
第165—201行:此部分代码的作用是设置FSMC总线以支持SRAM,因不使用外部SRAM因此此部分代码不会被编译。
第202行:声明__main标号。
第203—204行:跳转__main地址执行。
第207行:IF…ELSE…ENDIF结构,判断是否使用DEF:__MICROLIB(此处为不使用)。
第208—210行:若使用DEF:__MICROLIB,则将__initial_sp,__heap_base,__heap_limit亦即栈顶地址,堆始末地址赋予全局属性,使外部程序可以使用。
第212行:定义全局标号__use_two_region_memory。
第213行:声明全局标号__user_initial_stackheap,这样外程序也可调用此标号。
第214行:标号__user_initial_stackheap,表示用户堆栈初始化程序入口。
第215—218行:分别保存栈顶指针和栈大小,堆始地址和堆大小至R0,R1,R2,R3寄存器。
第224行:程序完毕。
以上便是STM32的启动代码的完整解析,接下来对几个小地方做解释:
1、 AREA指令:伪指令,用于定义代码段或数据段,后跟属性标号。其中比较重要的一个标号为“READONLY”或者“READWRITE”,其中“READONLY”表示该段为只读属性,联系到STM32的内部存储介质,可知具有只读属性的段保存于FLASH区,即0x8000000地址后。而“READONLY”表示该段为“可读写”属性,可知“可读写”段保存于SRAM区,即0x2000000地址后。由此可以从第3、7行代码知道,堆栈段位于SRAM空间。从第82行可知,中断向量表放置与FLASH区,而这也是整片启动代码中最先被放进FLASH区的数据。因此可以得到一条重要的信息:0x8000000地址存放的是栈顶地址__initial_sp,0x8000004地址存放的是复位中断向量Reset_Handler(STM32使用32位总线,因此存储空间为4字节对齐)。
2、 DCD指令:作用是开辟一段空间,其意义等价于C语言中的地址符“&”。因此从第84行开始建立的中断向量表则类似于使用C语言定义了一个指针数组,其每一个成员都是一个函数指针,分别指向各个中断服务函数。
3、 标号:前文多处使用了“标号”一词。标号主要用于表示一片内存空间的某个位置,等价于C语言中的“地址”概念。地址仅仅表示存储空间的一个位置,从C语言的角度来看,变量的地址,数组的地址或是函数的入口地址在本质上并无区别。
4、 第202行中的__main标号并不表示C程序中的main函数入口地址,因此第204行也并不是跳转至main函数开始执行C程序。__main标号表示C/C++标准实时库函数里的一个初始化子程序__main的入口地址。该程序的一个主要作用是初始化堆栈(对于程序清单一来说则是跳转__user_initial_stackheap标号进行初始化堆栈的),并初始化映像文件,最后跳转C程序中的main函数。这就解释了为何所有的C程序必须有一个main函数作为程序的起点——因为这是由C/C++标准实时库所规定的——并且不能更改,因为C/C++标准实时库并不对外界开发源代码。因此,实际上在用户可见的前提下,程序在第204行后就跳转至.c文件中的main函数,开始执行C程序了。
至此可以总结一下STM32的启动文件和启动过程。首先对栈和堆的大小进行定义,并在代码区的起始处建立中断向量表,其第一个表项是栈顶地址,第二个表项是复位中断服务入口地址。然后在复位中断服务程序中跳转??C/C++标准实时库的__main函数,完成用户堆栈等的初始化后,跳转.c文件中的main函数开始执行C程序。假设STM32被设置为从内部FLASH启动(这也是最常见的一种情况),中断向量表起始地位为0x8000000,则栈顶地址存放于0x8000000处,而复位中断服务入口地址存放于0x8000004处。当STM32遇到复位信号后,则从0x80000004处取出复位中断服务入口地址,继而执行复位中断服务程序,然后跳转__main函数,最后进入mian函数,来到C的世界。

本文来源:https://www.shanpow.com/xx/462392/

《阿莫电子论坛.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式

相关阅读
  • 童心向党快乐成长手抄报内容文字六篇 童心向党快乐成长手抄报内容文字六篇
  • 童心向党快乐成长手抄报内容文字(通用7篇) 童心向党快乐成长手抄报内容文字(通用7篇)
  • 走进民法典手抄报内容锦集三篇 走进民法典手抄报内容锦集三篇
  • 感党恩听党话跟党走手抄报内容范文(通用6篇) 感党恩听党话跟党走手抄报内容范文(通用6篇)
  • 多病同防手抄报内容(锦集7篇) 多病同防手抄报内容(锦集7篇)
  • 讲卫生防疾病手抄报内容【汇编六篇】 讲卫生防疾病手抄报内容【汇编六篇】
  • 以宪法为主题的手抄报内容范文汇总三篇 以宪法为主题的手抄报内容范文汇总三篇
  • 强国有我手抄报内容50字左右集合3篇 强国有我手抄报内容50字左右集合3篇
为您推荐
  • 感党恩跟党走手抄报内容四篇
    感党恩跟党走手抄报内容四篇
    手抄报,是指新闻事业发展过程中出现的一种以纸为载体、以手抄形式发布新闻信息的报纸,是报纸的原形,又称手抄新闻。以下是小编整理的感党恩跟党走手抄报内容四篇,欢迎阅读与收藏。
  • 大力弘扬宪法精神手抄报内容范文(精选7篇)
    大力弘扬宪法精神手抄报内容范文(精选7篇)
    以下是小编为大家收集的大力弘扬宪法精神手抄报内容范文(精选7篇),仅供参考,欢迎大家阅读。
  • 中国航天梦手抄报内容集合3篇
    中国航天梦手抄报内容集合3篇
    探索浩瀚宇宙,发展航天事业,建设航天强国,是我们不懈追求的航天梦。以下是小编整理的中国航天梦手抄报内容集合3篇,欢迎阅读与收藏。
  • 宪法主题手抄报内容(通用3篇)
    宪法主题手抄报内容(通用3篇)
    疫情防控的意义在于保护好疫情已经处于稳定的环境。疫情防控的同时做好思想教育,要保护好现在来之不易的环境,不要松懈。只有全民都一起合作,才能共同筑起防疫长城。以下是小编为大家收集的宪法主题手抄报内容(通用3篇),仅供参考,欢迎大家阅读。
  • 学宪法懂宪法手抄报内容【六篇】
    学宪法懂宪法手抄报内容【六篇】
     教育(Education)狭义上指专门组织的学校教育;广义上指影响人的身心发展的社会实践活动。“教育”一词来源于孟子的“得天下英才而教育之”。拉丁语educare是西方“教育”一词的来源,意思是“引出”。下面是小编为大家整理的学宪法懂宪法手抄报内容【六篇】,欢迎大家借鉴与参考,希望对大家有所帮助。
  • 宪法手抄报内容简短文字(合集3篇)
    宪法手抄报内容简短文字(合集3篇)
    宪法是主权国家或地区具有最高法律效力的根本大法,通常规定一个国家或地区的社会制度、国家制度、国家机构和公民的基本权利与义务等。以下是小编收集整理的宪法手抄报内容简短文字(合集3篇),仅供参考,希望能够帮助到大家。
  • 毒品手抄报内容范文(通用7篇)
    毒品手抄报内容范文(通用7篇)
      学习中共党史,我们就应以关注党史人物的起落沉浮以及他们影响下的党的理论和政策的调整和变化作为我们学习中共党史的基本线索,进而从中感知我们党的不断成长、日趋成熟和从中获得的弥足珍贵的历史经验教训以及在长期历史过程中逐步形成和突显出来党的显著特点、优良传统和可贵品质。以下是小编整理的毒品手抄报内容范
  • 关于童心向党手抄报内容文字【五篇】
    关于童心向党手抄报内容文字【五篇】
    手抄报,是指新闻事业发展过程中出现的一种以纸为载体、以手抄形式发布新闻信息的报纸,是报纸的原形,又称手抄新闻。下面是小编精心整理的关于童心向党手抄报内容文字【五篇】,仅供参考,大家一起来看看吧。
  • 关于讲卫生防疾病手抄报内容【七篇】
    关于讲卫生防疾病手抄报内容【七篇】
    手抄报,是指新闻事业发展过程中出现的一种以纸为载体、以手抄形式发布新闻信息的报纸,是报纸的原形,又称手抄新闻。下面是小编为大家整理的关于讲卫生防疾病手抄报内容【七篇】,欢迎大家借鉴与参考,希望对大家有所帮助。
  • 以宪法为主题的手抄报内容精选三篇
    以宪法为主题的手抄报内容精选三篇
    抄报,在古代是一种传报于古代各级衙署内部的参考消息。明清抄报的“新闻检查”大权,已经由中书、枢密提升到皇帝本人,什么消息“概行发钞,与众阅看”、“俾众其知之”,什么消息“不应抄传”或“非奉旨,邸报不许抄传”,都由皇帝决定。以下是小编整理的以宪法为主题的手抄报内容精选三篇,仅供参考,希望能够帮助到大家