《嵌 入 式 系 统》
实验报告
姓名:
学号: 班级:
湖南工业大学
电气与信息工程学院
20##年5月
一、实验目的
1.初步学会使用ADS1.2开发环境及ARM软件模拟器;
2.通过实验掌握简单ARM汇编指令的使用方法。
二.实验设备
1.硬件:PC机;
2.软件:ADS1.2。Windows98/2000/NT/XP。
三.实验内容
1.熟悉开发环境的使用,并使用LDR/STR和MOV等指令访问寄存器或存储单元。
2.使用ADD/SUB/LSL/LSR/AND/ORR等指令,完成基本数学/逻辑运算。
四.实验原理
ARM处理器共有37个寄存器:31个通用寄存器,包括程序计数器(PC),这些寄存器都是32位;6个状态寄存器,这些寄存器也是32位,但只使用了其中的12位。
1.ARM通用寄存器
通用寄存器(R0~R15)可分为3类,即不分组寄存器R0~R7.分组寄存器R8~R14.程序计数器R15。
2. 存储器格式
ARM体系结构将存储器看作是从零地址开始的字节的线性组合。字节0~3存放第一个字,字节4~7存放第2个字,以此类推。
ARM体系结构可以用两种方法存储字数据,分别称为大端格式和小端格式。
3. GNU基础知识
Embest IDE集成了GNU汇编器as、编译器gcc和链接器ld。因此,编写程序要符合CNU的语法和规则。关于as.gcc和ld的具体使用,请参照Embest IDE所带的电子文档ProgRef.chm。
五实验程序
1. 实验A程序
area Int,code,readonly
entry
x equ 45;
y equ 64;
stack_top equ 0x1000;
global start
start
MOV sp, #stack_top
MOV r0, #x
STR r0, [sp]
MOV r0, #y
LDR r1, [sp]
ADD r0, r0, r1
STR r0, [sp]
stop
B stop
end
2. 实验B程序
area Int|,code,readonly
entry
x equ 45;
y equ 64;
z equ 87;
stack_top equ 0x1000;
global start
start
MOV r0, #x
MOV r0, r0, lsl #8
MOV r1, #y
ADD r2, r0, r1, lsr #1
MOV sp, #0x1000
STR r2, [sp]
MOV r0, #z
AND r0, r0, #0xFF
ADD r2, r0, r1, lsr #1
LDR r0, [sp]
MOV r1, #0x01
ORR r0, r0, r1
MOV r1, R2
ADD r2, r0, r1, lsr #1
stop
B stop
end
六.实验结果及分析
实验A:
这个程序实现了两数的相加。
实验B:
这个程序实现了基本的数学加法,逻辑或运算。
一、实验目的
1.熟悉ARM ADS 1.2 for ARM 开发环境及ARM软件模拟器的使用。
2.通过实验掌握使用LDM/STM、B、BL等指令完成较为复杂的存储区访问和分支程序的方法,学习使用条件码,加强对CPSR的认识。
二.实验设备
1.硬件:PC机;
2.软件:ADS1.2集成开发环境。Windows98/2000/NT/XP。
三.实验内容
设计并调试一个存储区数据块的传送程序,具体数据块的传送要求为:将数据从源数据区snum复制到目标数据区dnum,数据的个数num假定为20,复制时以8个字为单位进行,对于最后不足8个字的数据,以字为单位进行复制。
四.实验程序
Area Int,code,readonly
entry
global start
num equ 20;
start
LDR r0, =src
LDR r1, =dst
MOV r2, #num
MOV sp, #0x400
ublockcopy
MOVS r3,r2, LSR #3
BEQ copywords
STMFD sp!, {r4-r11}
octcopy
LDMIA r0!, {r4-r11}
STMIA r1!, {r4-r11}
SUBS r3, r3, #1
BNE octcopy
LDMFD sp!, {r4-r11}
copywords
ANDS r2, r2, #7
BEQ stop
wordcopy
LDR r3, [r0], #4
STR r3, [r1], #4
SUBS r2, r2, #1
BNE wordcopy
stop
B stop
src
dcd 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4
dst
dcd 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
end
五.实验结果及分析
这个程序实现了数据块的相互传送。
一、实验目的
1.阅读Embest S3CEV40启动代码,观察处理器启动过程。
2.学会使用Embest IDE辅助信息窗口来分析判断调试过程和结果
3.学会在Embest IDE环境中编写、编译与调试汇编和C语言相互调用的程序。
二、实验设备
1.硬件:PC机;
2.软件:ADS1.2集成开发环境。Windows98/2000/NT/XP。
三、实验内容
使用汇编完成一个随机数产生函数,通过C语言调用该函数,产生一系列随机数,存放到数组中。
四、实验原理
1.ARM过程调用ATPCS(ARM)
ATPCS是一系列规定应用程序之间相互调用的基本规则,包括:
l 支持数据栈限制检查;
l 支持只读段位置无关(ROPI);
l 支持可读/写段位置无关(RWPI);
l 支持ARM程序和Thumb程序的混合使用;
l 处理浮点运算。
使用以上规定的ATPCS规则是,应用程序必须遵守如下:
l 程序编写遵守ATPCS;
l 变量传递以中间寄存器和数据栈完成;
l 汇编器使用-apcs开关选项。
程序只要遵守ATPCS相应规则,就可以使用不同的源代码来编写程序。程序间的相互调用最主要的是解决参数传递问题。应用程序之间使用中间及数据栈来传递参数,其中,第1~4个参数使用R0~R3,多用4个参数数据栈进行传递。这样,接受参数的应用程序必须知道参数的个数。
但是,在应用程序被调用时,一般无从知道所传递参数的个数。用不同语言编写的应用程序在调用时可以自定义传递的约定。使用具有一定意义的形式来传递,可以很好地解决参数个数的问题。常用方法是把第1个或最后1个参数作为参数个数(包括个数本身)传递给应用程序。ATPCS中寄存器的相应关系如表3.1所列。
表3.1 ATPCS规则中寄存器列表
2.main( )与__gccmain( )函数
当应用程序中包含了main( )函数时,会引起对C运行时库的初始化。该初始化是通过函数__gccmain( )实现的,即在main( )函数入口处,编译器会首先调用__gccmain( )函数,然后才是执行编写的代码。__gccmain( )函数在GCC的标准库里实现。当应用程序中没有包含main( )函数时,不会引起对C运行时库的初始化。这时,C运行时库的很多功能在应用程序中是不能使用的。
如果使用main( )函数作为应用程序的主函数,那么可以在源代码中间加入一个空的__gccmain( )函数(用C语言或汇编语言即可)
五、实验操作步骤
1. 创建新的工程,工程名为explasm。
2. 按照参考程序,重新编写源代码文件,并分别保持为 randtest.c、init. s、random. s和ldscript,并把它们加入工程中。
3. 按照编译→汇编器设置→链接器设置→调试器设置来设置新工程,并编译、链接工程。
4.下载调试文件,打开Memrory/Register/Watch/Variable/Call Stack窗口,单步执行程序。通过以上窗口,跟踪程序运行,观察分析并记录运行结果,通过实验学会使用Embest IDE进行应用程序的开发与调试。
六、实验参考程序
1.randtest.c参考源代码
#include <stdio.h>
/* this function prototype is needed because 'randomnumber' is external */
extern unsigned int randomnumber( void );
int main()
{
int i;
int nTemp;
unsigned int random[10];
for( i = 0; i < 10; i++ )
{
nTemp = randomnumber();
random[i] = nTemp;
}
return( 0 );
}
2.init.s参考源代码
global _start
area qq,code,readonly
entry
_start
;# --- Setup interrupt / exception vectors
B Reset_Handler
Undefined_Handler
B Undefined_Handler
SWI_Handler
B SWI_Handler
Prefetch_Handler
B Prefetch_Handler
Abort_Handler
B Abort_Handler
NOP ;/* Reserved vector */
IRQ_Handler
B IRQ_Handler
FIQ_Handler
B FIQ_Handler
Reset_Handler
LDR sp, =0x00002000
;#------------------------------------------------------------------------------
;#- Branch on C code Main function (with interworking)
;#----------------------------------------------------
;#- Branch must be performed by an interworking call as either an ARM or Thumb
;#- main C function must be supported. This makes the code not position-
;#- independant. A Branch with link would generate errors
;#------------------------------------------------------------------------------
extern main
ldr r0, = main
mov lr, pc
bx r0
;#------------------------------------------------------------------------------
;#- Loop for ever
;#---------------
;#- End of application. Normally, never occur.
;#- Could jump on Software Reset ( B 0x0 ).
;#------------------------------------------------------------------------------
global __gccmain
__gccmain
mov pc, lr
end
3.random.s参考源代码
AREA |Random$$code|, CODE, READONLY
entry
GLOBAL randomnumber
randomnumber
;# on exit
;# a1 = low 32-bits of pseudo-random number
;# a2 = high bit (if you want to know it)
LDR ip, seedpointer
LDMIA ip, {a1, a2}
TST a2, a2, LSR#1 ; /* to bit into carry */
MOVS a3, a1, RRX ; /* 33-bit rotate right */
ADC a2, a2, a2 ; /* carry into LSB of a2 */
EOR a3, a3, a1, LSL#12 ; /* (involved!) */
EOR a1, a3, a3, LSR#20 ; /* (similarly involved!)*/
STMIA ip, {a1, a2}
MOV pc, lr
seedpointer
dcd seed
DATA
GLOBAL seed
seed
dcq 0x55555555
dcq 0x55555555
END
4.ldscript参考源代码
SECTIONS
{
. = 0x0;
.text : { *(.text) }
.data : { *(.data) }
.rodata : { *(.rodata) }
.bss : { *(.bss) }
}
实验结果
实验感想
有时候我们很怀疑实验存在的意义,可是谁又能预知明天会发生什么呢。所以只要虔心的去做每一件事,在未来的某一天总会发现它存在的意义。
安徽工业大学
电气信息学院
嵌入式系统及应用综合实验报告
Linux系统下TFTP 和QT下聊天程序设计
姓 名: 刘洪方
学 号: 109104069
专 业: 工商管理
年 级: 1
指导教师: 马小陆
20##年 6月 30 日
一、课程设计项目介绍(含项目介绍及设计目的)
(四号宋体,页数不够可另加,排版要工整规范,如每个大标题应位于页首等等,以下类同)
1.项目介绍:
TFTP:是一个服务器客户端网络程序,以提供简单文件共享服务器,支持下载,列出文件目录和上传文件功能。
QT:是一个简单的服务器客户端聊天程序,以提供简单的数据通信。
2、设计目的:
TFTP:是为提供一个可以为网络使用者提供文件共享简单的功能的使用。方便网络间文件的访问和使用。
QT:是一个支持双方简单聊天功能的程序。
两者都帮助我们锻炼理念知识和实践能力。
二、总体设计(含系统的总体结构、原理框图或各模块介绍等)
三、详细设计(含主要的数据结构、程序流程图、关键代码段及注释等)
(四号宋体,框图文字用小五宋体)
以下是各代码的解释,介绍,原理,流程图:
TFTP服务器:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <dirent.h>
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#define N 128
typedef struct sockaddr SA;
ProcessList过程:利用一个循环获得目录中所有的文件,并把文件名发送到客户端,最终把所有文件表发送到客户端。完成此列出文件目录功能
void ProcessList(int connfd)
{
char buf[N];
DIR *mydir;
struct dirent *myitem;
mydir = opendir(".");
while ((myitem = readdir(mydir)) != NULL)
{
if ((strcmp(myitem->d_name, ".") == 0) || (strcmp(myitem->d_name, "..") == 0)) continue;
strcpy(buf, myitem->d_name);
send(connfd, buf, N, 0);
}
closedir(mydir);
return;
}
ProcessGet过程:首先打开需要下载的客户端发来命令中的文件名文件,然后如果打开成功则向客户端发送Y,客户端准备接收,然后服务器以128为单位读取数据,发送数据,最终把一个文件所有内容发送给客户端。完成下载功能。
void ProcessGet(int connfd, char buf[])
{
int fd, nbyte;
if ((fd = open(buf+1, O_RDONLY)) < 0)
{
fprintf(stderr, "fail to open %s : %s\n", buf+1, strerror(errno));
buf[0] = 'N';
send(connfd, buf, N, 0);
return;
}
buf[0] = 'Y';
send(connfd, buf, N, 0);
while ((nbyte = read(fd, buf, N)) > 0)
{
send(connfd, buf, nbyte, 0);
}
close(fd);
return;
}
ProcessPut过程:首先创建客户端发来命令中的文件名文件,然后如果打开成功则向客户端发送Y,客户端准备发送,客户端以128为单位读取数据,发送数据,每发送一段,服务器写入这部分内容,最终把一个文件所有内容发送给服务器。完成上传功能。
void ProcessPut(int connfd, char buf[])
{
int fd, nbyte;
if ((fd = open(buf+1, O_WRONLY|O_CREAT|O_TRUNC, 0666)) < 0)
{
printf("fail to create %s on server\n", buf+1);
return;
}
while ((nbyte = recv(connfd, buf, N, 0)) > 0)
{
write(fd, buf, nbyte);
}
close(fd);
return;
}
Main过程:首先初始化所有网络参数等待客户端的连接,然后以一个循环来接收客户端发来的命令首字符,并跟据这个来执行对应的操作。
int main(int argc, char *argv[])
{
int listenfd, connfd;
char buf[N];
struct sockaddr_in server_addr;
// XXX:step 1 int socket(int domain, int type, int protocol);
if ((listenfd = socket(PF_INET, SOCK_STREAM, 0)) < 0)
{
fprintf(stderr, "fail to socket : %s\n", strerror(errno));
exit(-1);
}
#ifdef _DEBUG_
printf("socket is %d\n", listenfd);
#endif
// XXX:step 2 int bind(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = PF_INET;
server_addr.sin_port = htons(8888);
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind(listenfd, (SA *)&server_addr, sizeof(server_addr)) < 0)
{
perror("fail to bind");
exit(-1);
}
listen(listenfd, 5);
while ( 1 )
{
if ((connfd = accept(listenfd, NULL, NULL)) < 0)
{
perror("fail to accept");
break;
}
recv(connfd, buf, N, 0);
switch (buf[0])
{
case 'L' :
ProcessList(connfd);
break;
case 'G' :
ProcessGet(connfd, buf);
break;
case 'P' :
ProcessPut(connfd, buf);
break;
}
close(connfd);
}
return 0;
}
TFTP客户端:
TFTP客户端:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#define N 128
typedef struct sockaddr SA;
Printhelp过程:打印所有的操作帮助。
void PrintHelp()
{
printf("help : display help info\n");
printf("list : get file list of server\n");
printf("get : get <file>\n");
printf("put : put <file>\n");
printf("quit : quit the client\n");
return;
}
ProcessList过程:首先利用配置好的网络参数连接服务器,然后向服务器发送“L”命令,最后利用一个循环接收目录中所有的文件名,并打印文件名,最终把所有文件表发送到客户端。完成此列出文件目录功能
void ProcessList(struct sockaddr_in server_addr)
{
int sockfd, nbyte;
char buf[N];
if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) < 0)
{
printf("fail to list\n");
return;
}
if (connect(sockfd, (SA *)&server_addr, sizeof(server_addr)) < 0)
{
printf("fail to connect server\n");
goto ERROR_1;
}
strcpy(buf, "L");
send(sockfd, buf, N, 0);
while ((nbyte = recv(sockfd, buf, N, 0)) != 0)
{
printf("%s\n", buf);
}
ERROR_1:
close(sockfd);
return;
}
ProcessGet过程:首先利用配置好的网络参数连接服务器,然后向服务器发送“G”命令并附上需要处理的文件名,创建需要下载的命令中的文件名文件,客户端准备接收,然后服务器以128为单位读取数据,写入数据,最终把一个文件所有内容接收到客户端。完成下载功能。
void ProcessGet(struct sockaddr_in server_addr, char command[])
{
int sockfd, nbyte, fd;
char buf[N];
if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) < 0)
{
printf("fail to get\n");
return;
}
if (connect(sockfd, (SA *)&server_addr, sizeof(server_addr)) < 0)
{
printf("fail to connect server\n");
goto ERROR_2;
}
sprintf(buf, "G%s", command+4);
send(sockfd, buf, N, 0);
recv(sockfd, buf, N, 0);
if (buf[0] == 'N') // no such file
{
printf("No such file on server\n");
goto ERROR_2;
}
if ((fd = open(command+4, O_WRONLY|O_CREAT|O_TRUNC, 0666)) < 0)
{
printf("fail to create local file %s\n", command+4);
goto ERROR_2;
}
while ((nbyte = recv(sockfd, buf, N, 0)) > 0)
{
write(fd, buf, nbyte);
}
close(fd);
ERROR_2:
close(sockfd);
return;
}
ProcessGet过程:首先利用配置好的网络参数连接服务器,然后向服务器发送“P”命令并附上需要处理的文件名,打开需要上传的命令中的文件名文件,客户端准备发送,然后服务器以128为单位读取数据,发送数据,最终把一个文件所有内容发送到服务器上。完成上传功能。
void ProcessPut(struct sockaddr_in server_addr, char command[])
{
int sockfd, fd, nbyte;
char buf[N];
if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) < 0)
{
printf("fail to get\n");
return;
}
if (connect(sockfd, (SA *)&server_addr, sizeof(server_addr)) < 0)
{
printf("fail to connect server\n");
goto ERROR_3;
}
if ((fd = open(command+4, O_RDONLY)) < 0)
{
printf("fail to open %s\n", command+4);
goto ERROR_3;
}
sprintf(buf, "P%s", command+4);
send(sockfd, buf, N, 0);
while ((nbyte = read(fd, buf, N)) > 0)
{
send(sockfd, buf, nbyte, 0);
}
close(fd);
ERROR_3:
close(sockfd);
return;
}
Main过程:首先初始化所有网络连接参数等待过程的使用,然后以一个循环来接收键盘的命令前四个字符,并跟据这个来执行对应的操作。并把键入的字符为参数传给过程函数。
int main(int argc, char *argv[])
{
int sockfd, fd, nbyte;
char command[32];
struct sockaddr_in server_addr;
if (argc < 3)
{
printf("Usage : %s <server_ip> : <port>\n", argv[0]);
exit(-1);
}
// XXX:step 1 int socket(int domain, int type, int protocol);
if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) < 0)
{
fprintf(stderr, "fail to socket : %s\n", strerror(errno));
exit(-1);
}
#ifdef _DEBUG_
printf("socket is %d\n", sockfd);
#endif
// XXX:step 2 int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = PF_INET;
server_addr.sin_port = htons(atoi(argv[2]));
server_addr.sin_addr.s_addr = inet_addr(argv[1]);
//server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
while ( 1 )
{
printf("<client> ");
fgets(command, 32, stdin);
command[strlen(command)-1] = '\0'; // overwrite the '\n'
if (strcmp(command, "help") == 0)
{
PrintHelp();
}
else if (strcmp(command, "list") == 0)
{
ProcessList(server_addr);
}
else if (strncmp(command, "get ", 4) == 0)
{
ProcessGet(server_addr, command);
}
else if (strncmp(command, "put ", 4) == 0)
{
ProcessPut(server_addr, command);
}
else if (strcmp(command, "quit") == 0)
{
printf("Bye\n");
break;
}
else
{
printf("wrong command, 'help' for command list\n");
}
}
return 0;
}
QT服务器:
on_pushButton_clicked过程:当pushButton按下去时,则启动服务器初始化网络并监听,等待客户端连接。
void Dialog::on_pushButton_clicked()
{
server = new Server(port);
connect(server,SIGNAL(updateServer(QString,int)),this,SLOT(Process_updateServer(QString,int)));
ui->pushButton->setEnabled(false);
}
Process_updateServer过程:当接收到客户端发来的数据时,则把它显示在listWidget中。
void Dialog::Process_updateServer(QString msg,int length)
{
ui->listWidget->addItem(msg.left(length));
}
QT客户端:
on_EnterChatRoomBtn_clicked过程:当EnterChatRoomBtn按下去时,则启动服务器连接参数初始化并连接SeverIP_lineEdit指的服务器。
void Dialog::on_EnterChatRoomBtn_clicked()
{
if(!status)
{
QString ip= ui->SeverIP_lineEdit->text();
if(!serverIP->setAddress(ip))
{
QMessageBox::information(this,"error","server IP address error!");
return;
}
if(ui->User_lineEdit->text()=="")
{
QMessageBox::information(this,"error","user Name error!");
return;
}
userName=ui->User_lineEdit->text();
tcpSocket->connectToHost(ui->SeverIP_lineEdit->text(),port);
//tcpSocket->connectToHost(*serverIP,port);
//tcpSocket->connectToHost(QHostAddress::LocalHost,port);
if (tcpSocket->waitForConnected(1000))
qDebug("Connected!");
status=true;
}
else
{
int length=0;
QString msg=userName+":Leave Chat Room!";
if((length=tcpSocket->write(msg.toLatin1(),msg.length())) != msg.length())
{
return;
}
tcpSocket->disconnectFromHost();
status=false;
}
}
process_connected过程:连接成功时,则发送“enter chat room”并附上用户名发送到服务器。
void Dialog::process_connected()
{
QMessageBox::information(this,"error","eeeeeeeeeeeeeeeee!");
ui->sendBtn->setEnabled(true);
ui->EnterChatRoomBtn->setText("leave");
int length=0;
QString msg=userName+"enter chat room!";
if((length=tcpSocket->write(msg.toLatin1(),msg.length())) != msg.length())
{
return;
}
}
slotdisconnected过程:取消连接,使sendBtn有效
void Dialog::slotdisconnected()
{
ui->sendBtn->setEnabled(false);
ui->EnterChatRoomBtn->setText("EnterChatRoom");
}
dataReceived过程:当服务器数据来到时,把数据加入到Client_listWidget内。
void Dialog::dataReceived()
{
while(tcpSocket->bytesAvailable()>0)
{
QByteArray datadram;
datadram.resize(tcpSocket->bytesAvailable());
// QHostAddress sender;
tcpSocket->read(datadram.data(),datadram.size());
QString msg=datadram.data();
ui->Client_listWidget->addItem(msg.left(datadram.size()));
}
}
on_sendBtn_clicked过程:当按下sendBtn时,则把Send_lineEdit内容并附上用户名发送到服务器上,最后清空Send_lineEdit。
void Dialog::on_sendBtn_clicked()
{
int length;
if(ui->Send_lineEdit->text()=="")
{
QMessageBox::information(this,"error","send information error!");
return;
}
QString msg=userName+":"+ui->Send_lineEdit->text();
if((length=tcpSocket->write(msg.toLatin1(),msg.length())) != msg.length())
{
return;
}
ui->Send_lineEdit->clear();
}
四、运行结果(含运行及测试结果和用户使用说明书)
(四号宋体)
五、课程设计小结与心得体会(不小于300字)
(四号宋体)
经过这个实践我获得了很多东西
我学习了在书本上没有学习到的很多实际问题解决办法,也增加了自己在实践上的经验,为以后的开发和设计奠定一些基础。
在实践过程中我也遇到过很多的问题,但是我学会了自己动手动脑去发现发开拓知识,和同学一同讨论学习,大家互相进步。
也增加了自己的信心,坚信自已以后遇到什么问题都要努力去发展问题的关键所在,自己动手动脑去解决问题。
最后,在这个实践中我学会了和其他人合作的重要性,一个人的能力总是有限的,如果大家可以互相合作,就可以提高效率也可以增强一个团体的整体实力.
在以后的实践中我一定会更加的积极的去参于其中,和其他人相互合作,努力发现自己的不足,不断的发展自己的能力,提高自己的实际能力,进而在将来的工作中更好的适应公司要求和工作的任务!
六、成绩评定
郑州航空工业管理学院嵌入式系统实验报告修订版20第赵成张克新编著院姓专学系名业号电子通信工程系20xx年3月制实验一ARM体系结构…
嵌入式系统设计实验报告班级学号姓名成绩指导教师1实验一11实验名称博创UP3000实验台基本结构及使用方法12实验目的1学习嵌入式…
实验报告20xx20xx学年第二学期课程名称ARM嵌入式系统原理与开发实验名称嵌入式Linux交叉开发环境建立与程序开发实验时间指…
嵌入式系统设计实验报告班级学号姓名成绩指导教师20xx061420xx061411刘群峰赵国冬孟昭林1实验一11实验名称博创UP3…
嵌入式系统实验报告学院测量与通信工程学院专业信号与信息处理学生姓名姜元学号1320xx0050指导教师董静薇一实验目的了解Boot…
《嵌入式系统》实验报告姓名:学号:班级:湖南工业大学电气与信息工程学院20xx年x月实验一ARM汇编指令实验1一、实验目的1.初步…
学习嵌入式系统心得说实在话在没有学习之前,以及在学之前通过一些口中得知这是一门很不错,很有意思的一门课。而且目前是十分吃香的一门课…
重庆航天职业技术学院课程作业课程名称嵌入式系统专选班级学号姓名成绩前言嵌入式系统是基于单片机的一种升级版它是以应用为中心以计算机技…
嵌入式系统原理实验总结报告车辆座椅控制系统实验20xx523嵌入式系统原理实验总结报告一技术性总结报告一题目车辆座椅控制系统实验二…
嵌入式系统设计实验报告班级学号姓名成绩指导教师1实验一11实验名称博创UP3000实验台基本结构及使用方法12实验目的1学习嵌入式…
嵌入式实训总结20xx年x月我参加了学校安排的课题实训,基地在北京,学院安排我们集体坐火车一同前去,浩浩荡荡的队伍开始出发了。刚来…