在上周的报告(https://bbs.eeworld.com.cn/thread-1179439-1-1.html)报告中,已经将板卡连接到网络,并进行了简单的性能测试,在本周,进一步熟悉本板卡。
在传统的教材中,系统硬件运算器、控制器、存储器、输入设备和输出设备五大功能部分组成,现在一个CPU就能够实现运算和控制功能,存储由外部的TF卡和板载的DRAM构成,输入输出则通过网络、GPIO、按键、SPI屏、扬声器、摄像头等实现。
基于Linux万物即文件的思路,我们查看/dev:
在这里,除了aipu外,其它的都看起来比较眼熟,比如tty、fb0、video等等。
- 终端
tty表示各种类型的终端设备,可以使用命令“ps -ax”查看进程与哪个控制终端相连,缺省tty是当前使用的终端,可以看到本系统中,使用了ttys0和tty1。
使用tty命令,可以看到本串口(usb)所用的tty为ttys0。
推测执行了/sbin/agetty的tty1是控制240*240显示屏输出。尝试在串口输入“echo test>/dev/tty1”,果然可以在显示屏上打印出名为”test”的字符串。
系统缺省开启了sshd功能,尝试在电脑中开启一个ssh终端登录,并使用tty命令,可以看到它是/dev/pts/0,同时ps -ax中的信息也增加了对应终端。
- Framebuffer
Fb是framebuffer的缩写,一般来说可以将缓存直接写入fb0,使其在屏幕上显示,在这里的显示屏应该指的是240*240的屏,为了验证猜测,使用fbset查看:
与猜测的结果相符合。
进一步验证:
输入命令cp /dev/fb0 tmp,把当前屏幕内容拷贝到名为tmp的文件中。
再随便向tty1写一点什么,比如ifconfig > /dev/tty1。
再把tmp文件打印到fb0中,cat tmp > /dev/fb0
tmp文件大小115,200 字节(240*240*2),因为一个像素只占2字节,所以推测buffer是只支持RGB565或者RGB555(事实上我也尝试过向fb0写入RGB888文件,会提示大了)。
(上传自己编写一个转换图片和fb的小程序)
可以看到,从framebuffer转成的RGB88图片颜色似乎不太对。
为祖国庆生,传一张图片吧。
- 摄像头
系统中有video0和video1,不确定哪个是板上的摄像头,可以尝试使用cv2读取信息。
可以看到video0是实际存在的,而video1无法打开。
查看一下摄像头的相关信息,我们知道在cv2中
可以通过print(stream0.get(i))来获取摄像头相关属性,例如:
可以看到这个摄像头缺省是640*480,25帧,当前亮度、色调、图像增益都为0,对比度40,饱和度96,曝光157,清晰度3.0,色温4600。
尝试拍一张照片
摄像头拍出的图片效果:
手机拍摄的同样图片效果:
差别似乎还是有点大啊。
下面是使用ffmpeg将摄像头内容推送到/dev/fb0上的命令。
ffmpeg -i /dev/video0 -vframes 1 -s 240*240 -pix_fmt rgb565le -vf transpose=2,transpose=2 -f fbdev /dev/fb0
- TF卡(/dev/mmcblk0)
TF卡没什么好说的,就是比较普通的闪迪8G(C4)
可以用自带命令测试一下读写速度。
可以看到这块tf卡,写文件速度7.3MB/s,读文件速度22.1MB/s。和hdparm测试结果基本类似。
|