AD6.9封装pads原理图封装装制作时出现NO Components were updated是什么意思!搞了两个晚了上怎么也不会

查看: 8650|回复: 67
AD10.818出来了,听说解决出gerber文件问题,解决问题还是很快的,还有其他缺陷吗?
AD10.818出来了,听说解决出gerber文件问题, 还有其他缺陷吗? 大家多讲讲。
没有下载,出来了也没有用过。
刚才百度了一下,发现有二个外论坛链接,不过需要进行三次注_册,最后还要注_册码,还要收钱的,请不要上当。
还是等本论坛有下载链接再下载吧,免费共享的。
wanghanqqq ID 已被封,不能在此回复疑问,已转到PCB专业论坛关注遇到的问题。
封帖地址:/bbs/bbs_content.jsp?bbs_sn=5287705&bbs_page_no=1&bbs_id=1009
& && && &“如果对我们的PCB打样质量不满意的,可以自行评估,我们会退会差价此条款将导致成本上升,新价格是0.64元/平方厘米”
更新真是快.旧的没下完新的又来了.
搜索 AD10.771 在 ourdev 的论坛上有连接下载。
刚试了下 AD10.818 ,阴阳拼板出资料错已解决,但规则错乱问题还是存在。
启动和关闭速度快很多,资源占用少很多
AD10值得期待
/c0i2blodqu&&这里有下载
回复【1楼】szmmgg 单片机助学
没有下载,出来了也没有用过。
刚才百度了一下,发现有二个外论坛链接,不过需要进行三次注_册,最后还要注_册码,还要收钱的,请不要上当。
还是等本论坛有下载链接再下载吧,免费共享的。
-----------------------------------------------------------------------
看到两个 俄罗斯 网站提供的下载地址,是&&pcbbbs 的帖子,可以去看看
/forum.php?mod=viewthread&tid=243223
【AD10.818.23272下载】funv :偏pad+Embedded Board Array+镜像=gerber bug 已纠正
更新的速度,不是一般的。
更新打个补丁,可以节约很多流量。
回复【4楼】funv
但规则错乱问题还是存在。
-----------------------------------------------------------------------
我这面很正常啊,有例子吗?
AD10.818 规则错乱例子:
例子 (原文件名:Test.rar)
说明 (原文件名:规则错乱.jpg)
是不是包含汉字的问题
回复【11楼】funv
ad10.818 规则错乱例子......
-----------------------------------------------------------------------
之前汉字问题反馈时 你没提到这个bug, 问题略整理中... “funv :偏pad+”&&希望能在这里看到你的影子
已重新整理反馈ing,可以在上面帖子中关注反馈附件及结果...&&又是代反馈,方便的话可以直接到我提到的官方论坛反馈!
零散的反馈 altium 也够忙了, 看来你这面应用是希望有一个比较 完美 的汉语支持版&&(AD9无此bug)
如果使用AD10.818 话,只能通过 netclass 中不用汉字来规避
(原文件名:Altium.png)
回: 【13楼】 komra3
是汉字问题,希望 AD 支持汉字更完美,其他的 ECAD 对汉字的处理还更差。
如果不能支持汉字应该提前提示下吧。
上面提到的论坛我无法凳录,又无法注_册,注_册时提示邮箱已使用无法完成注_册。
还有个问题:是丢失 RouteToolPath 的设置内容,还未找到重现方法。
(原文件名:RouteToolPath设置丢失.jpg)
搞不懂为什么一个网络名还来用汉字。
回复【15楼】wzyllgx
搞不懂为什么一个网络名还来用汉字。
-----------------------------------------------------------------------
可能是设计上的延续导致汉字的大量应用吧,funv处的应用 较正规,如果你能看到以往他的应用案例,
且具“慧眼”可发现有好多可学习的地方...&&故很希望能看到funv的问题反馈
回复【14楼】funv
是汉字问题...
上面提到的论坛我无法凳录...
还有个问题:是丢失 routetoolpath 的设置内容,还未找到重现方法...
-----------------------------------------------------------------------
是汉字bug (你上次要提之前就一并反馈了)
论坛当前访问速度应该有很大改善(那个论坛重点在搜索内容,有很大的内容积累),如果你要保留原用户名登录的话,可以发你当时注_册的信息回邮件给我(按说是可以找回你忘记的密码的)
之前你例子中的routetoolpath我觉得奇怪(不理解你设置顶层的目的),当时就想altium没必要有那么多层可设置吧。后版本中默认为机械层(我觉得这是正确的),不知你这面可否有看法?
(原文件名: 13-05-05.png)
更新太快了…………
回:【17楼】 komra3
上面的论坛登录名都不知道了,就是邮箱号给注_册过了。
Route Tool Path Layer 的内容也是在关闭了文件后再打开后就丢失了内容。
中文的网络名是在原理图中设好的规则,因规则的范围比较多而使用中文;看英文无影响,但个新起名字则不好想,还是能支持中文的好。
出插放元件表不够人性化,放置在底层的元件出来的座标对不上贴片机,如能针对放在底层的元件做反转座标处理过则更好,现在只能在Excel中导入并用宏来处理这个问题,希望有得改进。
建的模板文件好像不兼容低版本的
Pcb 有模板吗?还未用过;
Sch模板好像没问题吧,不过,我现在还在使用9.4时建的模板,因9.4已经卸载了没法测试。
回复【21楼】funv&&
-----------------------------------------------------------------------
原理图模板也是一样的,
显示不了汉字,只显示第一个字
(原文件名:_150831.png)
AD10.818 完整版下载地址:
回复【22楼】Onsunsl&&金平合吾
回复【21楼】funv  
-----------------------------------------------------------------------
原理图模板也是一样的,
显示不了汉字,只显示第一个字
-----------------------------------------------------------------------
你所说的低版本是指 10.0, 10,1 之类(本身是有这问题), 还是在 AD9.4 中出问题(AD9.0本身也有这问题)?
我对这个也很关注,虽然一直在用PROTEL 99SE
回复【楼主位】funv&&
ad10.818出来了,听说解决出gerber文件问题, 还有其他缺陷吗? 大家多讲讲。
-----------------------------------------------------------------------
输出变体清单出错例子:
?ü???????±???????ò?????????? (原文件名:变体清单错.jpg)
(原文件名:Test.rar)
重新打开可能会正常, 还有很多地方的操作也不是实时更新(特别在输出CAM部份要注意下),这可能跟程序的结构有关。
另一不合理地方:
???????í??·? (原文件名:运算错.jpg)
回复【24楼】funv&&
回复【22楼】onsunsl&&金平合吾
回复【21楼】funv&&
-----------------------------------------------------------------------
原理图模板也是一样的,
显示不了汉字,只显示第一个字
-----------------------------------------------------------------------
你所说的低版本是指 10.0, 10,1 之类(本身是有这问题), 还是在 ad9.4 中出问题(ad9.0本身也有这问题)?
-----------------------------------------------------------------------
我模版文件是AD10建的,然后在AD10以下的所有版本使用时,均是一样的效果
回: 【27楼】 Onsunsl 金平合吾
在10.x 建? 在9.x 之下用?& & 可能在 AD9.0, AD10.0~AD10.4 打开并保存过一次后就丢失了汉字,
我也上过几次当(还以为我人品有问题, 这几个版本千万不要试);只能重新建一个。
对是的,我在10下建的,在10以下打开的,汉字就只剩下一个了
回复【29楼】Onsunsl 金平合吾
对是的,我在10下建的,在10以下打开的,汉字就只剩下一个了
-----------------------------------------------------------------------
没碰到这样的问题,发一个文档上来不就知道了?
AD10.818 有新版了吗? 还没出补丁?
听说Allgero比较高级,我就学的那个。结果元件库里要什么没什么,自己做元件焊盘和封装就用了一周的时间。早知道的话还是学protel或者AD了,起码可以早点出板子啊。
不是说一个下午有更新的? 有新版了吗?
既有通孔、也有槽孔,AD10.818如何输出NC Drill文件呢?
输出 NC Drill 时加选输出 板框路径。
回复【36楼】funv
-----------------------------------------------------------------------
请问具体在哪里选输出呢?
找了很久了,也未找到正确的位置...
(原文件名:NC-1.png)
如果是上图中的“保存钻孔”,那么下图中又应该如何操作呢?
(原文件名:NC-2.png)
(原文件名:1.jpg)
(原文件名:2.jpg)
AD10.818 有更新了吗?
AD公司放长假了?两个多月没有出补丁更新以上问题;是否以上问题太难解决?
Updated plug-ins from release 10.818.23272 to 10.890.23450
谢谢, 查找下, 见有 AD10.890, 但没见到有下载。
Release notes for Altium Designer 10 update (10.890.23450)
Altium Designer 10 (10.890.23450) のリリースノート
Additional Resources
Complete list of AD10 updates
Update 16: Updated plug-ins from release 10.818.23272 to 10.890.23450
Date: 6 February 2012
Key highlights
Improvement to impedance and width calculations
This release delivers enhanced control for High Speed signal routing in Altium Designer through improvements in the application of trace routing rule calculations. These can be found in the Impedance Formula Editor in the Layer Stack Manager, which now offers more accurate default formulas for impedance and width calculations. View BugCrunch report #201
Specifically, to provide better control for material layers, new variable keywords have been added to the equation Helper including:
ErA ErBelow – define material above or below the trace.
DielectricHeightA DielectricHeightBelow – define dielectric thickness above or below the trace.
Export Free Pad Holes
Altium Designer's support for STEP files allows detailed and accurate modeling data to be interchanged with mechanical CAD and 3D modeling programs. When defining an OutJob for exporting STEP files, a new option has been added to &Export Free Pad Holes& in addition to the existing options to export electrical and mechanical component holes. Designers using Free Pad Holes for board mounting or other purposes can now easily pass this information into the MCAD domain via an exported STEP file.
System Components: Altium Designer Base
5171& & & &
Fixed an issue where locked physical designators were not applied correctly.
5831& & & &
Fixed crash on document close.
5856& & & &
Fixed an issue where preferences for New Document Defaults were not always loaded correctly. View BugCrunch report #1191
5905& & & &
Fixed a regression issue where multi-channel annotations were not displayed correctly in schematics.
System Components: Altium Designer Installation System
5848& & & &
Fixed an issue that was causing intermittent application freezing / lockups.
System Components: PCB System
4604& & & &
Fixed an issue where scripts using the Round function stopped working.
4638& & & &
More accurate default formulas provided for characteristic impedance and width calculations. Added additional keywords ErAbove, ErBelow, DielectricHeightAbove, DielectricHeightBelow. View BugCrunch report #201
5025& & & &
An issue causing Ansoft SIWave to report DC Shorted net errors in exported file on some plane layer connections has been fixed.
5552& & & &
Fixed an issue where scripts using the Round function stopped working.
5824& & & &
Fixed loop remove crash with hatched polygon pours.
5863& & & &
An issue whereby the solder mask expansion and paste mask expansion properties for regions were incorrectly loaded from PcbDoc files has been resolved.
5878& & & &
Fixed crash on AD shutdown after editing Dimension defaults in PCB.
System Components: Schematic System
5762& & & &
The size of the negation bar drawn over a space character has been fixed.
5829& & & &
Fixed an issue where variants were not correctly applied when components had parts on multiple sheets. View BugCrunch report #267
5905& & & &
Fixed a regression issue where multi-channel annotations were not displayed correctly in schematics.
FPGA Design Tools: Aldec Simulator
5847& & & &
Aldec OEM Simulator license file has been updated.
Importers and Exporters: Exporter - Ansoft
5025& & & &
An issue causing Ansoft SIWave to report DC Shorted net errors in exported file on some plane layer connections has been fixed.
5026& & & &
No Net primitives are now correctly handled upon import to Ansoft - SIWave, and no longer cause disjointed net errors.
Output Generators: Output - Gerber
5826& & & &
An Access Violation that used to happen when generating Gerber Output if &Use Software Arcs& option was ON has now been fixed.
Output Generators: Output - STEP
4767& & & &
An &Export Free Pad Holes& option has been added to the Export STEP outjob.
Output Generators: Printer - Schematic
5905& & & &
Fixed a regression issue where multi-channel annotations were not displayed correctly in schematics.
谁有 AD10.890 下载链接?
Altium Designer 10 最新升级Update15发布
我们刚刚发布了Altium Designer Release 10的第15次升级。
•自定义焊盘形状:
一直以来,我们可以将自定义的几何形状附加到焊盘上,但是我们不得不手动地定义阻焊和助焊的扩展形状。
此次更新添加了应用于区域(region)、填充(fill),弧(arc)和线路(track)的阻焊和助焊的扩展规则。因此,现在您几乎可以在焊盘上连接任何铜质的几何形状,并赋予它类似于“焊盘”的阻焊和助焊扩展。
更多信息请见wiki。
•回路移除算法(LoopRemovalAlgorithm)的增强:
回路移除功能能够自动删除已过时的痕迹,因此使得重铺线路变得轻而易举。此次第十五次更新改进了回路移除算法,以解决用户报告的一些已知的问题并提供更好的整体效果。
•其他FPGA供应商的约束和设备支持:
本次升级增添了对Altera的MAXV和Stratix IV CPLD/FPGA器件的支持。此外,Altium Designer的约束性文件已显著改进:它包括了一系列支持额外供应商的约束文件。从此,您将能够使用Altium的一体化设计环境中最新的IO标准来制造厂商中立的FPGA设计。
•新增支持IE代理脚本:
对于那些设定了企业防火墙、只能通过代理服务器上网的企业,也能实现Altium Designer的安装和升级了!你不再需要创建一个开放的互联网接口来创建软件安装和升级光盘。
注:我们建议使用IE6或更早版本的客户在安装此升级之前阅读发布说明。
此次升级具有重要意义,它几乎涉及了Altium Designer 的每一个模块,且规模也超过之前的任何一次。如果您正在安装此次升级,何不借此机会加入AltiumLive的大家庭呢?在这里,您可以通过开发者的博客文章、论坛讨论和BugCrunch提报,了解和讨论Altium正在进行的改进和开发状态。积极参与每个新功能的开发,将是您从Subscription计划中获得最大的收益。
AD10.818 中的问题解决了吗? 好像没提到。
嗯,用了一下,发现 rule&&里的有些规则检查会出错,如果 丝印层跟焊盘层为 0mil. 但是DRC还是报错,呵呵,关闭这一项检查才行,设置为零,以前就有效的。。。。
AD10.890 也没有解决上面提到的问题。哎。。。。。。。。。。。。。。
好消息阿。用AD10遇到的问题,似乎新版本有了一些改进。
AD10.890 比 AD10.818 还多了一个新问题:设定好了的规则优先级之后,保存关闭重新打开 PcbDoc 又变成设定前的顺序,好像没有保存一样。
回复【50楼】funv
ad10.890 比 ad10.818 还多了一个新问题:设定好了的规则优先级之后,保存关闭重新打开 pcbdoc 又变成设定前的顺序,好像没有保存一样。&&
-----------------------------------------------------------------------
问题没有解决的原因有:
1.没有选择合适的反馈对象(曾建议到官方的两个论坛里去反馈讨论,不知楼主是否去过?)
2.需要提供典型的测试案例(配清晰的说明文档)
我只是感到奇怪, 新补丁不但没有修正错误,反而还在增加, 以上问题大家都常用到的,为什么老外就是不知道有错? 是否是很少人真正使用 AD10 软件?
回复【52楼】funv
我只是感到奇怪, 新补丁不但没有修正错误,反而还在增加, 以上问题大家都常用到的,为什么老外就是不知道有错? 是否是很少人真正使用 ad10 软件?
-----------------------------------------------------------------------
规则错乱例子还是因汉字而引发,另一个变体的应用我不理解?(何种场合用?)
从当前情况看,altium软件的测试文档很不全面,所以最怕看到诸如“此次升级具有重要意义,它几乎涉及了Altium Designer 的每一个模块,且规模也超过之前的任何一次”&&此话一出,暗含又会有些原本正常的操作可能会出bug了...
mark,关注一下
回复【53楼】komra3&&
-----------------------------------------------------------------------
关于变体应用:当有几个产品型号功能相近,按最复杂的电路接线设计出的PCB,又或零件供应可能出问题而提前选择了多种封装设计出的PCB。在实际生产时可跟实际要求变化零件多少或更改零件参数等,这时变体主要应用在输出材料清单上,及生产时的装配图。
这个变体功能 PowerPCB / PADS 早在20年前已经有了。
回复【55楼】funv
回复【53楼】komra3& &
-----------------------------------------------------------------------
关于变体应用:当有几个产品型号功能相近,按最复杂的电路接线设计出的pcb,又或零件供应可能出问题而提前选择了多种封装设计出的pcb。在实际生产时可跟实际要求变化零件多少或更改零件参数等,这时变体主要应用在输出材料清单上,及生产时的装配图。
这个变体功能 powerpcb / pads 早在20年前已经有了。
-----------------------------------------------------------------------
一直很高兴看到你的回复,AD生产方面的应用你这面多很深入。 学习...
回复【55楼】funv
回复【53楼】komra3& &
-----------------------------------------------------------------------
关于变体应用:当有几个产品型号功能相近,按最复杂的电路接线设计出的pcb,又或零件供应可能出问题而提前选择了多种封装设计出的pcb。在实际生产时可跟实际要求变化零件多少或更改零件参数等,这时变体主要应用在输出材料清单上,及生产时的装配图。
这个变体功能 powerpcb / pads 早在20年前已经有了。
-----------------------------------------------------------------------
这个功能在altium里面可以用装配变量控制,你可以选择在那些版本里面装配那些器件同时也可以把该信息同步到BOM表中(输出的时候先把你的装配版本设置为当前);如果你需要修改器件的封装,建议使用版本控制功能;
(原文件名:QQ截图24.jpg)
回复【57楼】binghun&&
-----------------------------------------------------------------------
AD10.818 也知它有这功能,只不过输出清单有点问题;
AD10.890 新出现的间隙规则问题: 人为变更的优先级在重新打开 PCB 后无效,此问题怎样规避?
AD11 出了吗?
AD10.890.23450 请问大家有没有用这个版本,1:1打印刷输出PCB? 我发现输出的尺寸还是有问题,根本不是1:1,晕倒。。。
回复【60楼】cyberjok&&
-----------------------------------------------------------------------
这可能与打印机的精度有关,换过其他型号打印机试下。
跟打印机没有关系,在 print preview 100%看显明小了。。。
是否做零件时画的线条太粗了?可否上传贴图?
AD10那么多问题是不是重新设计了整个布线软件。AD9都没有那么多问题的。
我也这么想的,现在想换 allegro, 可能老美的比较好点。
我用AD10.5也有问题 老出错 。。。。
更新了& && &
阿莫电子论坛, 原"中国电子开发网"29571人阅读
Altium Designer学习(19)
使用Altium Designer画一款多路抢答器的PCB电路板时,在载入网络和元件封装时提示failed to add class member及Unknown Pin错误
参照的经验,可如下进行
删掉(也可以以后再删除)之前新建的一个多路抢答器PCB.Pcbdoc,如下图所示:
再新建一个多路抢答器PCB2.Pcbdoc,再次载入网络就不会出现错误了。
运行Validate& changes正确画面如下:
运行Execute& Changes之后出现以下窗口:
点击Close:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:868584次
积分:7388
积分:7388
排名:第3115名
原创:160篇
转载:50篇
评论:115条
(1)(2)(2)(1)(1)(4)(3)(1)(3)(5)(1)(1)(3)(4)(1)(4)(1)(1)(5)(5)(5)(1)(2)(6)(10)(7)(13)(2)(7)(8)(7)(17)(23)(22)(17)(1)(3)(10)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'急需答案:由PCB元件封装库更新PCB中元件封装,没有任何变化,也就是更新不成功 - Protel|AD|DXP论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
急需答案:由PCB元件封装库更新PCB中元件封装,没有任何变化,也就是更新不成功
09:53:10  
今天在练习Protel Dxp书本中的PCB封装库高级操作这一节时遇到一个问题,“由PCB元件封装库更新PCB中元件封装”书上的操作是:可以采用修改元件封装库中相应元件封装,然后 Tools- Update PCB with Current FootPrint ,但是修改更新后,PCB文件并没有任何变化。
在网上搜索了很多答案:比如没有保存修改,没有将修改的PCB库放到项目中,封装名称不照应等等,都不能解决问题。请高手指点。
(13.09 KB, 下载次数: 0)
09:51 上传
修改pcb封装库中的元件封装
(20.69 KB, 下载次数: 0)
09:51 上传
更新PCB文件后没有任何变化
已退回5积分
10:06:49  
破解的软件有这毛病,也遇到过。直接放置到PCB图中,删掉以前的
等待验证会员
23:04:22  
PCB在线计价下单
板子大小:
板子数量:
PCB 在线计价
修改过封装后要先在原理图界面里更新,然后保存,再从pcb里更新或重新导入。
14:50:54  
在PCB文件中,选择你要修改封装的原件,点击右键,component actions --Updata selected components from PCB libraries --OK--在上面可以看到原件是否匹配(Match下是对号还是错号),错号的话就点下面的 Accept Changes (Creat ECO)
19:39:34  
在库里改没效果的,要么在原理图中单独改,或者在PCB中改
Powered by
供应链服务
商务及广告合作
Jeffery Guo
关注我们的微信
供应链服务 PCB/IC/PCBA
版权所有 (C) 深圳华强聚丰电子科技有限公司AD6.9封装原理图封装制作时出现NO Components were updated是什么意思!搞了两个晚了上怎么也不会-百谷歌&a href=&///?target=https%3A//www.zaoshu.io/%3Futm_source%3Dzhihu%26utm_campaign%3DRecomendList%26utm_medium%3Dzhihuzaoshu& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&造数 - 最炫酷的智能云爬虫帮你总结Python资源&i class=&icon-external&&&/i&&/a&&h2&学习资料&/h2&&p&&b&1、入门阶段&/b&&/p&&ul&&li&&a href=&///?target=https%3A//docs.python.org/3.6/tutorial/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Python Tutorial&i class=&icon-external&&&/i&&/a&Python guan官方文档,永远是最佳选择&/li&&li&&a href=&///?target=https%3A///edu/python/introduction%3Fhl%3Dzh-CN%26csw%3D1& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Google's Python Class&i class=&icon-external&&&/i&&/a& Google的文档,质量相当高&/li&&li&&a href=&///?target=http%3A///python3/python3-tutorial.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python3 教程 | 菜鸟教程&i class=&icon-external&&&/i&&/a& 如果英文不好,可以参考国内教程&/li&&li&&a href=&///?target=https%3A//learnpythonthehardway.org/book/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Learn Python the Hard Way&i class=&icon-external&&&/i&&/a& 最简单的学习 Python 的方法, HTML 在线版是完全免费的&/li&&li&&a href=&///?target=http%3A///course/introduction/378003.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&零基础入门学习Python &i class=&icon-external&&&/i&&/a& 网易云课堂,老师诙谐幽默,上手快&/li&&/ul&&br&&p&&b&2、拔高阶段&/b&&/p&&p&最好自己动手写一些项目,一定要使用GitHub&/p&&ul&&li&&a href=&///?target=https%3A///courses/%3Fcategory%3D%25E5%E7%25AB%25AF%25E5%25BC%%258F%2591%26course_type%3Dall%26tag%3DPython%26fee%3Dall& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python_精选项目课程&i class=&icon-external&&&/i&&/a& 实验楼提供在线编程及在线实训学习平台&/li&&li&&a href=&///?target=http%3A///django/django-cms-develop.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Django 开发内容管理系统&i class=&icon-external&&&/i&&/a& 全面的中文教程&/li&&li&&a href=&///?target=https%3A//www.dataquest.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Dataquest&i class=&icon-external&&&/i&&/a& 提供了一系列和数据分析相关的Python教程 &/li&&li&&a href=&///?target=http%3A///1052.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python爬虫学习系列教程 | 静觅&i class=&icon-external&&&/i&&/a& 静觅的爬虫课程,名气非常大&/li&&/ul&&br&&p&&b&3、方向进阶&/b&&/p&&p&来到这个时候,最好确立学习的方向。 &/p&&ul&&li&web开发(Django、Flask、Tornado) &a href=&///?target=http%3A//python-web-guide.readthedocs.io/zh/latest/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&python web 入坑指南&i class=&icon-external&&&/i&&/a& &/li&&li&数据科学(Numpy、Pandas、Matplotlib) &a href=&/p/& class=&internal&&数据科学家的完整学习路径(Python版)&/a& &/li&&li&机器学习(scikit-learn、)&a href=&///?target=http%3A//scikit-learn.org/stable/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&scikit-learn: machine learning in Python&i class=&icon-external&&&/i&&/a& &/li&&li&深度学习(TensorFlow)&a href=&///?target=https%3A//www.tensorflow.org/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&tensorflow.org/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& &/li&&li&网络爬虫(Scrapy)&a href=&///?target=https%3A//docs.scrapy.org/en/latest/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Scrapy 1.4 documentation&i class=&icon-external&&&/i&&/a&&/li&&/ul&&br&&p&&b&4、实战演练&/b&&/p&&ul&&li&&a href=&/p/& class=&internal&&有哪些适合新手练手的Python项目&/a& 非常全面的项目,强烈推荐&/li&&li&&a href=&///?target=http%3A///wiki/958fa6d3a2e542c000/125c96f6ccbaea0c6da9bee2be4000& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&实战&i class=&icon-external&&&/i&&/a& 廖雪峰老师的教程,非常经典,可以当做Python的百科全书来参考&/li&&li&&a href=&///?target=https%3A//www.oschina.net/project/lang/25/python%3Fcompany%3D0%26sort%3Dtime%26lang%3D25%26recommend%3Dfalse& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python开源软件 &i class=&icon-external&&&/i&&/a& 开源中国社区的项目合集&/li&&li&&a href=&///?target=https%3A///karan/Projects& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&karan/Projects&i class=&icon-external&&&/i&&/a& Python项目合集&/li&&li&&a href=&///?target=https%3A///python_projects& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python项目_W3Cschool极客导航&i class=&icon-external&&&/i&&/a&
不仅有web开发,还有爬虫相关&/li&&/ul&&br&&h2&&b&博客列表&/b&&/h2&&ul&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&廖雪峰的官方网站&i class=&icon-external&&&/i&&/a& 研究互联网产品和技术,提供原创中文精品教程 &/li&&li&&a href=&///?target=http%3A///fnng/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&虫师 &i class=&icon-external&&&/i&&/a&
关于Python自动化方面的一位大牛&/li&&li&&a href=&///?target=http%3A///homepage/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&宁哥的小站&i class=&icon-external&&&/i&&/a& Python网络爬虫和机器学习&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&静觅&i class=&icon-external&&&/i&&/a& 崔庆才的个人网站,在爬虫方面造诣很深 &/li&&li&&a href=&///?target=https%3A///blog/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python, OpenStack&i class=&icon-external&&&/i&&/a& 博客里面包含了很多python library的知识 &/li&&li&&a href=&/& class=&internal&&知乎 - 与世界分享你的知识、经验和见解&/a&
隐藏着各种Python大神&/li&&/ul&&br&&p&&b&最后推荐5个好用的Python IDE&/b&&/p&&h2&1、Jupyter Notebook&/h2&&br&&img src=&/v2-323ced32a14_b.jpg& data-rawwidth=&1196& data-rawheight=&919& class=&origin_image zh-lightbox-thumb& width=&1196& data-original=&/v2-323ced32a14_r.jpg&&&br&&p&Jupyter笔记本在2014年诞生于IPython。它是基于服务器 - 客户端结构的Web应用程序,它允许您创建和操作笔记本文档 - 或只是“笔记本”。&/p&&p&Jupyter Notebook提供了一个易于使用的交互式数据科学环境,涵盖许多编程语言,不仅可以作为IDE,还可以作为演示文稿或教育工具。对于刚开始使用数据科学的人来说,这是完美的!&/p&&p&可以在这里下载 &a href=&///?target=http%3A//jupyter.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Project Jupyter&i class=&icon-external&&&/i&&/a&&/p&&br&&br&&h2&2、PyCharm&/h2&&br&&img src=&/v2-be8f4d3d6b54d9cf2f5e1a6_b.jpg& data-rawwidth=&1131& data-rawheight=&705& class=&origin_image zh-lightbox-thumb& width=&1131& data-original=&/v2-be8f4d3d6b54d9cf2f5e1a6_r.jpg&&&br&&p&PyCharm是由JetBrain的人员制作的IDE,该团队负责最着名的Java IDE,IntelliJ IDEA之一。&/p&&br&&p&PyCharm的界面和功能对于那些有使用过其他JetBrain产品的人来说,是完美的。 此外,如果您喜欢IPython或Anaconda发行版,那么PyCharm可以将其工具和库(如NumPyMatplotlib)集成在一起,从而让您可以使用数组查看器和交互式图表。&/p&&br&&p&下载地址&a href=&///?target=https%3A///pycharm/download& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PyCharm :: Download Latest Version of PyCharm&i class=&icon-external&&&/i&&/a&&/p&&br&&h2&3、Visual Studio&/h2&&br&&img src=&/v2-5a004ddcf_b.jpg& data-rawwidth=&1211& data-rawheight=&693& class=&origin_image zh-lightbox-thumb& width=&1211& data-original=&/v2-5a004ddcf_r.jpg&&&br&&p&另一个选择可能是Visual Studio代码。 这是由Microsoft开发的文本编辑器,但也可以用作IDE。 Visual Studio的一个好处就是Git集成。 像Atom一样,您可以使用此应用程序轻松地在存储库中提交,同步和创建分支。&/p&&br&&p&Visual Studio包含一个名为IntelliSense的功能,它提供了基于变量类型,功能和导入模块的代码完成。 它还提供语法高亮和自动完成功能。&/p&&br&&p&您可以在此页面上免费下载适用于Windows,Linux或MacOS的Visual Studio代码&a href=&///?target=https%3A///download& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Download Visual Studio Code&i class=&icon-external&&&/i&&/a&&/p&&br&&h2&4、Sublime Text&/h2&&br&&img src=&/v2-ecc687e27ed4a_b.jpg& data-rawwidth=&1094& data-rawheight=&680& class=&origin_image zh-lightbox-thumb& width=&1094& data-original=&/v2-ecc687e27ed4a_r.jpg&&&br&&p&作为第三个替代选项,您还可以考虑强大的文本编辑器Sublime Text。 大多数人喜欢用户界面,非凡的功能和性能。 就像上面提到的其他文本编辑器一样,您可以使用插件扩展Sublime Text。 有关如何将Sublime Text设置为轻量级的一体化数据科学IDE的更多信息,请查看此页面。&/p&&br&&p&您可以在这里下载Sublime Text &a href=&///?target=https%3A///3& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Sublime Text - Download&i class=&icon-external&&&/i&&/a&&/p&&br&&h2&5、Atom&/h2&&br&&img src=&/v2-addc02fa460f5_b.jpg& data-rawwidth=&1436& data-rawheight=&838& class=&origin_image zh-lightbox-thumb& width=&1436& data-original=&/v2-addc02fa460f5_r.jpg&&&br&&p&由Github开发的开源文本编辑器。&/p&&br&&p&虽然这个文本编辑器可用于许多流行的编程语言,如Ruby on Rails,PHP,Java等,Atom有趣的功能,为Python开发人员创造了一个很好的体验。&a href=&///?target=https%3A//atom.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&A hackable text editor for the 21st Century&i class=&icon-external&&&/i&&/a&&/p&&br&&p&————————&/p&&a href=&///?target=https%3A//www.zaoshu.io/%3Futm_source%3Dzhihu%26utm_campaign%3DRecomendList%26utm_medium%3Dzhihuzaoshu& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&造数 - 最实用的智能云爬虫&i class=&icon-external&&&/i&&/a&
学习资料1、入门阶段Python guan官方文档,永远是最佳选择 Google的文档,质量相当高 如果英文不好,可以参考国内教程
基尔霍夫电压定律有两个,一个是基尔霍夫电压定律KVL,一个是基尔霍夫电流定律KCL。&br&&b&我们先来看看基尔霍夫的电压定律KVL:&/b&&br&&b&基尔霍夫电压定律KVL,是电气知识的基础。包括电子技术、高低压配电网技术、电器理论等等,它无所不在,永远也不会过时,也不会被任何其它定律所取代。&/b&&br&我们看下图:&br&&img src=&/97ea1f79c62944f4acc2fcd86df9fe8b_b.jpg& data-rawwidth=&615& data-rawheight=&285& class=&origin_image zh-lightbox-thumb& width=&615& data-original=&/97ea1f79c62944f4acc2fcd86df9fe8b_r.jpg&&这是一个闭合回路。闭合回路的形状是无所谓的,矩形、圆形都行,只要闭合就行。&br&图中,我们从a点出发,经过b点、c点和d点,再返回到a点,由此构成闭合路径。有了闭合路径的概念后,我们就可以建立KVL的概念:&br&基尔霍夫电压定律KVL指的是:沿着一条闭合路径,电位上升和下降得代数和为零。&br&KVL的表达式为:&img src=&///equation?tex=%5CSigma+U%3D0& alt=&\Sigma U=0& eeimg=&1&&&br&由KVL的定义,可以推出如下结论:&br&(1)因为E-U1-U2=0,所以E=U1+U2&br&也即:串联电路中,电源电压等于电路中电压降之和。&br&(2)&img src=&///equation?tex=%5CSigma+U_%7BS%7D%3D%5CSigma+U_%7BJ%7D++& alt=&\Sigma U_{S}=\Sigma U_{J}
& eeimg=&1&&&br&其中,Us为电压升高值,Uj为电压降落值。&br&它表示,闭合回路中电压上升之和等于电压下降之和。&br&至于电压方向,我们选逆时针也行,顺时针也行,两者的结果是一致的。&br&那么由基尔霍夫电压定律KVL能推出什么结论呢?&br&第一个结论:串联电路的分压定律;&br&第二个结论:串联电路中的元件位置可以互换。&br&与KVL相关联的几个结论是:电阻的串并联公式,还有并联电路的功率分配等等。&br&&b&我们再看基尔霍夫电流定律KCL:&/b&&br&流入一个节点(或者区域)的电流之和等于流出该节点(或者区域)的电流之和。&br&KCL的表达式为:&img src=&///equation?tex=%5CSigma+I_%7Bin%7D+%3D%5CSigma+I_%7Bout%7D+& alt=&\Sigma I_{in} =\Sigma I_{out} & eeimg=&1&&&br&由KCL我们能得到并联电路的分流定律,以及电压源的并联,以及开路和短路效应。&br&&img src=&/8a2fb44bcfae94dd6b62b_b.jpg& data-rawwidth=&669& data-rawheight=&306& class=&origin_image zh-lightbox-thumb& width=&669& data-original=&/8a2fb44bcfae94dd6b62b_r.jpg&&&b&基尔霍夫电压定律和电流定律的其它应用:&/b&&br&若我们仅仅以为基尔霍夫的这两个定律只能用于直流回路,那就错了。&br&KVL和KCL也能用于交流回路,只不过这时的电压和电流关系要用相量来表示。特别地,电阻要换成阻抗。&br&KVL和KCL也能用于晶体管电路,以及电力电子电路,当然这时的分析就复杂得多。对于电阻,我们更多地是使用动态电阻来分析元器件的工作特性,并由此出现正电阻、负电阻和零电阻的概念。&br&甚至,我们还能把基尔霍夫的定律应用到磁路计算中,例如磁路计算的基尔霍夫第一定律和基尔霍夫第二定律。&br&交流磁路计算的基尔霍夫第一定律,即磁通连续性定理在交流磁路中的表达形式:&br&&img src=&///equation?tex=%5CSigma+%5CPhi+%3D%5CSigma+%5CPhi+_%7Bm%7D+sin%28%5Comega+t%2B%5Ctheta+%29%3D0& alt=&\Sigma \Phi =\Sigma \Phi _{m} sin(\omega t+\theta )=0& eeimg=&1&&&br&它表示在同一节点中流出的所有磁通瞬时值之和为零。&br&交流磁路计算的基尔霍夫第二定律:&br&在正弦交流下,磁路任意支路的磁动势为&img src=&///equation?tex=IN%3D%5CSigma+I_%7Bm%7D+Nsin%28%5Comega+t%2B%5Cvarphi+%29& alt=&IN=\Sigma I_{m} Nsin(\omega t+\varphi )& eeimg=&1&&,则磁路的标量磁位拉普拉斯方程在交流磁路中的形式为:&br&&img src=&///equation?tex=%5CSigma+%5CPhi+_%7Bm%7DZ_%7Bm%7D+sin%28%5Comega+t%2B%5Ctheta+%29%3D%5CSigma+I_%7Bm%7D+Nsin+%28%5Comega+t+%2B%5Cvarphi+%29+& alt=&\Sigma \Phi _{m}Z_{m} sin(\omega t+\theta )=\Sigma I_{m} Nsin (\omega t +\varphi ) & eeimg=&1&&&br&说明,磁路中任意一回路内各支路的磁压降的代数和,等于该回路内各支路磁动势的代数和。&br&结论:&br&题主的这个问题是针对高中课程的,但我已经把它引申到大学物理和电路分析中去了。目的是什么呢?让中学生们开开眼吧,别总盯着中学的电阻串并联,基尔霍夫定律的应用面还广着呢。&br&&b&最后提个问题:基尔霍夫定律的失效条件是什么?&/b&&br&&b&回答:&/b&&br&&b&当电路的尺寸(指电路的实际尺寸)大于电流周期的四分之一波长时,基尔霍夫电压定律和电流定律失效。&/b&&br&&b&您猜对了吗?&/b&
基尔霍夫电压定律有两个,一个是基尔霍夫电压定律KVL,一个是基尔霍夫电流定律KCL。 我们先来看看基尔霍夫的电压定律KVL: 基尔霍夫电压定律KVL,是电气知识的基础。包括电子技术、高低压配电网技术、电器理论等等,它无所不在,永远也不会过时,也不会被任…
嵌入式Linux+Android学习路线图&br&&br&&br&&br&&br&作者:韦东山&br&微博:韦东山&br&公司微博:百问科技&br&&br&写于 ,第1版本,Android部分未写&br&&br&本文目录&br&1. 程序员的三大方向 &br&1.1 专业领域 &br&1.1.1 学术研究 &br&1.1.2 工程实现 &br&1.2 业务领域 &br&1.2.1 界面显示 &br&1.2.2 业务逻辑 &br&1.3 操作系统领域 &br&1.4 嵌入式Linux+Android系统包含哪些内容 &br&2. 怎么学习嵌入式Linux操作系统 &br&2.1 入门路线图 &br&2.2 学习驱动程序之前的基础知识 &br&2.2.1 C语言 &br&2.2.2 PC Linux基本操作: &br&2.2.3 硬件知识 &br&2.2.4 要不要专门学习Windows下的单片机开发 &br&2.2.5 为什么选择ARM9 S3C2440开发板,而不是其他性能更好的? &br&2.2.6 怎么学习ARM+Linux的裸机开发 &br&2.2.7 bootloader的学习 &br&2.2.8 Linux内核的学习 &br&2.2.9 根文件系统 &br&2.3 驱动程序的学习 &br&2.3.1 经典字符设备驱动程序 &br&2.3.2 工作中各类驱动程序 &br&2.3.3 调试方法 &br&2.4 Linux应用程序的学习 &br&3. 怎么学习整个Android系统 &br&&br&我是1999年上的大学,物理专业。在大一时,我们班里普遍弥漫着对未来的不安,不知道学习了物理后出去能做什么。你当下的经历、当下的学习,在未来的一天肯定会影响到你。毕业后我们也各自找到了自己的职业:出国深造转行做金融、留校任教做科研、设计芯片、写程序、创办公司等等,这一切都离不开在校时学到的基础技能(数学、IT、电子电路)、受过煅炼的自学能力。&br&所以,各位正在迷茫的在校生,各位正在尝试转行的程序员,未来一定有你的位置,是好是坏取决于你当下的努力与积累。&br&&br&我不能预言几年后什么行业会热门,也不能保证你照着本文学习可以发财。我只是一个有十几年经验的程序员,给对编程有兴趣的你,提供一些建议。&br&&br&1. 程序员的三大方向&br&程序员的方向,一般可以分为3类:专业领域、业务领域、操作系统领域。你了解它们后,按兴趣选择吧。&br&对于专业领域,我提供不了建议。&br&业务,也就是应用程序,它跟操作系统并不是截然分开的:&br&① 开发实体产品时,应用程序写得好的人,有时候需要操作系统的知识,比如调度优先级的设置、知道某些函数可能会令进程休眠。&br&② 写应用程序的人进阶为系统工程师时,他需要从上到下都了解,这时候就需要有操作系统领域的知识了,否则,你怎么设计整个系统的方案呢?&br&③ 做应用程序的人,需要了解行业的需求,理解业务的逻辑。所以,当领导的人,多是做应用的。一旦钻入了某个行业,很难换行业。&br&④ 而操作系统领域,做好了这是通杀各行业:他只负责底层系统,在上面开发什么业务跟他没关系。这行很多是技术宅,行业专家。&br&⑤ 操作系统和业务之间并没有一个界线。有操作系统经验,再去做应用,你会对系统知根知底,碰到问题时都有解决思路。有了业务经验,你再了解一下操作系统,很快就可以组成一个团队自立门户,至少做个CTO没问题。&br&1.1 专业领域&br&它又可以分为下面2类。&br&&br&1.1.1 学术研究&br&比如语音、图像处理、人工智能,这类工作需要你有比较强的理论知识,我倾向于认为这类人是“科学家”,他们钻研多年,很多时候是在做学术研究。&br&在嵌入式领域,需要把他们的成果用某种算法表达出来,针对某种芯片进行优化,这部分工作也许有专人来做。&br&&br&1.1.2 工程实现&br&也有这样一类人,他们懂得这些专业领域的概念,但是没有深入钻研。可以使用各类开源资料实现某个目标,做出产品。比如图像处理,他懂得用opencv里几百个复杂函数来实现头像识别。有时候还可以根据具体芯片来优化这些函数。&br&“专业领域”不是我的菜,如果你要做这一块,我想最好的入门方法是在学校学习研究生、博士课程。&br&&br&1.2 业务领域&br&换句话说,就是应用程序,这又可以分为下面2类。&br&&br&1.2.1 界面显示&br&做产品当然需要好的界面,但是,不是说它不重要,是没什么发展后劲。&br&现在的热门词是Android APP和IOS APP开发。你不要被Android、IOS两个词骗了,它们跟以前的VC、VB是同一路货色,只是、仅仅是一套GUI控件的实现。&br&希望没有冒犯到你,我有理由。&br&一个程序需要有GUI界面,但是程序的内在逻辑才是核心。Android、IOS的开发工具给我们简化了GUI的开发,并提供了这些控件的交互机制,封装并提供了一些服务(比如网络传输)。&br&但是程序内部的业务逻辑、对视频图像声音的处理等等,这才是核心。&br&另外别忘了服务器那边的后台程序:怎样更安全地保存数据、保护客户的隐私,怎样处理成千上万上百万的并发访问,等等,这也是核心。&br&但是,从Android、IOS APP入门入行,这很快!如果你是大四,急于找到一份工作,那么花上1、2个月去学习Android或IOS,应该容易找到工作,毕竟APP的需求永远是最大的,现在这两门技术还算热门。&br&在年左右,Android程序员的起薪挺高,然后开始下滑。Android APP的入门基本只要1个月,所以懂的人也越来越多。&br&年,IOS开发的工资明显比Android高了,于是各类IOS培训也火曝起来。中华大地向来不缺速成人才,估计再过一阵子IOS工程师也是白菜价了。&br&会Android、IOS只是基本要求,不信去51job搜搜Android或IOS,职位要求里肯定其他要求。&br&&br&1.2.2 业务逻辑&br&举个简单例子,做一个打卡软件,你需要考虑这些东西:&br&① 正常流程是上班下班时都要打卡&br&② 有人忘记了怎么办?作为异常记录在案,推送给管理员&br&③ 请假时怎么处理?&br&④ 加班怎么处理?&br&对于更复杂的例子,视频会议系统里,各个模块怎么对接,各类协议怎么兼容,你不深入这个行业,你根本搞不清楚。&br&应用开发的职位永远是最多的,入门门槛也低。基本上只要你会C语言,面试时表现比较得体,一般公司都会给你机会。因为:&br&① 你进公司后,还需要重新培训你:熟悉它们的业务逻辑。&br&② 你要做的,基本也就是一个个模块,框架都有人给你定好了,你去填代码就可以了。&br&说点让你高兴的事:软件公司里,做领导的基本都是写应用程序的(当然还有做市场的)。写应用程序的人,对外可以研究市场接待客户,对内可以管理程序员完成开发,不让他做领导让谁做?&br&如果你的志向是写应用程序,那么我建议你先练好基本功:数据结构、算法是必备,然后凭兴趣选择数据库、网络编程等等进行深入钻研。&br&最后,选择你看好的、感兴趣的行业深耕个10年吧。做应用开发的人选择了某个行业,后面是很难换行业的,选行很重要!&br&&br&1.3 操作系统领域&br&UCOS太简单,VxWorks太贵太专业,Windows不玩嵌入式了,IOS不开源,所以对于操作系统领域我们也只能玩Linux了。&br&在嵌入式领域Linux一家独大!&br&Android呢?Android跟QT一样,都是一套GUI系统。只是Google的实力太强了,现在Android无处不在,所以很多时候Linux+Android成了标配。注意,在这里我们关心的是Android的整个系统、里面的机制,而不是学习几个API然后开发界面程序。&br&操作系统领域所包含的内容,简单地说,就是制作出一台装好系统的专用“电脑”,可以分为:&br&① 为产品规划硬件:&br&按需求、性能、成本选择主芯片,搭配周边外设,交由硬件开发人员设计。&br&② 给单板制作、安装操作系统、编写驱动&br&③ 定制维护、升级等系统方案&br&④ 还可能要配置、安装Android等GUI系统:&br&⑤ 为应用开发人员配置开发环境&br&⑥ 从系统角度解决疑难问题&br&这个领域,通常被称为“底层系统”或是“驱动开发”。&br&&br&先解决2个常见误区:&br&① 这份工作是写驱动程序吗?&br&看看上面罗列的6点,应该说,它包含驱动开发,但远远不只有驱动开发。&br&② 我们还需要写驱动吗?不是有原厂吗?或者只需要改改就可以?&br&经常有人说,芯片原厂都做好驱动了,拿过来改改就可以了。如果,你的硬件跟原厂的公板完全一样,原厂源码毫无BUG,不想优化性能、削减成本,不想做一些有特色的产品,那这话是正确的。&br&但是在这个不创新就是找死的年代,可能吗?!原因有二:&br&① 即使只是修改代码,能修改的前提是能理解;能理解的最好煅炼方法是从零写出若干驱动程序&br&② 很多时候,需要你深度定制系统。&br&以前做联发科手机只需要改改界面就可以出货了,现在山寨厂一批批倒下。大家都使用原厂的方案而不加修改时,最后只能拼成本。&br&&br&举个例子,深圳有2家做交通摄像头、监控摄像头的厂家,他们曾经找我做过4个项目:&br&① 改进厂家给的SD卡驱动性能,使用DMA。&br&② 换了Flash型号后,系统经常出问题,需要修改驱动BUG。&br&③ 触摸屏点击不准,找原因,后来发现是旁路电容导致的。&br&④ 裁减成本,把4片DDR换为2片DDR,需要改bootloader对DDR的初始化。&br&&br&这些项目都很急,搞不定就无法出货,这时候找原厂?除非你是中兴华为等大客户,否则谁理你?&br&我在中兴公司上班时,写驱动的时间其实是很少的,大部分时间是调试:系统调优,上帮APP工程师、下帮硬件工程师查找问题。&br&&br&我们从厂家、网上得到的源码,很多都是标准的,当然可以直接用。但是在你的产品上也许优化一下更好。比如我们可以把摄像头驱动和DMA驱动揉合起来,让摄像头的数据直接通过DMA发到DSP去。&br&&br&我们可以在软件和硬件之间起桥梁作用,对于实体产品,有可能是软件出问题也可能是硬件出问题,一般是底层系统工程师比较容易找出问题。&br&&br&当硬件、软件应用出现问题,他们解决不了时,从底层软件角度给他们出主意,给他们提供工具。&br&再比如方案选择:芯片性能能否达标、可用的BSP是否完善等等,这只能由负责整个方案的人来考虑,他必须懂底层。&br&在操作系统领域,对知识的要求很多:&br&① 懂硬件知识才能看懂电路图&br&② 英文好会看芯片手册&br&③ 有编写、移植驱动程序的能力&br&④ 对操作系统本身有一定的理解,才能解决各类疑难问题&br&⑤ 理解Android内部机制&br&⑥ 懂汇编、C语言、C++、JAVA&br&&br&它绝对是一个大坑,没有兴趣、没有毅力的人慎选。&br&① 这行的入门,绝对需要半年以上,即使全天学习也要半年。&br&② 它的职位,绝对比APP的职位少&br&③ 并且你没有1、2年经验,招你到公司后一开始你做的还是APP。&br&&br&优点就是:&br&① 学好后,行业通杀,想换行就换行;想自己做产品就自己做产品。&br&② 相比做应用程序的人,不会被经常变动的需求搞得天天加班。&br&③ 门槛高,当然薪水相对就高。&br&操作系统领域,我认为适合于这些人:&br&① 硬件工程师想转软件工程师,从底层软件入门会比较好&br&② 单片机工程师,想升级一下。会Linux底层的人肯定会单片机,会单片机的人不一定会Linux。&br&③ 时间充足的学生:如果你正读大二大三,那么花上半年学习嵌入式Linux底层多有益处。&br&④ 想掌握整个系统的人,比如你正在公司里写APP,但是想升为系统工程师,那么底层不得不学。&br&⑤ 想自己创业做实体产品的工程师,你有钱的话什么技术都不用学,但是如果没钱又想做产品,那么Linux底层不得不学。&br&⑥ 做Linux APP的人,没错,他们也要学习。&br&这部分人不需要深入,了解个大概就可以:bootloader是用来启动内核,Linux的文件系统(第1个程序是什么、做什么、各目录干嘛用)、APP跟驱动程序的调用关系、工具链,有这些概念就可以了&br&&br&本文中,就把操作系统默认为Linux,讲讲怎么学习嵌入式Linux+Android系统。&br&&br&1.4 嵌入式Linux+Android系统包含哪些内容&br&嵌入式Linux系统包含哪些东西?不要急,举一个例子你就知道了。&br&① 电脑一开机,那些界面是谁显示的?&br&是BIOS,它做什么?一些自检,然后从硬盘上读入windows,并启动它。&br&类似的,这个BIOS对应于嵌入式Linux里的bootloader。这个bootloader要去Flash上读入Linux内核,并启动它。&br&&br&② 启动windows的目的是什么?&br&当然运行应用程序以便上网、聊天什么的了。&br&这些上网程序、聊天程序在哪?&br&在C盘、D盘上。&br&所以,windows要先识别出C盘、D盘。在Linux下我们称之为根文件系统。&br&&br&③ windows能识别出C盘、D盘,那么肯定有读写硬盘的能力。&br&这个能力我们称之为驱动程序。当然不仅仅是操作硬盘,还有网卡、USB等等其他硬件。&br&嵌入式Linux能从Flash上读出并执行应用程序,肯定也得有Flash的驱动程序啊,当然也不仅仅是Flash。&br&简单地说,嵌入式LINUX系统里含有bootloader、内核、驱动程序、根文件系统、应用程序这5大块。而应用程序,我们又可以分为:C/C++、Android。&br&所以,嵌入式Linux+Android系统包含以下6部分内容:&br&① bootloader&br&② Linux内核&br&③ 驱动程序&br&④ 使用C/C++编写的应用程序&br&⑤ Android系统本身&br&⑥ Android应用程序&br&&br&Android跟Linux的联系实在太大了,它的应用是如此广泛,学习了Linux之后没有理由停下来不学习Android。在大多数智能设备中,运行的是Linux操作系统;它上面要么安装有Android,要么可以跟Android手机互联。现在,Linux+Android已成标配。&br&&br&2. 怎么学习嵌入式Linux操作系统&br&本文假设您是零基础,以实用为主,用最快的时间让你入门;后面也会附上想深入学习时可以参考的资料。&br&&br&在实际工作中,我们从事的是“操作系统”周边的开发,并不会太深入学习、修改操作系统本身。&br&① 操作系统具有进程管理、存储管理、文件管理和设备管理等功能,这些核心功能非常稳定可靠,基本上不需要我们修改代码。我们只需要针对自己的硬件完善驱动程序&br&② 学习驱动时必定会涉及其他知识,比如存储管理、进程调度。当你深入理解了驱动程序后,也会加深对操作系统其他部分的理解&br&③ Linux内核中大部分代码都是设备驱动程序,可以认为Linux内核由各类驱动构成&br&但是,要成为该领域的高手,一定要深入理解Linux操作系统本身,要去研读它的源代码。&br&&br&在忙完工作,闲暇之余,可以看看这些书:&br&① 赵炯的《linux内核完全注释》,这本比较薄,推荐这本。他后来又出了《Linux 内核完全剖析》,太厚了,搞不好看了后面就忘记前面了。&br&② 毛德操、胡希明的《LINUX核心源代码情景分析》,此书分上下册,巨厚无比。当作字典看即可:想深入理解某方面的知识,就去看某章节。&br&③ 其他好书还有很多,我没怎么看,没有更多建议&br&&br&基于快速入门,上手工作的目的,您先不用看上面的书,先按本文学习。&br&&br&2.2 学习驱动程序之前的基础知识2.2.1 C语言&br&只要是理工科专业的,似乎都会教C语言。我见过很多C语言考试90、100分的,一上机就傻了,我怀疑他们都没在电脑上写过程序。&br&理论再好,没有实践不能干活的话,公司招你去干嘛?&br&反过来,实践出真知,学习C语言,必须练练练、写写写!&br&当你掌握基本语法后,就可以在电脑上练习一些C语言习题了;&br&当你写过几个C程序后,就可以进入下一阶段的裸机开发了。&br&① 不需要太深入&br&作为快速入门,只要你会编写“Hello, world!”,会写冒泡排序,会一些基础的语法操作,暂时就够了。&br&指针操作是重点,多练习;&br&不需要去学习过多的数据结构知识,只需要掌握链表操作,其他不用学习,比如:队列、二叉树等等都不用学;&br&不需要去学习任何的函数使用,比如文件操作、多线程编程、网络编程等等;&br&这些知识,在编写Linux应用程序时会用,但是在操作系统特别是驱动学习时,用不着!&br&永往直前吧,以后碰到不懂的C语言问题,我们再回过头来学习。&br&在后续的“裸机开发”中,会让你继续练习C语言,那会更实战化。&br&&br&C语言是在写代码中精进的。&br&② 可以在Visual Studio下学习,也可以在Linux下学习,后者需要掌握一些编译命令&br&我们暂时没有提供C语言的教程,找一本C语言书,网上找找免费的C语言视频(主要看怎么搭建环境),就可以自学了。&br&&br&2.2.2 PC Linux基本操作:&br&对于PC Linux,我们推荐使用Ubuntu,在它上面安装软件非常简便。&br&我们的工作模式通常是这样:在Windows下阅读、编写代码,然后把代码上传到PC Linux去编译。&br&实际上,Ubuntu的桌面系统已经很好用了,我们拿到各种智能机可以很快上手,相信Ubuntu的桌面系统也可以让你很快上手。&br&&br&为了提高工作效率,我们通常使用命令行来操作Ubuntu。&br&不用担心,你前期只需要掌握这几条命令就可以了,它们是如此简单,我干脆列出它们:&br&① cd : Change Directory(改变目录)&br&cd 目录名 // 进入某个目录&br&cd .. // cd “两个点”:返回上一级目录&br&cd - // cd “短横”:返回上一次所在目录&br&&br&② pwd : Print Work Directory(打印当前目录 显示出当前工作目录的绝对路径)&br&&br&③ mkdir : Make Directory(创建目录)&br&mkdir abc // 创建文件夹abc&br&mkdir -p a/b/c // 创建文件夹a,再a下创建文件夹b,再在b下创建文件夹c&br&&br&④ rm : Remove(删除目录或文件)&br&rm file // 删除名为file的文件&br&rm -rf dir // 删除名为dir的目录&br&&br&⑤ ls : List(列出目录内容)&br&&br&⑥ mount : 挂载&br&mount -t nfs -o nolock,vers=2 192.168.1.123:/work/nfs_root /mnt&br&mount -t yaffs /dev/mtdblock3 /mnt&br&&br&⑦ chown : Change owner(改变文件的属主,即拥有者)&br&chown book:book /work -R // 对/work目录及其下所有内容,属主改为book用户,组改为book&br&&br&⑧ chmod : Change mode(改变权限),下面的例子很简单粗暴&br&chmod 777 /work -R // 对/work目录及其下所有内容,权限改为可读、可写、可执行&br&&br&⑨ vi : Linux下最常用的编辑命令,使用稍微复杂,请自己搜索用法。&br&要练习这些命令,你可以进入Ubuntu桌面系统后,打开终端输入那些命令;或是用SecureCRT、putty等工具远程登录Ubuntu后练习。&br&&br&2.2.3 硬件知识&br&我们学习硬件知识的目的在于能看懂原理图,看懂通信协议,看懂芯片手册;不求能设计原理图,更不求能设计电路板。&br&对于正统的方法,你应该这样学习:&br&① 学习《微机原理》,理解一个计算机的组成及各个部件的交互原理。&br&② 学习《数字电路》,理解各种门电路的原理及使用,还可以掌握一些逻辑运算(与、或等)。&br&③ 《模拟电路》?好吧,这个不用学,至少我在工作中基本用不到它,现在全忘光了。&br&就我个人经验来说,这些课程是有用的,但是:&br&① 原理有用,实战性不强。&br&比如《微机原理》是基于x86系统,跟ARM板子有很大差别,当然原理相通。&br&我是在接触嵌入式编程后,才理解了这些课程。&br&② 每本书都那么厚,内容都很多,学习时间过长,自学有难度。&br&&br&针对这些校园教材的不足,并结合实际开发过程中要用到的知识点,我们推出了《学前班_怎么看原理图》的系列视频:&br&学前班第1课第1节_怎么看原理图之GPIO和门电路.wmv&br&学前班第1课第2.1节_怎么看原理图之协议类接口之UART.wmv&br&学前班第1课第2.2节_怎么看原理图之协议类接口之I2C.wmv&br&学前班第1课第2.3节_怎么看原理图之协议类接口之SPI.wmv&br&学前班第1课第2.4节_怎么看原理图之协议类接口之NAND Flash.wmv&br&学前班第1课第2.5节_怎么看原理图之协议类接口之LCD.wmv&br&学前班第1课第3节_怎么看原理图之内存类接口.wmv&br&学前班第1课第4.1节_怎么看原理图之分析S3C2410开发板.wmv&br&学前班第1课第4.2节_怎么看原理图之分析S3C2440开发板.wmv&br&学前班第1课第4.3节_怎么看原理图之分析S3C6410开发板.wmv&br&即使你只具备初中物理课的电路知识,我也希望能通过这些视频,让你可以看懂原理图,理解一些常见的通信协议;如果你想掌握更多的硬件知识,这些视频也可以起个索引作用,让你知道缺乏什么知识。&br&这些视频所讲到的硬件知识,将在《裸板开发》系列视频中用到,到时可以相互对照着看,加深理解。&br&&br&2.2.4 要不要专门学习Windows下的单片机开发&br&很多学校都开通了单片机的课程,很多人都是从51单片机、AVR单片机,现在比较新的STM32单片机开始接触嵌入式领域,并且使用Windows下的开发软件,比如keil、MDK等。&br&问题来了,要不要专门学习Windows下的单片机开发?&br&① 如果这是你们专业的必修课,那就学吧&br&② 如果你的专业跟单片机密切相关,比如机械控制等,那就学吧&br&③ 如果你只是想从单片机入门,然后学习更广阔的嵌入式Linux,那么放弃在Windows下学习单片机吧!&br&&br&理由如下:&br&① Windows下的单片机学习,深度不够&br&Windows下有很好的图形界面单片机开发软件,比如keil、MDK等。&br&它们封装了很多技术细节,比如:&br&你只会从main函数开始编写代码,却不知道上电后第1条代码是怎么执行的;&br&你可以编写中断处理函数,但是却不知道它是怎么被调用的;&br&你不知道程序怎么从Flash上被读入内存;&br&也不知道内存是怎么划分使用的,不知道栈在哪、堆在哪;&br&当你想裁剪程序降低对Flash、内存的使用时,你无从下手;&br&当你新建一个文件时,它被自动加入到工程里,但是其中的机理你完全不懂;&br&等等等。&br&&br&② 基于ARM+Linux裸机学习,可以学得更深,并且更贴合后续的Linux学习。&br&实际上它就是Linux下的单片机学习,只是一切更加原始:所有的代码需要你自己来编写;哪些文件加入工程,需要你自己来管理。&br&在工作中,我们当然倾向于使用Windows下更便利的工具,但是在学习阶段,我们更想学习到程序的本质。&br&&br&一切从零编写代码、管理代码,可以让我们学习到更多知识:&br&你需要了解芯片的上电启动过程,知道第1条代码如何运行;&br&你需要掌握怎么把程序从Flash上读入内存;&br&需要理解内存怎么规划使用,比如栈在哪,堆在哪;&br&需要理解代码重定位;&br&需要知道中断发生后,软硬件怎么保护现场、跳到中断入口、调用中断程序、恢复现场;&br&你会知道,main函数不是我们编写的第1个函数;&br&你会知道,芯片从上电开始,程序是怎么被搬运执行的;&br&你会知道,函数调用过程中,参数是如何传递的;&br&你会知道,中断发生时,每一个寄存器的值都要小心对待;&br&等等等。&br&&br&你掌握了ARM+Linux的裸机开发,再回去看Windows下的单片机开发,会惊呼:怎么那么简单!并且你会完全明白这些工具没有向你展示的技术细节。&br&驱动程序=Linux驱动程序软件框架+ARM开发板硬件操作,我们可以从简单的裸机开发入手,先掌握硬件操作,并且还可以:&br&① 掌握如何在PC Linux下编译程序、把程序烧录到板子上并运行它&br&② 为学习bootloader打基础:掌握了各种硬件操作后,后面一组合就是一个bootloader&br&&br&2.2.5 为什么选择ARM9 S3C2440开发板,而不是其他性能更好的?&br&有一个错误的概念:S3C2440过时了、ARM9过时了。&br&这是不对的,如果你是软件工程师,无论是ARM9、ARM11、A8还是A9,对我们来说是没有差别的。&br&&br&一款芯片,上面有CPU,还有众多的片上设备(比如UART、USB、LCD控制器)。我们写程序时,并不涉及CPU,只是去操作那些片上设备。&br&所以:差别在于片上设备,不在于CPU核;差别在于寄存器操作不一样。&br&因为我们写驱动并不涉及CPU的核心,只是操作CPU之外的设备,只是读写这些设备的寄存器。&br&之所以推荐S3C2440,是因为它的Linux学习资料最丰富,并有配套的第1、2期视频。&br&&br&2.2.6 怎么学习ARM+Linux的裸机开发&br&学习裸机开发的目的有两个:&br&① 掌握裸机程序的结构,为后续的u-boot作准备&br&② 练习硬件知识,即:怎么看原理图、芯片手册,怎么写代码来操作硬件&br&后面的u-boot可以认为是裸机程序的集合,我们在裸机开发中逐个掌握各个部件,再集合起来就可以得到一个u-boot了。&br&后续的驱动开发,也涉及硬件操作,你可以在裸机开发中学习硬件知识。&br&&br&注意:如果你并不关心裸机的程序结构,不关心bootloader的实现,这部分是可以先略过的。在后面的驱动视频中,我们也会重新讲解所涉及的硬件知识。&br&推荐两本书:杜春蕾的《ARM体系结构与编程》,韦东山的《嵌入式Linux应用开发完全手册》。后者也许是国内第1本涉及在PC Linux环境下开发的ARM裸机程序的书,如果我说错了,请原谅我书读得少。&br&&br&对于裸机开发,我们提供有2部分视频:&br&① 环境搭建&br&第0课第1节_刚接触开发板之接口接线.wmv&br&第0课第2节_刚接触开发板之烧写裸板程序.wmv&br&第0课第3节_刚接触开发板之重烧整个系统.wmv&br&第0课第4节_刚接触开发板之使用vmwae和预先做好的ubuntu.wmv&br&第0课第5节_刚接触开发板之u-boot打补丁编译使用及建sourceinsight工程.wmv&br&第0课第6节_刚接触开发板之内核u-boot打补丁编译使用及建sourceinsight工程.wmv&br&第0课第7节_刚接触开发板之制作根文件系统及初试驱动.wmv&br&第0课第8节_在TQ2440,MINI2440上搭建视频所用系统.wmv&br&第0课第9节_win7下不能使用dnw烧写的替代方法.wmv&br&&br&② 裸机程序开发&br&第1课 环境搭建及工具、概念介绍.wmv&br&第2课 GPIO实验.wmv&br&第3课 存储管理器实验.wmv&br&第4课 MMU实验.wmv&br&第5课 NAND FLASH控制器.wmv&br&第6课 中断控制器.wmv&br&第7课 系统时钟和UART实验.wmv&br&第8课 LCD实验.wmv&br&&br&要声明的是:&br&录制上述《裸机程序开发》视频时,本意是结合《嵌入式Linux应用开发完全手册》的《第2篇 ARM9嵌入式系统基础实例篇》来讲解,所以视频里没有完全从零编写代码,需要结合书本来学习。&br&① 书和视频并不是完全配套的,不要照搬,其中的差异并不难解决。&br&《嵌入式Linux应用开发完全手册》发表于2008年,使用了很多款开发板,并且那时的开发板配置较低(Nand Flash是64M);&br&《裸机程序开发》视频使用JZ2440开发板录制。&br&② 书和视频,适用于所有S3C2440开发板,包括mini2440、tq2440等&br&天下S3C2440配置都是相似的,基本也就是LED、按键所用引脚不同,LCD型号不同;你学习了书、视频,如果连这些差异都搞不定的话,那就是你我的失败了。&br&学习方法是这样的:&br&① 先看《环境搭建》视频来搭建开发环境&br&② 书(第2篇)和视频(裸机程序开发)结合,看完一章,练习一章&br&一定要编写代码,即使是照抄也要写。&br&③ 如果对于ARM架构相关的知识,觉得模糊或是想了解得更深入,参考《ARM体系结构与编程》&br&学习程度:&br&① 理解一个裸机程序的必要结构:异常向量、硬件初始化、代码重定位、栈&br&② 知道如何操作GPIO、Flash、LCD、触摸屏等硬件&br&③ 很多人觉得MMU难以理解,可以放过它&br&&br&2.2.7 bootloader的学习&br&bootloader有很多种,vivi、u-boot等等,最常用的是u-boot。&br&u-boot功能强大、源码比较多,对于编程经验不丰富、阅读代码经验不丰富的人,一开始可能会觉得难以掌握。&br&但是,u-boot的主要功能就是:启动内核。它涉及:读取内核到内存、设置启动参数、启动内核。按照这个主线,我们尝试自己从零编写一个bootloader,这个程序相对简单,可以让我们快速理解u-boot主要功能的实现。&br&从零编写bootloader的视频有:&br&毕业班第1课第1.1节_自己写bootloader之编写第1阶段.wmv&br&毕业班第1课第1.2节_自己写bootloader之编写第2阶段.wmv&br&毕业班第1课第2节_自己写bootloader之编译测试.wmv&br&毕业班第1课第3节_自己写bootloader之改进.wmv&br&分析u-boot 1.1.6的视频有:&br&第9课第1节 u-boot分析之编译体验.wmv&br&第9课第2节 u-boot分析之Makefile结构分析.wmv&br&第9课第3节 u-boot分析之源码第1阶段.wmv&br&第9课第3节 u-boot分析之源码第2阶段.wmv&br&第9课第4节 u-boot分析之u-boot命令实现.wmv&br&第9课第5节 u-boot分析_uboot启动内核.wmv&br&移植一个全新u-boot的视频有:&br&毕业班第2课第1节_移植最新u-boot之初试.wmv&br&毕业班第2课第2.1节_移植最新u-boot之分析启动过程之概述.wmv&br&毕业班第2课第2.2节_移植最新u-boot之分析启动过程之内存分布.wmv&br&毕业班第2课第2.3节_移植最新u-boot之分析启动过程之重定位.wmv&br&毕业班第2课第3.1节_移植最新u-boot之修改代码之建新板_时钟_SDRAM_UART.wmv&br&毕业班第2课第3.2节_移植最新u-boot之修改代码支持NAND启动.wmv&br&毕业班第2课第3.3节_移植最新u-boot之修改代码支持NorFlash.wmv&br&毕业班第2课第3.4节_移植最新u-boot之修改代码支持NandFlash.wmv&br&毕业班第2课第3.5节_移植最新u-boot之修改代码支持DM9000网卡.wmv&br&毕业班第2课第4.1节_移植最新u-boot之裁剪和修改默认参数.wmv&br&毕业班第2课第4.2节_移植最新u-boot支持烧写yaffs映象及制作补丁.wmv&br&&br&《嵌入式Linux应用开发完全手册》上对u-boot的讲解有如下章节:&br&15.1 Bootloader简介&br&15.1.1 Bootloader的概念&br&15.1.2 Bootloader的结构和启动过程&br&15.1.3 常用Bootloader介绍&br&15.2 U-Boot分析与移植&br&15.2.1 U-Boot工程简介&br&15.2.2 U-Boot源码结构&br&15.2.3 U-Boot的配置、编译、连接过程&br&15.2.4 U-Boot的启动过程源码分析&br&15.2.5 U-Boot的移植&br&15.2.6 U-Boot的常用命令&br&15.2.7 使用U-Boot来执行程序&br&&br&学习方法如下:&br&① 先学习《从零编写bootloader的视频》,这可以从最少的代码理解bootloader的主要功能&br&② 再看书上对u-boot的讲解,并结合《分析u-boot 1.1.6的视频》来理解&br&③ 最后,有时间有兴趣的话,看《移植一个全新u-boot的视频》,这不是必须的。&br&学习程度:&br&① 理解u-boot的启动过程,特别是u-boot代码重定位:怎么从Flash上把自己读入内存&br&② 理解u-boot的核心:命令&br&③ 知道bootloader如何给内核传递参数&br&④ 知道bootloader是根据“bootcmd”指定的命令启动内核&br&⑤ 作为入门:只求理解,不要求能移植u-boot&br&&br&2.2.8 Linux内核的学习&br&前面说过,内核本身不是我们学习的重点,但是了解一下内核的启动过程,还是很有必要的:工作中有可能要修改内核以适配硬件,掌握了启动过程才知道去修改哪些文件。&br&分析内核的视频有:&br&第10课第1节 内核启动流程分析之编译体验.wmv&br&第10课第2节 内核启动流程分析之配置.wmv&br&第10课第3节 内核启动流程分析之Makefile.wmv&br&第10课第4节 内核启动流程分析之内核启动.wmv&br&移植内核的视频有:&br&业班第3课第1节_移植3.4.2内核之框架介绍及简单修改.wmv&br&毕业班第3课第2节_移植3.4.2内核之修改分区及制作根文件系统.wmv&br&毕业班第3课第3节_移植3.4.2内核之支持yaffs文件系统.wmv&br&毕业班第3课第4节_移植3.4.2内核之裁剪及ECC简介及制作补丁.wmv&br&&br&《嵌入式Linux应用开发完全手册》上对内核的讲解有如下章节:&br&16.1 Linux版本及特点&br&16.2 Linux移植准备&br&16.2.1 获取内核源码&br&16.2.2 内核源码结构及Makefile分析&br&16.2.3 内核的Kconfig分析&br&16.2.4 Linux内核配置选项&br&16.3 Linux内核移植&br&16.3.1 Linux内核启动过程概述&br&16.3.2 修改内核以支持S3C0开发板&br&16.3.3 修改MTD分区&br&16.3.4 移植YAFFS文件系统&br&16.3.5 编译、烧写、启动内核&br&&br&学习方法如下:&br&① 先看书,并结合《分析内核的视频》进行理解&br&② 如果有兴趣,再根据《移植内核的视频》自己掌握移植内核,这不是必须的&br&学习程度:&br&① 知道机器ID的作用,根据机器ID找到单板对应的文件&br&② 知道Makefile、Kconfig的作用,知道怎么简单地配置内核&br&③ 知道怎么修改分区&br&④ 作为入门:只求理解,不要求能移植&br&&br&2.2.9 根文件系统&br&在驱动程序开发阶段,我们喜欢搭建一个最小根文件系统来调试驱动;&br&在开发应用程序时,也需要搭建文件系统,把各种库、配置文件放进去;&br&在发布产品时,你还需要修改配置文件,使得产品可以自动运行程序;&br&甚至你想实现插上U盘后自动启动某个程序,这也要要修改配置文件;&br&这一切,都需要你理解根文件系统的构成,理解内核启动后是根据什么配置文件来启动哪些应用程序。&br&&br&分析根文件系统的视频有:&br&第11课第1节 构建根文件系统之启动第1个程序.wmv&br&第11课第2节 构建根文件系统之init进程分析.wmv&br&第11课第3节 构建根文件系统之busybox.wmv&br&第11课第4节 构建根文件系统之构建根文件系统.wmv&br&&br&《嵌入式Linux应用开发完全手册》上对文件系统的讲解有如下章节:&br&17.1 Linux文件系统概述&br&17.1.1 Linux文件系统的特点&br&17.1.2 Linux根文件系统目录结构&br&17.1.3 Linux文件属性介绍&br&17.2 移植Busybox&br&17.2.1 Busybox概述&br&17.2.2 init进程介绍及用户程序启动过程&br&17.2.3 编译/安装Busybox&br&17.3 使用glibc库&br&17.3.1 glibc库的组成&br&17.3.2 安装glibc库&br&17.4 构建根文件系统&br&17.4.1 构建etc目录&br&17.4.2 构建dev目录&br&17.4.3 构建其他目录&br&17.4.4 制作/使用yaffs文件系统映象文件&br&17.4.5 制作/使用jffs2文件系统映象文件&br&&br&学习方法:结合书和视频学习。&br&学习程序:&br&① 理解配置文件的作用&br&② 知道根文件系统中lib里的文件来自哪里&br&③ 可以制作、烧写文件系统映象文件&br&2.3 驱动程序的学习&br&《嵌入式Linux应用开发完全手册》对驱动程序的讲解不多,我们推出的“韦东山Linux视频第2期_驱动现场编写调试”,可以认为完全脱离了书本。&br&所以,驱动程序的学习完全按照视频来就可以了。&br&第2期的视频,对每一个驱动,先讲解硬件原理,然后从零写代码,从简单到复杂,逐渐完善它的功能。&br&我们不会罗列专业术语,会参考日常生活的例子,力争用最形象的比喻让你轻松入门,同时又会很深入。&br&&br&注意:我们可以让你入门时很轻松,但是要深入理解的话,这需要你跟着视频练习代码,这是个要慢慢思考的过程,不会轻松。&br&&br&轻松的话,凭什么拿高工资?&br&再次申明:即使照抄也要写代码!很多人视频看得很高兴,但是写代码时就傻了。&br&&br&2.3.1 经典字符设备驱动程序&br&视频中以LED、按键驱动为例,讲解并练习开发过程中碰到的机制:查询、休眠-唤醒、中断、异步通知、poll、同步、互斥等等。&br&后续更复杂的驱动程序,就是在这些机制的基础上,根据硬件特性设计出精巧的软件框架。&br&相关的视频有(文件名中带“_P”的属于第2期加密视频):&br&第12课第1节 字符设备驱动程序之概念介绍.wmv&br&第12课第2.1节 字符设备驱动程序之LED驱动程序_编写编译.wmv&br&第12课第2.2节 字符设备驱动程序之LED驱动程序_测试改进.wmv&br&第12课第2.3节 字符设备驱动程序之LED驱动程序_操作LED.wmv&br&第12课第3节 字符设备驱动程序之查询方式的按键驱动程序.wmv&br&第12课第4.1节 字符设备驱动程序之中断方式的按键驱动_Linux异常处理结构.wmv&br&第12课第4.2节 字符设备驱动程序之中断方式的按键驱动_Linux中断处理结构.wmv&br&第12课第4.3节 字符设备驱动程序之中断方式的按键驱动_编写代码.wmv&br&第12课第5节 字符设备驱动程序之poll机制.wmv&br&第12课第6节 字符设备驱动程序之异步通知.wmv&br&第12课第7节 字符设备驱动程序之同步互斥阻塞.wmv&br&第12课第8节 字符设备驱动程序之定时器防抖动_P.wmv&br&第13课第1节 输入子系统概念介绍_P.wmv&br&第13课第2节 输入子系统第编写驱动程序_P.wmv&br&&br&《嵌入式Linux应用开发完全手册》上对字符设备驱动程序的讲解有如下章节:&br&第19章 字符设备驱动程序&br&19.1 Linux驱动程序开发概述&br&19.1.1 应用程序、库、内核、驱动程序的关系&br&19.1.2 Linux驱动程序的分类和开发步骤&br&19.1.3 驱动程序的加载和卸载&br&19.2 字符设备驱动程序开发&br&19.2.1 字符设备驱动程序中重要的数据结构和函数&br&19.2.2 LED驱动程序源码分析&br&第20章 Linux异常处理体系结构&br&20.1 Linux异常处理体系结构概述&br&20.1.1 Linux异常处理的层次结构&br&20.1.2 常见的异常&br&20.2 Linux中断处理体系结构&br&20.2.1 中断处理体系结构的初始化&br&20.2.2 用户注册中断处理函数的过程&br&20.2.3 中断的处理过程&br&20.2.4 卸载中断处理函数&br&20.3 使用中断的驱动程序示例&br&20.3.1 按键驱动程序源码分析&br&20.3.2 测试程序情景分析&br&&br&学习方法:&br&① 沿着数据流向,从应用程序的对驱动程序的使用进行情景分析。&br&所谓情景分析,就是假设应用程序发起某个操作,你去分析其中的运作过程。比如应程序调用open、read、ioctl等操作时涉及驱动的哪些函数调用。&br&你要思考一个问题:一个应用程序,怎么获得按键信息,怎么去控制LED。把其中数据的流向弄清楚了,对字符驱动程序也就基本理解了。&br&② 学习异常和中断时,可以结合书和视频;对于驱动程序中其他内容的学习,可以不看书。&br&&br&2.3.2 工作中各类驱动程序&br&我们的视频中讲解的驱动程序非常多,目的有二:&br&① 在你工作中遇到同类驱动时提供借鉴&br&② 供你学习、练习,煅炼阅读驱动程序的“语感”,提升编写程序的能力,增加调试经验&br&我们还打算扩充驱动视频,把它打造成“Linux驱动程序大全”视频,基本上都会采取从零现场编写的方式。&br&也许有人说:在工作中我们基本上只是移植、修改驱动而已,很少从头编写。这话没错,但是能修改的前提是理解;想更好地理解,最好的方法是从零写一个出来。在学习阶段,不要怕耗费太多时间,从零开始编写,慢慢完善它,在这过程中你既理解了这个驱动,也煅炼了能力,做到触类旁通。&br&如果有时间,建议你学完这些所有的视频,直到你自认为:&br&① 给你一个新板,你可以很快实现相关驱动&br&② 给你一个新硬件,你可以很快给它编写/移植驱动。&br&我们录制的视频很多,下面只罗列到“课”,不罗列到“节”。&br&第2期视频:&br&第14课 驱动程序分层分离概念_总线驱动设备模型&br&第15课 LCD驱动程序&br&第16课 触摸屏驱动程序&br&第17课 USB驱动程序&br&第18课 块设备驱动程序&br&第19课 NAND FLASH驱动程序&br&第20课 NOR FLASH驱动程序&br&第21课 网卡驱动程序&br&第22课 移植DM9000C驱动程序&br&第23课 I2C设备裸板程序&br&第24课 I2C驱动程序 (不看此课,看第32课,第32课讲得更好)&br&第26课 声卡驱动程序 (不看此课,看第3期的ALSA驱动,那讲得更好)&br&第27课 DMA驱动程序&br&第28课 hotplug_uevent机制&br&第32课 3.4.2内核下的I2C驱动程序&br&第3期的驱动视频:&br&摄像头驱动_虚拟驱动vivi&br&摄像头驱动_USB摄像头&br&摄像头驱动_CMOS摄像头&br&WIFI网卡驱动程序移植&br&3G网卡驱动程序移植&br&ALSA声卡驱动程序&br&&br&学习方法:&br&① 再次强调,不能光看不练:一定要写程序,即使照抄也得写&br&② 必学:LCD、触摸屏、NAND Flash、Nor Flash、hotplug_uevent机制&br&③ 学完之后,强烈建议换一个不同的开发板,尝试在新板上写驱动程序。&br&按视频学习会一切顺利,很多问题你可能没想到、没想通,换一个新板会让你真正掌握。&br&&br&2.3.3 调试方法&br&有一种说法,程序是三分写七分调,我们从操作系统的角度提供了一些很有用的调试方法。&br&相关的视频有:&br&第29课第1节_裸板调试之点灯法_P.wmv&br&第29课第2节_裸板调试之串口打印及栈初步分析_P.wmv&br&第29课第3.1节_裸板调试之JTAG原理_P.wmv&br&第29课第3.2节_裸板调试之JTAG调试体验_P.wmv&br&第29课第3.3节_裸板调试之JTAG调试命令行调试_P.wmv&br&第29课第3.4节_裸板调试之JTAG调试源码级调试_P.wmv&br&第30课第1.1节_驱动调试之printk的原理_P.wmv&br&第30课第1.2节_驱动调试之printk的使用_P.wmv&br&第30课第1.3节_驱动调试之打印到proc虚拟文件_P.wmv&br&第30课第2.1节_驱动调试之段错误分析_根据pc值确定出错的代码位置_P.wmv&br&第30课第2.2节_驱动调试之段错误分析_根据栈信息确定函数调用过程_P.wmv&br&第30课第3节_驱动调试之自制工具_寄存器编辑器_P.wmv&br&第30课第4节_驱动调试之修改系统时钟中断定位系统僵死问题_P.wmv&br&第31课第1节_应用调试之使用strace命令跟踪系统调用_P.wmv&br&第31课第2节_应用调试之使用gdb和gdbserver_P.wmv&br&第31课第3节_配置修改内核打印用户态段错误信息_P.wmv&br&第31课第4.1节_应用调试之自制系统调用_P.wmv&br&第31课第4.2节_应用调试之使用自制的系统调用_P.wmv&br&第31课第5.1节_应用调试之输入模拟器之设计思路_P.wmv&br&第31课第5.2节_应用调试之输入模拟器之编写保存功能_P.wmv&br&第31课第5.3节_应用调试之输入模拟器之编写测试模拟功能_P.wmv&br&&br&2.4 Linux应用程序的学习&br&对于大多数人来说,第1个C程序是在Windows的Visual Studio C++(简称VC)上写的,所以你们关心的也许是:嵌入式Linux应用程序,跟VC应用程序之间的区别:&br&&br&① 编译方法不同:&br&在VC上点点鼠标即可编译,对于嵌入式Linux应用程序,我们需要“交叉编译”:程序要在PC Linux上编译,但是运行时要放到单板上。&br&并且,它的编译环境需要你自己搭建:解压出工具链后设计PATH,还要自己构造一套Makefile系统。&br&② 调试方法不同:&br&在VC上点点鼠标就可以调试,对于嵌入式Linux应用程序,你可以更喜欢用打印;或是在PC Linux上通过GDB观察应用程序在单板上的运行状况。&br&&br&③ 可用的资源不同:&br&对于VC程序,你可以直接使用微软公司提供的各种类库;对于嵌入式Linux应用程序,很多时候需要去寻找、下载、编译、使用开源库。&br&&br&④ 功能不同:&br&VC程序运行在PC上,一般是用来解决某些纯软件的问题,比如整理数据、修图、联网播放音乐之类。嵌入式Linux应用程序一般都要操作若干种硬件,比如监控设备中要操作摄像头、存储音视频,无人机中要操作GPS、螺旋桨,POS机中要操作银行卡等等。它跟单板上的硬件联系很大,很多时候需要你懂点硬件知识,至少是知道怎么通过驱动程序来操作这些硬件。&br&&br&上述4点的不同,花很少的时间就可以掌握。&br&如果你有志于开发应用程序,那么一定要有算法、数据结构、网络编程等基础,然后再掌握一些设计模式,最后就是多参加一些实际项目的开发了。&br&}

我要回帖

更多关于 cadence 原理图封装库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信