首页
技术笔记
网址导航
Json在线解析
二维码
Ip地址查询
在线流程图
新用户注册
|
会员登录
在线工具
开发笔记
毒鸡汤
网址导航
免费在线流程图
10赞
518
当前位置:
开发笔记
>
运维
> 正文
Marvell-linux研究
作者:mylvfamily | 2021-09-04 07:34
Marvell-linux研究--Linux通用技术-Linux编程与内核信息,下面是详情阅读。
作者:李先静
尽管在和同事聊天时,我多次提到对驱动开发不感兴趣,不会去做驱动开发工作,不过考虑了几天之后,最终我还是决定写一个关于Marvell-linux的系列。呵,为了能够自圆其说,避免大家笑我出尔反尔,这里写个序,澄清一下我的想法。
我一向认为做驱动开发不适合作为职业目标发展,原因有:
1. 现在的芯片生产商会提供驱动程序的参考实现,在芯片生产商的公司里做驱动开发,那是有钱前途的,对技术能力要求也比较高,但是国内的芯片生产商很少,所以这种机会也很少。在国内,所谓的驱动开发,主要是移植和调试,这活儿比较单调,没有什么技术含量,而且总是处在关键路径上,可以说费力不讨好。
2. 驱动开发并不难,如果想做很快可以上手。奇怪的是很多朋友都认为做驱动开发很难,认为做驱动的程序员都是高手。一些新手以为做驱动开发就是写汇编,心理上有些抗拒,这也可以理解的。其实这是一种误解,现在做驱动开发只需要写很少的汇编,甚至不用写汇编。如果真要说做驱动开发难,我觉得其难在于:调试内核代码不太方便,要熟悉内核和基本函数,要熟悉芯片对应的datasheet。其实这都不是什么大问题,只要你静下心来,去读代码,去读文档,去练习,我想不出5个月,你就可以成为驱动开发的熟手了。
3. 未来(甚至现在)软件开发的核心在于复杂度控制,而非驱动开发。在前一家公司里,元老都是做驱动出身的,非常重视调试技能,而忽视架构设计,结果一个项目产生出超过10K的BUG,这种方法只适合传统的嵌入式开发,不适合现代大规模的软件开发。随着硬件能力的增强,用户期望的膨胀,软件的复杂度呈指数倍增长,而人的智力在原步踏步,所以控制软件的复杂度才是关键,而且软件架构设计是控制软件复杂度的主要方法之一,所以我觉得软件架构设计师比驱动开发人员更有前途。
基于以上原因,加上自己一直很忙,所以我没有去研究驱动开发。而这次我准备花大力气去研基于Marvell芯片的linux平台,是否有违初衷呢?答案当然是不,原因是:
1. 工作上的需要。我们团队在软件架构设计方面,在应用程序开发方面,在国内也算是比较出色的,由于驱动方面不是我们关注的重点,所以这方面比较欠缺,现在看来,这方面的工作量比较预想的要大得多。所以我打算多花点时间看看,到时候可以作为替补也好。
2. 艺多不压身,多学习一些知识没有坏处。作为一个系统架构师,不能因为自己的偏见(如果我对驱动开发的观点是偏见的话)影响架构设计,最近发现对于依赖硬件平台的应用程序,它的架构设计与底层硬件和驱动有密切关系,数码相机就是一个典型的例子,我开始认为只要基于v4linux,可以做到硬件无关,同事最近验证那样会有严重性能问题,结果最初的架构可能要重新设计。
3. 给写BLOG找点素材。最近主要是做code review,没有研究什么新东西,写BLOG没有什么好的题材,研究一下基于Marvell芯片的linux,可以为BLOG提供不少素材。呵,初步估计一下,写个几十篇问题不大。现在专门讲内核编程和驱动开发的书籍多如牛毛,而针对特定平台的开发资料很少,写点这方面BLOG相信也是有价值的。
在linux驱动开发方面,我是标准的新手,所以在开始的几篇BLOG,可以会显得比较幼稚,希望大家多多指点。这样也有它的好外,因为从新手的观点来写,对于新手遇到的具有共性的问题阐述得更清楚,对新手更有参考价值。
推荐阅读
程序员
Python BigQuery allowLargeResults with pandas.io.gbq
如何解决《PythonBigQueryallowLargeResultswithpandas.io.gbq》经验,为你挑选了1个好方法。 ...
[详细]
程序员
使用Ruby logger根据日志记录级别记录到不同的文件
如何解决《使用Rubylogger根据日志记录级别记录到不同的文件》经验,为你挑选了1个好方法。 ...
[详细]
程序员
Mac OS X El Capitan上不支持的major.minor版本
如何解决《MacOSXElCapitan上不支持的major.minor版本》经验,为你挑选了1个好方法。 ...
[详细]
程序员
在Android中的自定义ActionBar按钮中添加向上导航属性
如何解决《在Android中的自定义ActionBar按钮中添加向上导航属性》经验,为你挑选了0个好方法。 ...
[详细]
程序员
休眠刷新实例化视图
如何解决《休眠刷新实例化视图》经验,为你挑选了1个好方法。 ...
[详细]
程序员
TeamCity Parameterise VCS密码
如何解决《TeamCityParameteriseVCS密码》经验,为你挑选了0个好方法。 ...
[详细]
程序员
XPATH仅选择第一级子级
如何解决《XPATH仅选择第一级子级》经验,为你挑选了1个好方法。 ...
[详细]
程序员
html5数字类型只接受正整数
如何解决《html5数字类型只接受正整数》经验,为你挑选了1个好方法。 ...
[详细]
程序员
SQL-Server Time数据类型
如何解决《SQL-ServerTime数据类型》经验,为你挑选了1个好方法。 ...
[详细]
程序员
NSPredicate有多个参数和"AND行为"
如何解决《NSPredicate有多个参数和"AND行为"》经验,为你挑选了2个好方法。 ...
[详细]
程序员
Node.js和sqlite,SQLITE_RANGE:绑定或列索引超出范围
如何解决《Node.js和sqlite,SQLITE_RANGE:绑定或列索引超出范围》经验,为你挑选了0个好方法。 ...
[详细]
程序员
参考两个项目
如何解决《参考两个项目》经验,为你挑选了1个好方法。 ...
[详细]
程序员
RabbitMQ def回调(通道,方法,属性,主体)
如何解决《RabbitMQdef回调(通道,方法,属性,主体)》经验,为你挑选了1个好方法。 ...
[详细]
程序员
为什么Node fs.writeFile()方法成功,但是一个空文件然后被发送到浏览器?
如何解决《为什么Nodefs.writeFile()方法成功,但是一个空文件然后被发送到浏览器?》经验,为你挑选了1个好方法。 ...
[详细]
程序员
为什么css"text-decoration"继承不适用于"inline-block"?
如何解决《为什么css"text-decoration"继承不适用于"inline-block"?》经验,为你挑选了1个好方法。 ...
[详细]
程序员
PowerShell是否编译脚本?
如何解决《PowerShell是否编译脚本?》经验,为你挑选了1个好方法。 ...
[详细]
程序员
Spring JpaRepository如何查询@ManyToMany实体
如何解决《SpringJpaRepository如何查询@ManyToMany实体》经验,为你挑选了1个好方法。 ...
[详细]
程序员
基于两个标准从列表中检索项目的"最佳"pythonic方法
如何解决《基于两个标准从列表中检索项目的"最佳"pythonic方法》经验,为你挑选了1个好方法。 ...
[详细]
程序员
批处理文件:检查是否存在带有模式的文件
如何解决《批处理文件:检查是否存在带有模式的文件》经验,为你挑选了2个好方法。 ...
[详细]
程序员
AWS Data Pipeline RedShift"未找到分隔符"错误
如何解决《AWSDataPipelineRedShift"未找到分隔符"错误》经验,为你挑选了1个好方法。 ...
[详细]
吐了个 "CAO" !
吐个槽吧,看都看了
会员登录
|
用户注册
mylvfamily
这个屌丝很懒,什么也没留下!
关注作者
Tags | 热门标签
apache
centos
debian
devops
docker
fabric
jenkins
k8s
linux
nginx
ssh
tomcat
ubuntu
vagrant
容器
服务器
负载均衡
RankList | 热门文章
1
使用带有有效值的Scanner#nextDouble的InputMismatchException
2
jq:打印对象中每个条目的键和值
3
找到numpy数组的k个最小值的索引
4
Instagram挂钩预选媒体问题
5
是否可以在基类构造函数之前运行成员初始值设定项?
6
Java:带有两个键的HashMap
7
纹理包装器不会运行
8
MVP Android - 有多少主持人?
9
JavaScript:如何删除外部数组中的所有方括号?
10
rake db:create的问题
11
如何在CSS中包含.otf?
12
NoSuchElement例外
13
如何等待Func <Task <string >>?
14
Laravel是否支持队列工作者的超时选项?
15
使用其他命令在块内部时,exit/b无法正常工作
16
Robolectric 3.0无法测试启动HandlerThread的函数
17
了解mesos上的spark作业的资源分配
18
我可以在vuejs循环中使用插槽吗?
19
独特的键值对集合
20
操纵ActiveRecord对象以构建JSON
DevBox开发工具箱 | 专业的在线开发工具网站
京公网安备 11010802040832号
|
京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有