历史上的今天
返回首页

历史上的今天

今天是:2025年01月08日(星期三)

正在发生

2020年01月08日 | ARM嵌入式整理

2020-01-08 来源:eefocus

填空

1指令含义

列出文件列表的ls命令 

切换目录的cd命令  

创建目录的mkdir命令

删除目录的rmdir命令

复制文件的cp命令

删除文件或目录的rm命令  

让显示画面暂停的more命令

连接文件的cat命令

移动或更换文件,目录名称的mv命令

显示当前所在目录的pwd命令

2 做移植操作系统的三步:下载bootloader,下载内核,下载文件

3 ARM7TDMI各个字母的含义:支持32位寻址范围,并弥补了ARM6不能在低于5V电源电压下工作的不足

 

考点:

  1. 1.       vi编辑器模式

命令模式(command mode)—执行命令:在该模式中,可以输入命令来执行许多种功能。控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

输入模式(Insert mode)—输入文本:vi被运行时,通常处在命令模式下,键入以下命令 可以使vi退出命令模式,进入输入模式:I(i)、A(a)、O(o)。

末行模式(last line mode)—执行待定命令:将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。不过一般我们在使用时把vi简化成两个模式,就是将末行模式(last line mode)也算入命令行模式command mode)。

 

  1. 2.       判读一个数是否合法?

#immed_8r——常数表达式

该常数必须对应8位位图,即必须是一个8位的常数通过循环右移偶数位可以得到的数。

 

例如:

1
2
3
4
5
6
7
MOV         R0,#1
 
AND          R1,R2,#0x0F
 
MOV         R1,#0xC000      ;0xC000可由0x03循环右移16位得到

3. PC指令算法(考PC的值)

q  三级流水线

正常操作过程中,在执行一条指令的同时对下一条指令进行译码,并将第三条指令从存储器中取出。这三条指令之间的位置关系如下表所示:

 

当处理器处于ARM状态时,每条指令长为4字节,所以PC的值为正在执行的指令地址加8字节,即: PC值=当前程序执行位置+8字节

当处理器处于Thumb状态时,每条指令长为4字节,所以PC的值为正在执行的指令地址加8字节,即: PC值=当前程序执行位置+4节

PC的读取程序

1
2
3
4
5
6
7
0x4000              ADD PC , PC , #4    ;正在被执行的指令,将地址值PC+4写到PC
 
0x4004              …                                  ;正在被译码的指令
 
0x4008              …                                  ;在被取指的指令,PC=0x4008
 
0x400C              …                                  ;PC+4=0x400C

程序解析:假设地址0x000上的ADD指令时处理器“正在执行”的第一条指令,该指令的功能是把PC+4的值放到寄存器里,由于PC总是指向第三条指令,即0x4008就是“正在指令”的地址,从而得到地址:PC+4=0x4008+4=0x400C,于是将地址写入PC寄存器

4.7种处理器模式

 

5. CPSR模式位值表(P39)

 

6. 读取SWI立即数

在SWI异常中断处理程序中,读取SWI立即数的步骤为:首先,确定引起软件中断的SWI指令是ARM指令还是Thumb指令,这可通过对SPSR访问得到,然后,取得该SWI指令的地址,这可通过访问LR寄存器得到,最后,读出指令,分解出立即数,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
T_bit        EQU          0x20
 
SWI_Handler
 
STNFD      SP!,{R0-R3,R12,LR}           ;现场保护
 
MRS          R0,SPSR;读取SPSR
 
STMFD     SP!,{R0}:保存SPSR
 
TST            R0,#T_bit
 
