陈老师:
您好,最近软件工作已经有很大进展(就需要运行的算法而言,可以说目前软件工作可以告一个段落了,就是阶段性完结了!!)。
软件主体工作:
1,完成了u-boot(相当于Windows的BIOS服务程序)所需的大量底层“硬件相关”的软件修正工作,显而易见,“BIOS服务”是Windows的底层,这部分代码屏蔽了所有的主板上的硬件,类似的u-boot也要屏蔽所有的我们板子上的硬件。
2,完成了Linux的移植,此环节是核心环节,因为Linux的底层也需要修改底层硬件相关的代码,例如驱动等等。这部分主要做的工作除了驱动之外,还有优化与裁剪Linux本身。比如禁用PCIe/SATA/音频(都是不需要的功能)等等,诸如此类有不少繁杂的细节。
3,在1和2都完成后,相当于我们的板子有了灵魂,但是他还不知道干什么!因此,本环节中,就是要告诉他干什么!
因为我们的DM8127(相当于低功耗版本的DM8148,这是Ti达芬奇系列中最高档次的CPU之一了,也是目前业界的“高大上产品”),有四个核心:
(A)ARM【Cortex-A8,1GHz】 (负责界面,IO,调度) 注:IO是指广义输入输出,包括所有的文件系统操作,如网络/PCIe/SATA等等
(B)DSP【C674x,浮点DSP@750MHz】 (负责算法,专门跑我们的算法!!!)
(C)ARM【Cortex-M3,480MHz】 (负责视频子系统,支持从低端到高端的所有视频前端处理,包括了从DVD级别到千万像素的MIPI级别)
(D)ARM【Cortex-M3,480MHz】 (负责视频编解码,其实也是个视频处理模块,只不过专门有硬件来负责H264,G.711等等音视频编解码方案)
这四个核心的调度是极其复杂的,然而Ti专门为之推出了一套称作
McFW的软件架构,这套架构设计很多的代码,其中最核心的功能性代码(
McFW的实现)都分布在DSP核心以及另外两个ARM(Cortex-M3)上。而Linux(运行于Cortex-A8)上则跑着调度型代码(
McFW的接口)
本环节中,就是移植McFW到我们的板子上,并利用它实现我们的需求。
目前实现的架构(在McFW中称之为“chain”,即“链”),如下所示:
Capture (采集) -------------》 NSF (滤噪)-------------》 DEI (去隔行) -------------》 Display (显示)
/| |
| |
| |
| |/
Algorithm Link @ DSP
其中,Algorithm Link @ DSP目前是一个空“Link”(McFW中,称一个核心上的任务或者线程为:Link),到时候就是要填我们的代码!!!
4,杂项。除了1,2,3之外。还有我们之前说的新功能:
WiFi/GPS/IMU(惯导)/IR(红外)/BTH(蓝牙)
这些功能看似繁杂,然而由于我在设计之初就将其设计成了串口(UART)模式,因此在软件上,他们拥有相同的模型,而在编程上,则更是简单,直接在Linux命令行上就可以清楚地看到这些UART外设的输入输出!!!
而在程序中实现与之交互就更简单了:利用标准的POSIX函数“open,write,read”当成一个文件一样去访问这些外设即可!!!
5,界面。界面向来是个复杂的问题。于此我只能说我可以将Qt移植到我们的板子上,且可以保证Qt运行时不会很占用资源,大部分的4核能力还是会用于跑算法。然而界面编程是另外的议题了~~~(从未在嵌入式器件上搞过)
目前,就完成了这些工作,目前的基础对于下一步的工作是很有利的。
另外,关于最近一段经费的总结如下:
已经消费:
焊接 + 制板:6600¥
摄像头: 一个58 ,我目前买了7个,共406¥
摄像头与IO连接线缆: 一个20,我目前买了1个,共20¥
计划消费:
摄像头: 一个58,还需要13个,共754
摄像头与IO连接线缆: 一个20,还需要4个,共80¥
总金额: 6600 + 406 + 20 + 754 + 80
= 7860¥
附录:
运行截图:
硬件平台工作截图: