第三十六篇:IC公司软件工程师的重要性

最近, 由于项目合作关系,结识了某软件公司的CEO, 和他交流过程中,聊到一个话题, 那就是现在IC(集成电路)公司的硬件工程师与软件工程师的配备比例,他给出的一些大公司(如Q, B 等芯片fabless巨头)的数字是1比3, 从而得出结论:软件工程师的COST太大, IC公司应该转换思路, 将软件业务外包, 降低成本.

关于这个问题, 我没有明确的答案, 是应该外包, 还是不外包.

从几个角度去分析一下:

1. 核心技术角度: IC公司的软件工程师往往需要参与到芯片设计过程中, 虽然说现在SOC的设计对于这些IC巨头来讲,都已经越来越透明, 但涉及到关键核心技术, 相信所有的IC公司,都是不愿意让一个外包的软件公司参与进来的.

2. 工程师专业技术角度: IC公司的产品种类繁多, CPU/CORE, CONNECTIVITY, 音频, 视频, 模拟, 外包软件公司最多只能从软件层面去看待问题, 但要涉及到每个方面的较深入的问题, 不是凭只懂得软件, 不懂得底层系统知识的工程师能胜任的.

3. 软件层面的专业角度: 当前进入了移动互联时代, iOS, Android占居了主流, Windows 最近也在通过免费升级来推广Win 10. 都是OS, 但都是各自的编程模型, 对于底层软件工程师来讲, Windows 驱动架构渐渐从WDM迁移到了WDF, Linux也一直不断在更新版本.

同样, 无论是Windows 还是Linux, 其就包含了各种设备的框架, 如PCTV方面, Windows是 AVStream/BDA, Linux为 V4L/DVB, Graphic方面, Windows的从GDI到WDDM的演进更新, Linux的DRM/KMS;而且有些设备是需要综合各方面的知识的, 比如, Graphic除了Graphic还需要HDMI, DisplayPort, USB Audio需要USB, Audio, Linux ALSA等等.

相信还有其它因素, 导致IC公司软件外包的进程并不顺利.

但这并不是说外包并非没有市场, 从市场细分的角度, IC公司的软件外包服务, 往往其针对性较强, 只能专注于其中某一块业务.

最近从事的一个项目有这样一个过程:

该项目需要视频数据的传输

第一阶段: 只要视频数据有变化, 就将全帧的数据发送, 导致的问题是, 在高速LINK上, 是可以的, 但在低速LINK上, 就会出现, 不是在看视频, 而是在看图片变化

第二阶段: 针对于第一阶段低速LINK上的问题, 只发送数据变化的那一块区域的数据, 接收方在接收到变化区域的数据后, 再将其与前一帧相结合, 将所有的更新区域结合完后, 一方面送播放, 另一方面, 该结合好的结果, 需要作为下一次数据更新的前帧

第三阶段: 第二阶段接收方的变化区域与前帧结合, 以及为新的区域变化准备前帧, 都是通过CPU在处理, 响应速度不够理想, 改变成由DMA来处理

第四阶段: 即使使用了DMA, 还是会因为视频数据太大, 导致帧率会随着分辨率的不同, 及变化区域的不同而变化, 所以, 考虑变化区域与前帧结合, 以及准备前帧的两项工作, 省略其中的准备前帧的工作, 这就导致只有一块内存, 但好处是节省了时间, 将帧率提高

第五阶段: 即使将准备前帧的工作省略,只使用一块内存, 效果还是不够理想, 这时考虑到尝试一下硬件的OVERLAY功能, 虽然硬件具备该OVERLAY功能, 但效果不理想, 于是, 该阶段的工作只能算是尝试性的

第六阶段: 将问题分开处理, 高速LINK下, 就使用全帧, 接收方就省略了变化区域与前帧结合的CPU/DMA处理时间, 画面流畅了, 同时,也由于CPU/DMA 的LOAD降低, 音频数据也有时间去处理了, 解决了音频数据丢失从而有噪声的问题;而在低速LINK下, 就采取抽行抽列的办法, 来弥补低速LINK速度不够的问题.

第七阶段: 软件压缩与解压缩

第八阶段: 硬件压缩与解压缩

IC公司硬件工程师设计,流片的芯片是不能直接交给客户使用的, 必须要有reference design, 在这个时间就是金钱的时代, 客户恨不得, 你给的TURNKEY 方案不需要改直接就能量产, 越早量产, 越早抢占市场, 一步胜, 步步胜.

IC公司软件工程师的重要性,就在这个时代体现了.

时间: 2024-10-23 00:54:31