LDRNEH   R0,[LR,#-2];若是Thunb指令,读取指令码(16位)
 
BICNE       R0,#0XFF00:取得Thunb指令的8位立即数
 
LDREQ      R0,[LR,#-4];若是ARM指令,读取指令码(32位)
 
BICEQ       R0,#0XFF000000;取得ARM指令的24位立即数
 
....
 
LDMFD     SP!,{R0-R3,R12,PC}^;SWI异常中断返回

7. 锁相环  设置MSEL位,PSEL……………….(计算)

PLL的作用。寄存器名称与功能,频率计算方法与寄存器设置?

答:作用:由晶体振荡器输出的时钟信号,通过PLL升频,可以获得更高的系统时钟(CCLK)。PLL接受的输入时钟频率范围为10~25MHz,通过一个电流控制振荡器(CCO)倍增到10~60MHz。 寄存器: 

1.PLL配置寄存器(PLLCFG): 

①、MSEL[4:0]:PLL倍频器值,在PLL频率计算中其值为(M-1); ②、PSEL[1:0]:PLL分频器值,在PLL频率计算中其值为P 。 2.PLL状态寄存器(PLLSETA): 

1)、MSEL[4:0]、PSEL[1:0]、PLLE、PLLC:读出反映这几个参数的设置值,写入无效 

2)、PLOCK:反映PLL的锁定状态。为0时,PLL未锁定;为1时,PLL锁定到指定频率。 

频率计算:回路锁定后:FOSC = FCCO / (2P × M)                         FCLK = FOSC × M 必须满足的条件: 

FOSC范围:10MHz~25MHz;    FCCLK范围:10MHz~60MHz;     FCCO范围:156MHz~320MHz 计算流程: 

1.选择处理器的工作频率(CCLK)-----2.选择振荡器频率(FOSC)----3.计算M值 配置MSEL位------4.计算P值配置PSEL位 

根据处理器的整体要求、UART波特率的支持等因素来决定。外围器件的时钟频率可以低于处理器频率CCLK 必须为FOSC的整数倍。   M = CCLK / FOSC,取值范围1~32。写入MSEL的值为(M-1)。    选择合适的P值,使FCCO在限制范围内。P只能取1、2、4或8。写入PSEL的值为P。 

锁相环(PLL)计算实例: 

系统要求:FOSC=10MHz、CCLK= 60MHz 1.计算M值:M= CCLK  / FOSC =6 ; 2.设置MSEL位:写入值为(M-1)=5; 3. 设置PSEL位:P=FCCO/(CCLK×2) 

                 =(156~320)/120=1.3~2.67        所以P取整数2,PSEL写入值为2。

8.中断延迟

最大中断时延:

当FIQ使能时,最坏情况是正在执行一条装载所有寄存器的指令“LDM”(它耗时最长),同时发生了FIQ和数据中止异常,在响应FIQ中断之前要先把正在执行的指令完成,然后先进入数据中止异常,再马上跳转到FIQ异常入口,所以延迟时间包含:

Tsyncmax,请求通过同步器的最长时间。为2个处理器周期(由内核决定);

Tldm,最长的指令执行需要的时间。Tldm在零等待状态系统中的执行时间为20个周期。注意,是在零等待状态系统中。一般的基于ARM7核的芯片的存储器系统比内核速度慢,造成其不是零等待的;

Texc,数据中止入口的时间。Texc为3个周期(由内核决定);

Tfiq,FIQ入口的时间。Tfiq为2个周期(由内核决定)。

FIQ总的延迟时间=Tsyncmax +Tldm +Texc +Tfiq=27个周期

在40MHz处理器时钟时,最大延迟时间略少于0.7us。在此时间结束后,ARM7TDMI执行位于0x1C处的指令。

     最大的IRQ延迟时间与之相似,但必须考虑到这样一种情况,当更高优先级的FIQ和IRQ同时申请时,IRQ要延迟到FIQ处理程序允许IRQ中断时才处理(可能需要对中断控制器进行相应的操作)。IRQ延迟时间也要相应增加。

最小中断延迟:

  FIQ或IRQ的最小中断延迟是请求通过同步器的时间Tsyncmin加上Tfiq(共4个处理器周期)

 

简答

  1. 1.       配置环境变量的三种方法

修改/etc/profile文件

修改/etc/profile文件

直接在shell下设置变量

  1. 2.       什么是bootloader以及作用?

在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。

作用如下:

初始化硬件;引导Linux;烧写Linux内核映像和文件系统                      

引导加载程序是系统加电后运行的第一段软件代码,BootLoader的主要运行任务就是将内核映象从硬盘上读到 RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作系统。

  1. 3.     互斥信号量以及优先级反转问题

