嵌入式系统开发

发布 2022-10-21 07:31:28 阅读 6439

1、汇编程序调用c程序 (atpcs反正就是一种规则)

(1)、汇编程序的设置要遵循atpcs规则,保证程序调用时参数能正确传递。

(2)、在汇编程序中使用import伪指令声明将要调用的c程序函数。

(3)、在调用c程序时,要正确设置入口参数,然后使用bl调用。

2、c程序调用汇编程序。

(1)、汇编需的设置要遵循atpcs规则,保证程序调用时参数能正确传递。

(2)、在汇编程序中使用export伪指令声明本子程序,使其他程序可以调用此子程序。

(3)、在c语言中使用extern关键字声明外部函数(声明要调用的汇编子程序)。

3、s3c2410处理器存储器映射。

om[1:0]=01,10 不使用nand flash作为rom

om[1:0]=00 使用nand flash作为rom

4、om[3:2]=00 晶体:mpll clk 晶体:upll clk

01 晶体extclk

10 extclk晶体。

11 extclkextclk

mpll clk用于cpu及其他外围设备,upll clk专用于usb设备。

5、电源管理。

(1)正常(normal)模式为cpu和所有外设提供电源,所有外设开机,该模式功耗最大。这种模式允许用户通过软件控制外设,可以断开提供给外设的始终以降低功耗。

(2)省电(slow)模式采用外部时钟生产fclk的方式,此外电源的功耗取决于外部时钟。

(3)空闲(idle)模式断开fclk和cpu内核的链接,外设保持正常,该模式下的任何中断都可唤醒cpu

(4)断电(power-off)模式断开内部电源,只给内部的唤醒逻辑供电。一般模式下需要两个电源,一个提供给唤醒逻辑,另一个提供给cpu和内部逻辑,而在power-off模式下,后一个关闭电源。该模式可以通过eint[15:

0]和rtc唤醒。

6、s3c2410可以处理两类中断:通用中断(irq)和快速中断(fiq)。

56个中断源中,有32个中断源提供中断控制器。

中断屏蔽寄存器:控制中断的开启和关闭。

中断源挂起寄存器:反映是哪个中断源向cpu申请了中断。

中断挂起寄存器:反映cpu正在响应的中断的中断源。

中断源是指给出中断向量的的那些中断,子中断源是指与其他中断共用一个中断向量的中断。

同一时刻,中断挂起位只能有一位是置1的。

常见外部中断:低。

中断模式寄存器(intmod)选择快速中断还是通用中断。

中断挂起寄存器(intpnd):申请的中断响没响应。

中断源挂起寄存器(srcpnd):有无中断请求。

中断屏蔽寄存器(intmsk):开中断还是屏蔽中断。屏蔽位为0,中断正常执行。

系统对中断优先级实行由中断优先寄存器(priority)和7个中断仲裁器组成的两级控制。7个中断仲裁器:6个子中断仲裁器组和一个主中断仲裁器组组成。

中断比较时是先子后主。

7、i/o端口(b-h口)

端口a做i/o口使用时,只能做输出。

第一功能(基本i/o):控制寄存器(gpbcon)、数据寄存器(gpbdat)、上拉寄存器(gpbup)

第二功能:去掉数据寄存器。

选择功能由上拉寄存器决定,相应位为0做i/o,为1做第二功能。

8、串行通信(uart),三个异步串行通信接口。

uart波特率分频寄存器 ubrdivn=(int)[ulk/波特率×16]-1

或 ubrdivn=(int)[plk/波特率×16]-1,值在1~(216-1)之间。

uart线路控制寄存器ulconn

uart控制寄存器uconn

发送寄存器utxh和接收寄存器urxh——只有一个字节(8位数据),注意!在发生溢出错误时,接收的数据必须被读出来,否则会引发下一次溢出错误。

9、dma操作六大步骤:

1)外设向dmac发出dma传送请求。

2)dmac通过连接到cpu得hold信号向cpu提出dma请求。

3)cpu完成当前总线操作后立即对dma请求做响应。响应包括两方面:一方面,cpu将控制总线、数据总线、地址总线浮空,即放弃对这些总线的控制权;另一方面,cpu将有效的hlda信号加到dmac上,以通知dmac cpu已经放弃了总线的控制权。

4)cpu将总线浮空,即放弃总线控制权后,由dmac接管系统总线的控制权,并向外设送出dma的应答信号。

5)dmac行处地址信号和控制信号,实现由外设与内存或内存不同区域之间大量数据的快速传送。

6)dmac将规定的数据字节传送完后,通过向cpu发hold信号,撤销对cpu的dma请求。cpu收到此信号后,一方面是hlda无效,另一方面又重新开始控制总线,实现正常取指令、分析指令、执行指令的操作。

dma传送有3种方式:

1、i/o接口到存储器。

