嵌入式:编译程序并传至Hi3516运行

2017.5.25

任务

1. Linux下编译嵌入式程序

2.程序加入到Hi3516运行

内容:

一、基础知识

1.编译的知识

2.gcc命令

二、如何编译

三、直接编译


把编译好的程序导入硬件运行

0相关信息

0.1 sepcamera是什么

扫描二维码关注公众号,回复: 1784890 查看本文章

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


一、基础知识:

1.编译的知识

编译和链接

    首先要把源文件编译成中间代码文件,在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吗?

2.gcc命令?

 

二、如何编译?

较为麻烦的方法: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 之后直接就能使用了

 

任务:

如何把编译好的程序写入硬件并运行。

0.相关信息:

0.1  Sepcamera是什么?

应该是个传感器,可以得到YUV数据。3516位于摄像头里。

0.2  YUV数据是什么?(参考

图像格式有两种:RGB(红绿蓝)、YUVY为亮度,UV为色度)

直接把YUV格式的图像数据保存为bmp格式图片肯定是不行的,如果想要把YUV格式图像显示出来的话可以先把YUV数据转换成对应的RGB数据,近似变换公式。

见文件(3516D_HiIVE API 参考.pdf

 

1.1、连接设备

1.1.1连接实物:

 

图中摄像头中有Hi3516芯片。

1.1.2串口通信:

SecureCRTPortable里打开,(这个是串口通信所用)选择端口的时候需要在控制面板里面找到具体的com号

计算机-右键-属性-设备管理器-端口里面。本人DELL Inspiron17R笔记本左侧从上往下依次是COM 3 4 5

判断是否出问题直接敲回车,能敲下来就成功。

 

 1.1.3设置本地IP右键WIFI-打开网络和共享中心-以太网-属性-Internet协议版本4TCP/IPv4-属性

(附:IPv4IPv6区别)

 

 

以上两步1.1.2与1.1.3第一次调试的时候需要,往后可能不再需要继续,出问题的时候再用。

  1.1.4连接摄像头: 

使用工具:

想看设备是否运行,媒体-打开捕获设备-网络

(相关知识,http与rtsp

 点击播放,会出现黑白的图像,表明网线正常了,图像会有一定的延迟

1.2、编译SDK里面的程序(另论)

上传到服务器中,用make编译之后生成(如何用服务器编译程序另论)下面这个是已经编译好的程序

路径home/xing/hardware realization/sep

注: 文件夹  hardware realization是资料和例程,Huawei SDK是编译程序,

代码:(这个程序是用摄像头把原始YUV的图像做成bmp,然后存起来或者传输出来)

1.3、通过tftp传输到/rom目录

· 启动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

 

这样表示传输成功。

 

1.4、运行sepcam_ipc_demo

· 改变权限

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的缩写,上传文件时用

 

#、问题:

1、进入不了系统

2、出现问题:只能接受三张

3、sepcam_ipc_init FAIL

4、内存分配错误

kill掉进程中占用cpu多的进程。


附录知识:

· Netsh命令参考

Netsh是一种命令行实用程序,可用来显示与修改当前正在运行的计算机的网络配置(如:IP地址、网关、DNSMAC地址等)

· Linux常见命令参考

· Route命令

控制网络路由表。该命令只有在安装了 TCP/IP 协议后才可以使用

猜你喜欢

转载自blog.csdn.net/weixin_36474809/article/details/80832631