二值信号量可以实现对共享资源的独占式处理,所以叫做互斥信号量。互斥信号量也称为mutex,专用于资源同步。互斥信号量具有一些特性:占用一个空闲优先级,以便解决优先级反转问题。

当低优先级任务占有某个共享资源而高优先级任务又要使用时,就会发生优先级反转。内核可以先将低优先级提升到不低于哪个高优先级任务的优先级,知道低优先级的任务使用完占用的内核资源。

解决优先级反转一般要求内核支持同优先级下的多任务,也可以说能防止优先级反转的信号量就是互斥信号量,在嵌入式系统中,经常使用互斥信号量访问共享资源来实现资源同步。

  1. 4.     实现资源同步的三种方法:

l  使用关中断:通过调用禁止中断函数OS_ENTER_CRITICAL()和允许中断函数OS_EXIT_CRITICAL()实现的。

l  使用关调度:通过调用禁止任务调度函数OSSchedLock()和允许任务调度函数OSSchedUnlock()实现的,因为禁止调度违背了多任务的初衷,所以不建议用户使用。

l  使用信号量与互斥信号量:通过等待信号量和发送信号量实现共享资源的独享。

 

  1. 5.     代码临界区

代码的临界区也称临界区,指处理时不可分割的代码,运行这些代码不允许被打断,一旦这部分代码开始执行,则不允许任何中断打算,为确保临界区代码的执行,在进入临界区之前要关中断,而临界区代码执行完成以后要立即开中断。

  1. 6.     “BX”与“MSR”实现状态切换的区别

“BX”指令是在程序跳转的同时进行状态切换,在程序发生跳转时候流水线会被清空,所有BX指令进行状态切换后,流水线按原来处理器状态进行取值和译码的指令会被清除,也就不会英气处理器的错误

“MSR”---写状态寄存器指令,可以直接修改PSR寄存器,通过它俩修改T位可以实现状态切换,但是不会清空流水线。

  1. 7.     指出生活当中有关嵌入式操作系统并解释为什么是嵌入式系统?

