嵌入式 Linux平台 C程序 交叉编译技术

嵌入式 Linux平台 C程序 交叉编译技术,第1张

概述嵌入式 Linux平台 C程序 交叉编译技术 嵌入式linux平台C程序交叉编译技术 一、实验目的和任务 本实验要求复习和掌握linux平台的C程序开发过程。本实验要求掌握嵌入式开发板的 *** 作方法。本实验要求掌握linux平台交叉编译方法和程序运行方法。二、实验设备介绍

B703实验室是一个综合的硬件开发实验室,基于本门课程主要用到的配置环境如下:
1.软件环境: win7 *** 作系统,VMware workstation,ubuntu12 [配置交叉编译环境]。
2.硬件环境: PC主机与smart210开发板;

三、实验内容和步骤 3.1 Smart210开发板的基本介绍和使用

由于博创开发板历经时久,多数已有功能损坏,使用新版linux开发板,其核心板是Smart210,使用串口线将PC机与703开发板连接,开发板是arm cpu,PC机则是intel cpu。 *** 作开发板最重要的方法就是连接到开发板的串口,串口提供一个超级管理员命令窗口,还支持文件传输。开发板具有丰富的外接接口,PC机通过外接接口控制开发板,传输数据(程序或文件)最常用的是通过串口和网口,如果要使用WiFi需要配备专门的wifi模块。选择串口连接方式首先准备一条质量良好的usb2serial线(质量不好的串口线会浪费很多时间),一端连到PC(win10),一端连接到开发板的COM0口,使用XShell软件连接开发板连接,查看PC机端串口编号为COM5。




如果PC主机只有USB接口没有串口接口,可以用USB转串口的线(9口)连接到开发板的COM口,还有一种4针的usb转ttl的转接方式,与开发板上有对应的(vcc 5v,gnd,TX,RX)针脚相连。
B703PC机的win7使用Xshell软件连接串口,使用菜单:file->New。在对话框中设置连接的名称,协议要选SERIAL,选择SERIAL节点,请使用com2口[指PC主机端],并且波特率设为115200,开发板请接com0。如果能够看到root@FrIEndlyARM提示符,表示已经可以通过串口 *** 作开发板,可以在这个窗口执行命令,还可以传输文件。



如果线路成功连接到开发板,打开开发板开关,则显示开发板系统启动信息。如果连接不成功,可能连接线断了,换另一条线,B703主机短的是COM1口,长的是COM2口。开发板固定是COM0不变。按下回车后,有root@FrIEndlyARM提示符则表示串口连接成功。



如果smart210开发板如下图没有显示图形化菜单界面,其实机器是正常运行的,机器没有问题。


开发板启动后是显示学校图标还是显示QT菜单界面的区别,在/etc/init.d/rcS文件中设定了一条指令,该指令内容如下
bin/qtoptia &
这行命令实际是要求开发板运行一个qt程序用来显示一个丰富的菜单。
通过命令行进入开发板上的etc/init.d目录,编辑rcs文件(vi ./rcs)。找到这行代码,在前面加个#将它注释掉,就显示学校图标。保留该行则开机显示qt的菜单界面。


在rcS文件中有一行指令,bin/qtopia & 它显示一个qt界面的菜单,行前加#则只显示学校图标。

3.2 交叉编译工具arm-linux-gcc介绍

在PC平台的ubuntu系统中运行gcc –v命令,编译的目标是x86_64的应用程序。


在arm平台(树莓派)运行gcc –v命令,编译的目标是arm-linux的应用程序。


在不同平台生成的目标文件格式是不同的,file命令可查看可执行文件的平台信息。bg 是在pc平台编译生成的,而bg_rp则是在arm平台生成的(树莓派)。


在pc平台无法运行arm平台的可执行文件。


一般的嵌入式开发板由于硬件性能弱,直接编译二进制很艰难,借助PC来编译则容易一些。交叉编译工具arm-linux-gcc是一个在pc平台运行的编译工具,它将源码编译生成的是在arm平台运行的程序。由于 arm-linux-gcc工具依赖的运行库过多,而PC机,嵌入式板,GCC工具的版本的组合可能太多,交叉编译平台的搭建是相当繁琐和耗时的,因此下述的过程仅作为参考,不建议轻易尝试。

3.3 Smart210开发板的交叉编译程序

打开虚拟机进入ubuntu12系统,ubuntu系统中的arm-linux-gcc版本较新,可以在新开发板上运行。


//011.c 第一个交叉编译源程序

#include <stdio.h>int main(voID){printf("Hello from smart210.n");}

调整xshell的显示样式。

在机器间传输文件的方法有:SD卡,U盘,通过串口线结合rz命令从pc传到开发板,这几个方法都无需网络支持,还有ftp命令,nfs协议,samba协议,在使用这些方法前必须配置好机器的IP地址,然后通过网络传输。
在xshell终端上使用rz命令将文件拷贝到开发板上,使用chmod命令添加执行属性。

@H_403_145@

3.5 Smart210开发板上的图片显示程序

将下面的程序在虚拟机ubuntu12上使用arm-linux-gcc进行编译。
//012.c 开发板显示图片

#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<unistd.h>#include<fcntl.h>voID *aplay_music(voID *arg)//子线程{        system("madplay NewdivIDe.mp3 -r");}int show_photo(char *number){	int fd_bmp;	int fd_lcd;	int i;	int lcd_buf[800*480];	char bmp_buf[800*480*3];	fd_bmp=open(number,O_RDWR);	if(fd_bmp==-1)	{		printf("open bmp Failed!n");		return -1;	}	lseek(fd_bmp,54,SEEK_SET);	read(fd_bmp,bmp_buf,800*480*3);	for(i=0;i<800*480;i++)	{//将位图字节信息加载到内存中		lcd_buf[i]=(bmp_buf[i*3+2]<<16)+(bmp_buf[i*3+1]<<8)+(bmp_buf[i*3]<<0);	}	close(fd_bmp);	//文件/dev/fb0控制屏幕上的每一点的颜色的文件,程序改变文件的内容,可实现在屏幕上画图了:-)	fd_lcd=open("/dev/fb0",O_RDWR);//打开linux frame buffer	if(fd_lcd==-1)	{		printf("open fb0 Failedn");		return -1;	}	write(fd_lcd,lcd_buf,800*480*4);	close(fd_lcd);	return 0;}int main(voID){	int i = 0;	char  bmp_name[5][10]={"1.bmp", "2.bmp", "3.bmp", "4.bmp", "5.bmp"};	pthread_t pthread1;	//pthread_create(&pthread1,NulL,aplay_music,NulL); 	for(i=0;i<100;i++) //主线程	{		show_photo(bmp_name[i%5]);		sleep(2); 	}	return 0; }

Smart210老师的开发板,虚拟机上的QT已经配置好了交叉编译环境。可以在虚拟机中使用交叉编译命令:arm-linux-gcc –o picshow picshow.c

使用xshell软件连接开发板,使用rz命令将图片和程序传到开发板上,
修改picshow文件属性,添加运行属性:chmod a+x picshow
运行程序即可看到屏幕交替显示图片。
在ubuntu12中使用交叉编译工具编译源程序。

在开发板上使用rz命令将showpic文件传输到开发板,并且将showpic程序添加执行属性。

结束程序是使用ctrl+c键盘组合。

程序运行效果如图,从中可看到图版是倒过来的,因为位图像素的坐标与屏幕的坐标不一致。

3.6 文件在Smart210开发板pc和虚拟机间的传输

在机器间传输文件的方法有:SD卡,U盘,通过串口线结合rz命令从pc传到开发板,这几个方法都无需网络支持,还有ftp命令,nfs协议,samba协议,在使用这些方法前必须配置好机器的IP地址,然后通过网络传输。
Win7与虚拟机ubuntu传输文件最简易的方法是进行文件拖放,但要求虚拟机正确安装vmware tools,如果无法拖放则需要重新安装vmware tools。
rz是一个开源程序,可从网络下载源码,经过交叉编译在开发板上运行。
samba是linux与常用的文件共享方式。

四、程序调试中遇到的问题和解决过程及运行结果

根据报告内容对指定程序进行调试,请首先排查程序出错的原因,最后得到正确的运行结果,并记录程序出错的代码及修正的内容,开发板的程序运行须拍照后放入实验报告中。

总结

以上是内存溢出为你收集整理的嵌入式 Linux平台 C程序 交叉编译技术全部内容,希望文章能够帮你解决嵌入式 Linux平台 C程序 交叉编译技术所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1013163.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)