第三十六篇:IC公司软件工程师的重要性的相关文章

Egret入门学习日记 --- 第三十六篇(书中 10.7 ~ 10.8 节 内容)

第三十六篇(书中 10.7 ~ 10.8 节 内容) 开始 书中 10.7 节内容. 书中 10.7 节内容结束. 书中重点: 1.导出素材. 2.配置粒子库. 3.播放动画. 开始操作: 1.导出素材. 我设置好了雪花的效果. 接着是导出. 这是导出后的资源文件. 导入Egret的预加载资源组中. 2.配置粒子库. 下载好官方的粒子库. https://github.com/egret-labs/egret-game-library 拷贝粒子库到项目外,记住 项目文件夹外! 配置好 egret

第三十六篇:WinUSB调试实例

有人问,前面的博文,分别列出了USB xHCI, USB3 HUB, UCX01000的符号有什么用? 答案是,虽然我们不能看到MICROSOFT 的源代码,但通过这些符号,可以帮助我们调试USB子系统. 下面给出一例: 做USB设备驱动这些年,用过Cypress的USB3.0驱动,改过Philips USB1.1, Cypress USB2.0的驱动代码, 开发了基于Microsoft USBSamp的USB IP测试软件包. 最近,又借助WinUSB来完成一个音视频设备项目. 使用WinUS

第三十六篇 hashlib模块、hmac模块和logging模块

目录 第三十七篇 hashlib模块.hmac模块和logging模块 一.hashlib模块 1.hash是什么 2.撞库破解hash算法加密 二.hmac模块 三.logging模块 1.日志的五个级别 2.V3 3.日志配置文件 4.总结 第三十七篇 hashlib模块.hmac模块和logging模块 一.hashlib模块 1.hash是什么 1.hashlib模块一般用于明文加密 2.hash是一种算法,在hashlib模块中主要提供了md5 等算法,传入的内容通过这些算法,会得到一

NeHe OpenGL教程 第三十六课:从渲染到纹理

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第三十六课:从渲染到纹理 放射模糊和渲染到纹理: 如何实现放射状的滤镜效果呢,看上去很难,其实很简单.把渲染得图像作为纹理提取出来,在利用OpenGL本身自带的纹理过滤,就能实现这种效果,不信,你试试. 嗨,我是Dario Corn

Python之路【第十六篇】:Django【基础篇】

Python之路[第十六篇]:Django[基础篇] Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 基本配置 一.创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 其他常用命令: python manage.py runserver

三十六、git clone简介

翻译整理自: http://web.mit.edu/~mkgray/project/silk/root/afs/sipb/project/git/git-doc/git-clone.html 在使用git来进行版本控制时,为了得一个项目的拷贝(copy),我们需要知道这个项目仓库的地址(Git URL). Git能在许多协议下使用,所以Git URL可能以ssh://, http(s)://, git://,或是只是以一个用户名(git 会认为这是一个ssh 地址)为前辍. 有些仓库可以通过不只

解剖SQLSERVER 第十六篇 OrcaMDF RawDatabase --MDF文件的瑞士军刀(译)

解剖SQLSERVER 第十六篇 OrcaMDF RawDatabase --MDF文件的瑞士军刀(译) http://improve.dk/orcamdf-rawdatabase-a-swiss-army-knife-for-mdf-files/ 当我最初开始开发OrcaMDF的时候我只有一个目标,比市面上大部分的书要获取MDF文件内部的更深层次的知识 随着时间的推移,OrcaMDF确实做到了.在我当初没有计划的时候,OrcaMDF 已经可以解析系统表,元数据,甚至DMVs.我还做了一个简单U

Python开发【第十六篇】:AJAX全套

Python开发[第十六篇]:AJAX全套 概述 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操作需要重新加载全局数据 2.AJAX AJAX,Asynchronous JavaScript and XML (异步的JavaScript和XML),一种创建交互式网页应用的网页开发技术方案. 异步的JavaScript:使用 [JavaScript语言] 以

第二十六篇:USB3.0高带宽ISO(48KBytes/125us)实战

USB3.1技术已经推出, 10Gbps的速率足以满足数据, HD视频传输的要求. 要步入USB3.1的研发, 还得将USB3.0的基础打扎实. 微软提供的SUPER MUTT只包含一个接口0, 其下有两个ALT, ALT 1与ALT 2, 分别包含了两对ISO IN/OUT端点, 不过, 只有ALT 2下的ISO OUT EP的bMaxBurst为1, 而其它三个ISO EP的bMaxBurst均为0, 而所有的ISO EP的Mult均为0. 即只有一个ISO EP支持2KBytes/125u