当进行数据传送时,来自i/o的数据利用dmac送出ior(反)控制信号,将数据送到系统数据总线d0~d7上,同时,dmac送出存储器单元地址及memw(反)控制信号,将数据写入所选中的存储器单元中,完成一个字节的传送,同时,dmac修改内部地址及字节数寄存器的内容。

2、存储器到i/o接口。

与1类似,dmac送出存储器地址和memr(反)控制信号,将存储器中的内容独处放到数据总线上,然后,dmac送出iow(反)控制信号,将数据写到规定的端口(预选中)中去,然后dmac自动修改内部地址及字节数寄存器的内容。

3、存储器到存储器。

采用数据块传送方式,首先送出内存源区域的地址和memr(反)控制信号,将选中内存单元的数据暂存,接着,修改地址及自己数寄存器的值,然后输出内存目的区域的地址及memw(反)控制信号,将暂存的数据通过系统数据总线写入到目的区域中去,最后,修改地址和字节数寄存器的内容,当字节计数器减到零或外部输入nop(反)时,可以结束一次dma传输过程。

10、定时器特性。

1)5个16位定时器。

2)2个8位预定标器和2个4为分频器。

3)可编程改变pwm输出占空比。

4)自动重载模式或者单个脉冲输出模式。

5)具有死区生成器。

6)自动重载与双缓冲。

11、pwm工作原理 (感觉这个原理有点问题)

当我们把一个数值放入tcntbn之后,启动定时器、使能重载功能,tcntbn把该数放入到减法计数器,减法计数器开始按分频值进行减1操作,减法计数器减到0时,响应的tcntbn的值被自动重载到减法计数器中继续下一次操作。这样,在定时器的数据会产生连续的锯齿波vtcnt。当我们把比较值放入tcmpbn后,该值会在定时器的输出产生一个负的电压vtcmpb,tcmpbn越大,vtcmpb的绝对值越小。

定时器的输出电压vtout=vtcnt-vtcmpb,当vtcnt大于vtcmpb时,vtout输出电压变正,当vtcnt小于vtcmpb时,vtout输出电压变负。我们可以在程序中,如计数器到0中断服务程序中随时修改tcmpbn,使vtcmpb的大小改变,进而控制vtcnt的正负比率,也就是改变pwm的占空比。

程序设计:1、gpio的使用

发光二级管逐个点亮,设计,写完整,最后要还原为输入。

其实不过就是配置三个寄存器而已,即控制寄存器,数据寄存器,上拉寄存器,so easy!

2、uart(中断方式发送123456789),串口0

有5个错误(语法、语义(寄存器的操作)。。

初始化:选时钟,首先两个寄存器配置,线路控制寄存器ulconn(模式,校验,停止位个数,数据位个数)和控制寄存器uconn(主要时钟,接收错误中断允许,发送模式,接收模式),然后根据需要的波特率设置分频器值(根据ubrdivn=(int)[ulk/波特率×16]-1),中断服务程序:

发:……设置标志位,设中断向量,总中断屏蔽,子中断屏蔽,查询标志位……

收:……设中断向量,清中断挂起,打开中断,子中断打开,查询,屏蔽子中断,屏蔽总中断……(看程序)

3、a/d转换(10位,通道3,100次采样,求平均值)——要求较高 (老师写了部分程序)

选通道,设置转换时钟频率,启动转换,判断转换结束,启动读功能(不难)

4、触摸屏 (没有注释和填空)

主程序:x和y转换模式,延时,a/d转换控制寄存器adccon,触摸屏控制寄存器adctsc,设中断向量,取消ad屏蔽,取消触摸屏中断….,屏蔽。。。

5、实时时钟(rtc)(根据注释填空)

按秒刷新(书上有)

6、i2c读和写分离开(一块一块儿写)注意书上的程序上课时有错。

1、局部变量初始化。

2、i2c中断初始化。

3、i2c初始化。

4、写函数。

5、读函数。

6、关中断。

嵌入式系统开发

目录。多进程程序设计 2 1.摘要 2 2.设计目的 2 3.设计要求 2 4.设计原理 3 5.功能设计 3 5.1任务进程的建立 3 5.2子进程创建子进程 4 5.3管道通信的实现 5 5.4进程c的ls l指令 9 6.心得体会 10 7.参考文献 10 附录 程序 11 众所周知,目前市场...

嵌入式系统开发试题

2009至2010学年第 1 学期。嵌入式开发系统试卷a 一 填空题 本题 20 分,每空1分 1.嵌入式系统主要包括一下几类和 2 嵌入式操作系统现在比较流行的有和等。3.arm的v4t版本以上一般都支持两类指令集,分别为。4 arm处理器工作模式有7种,它们分别是。和模式。5 arm内部寄存器都...

嵌入式系统开发试题

一单项选择题。1.世界上第一台计算机研制成功的年代是 c 1944年 1945年 1946年 1947年。2.十进制数235,用二进制表达为 a 3.arm采用定长指令格式,所有指令都是32位,bit 31 28 为 b 目标寄存器编码 条件执行 指令操作符编码 永远是0 4.8080处理器是 c ...