B) arm-linux-gcc -S -o test.o test.c
C) arm-linux-gcc -o test test.c
D) arm-linux-gcc -g -o test test.c 填空题
SoC芯片中的CPU绝大多数是以IP核的方式集成在芯片中的,很少再自行设计开发。目前32位嵌入式处理器主要采用的是由____【1】____国一家专门从事RISC处理器内核设计公司设计的____【2】______内核。
我国大陆地区目前广泛使用的汉字编码国家标准有____【3】______和GB18030两种,常用汉字采用___【4】____个字节表示。
在Internet中负责选择合适的路由,使发送的数据分组(packet)能够正确无误地按照地址找到目的计算机所使用的是 ___【5】____协议簇中的 ___【6】____协议。
ARM处理器有7种异常,按向量地址从小到大排列的顺序是: __【7】_____、未定义指令UND、软件中断SWI、指令预取中止PABT、数据访问中止DABT、 __【8】_____以及快速中断FIQ。
在ARM处理器中,R0~R15是通用寄存器,其中作为堆栈指针SP使用的寄存器是 ___【9】____,作为程序链接寄存器LR使用的是 ___【10】____。 综合题
2、某机械设备的控制器,其基本功能要求有:
需要有8个数字量输入,用于采集设备的状态信息;且需要8个数字量输出,用于控制设备动作。
具备一个RS-232接口,可以和上位机连接,接收上位机发送的命令及参数。
需要提供一个基准定时信号,定时时间间隔为0.01秒。
需要彩色LCD显示器,用于显示状态信息等。
根据上述功能要求的描述,若采用S3C2410芯片为核心来构建该机械设备控制器的硬件平台,请完善下面的叙述和C语言程序(需要使用的控制寄存器的格式见题后说明)。
(1)若硬件设计时采用GPIO端口E的GPE0~GPE7引脚作为8个数字量输出,那么软件设计时其初始化语句是:rGPECON=(rGPECON|0x00005555)& ___【1】____。若软件设计时需要通过GPE5引脚输出\来驱动执行机构动作,那么语句是:rGPEDAT= rGPEDAT | ___【2】____。(注:rGPECON是端口E的控制寄存器所对应的变量,rGPEDAT是端口E的数据寄存器所对应的变量)
(2)硬件设计时,选用UART0来完成RS-232接口电路设计。在软件设计时,其初始化程序中波特率设置为9600bps,数据格式设置为:8位数据位、奇校验、1位停止位。请补充完善下面的UART0初始化函数(注:主频参数为PCLK):
void UART0_Init() {
rGPHCON=(rGPHCON&0xFFFFFF00)| ___【3】____; //端口H相应引脚功能初始化
rUFCON0=0x0; //FIFO不使能
rUMCON0=0x0;
rULCON0= ___【4】____; //设置线路控制寄存器
rUCON0= 0x145; //设置控制寄存器
rUBRDIV0=( (int)(PCLK/ ___【5】____) - 1); //设置波特率,小数采用四舍五入 }
(3)按照上面UART0初始化函数所设置的通信速率,每秒钟最多能传输 ___【6】____个字节的信息。若上位机有大小为4KB的初始参数需要下载到控制器中,那么,约需传输 ____【7】___秒才能完成下载(1K=1024,精确到小数点后面1位数字)。
(4)系统中所需要的0.01秒基准定时时间选用S3C2410芯片内部的Timer0部件来产生。若系统的主频参数PCLK为264MHz,分频器值选择为16,预分频系数选择为3,那么,Timer0的计数常数为 ___【8】____。软件设计时,设计了如下的Timer0初始化函数,请补充完善。(注:下面程序中⑨、⑩、⑿用8位十六进制数表示,⑾用4位十六进制数表示)
void Timer0Int(void) {
//设置定时器配置寄存器0(TCFG0)
rTCFG0= ___【9】____; //Timer0预分频系数选择为3,该寄存器中其它无关位均为0
//设置定时器配置寄存器1(TCFG1)
rTCFG1= ___【10】___; // Timer0分频器值为16,该寄存器中其它无关位均为0
//设置计数常数
rTCNTB0= ___【11】____;
//设置控制寄存器TCON
rTCON= ___【12】____;//更新TCNTB0和TCMPB0,该寄存器中其它无关位均为0
rTCON=0x00000009;//设置Timer0自动装载,并启动 }
(5)彩色LCD显示屏的硬件接口电路由S3C2410的专用GPIO端口 __【13】_____和端口 ___【14】____相关引脚配以驱动电路来设计。软件设计时,需要通过设置它们控制寄存器的值分别为 ___【15】____和 ____【16】___来确定它们的引脚功能。
(6)系统的软件可以设计为在无操作系统的环境下运行。设计者自行设计系统的启动引导程序,在该程序中完成异常向量设置、堆栈指针设置以及必要的硬件初始化。ARM9体系结构中规定的IRQ异常所对应的异常向量地址为 ___【17】____。Timer0部件所产生的0.01秒基准时间到时将引起IRQ异常。由于IRQ异常向量地址与下一个异常向量地址之间间隔为 ___【18】____个字节,因此,通常在IRQ异常向量地址处设计一条转移指令。堆栈指针的设置需按工作模式来进行。设置IRQ模式下的堆栈指针,需在R0\清0\后用指令ORRR1,R0,#0x12| ___【19】____和MSR CPSR_CXSF,R1来使CPU核进入IRQ模式,然后再给SP寄存器赋值作为该模式下的堆栈指针。这些初始化工作完成后,即可通过指令 ___【20】____来引导应用程序的主函数main()。
说明:下面是试题解答时需要用到的寄存器格式及相关说明。 1) 端口C的控制寄存器(GPCCON)
引脚 GPC15 GPC14 GPC13 GPC12 GPC11 GPC10 GPC9 GPC8 GPC7 GPC6 GPC5 GPC4 GPC3 GPC2 GPC1 GPC0 GPCCON的位 [31:30] [29:28] [27:26] [25:24] [23:22] [21:20] [19:18] [17:16] [15:14] [13:12] [11:10] [9:8] [7:6] [5:4] [3:2] [1:0] 描述 00=输入,01=输出,10=VD7,11=保留 00=输入,01=输出,10= VD6,11=保留 00=输入,01=输出,10= VD5,11=保留 00=输入,01=输出,10= VD4,11=保留 00=输入,01=输出,10= VD3,11=保留 00=输入,01=输出,10= VD2,11=保留 00=输入,01=输出,10= VD1,11=保留 00=输入,01=输出,10= VD0,11=保留 00=输入,01=输出,10=LCDVF2,11=保留 00=输入,01=输出,10= LCDVF1,11=保留 00=输入,01=输出,10=LCDVF0,11=保留 00=输入,01=输出,10=VM,11=IIS数据输出 00=输入,01=输出,10=VFRAME,11= IIS数据输入 00=输入,01=输出,10=VLINE,11=保留 00=输入,01=输出,10=VCLK,11=保留 00=输入,01=输出,10=LEND,11=保留 2) 端口D的控制寄存器(GPDCON)
引脚 GPD15 GPD14 GPD13 GPD12 GPD11 GPD10 GPD9 GPD8 GPD7 GPD6 GPD5 GPD4 GPD3 GPD2 GPD1 GPD0
引脚 GPE15 GPE14 GPE13 GPE12 GPE11 GPE10 GPE9 GPE8 GPE7 GPE6 GPE5 GPE4 GPE3 GPE2 GPE1 GPE0
引脚 GPH10 GPHCON的位 [21:20] 描述 00=输入,01=输出,10=CLKOUT1,11=保留 GPECON的位 [31:30] [29:28] [27:26] [25:24] [23:22] [21:20] [19:18] [17:16] [15:14] [13:12] [11:10] [9:8] [7:6] [5:4] [3:2] [1:0] 描述 00=输入,01=输出,10=IICSDA,11=保留 00=输入,01=输出,10=IICSCL,11=保留 00=输入,01=输出,10=SPICLK0,11=保留 00=输入,01=输出,10=SPIMOSI0,11=保留 00=输入,01=输出,10=SPIMISO0,11=保留 00=输入,01=输出,10=SSDAT3,11=保留 00=输入,01=输出,10=SSDAT2,11=保留 00=输入,01=输出,10=SSDAT1,11=保留 00=输入,01=输出,10=SSDAT0,11=保留 00=输入,01=输出,10=SDCMD,11=保留 00=输入,01=输出,10=SDLCK,11=保留 00=输入,01=输出,10=IISSDO,11=IIS数据输出 00=输入,01=输出,10=IISSI,11= IIS数据输入 00=输入,01=输出,10=CDCLK,11=保留 00=输入,01=输出,10=IISCLK,11=保留 00=输入,01=输出,10=IISLRCK,11=保留 GPDCON的位 [31:30] [29:28] [27:26] [25:24] [23:22] [21:20] [19:18] [17:16] [15:14] [13:12] [11:10] [9:8] [7:6] [5:4] [3:2] [1:0] 描述 00=输入,01=输出,10=VD23,11=保留 00=输入,01=输出,10= VD22,11=保留 00=输入,01=输出,10= VD21,11=保留 00=输入,01=输出,10= VD20,11=保留 00=输入,01=输出,10= VD19,11=保留 00=输入,01=输出,10= VD18,11=保留 00=输入,01=输出,10= VD17,11=保留 00=输入,01=输出,10= VD16,11=保留 00=输入,01=输出,10= VD15,11=保留 00=输入,01=输出,10= VD14,11=保留 00=输入,01=输出,10= VD13,11=保留 00=输入,01=输出,10= VD12,11=保留 00=输入,01=输出,10= VD11,11= 保留 00=输入,01=输出,10= VD10,11=保留 00=输入,01=输出,10= VD9,11=保留 00=输入,01=输出,10= VD8,11=保留 3) 端口E的控制寄存器(GPECON)
4) 端口H的控制寄存器(GPHCON)
GPH9 GPH8 GPH7 GPH6 GPH5 GPH4 GPH3 GPH2 GPH1 GPH0
[19:18] [17:16] [15:14] [13:12] [11:10] [9:8] [7:6] [5:4] [3:2] [1:0] 00=输入,01=输出,10= CLKOUT0,11=保留 00=输入,01=输出,10=UEXTCLK,11=保留 00=输入,01=输出,10=RXD2,11=保留 00=输入,01=输出,10=TXD2,11=保留 00=输入,01=输出,10=RXD1,11=保留 00=输入,01=输出,10=TXD1,11=IIS数据输出 00=输入,01=输出,10=RXD0,11= IIS数据输入 00=输入,01=输出,10=TXD0,11=保留 00=输入,01=输出,10=nRTS0,11=保留 00=输入,01=输出,10=nCTS0,11=保留 5) UART线路控制寄存器(ULCONn n可以是0、1、2)
ULCONn的位 描述 [7] 为0 [6] [5:3] [2] [1] 保留 值确定红外模式 确定校验类型 确定停止位数 确定数据位 000=正常操作模0xx=无校验 式 1=正常操作模式 101=偶校验
0=1位停止位 =5位01=6位 位
100=奇校验 1=2位停止位 10=7位11=8
6) TCFG0寄存器
TCFG0的位 [31:24] [23:16] [15:8] [7:0] 7) TCFG1寄存器
TCFG1的位 [31:24] [23:20] [19:16]
功能描述 保留 在此不用 确定Timer2,Timer3,Timer4的预分频系数 确定Timer0,Timer1的预分频系数 初始状态值 0x00 0x00 0x00 0x00 功能描述 保留 在此不用 初始状态值 0x00 0b0000 确定Timer4的分频器值 0000=2 0001=4 0010=8 0b0000 0011=16 确定Timer3的分频器值 0000=2 0001=4 0010=8 0b0000 0011=16 确定Timer2的分频器值 0000=2 0001=4 0010=8 0b0000 0011=16 确定Timer1的分频器值 0000=2 0001=4 0010=8 0b0000 0011=16 确定Timer0的分频器值 0000=2 0001=4 0010=8 0b0000 0011=16 [15:12] [11:8] [7:4] [3:0] 说明:设置TCFG0、TCFG1可以确定预分频器系数、分频器值,如:通过设置TCFG0为0x0000001F,Timer0的预分频器系数选择为31,设置TCFG1为0x00000001,Timer0的分频器值选择为4。通过下面公式计算定时器的计数常数: