1. Linux下编译嵌入式程序
2.程序加入到Hi3516运行
一、基础知识
1.编译的知识
2.gcc命令
二、如何编译
三、直接编译
把编译好的程序导入硬件运行
0相关信息
0.1 sepcamera是什么
0.2 YUV数据是什么
1.1连接设备
1.1.1连接实物
1.1.2串口通信
1.1.3设置本地IP
1.1.4设置本地摄像头
1.2编译SDK里面的程序
1.3通过/tftp传输/rom目录
1.4运行sepcam_ipc_demo
编译和链接,
首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile: .c-->.o)。然后再把大量的Object File合成执行文件,这个动作叫作链接(link: .o-->可执行文件)。
· 编译时,编译器需要的是语法的正确,函数与变量的声明的正确
· 链接时,主要是链接函数和全局变量,所以,我们可以使用这些中间目标文件(O文件或是OBJ文件)来链接我们的应用程序。链接器并不管函数所在的源文件,只管函数的中间目标文件(Object File),在大多数时候,由于源文件太多,编译生成的中间目标文件太多,而在链接时需要明显地指出中间目标文件名,这对于编译很不方便,所以,我们要给中间目标文件打个包,在Windows下这种包叫“库文件”(Library File),也就是 .lib 文件,在UNIX下,是Archive File,也就是 .a 文件。
问:实验室远程桌面是什么系统? 是linux吗?
较为麻烦的方法:Makefile里面这么编译文档:
arm-hisiv300-linux-gcc -c sepcam_ipc_demo.c -I. 注意:这里的-I需要加点,负I点点杠
官方:arm-hisiv300-linux-gcc -I./ -c -o sepcam_ipc_demo.o sepcam_ipc_demo.c
直接把程序拷贝到sep目录下面
输入make clean清空上次make的文档
输入make就直接make了
注意,需要把库文件挪到lib里面,把头文件挪到include里面
Make不同名字的文件:更改makefile里面的文件名字
Make 之后直接就能使用了
如何把编译好的程序写入硬件并运行。
应该是个传感器,可以得到YUV数据。3516位于摄像头里。
图像格式有两种:RGB(红绿蓝)、YUV(Y为亮度,U、V为色度)
直接把YUV格式的图像数据保存为bmp格式图片肯定是不行的,如果想要把YUV格式图像显示出来的话可以先把YUV数据转换成对应的RGB数据,近似变换公式。
见文件(3516D_HiIVE API 参考.pdf)
图中摄像头中有Hi3516芯片。
1.1.2串口通信:
在SecureCRTPortable里打开,(这个是串口通信所用)选择端口的时候需要在控制面板里面找到具体的com号
计算机-右键-属性-设备管理器-端口里面。本人DELL Inspiron17R笔记本左侧从上往下依次是COM 3 4 5
判断是否出问题直接敲回车,能敲下来就成功。
1.1.3设置本地IP:右键WIFI-打开网络和共享中心-以太网-属性-Internet协议版本4(TCP/IPv4)-属性
(附:IPv4与IPv6区别)
以上两步1.1.2与1.1.3第一次调试的时候需要,往后可能不再需要继续,出问题的时候再用。
1.1.4连接摄像头:
想看设备是否运行,媒体-打开捕获设备-网络
(相关知识,http与rtsp)
点击播放,会出现黑白的图像,表明网线正常了,图像会有一定的延迟
上传到服务器中,用make编译之后生成(如何用服务器编译程序另论)下面这个是已经编译好的程序
路径home/xing/hardware realization/sep中
注: 文件夹 hardware realization是资料和例程,Huawei SDK是编译程序,
代码:(这个程序是用摄像头把原始YUV的图像做成bmp,然后存起来或者传输出来)
· 启动tftp服务器并关闭防火墙(TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。)
并将sepcam_ipc_demo与TFTP服务器放在同一个目录里。并关闭防火墙。
注:
想要看当前目录 ls -l 看具体的信息。(ls -l 显示出的每一字段信息意思)
Rom是永久储存的,tmp和sys是临时的。
输入:
~ # cd /tmp/
/tmp # tftp -g -r sepcam_ipc_demo 192.168.1.2
(tftp命令的说明 说明 -g表明get,针对这个命令是针对板端而言 -r表示remote )
这样表示传输成功。
· 改变权限
chmod 777 sepcam_ipc_demo
注:777 代表 rwxr-rwx-rwx 所有用户都可读可写可执行。
运行sepcam_ipc_demo(./sepcam_ipc_demo),在当前目录下生成*.bmp就是抓取到的图片。
ctrl+c是强制中断程序的执行,再执行下面的tftp把图片传回来
tftp -p -r fd_0.bmp 192.168.1.2
注:-p 是put的缩写,上传文件时用
kill掉进程中占用cpu多的进程。
· Netsh命令(参考)
Netsh是一种命令行实用程序,可用来显示与修改当前正在运行的计算机的网络配置(如:IP地址、网关、DNS和MAC地址等)
· Linux常见命令(参考)
· Route命令
控制网络路由表。该命令只有在安装了 TCP/IP 协议后才可以使用