MP3、手机、可视电话、数码相机、网络电视、打印机

  1. 8.     计算机有哪几种主要的架构(区别是什么?

冯·诺依曼结构:把代码作为一种特殊的数据来操作,指令总线和数据总线及其存储区域是一致的

哈佛结构:指令总线和数据总线及其存储区域是相互独立的

 

程序分析

         C或汇编,指出作用或者代码意思

程序设计

         1 makefile三种写法

         2 LED任务(行为+资源同步)、(事件、消息、信号量、邮箱等)

要求:划分任务、定义优先级、画流程图、写程序


推荐阅读

史海拾趣

Beck IPC GmbH公司的发展小趣事

随着技术的不断成熟和市场需求的扩大,Beck IPC开始寻求新的业务领域。公司凭借在嵌入式通讯领域的深厚积累,成功拓展至机器到机器(M2M)通讯和工业物联网(IIoT)解决方案领域。同时,公司积极开拓国际市场,与多个国家和地区的合作伙伴建立了紧密的合作关系。通过引进国际先进技术和理念,Beck IPC不断提升自身实力,逐渐在全球范围内树立起良好的品牌形象。

Churod Electronics Co Ltd公司的发展小趣事

随着公司规模的扩大,中汇瑞德意识到,要想在激烈的市场竞争中保持领先地位,必须不断进行科技创新。于是,公司加大了对研发的投入,引进了一批高素质的研发人才,并建立了完善的研发体系。在研发团队的努力下,公司成功开发出了多款具有自主知识产权的新型继电器产品,不仅提高了产品的性能和质量,还降低了生产成本,赢得了客户的广泛好评。

Control Sciences Inc公司的发展小趣事

作为一家有社会责任感的企业,Control Sciences Inc始终关注环境保护和社会公益。公司积极推广节能减排技术,减少生产过程中的环境污染。此外,公司还积极参与社会公益活动,为社会的发展贡献自己的力量。这些举措不仅提升了公司的社会形象,也赢得了社会各界的广泛认可。


以上只是基于通用框架编写的示例故事,具体的内容需要您根据Control Sciences Inc公司的实际情况进行调整和补充。在编写过程中,请确保遵循事实,避免加入主观评价或猜测。

Grande Electronics Ltd公司的发展小趣事
定期清洁遥控器表面的灰尘和污垢,避免按键接触不良等问题。
Corsair Memory Inc公司的发展小趣事

Corsair Memory Inc公司的成功不仅在于其产品的创新,更在于其与全球知名电脑厂商的合作。多家世界级的OEM合作伙伴选择Corsair作为其内存供应商,这不仅提升了Corsair的品牌影响力,也为其带来了稳定的订单和市场份额。这种合作关系的建立,是Corsair在电子行业中持续发展的重要支撑。

American Custom Components公司的发展小趣事

近年来,电子行业面临着原材料价格上涨、市场竞争激烈等挑战。American Custom Components公司也不例外,面临着成本压力和市场份额的下降。为了应对这些挑战,公司采取了一系列措施,包括优化生产流程、降低生产成本、加强研发创新等。同时,公司还积极拓展新的应用领域和市场,寻找新的增长点。这些努力使得公司在行业竞争中保持了一定的优势。

问答坊 | AI 解惑

一种蓝牙打印机的实现方案

引言      作为一种短距离无线通信协议,蓝牙技术以其低成本、低功耗、高速率、方便灵活等特点在众多无线解决方案中脱颖而出。蓝牙10m的工作距离可以很好的满足大多数数字设备的应用场合,如办公室或家庭。打印机是常用的一个 ...…

查看全部问答>

急,ARM9 wince系统 spi控制点阵

    用spi总线控制点阵,我现在用的是s3c2410,由于板子给出的扩展输出口不够用,所以我用了串口来控制点阵,我只是把开发板带的spi驱动稍微改了改,然后在我的应用程序上输入数据,点亮点阵,可是现在的问题是点阵扫面速度太慢,能打出 ...…

查看全部问答>

将摄像头与电机与红外线感应的程序编辑一个线程里 急急急???

我吧我分都给出去谁能帮我解决这些步骤或者告诉我一个大概的框架也行和给我一些参考的资料我分一点不剩全给你还有一个重要为题就是将几个程序揉到一个线程里的话需要什么结构么,我觉得编写的时候不能想到那步就编写那不吧,是不是有一定的框架与结 ...…

查看全部问答>

“减得巧,省得妙”- 500:1的数据瘦身

参加在线会议请登录:http://g.eeworld.net/5093778…

查看全部问答>

tffs文件系统内有没有建立一个txt文件的命令啊

不想从/tgtsvr中拷贝一个gps.txt到tffs文件系统下,太麻烦…

查看全部问答>

求教,MSP430 P2口输出的电平是多少

Vcc为3.8V,P2口输出为2.75V[空载,直接万用表量的]一般各位用的输出电平是多少? [ 本帖最后由 njkzjk 于 2011-7-12 12:50 编辑 ]…

查看全部问答>

请教一个通信中任务切换的问题,

任务1,里面进行CAN通信,我们知道,CAN通信如果遇到can总线忙的话,CAN会重复发送数据多次,直到数据发送完成,但是如果在尝试重复发送数据的过程中,遇到任务调度,切换到更高优先级的任务2,那么此时CAN通信还能进行吗?这个时候CAN通信会出现什 ...…

查看全部问答>

CC2530外接传感器 ADC转换问题

外接一个模拟输出的传感器模块,总共3个管脚,一个模拟输出,一个电源,一个地。 将模拟输出管脚接在飞比EB的P14插槽的29号管脚上,即P0端口的pin1, 串口每隔十几毫秒就输出“    - ”,不知道问题在哪儿, 代码如下,麻烦大家帮忙看 ...…

查看全部问答>

HELPER2416开发板(一):收到板子及疑问

今天收到板子了,包装很好!同时对君益兴公司及EEWORLD表示感谢。这款板子市场价不菲的,这么无偿地助学,我不学都对不起自己。 好了上图片! 打开之后包装整齐。一看就是好东东。大家出品的货!!! 全部的配件: 运行的主界面 时钟 ...…

查看全部问答>

关于TMS570LS3137外设驱动问题

请问,谁有TMS570LS3137在UC/OS操作系统下的CAN、AD、IIC相关的驱动程序啊? \0\0\0eeworldpostqq…

查看全部问答>