嵌入式内功.葵花宝典

嵌入式系统面试宝典:常见问题与答案解析 答案: 嵌入式系统是一种专用的计算机系统,它被设计用于执行特定的任务。它通常包含硬件组件(如微控制器或微处理器)和嵌入在硬件中的软件。答案: 实时操作系统是一种设计用于在预定的时间内完成任务的操作系统。它的重要性在于能够保证任务在严格的时间限制内执行,这对于许多嵌入式系统至关重要。答案: 堆是用于动态内存分配的内存区域,而栈是用于函数调用和局部变量存储的内存区域。堆提供了更大的灵活性,但管理起来更复杂;栈提供了快速的内存分配和回收,但大小固定。代码示例// 动态内存分配示例// 局部变量使用栈示例。 阅读详情
 欲练神功,挥刀自宫

  话说东方不败得到《葵花宝典》以后,迫不及待地翻开第一页,面对“欲练神功,引刀自宫”八个大字倒吸了一口凉气。苦苦思索了七天七夜之后终于痛下决心,喀嚓一声,引刀自宫。强忍著身体的剧痛,怀著凝重的心情,东方不败缓缓翻开了第二页,映入眼帘的又是八个大字:“若不自宫,也能成功”,东方不败当即晕死过去……好不容易,东方不败终于醒来了,他想反正都自宫了,还是赶紧练功吧。於是他又缓缓的翻开第三页,又是八个大字:“即使自宫,未必成功”。当场东方不败又再昏死过去。

  过了几天,东方不败再度醒来,他愤愤不平的继续往下翻,他发现整本《葵花宝典》都在讨论成功与自宫的关系。这时东方不败已经接近崩溃边缘,在翻到倒数第二页时,他终于看到了结论:“若要成功,不要自宫”。这时东方不败又快昏过去了,但他心里想:不行,我要把最后一页看完,那是我最后的希望,于是他还是缓缓翻开最后后页,定眼一看:“如已自宫,就快进宫”。旁边还有几行小字:以上纯属开玩笑,如想练得神功,下辈子好好用功! 这时东方不败已经撑不住了,当下吐血而亡,一代枭雄就此殒落。

  在我们这个时代,有太多的人想走捷径,想练“葵花宝典”,结果却落得一场空。盖世神功我们要练,不过要踏踏实实地练,不能走自宫化为"人妖"的道路。嵌入式内功我们必须练,而且要踏踏实实一招一势地练。

  现在大部分处理器生产商在销售处理器的同时,还会提供开发环境IDE比如TI的CCS和AD的Visual Dsp++。另外你还可以从这些公司或其它专门开发DEMO板的公司购买开发板。这些DEMO一般会提供比较丰富的Demo程序,比如音视频捕捉及显示、I2C实例、DMA实例、CACHE实例等。这些DEMO程序基本上由应用处理器生产商提供的底层驱动程序库(driver lib)经二次开发出来的。可见,对于一般的嵌入式底层软件开发人员来说,基本就不用写什么真正意义上的驱动程序,(除非你是为处理器生产商写底层驱动的,毕竟这种大牛不多,也不屑于我的文章),只要参照DEMO程序或使用驱动程序接口开发适合自己项目的FIRMWARE就可以了。这种开发已经演变成驱动应用而不是驱动开发,其难度相比从零开始的驱动开发已经大大降低。我们国内很大部分“驱动开发者”都在从事这样的工作!不过也确实没办法,如果处理器生产商不提供已经屏蔽硬件特性并降低底层软件开发难度的驱动程序库,估计许多的“驱动开发者”即使磕破头皮绞尽脑汁也未必能搞定那些底层驱动。可见,要搞真正的驱动开发,还是要到大公司去混!

  一般来说,从事消费类或通信类产品研发的底层软件开发的人员,如果不熟练掌握DMA、cache、PCI、代码优化(包括编译器优化)等技术,那么他充其量还只是停留在应用软件或简单系统开发的层面,就好比搞VC编程的还没很好掌握MFC一样,虽然进入了应用软件开发的殿坛,但还没有把握这个领域的关键技术。这几个东西在对嵌入式底层软件软件开发的人来说至关重要,可以说是高手和普通者的分水岭。现在,一些高端的流媒体产品如手机研发、游戏设备开发、IPTV、数字视频录像机(DVR)、数字视频广播(DVB)、机顶盒、视频会议系统、网络监控摄像头以及可视电话,为了能够处理大量的音视频输入输出数据流,往往采用单一MPU(比如ARM和Motorola的PPC/Coldfire/68K)、单一DSP(专用媒体处理器TI C64x/DM642、AD Blackfin 5xx、Equator的BSP15以及Philips TriMedia)或MPU+DSP组合的单核多芯或单芯多核的处理结构(TI OMAP/DaVinci和AD BF561)作为核心处理模块(一般的MCU主要应用于控制目的,不具备大批量数据处理的能力,所以比较少被应用于这些产品)。另外,这些处理器为了能进一步提升数据处理能力往往都会配备DMA、CACHE、PCI等外设或接口(见下图,DMA+CACHE+PCI的协作极大地提高了处理器与处理器之间以及处理器与外设的交互能力)。由此可见DMA、CACHE、PCI对于从事消费类或通信类研发的底层软件开发的重要性可想而知(搞定了这些复杂有难度的外设,其它的也不在话下了:))。

*DMA:它是个很好“奴才”。"主子"CPU让它干什么它就干什么,任劳任怨。那些搬移大量外围设备数据的“体力活”它统统包下,干完之后马上中断告诉"主子",而且两者在同时使用数据总线时,卑微的“奴才”会让着"主子"。这样的好“奴才”谁会不要,谁会不喜欢呢?(DMA是很基本的东西,后面介绍的cache和PCI控制器也都会用到)。

*Cache:它是“加速器”。在目前的IT行业,外围内存在访问速率上与处理器严重脱节一直是不可回避的“瓶颈”问题。cache的引入无疑极大地缓解了这个问题。它使得处理器访问cache就如同访问外部内存一样快速,极大地提高了CPU处理数据的效率,所以被广泛地应用于流媒体设备中。

*PCI:当在一块板子上有多块处理器时,它们之间大量的数据交互就是可能存在问题,比如MPU从网络接收的大块连续数据发送给DSP处理时,就需要有足够承载能力及带宽的总线。PCI总线一般33M最大66M带宽能力足以应付决大部分的应用。PCI给处理器之间架上了桥梁,使得MPU+DSP的应用设计成为现实。

*Optimization:选择合适的处理器并设计能够充分发挥外设性能的板子是项目负责人和硬件人员干的事情,而软件开发人员要干的就是编写能够充分发挥硬件功能的高效代码。代码优化方法就是其中用于提高系统性能和代码效率的有效技术,是任何嵌入式开发人员都要努力掌握的技能。

在之后的文章中陆续会对上述4个方面进行全面深入的分析。更多精彩值得期待。

 
嵌入式处理器全景解析 - 从通用到专用,从CPU到ASIC的演进与选型 本文全面解析嵌入式处理器的演进与选型,从通用CPU到专用ASIC的技术特点与应用场景。通过生动的武林比喻,深入比较CPU、MCU、FPGA等芯片架构的优劣势,并结合实际案例分享选型策略,帮助工程师在性能、功耗与成本之间找到最佳平衡点,特别适合嵌入式系统开发者参考。 阅读详情

相关推荐

《嵌入式宝典》:从笔试到面试的全面备战指南

嵌入式系统中,基础数据结构如数组、链表、栈和队列有着广泛的应用。它们可以帮助开发者有效地管理数据和资源。int size;} Stack;} else {// ... 其他操作在这个例子中,我们定义了一个简单的栈数据结构,它包括数组和大小。push函数用于向栈中添加元素。嵌入式系统是一种专用计算机系统,它通常被集成到各种设备和系统中,用以执行控制和监视任务。这些系统区别于通用计算机系统,因为它们通常针对特定的应用进行优化,具有资源受限、实时性要求高、与硬件紧密耦合的特点。

weixin_42174098的博客 543

C语言嵌入式系统编程修炼之道

C语言嵌入式系统编程修炼之道 作者:宋宝华  e-mail:21cnbao@21cn.com  C语言嵌入式系统编程修炼之道——背景篇... 1C语言嵌入式系统编程修炼之道——软件架构篇... 41.模块划分... 42.多任务还是单任务... 53.单任务程序典型架构... 64.中断服务程序... 75.硬件驱动模块... 96.

robin_qiu专栏 1万+

嵌入式葵花宝典

嵌入式葵花宝典

只会调库的嵌入式工程师,迟早被淘汰?软硬兼修的三大底层思维

另一个系统思维的体现是架构设计,在我2012年做过的一个太阳能控制器项目中,采用了单体架构,所有功能都集中在一个while(1)中,都是if-else嵌套的逻辑判断。比如有个项目要做数据采集,CPU才48MHz,新手非要上RTOS,结果调度开销太大,数据都来不及处理,改成裸机+中断,立马流畅了。作为一名在嵌入式领域摸爬滚打十余年的工程师,我深知一个残酷的现实:会用库和框架的工程师很多,但真正理解系统底层的人才却很稀缺。这个简单的问题,揭示了一个严重的设计缺陷:系统没有定义传感器完全失效时的行为模式。

无际单片机编程 1426

嵌入式宝典(笔试到面试)

本资料适合的人群主要包括以下两方面:1. 嵌入式行业的应届生,通过该资料可拿到大厂的offer 2.对嵌入式行业中的基本概念比较模糊的人,可帮助其快速巩固自己的基础知识。

嵌入式技术宝典

不用多说的一本好书,想学习嵌入式技术的人,刚入门或者想提高的人,这都是一本十分难得的好东东,对学习相当的有帮助

嵌入式C语言面试宝典

嵌入式C语言面试宝典

qq_41483419的博客 3682

葵花宝典2

java面试笔试题java面试笔试题

图解CACHE不一致性问题[生动透彻]

如果你还没有看过《嵌入式内功.葵花宝典》,那么在阅读本这篇推荐的文章之前有必要先去看看吧,你会有新的体会的。        

嵌入式软件 1937

用LTspice仿真Buck电路输出电容:从参数计算到波形优化的全流程演示

本文详细介绍了使用LTspice仿真Buck电路输出电容的全流程,从理论计算到波形优化。通过解析关键参数如纹波电压、瞬态响应和ESR,结合工程计算方法和LTspice仿真技巧,帮助工程师优化Buck电路设计,解决输出纹波过大和瞬态响应不佳的问题。

night的博客 851

Steam游戏服务器攻防全景解读——如何构建游戏级抗DDoS防御体系?

当检测到TCP/UDP混合攻击时,应触发预设的熔断策略:优先保障游戏大厅服务的UDP 27015端口,临时限制匹配系统的TCP连接数。针对Steam游戏服务器特有的UDP 4380端口,需配置协议合规性检查规则:限制数据包长度不超过128字节,强制校验请求来源IP的真实性。Steam游戏服务器的防护需要平衡安全性与玩家体验,通过协议深度解析、智能流量调度和服务端加固的三维防御体系,可构建游戏行业专属的抗DDoS护城河。答:采用弹性防护方案,基础防护带宽保持50Gbps,遭遇攻击时自动扩展至T级清洗能力。

2501_91486804的博客 1452

嵌入式技术开发学习

嵌入式技术开发学习经验 1、关于ARM和嵌入式系统方向2、学习嵌入式的一点建议3、ARM开发经典学习网站推荐4、谨献给为了知识执着的嵌入式初学者5、单片机破解的常用方法及应对策略6、嵌入式人才的发展方向7、嵌入式软件测试的十大秘诀8、嵌入式系统软件及编程语言9、我的嵌入式之路10、嵌入式核心书籍11、嵌入式内功.扎马步12、关于C的0x8本“经书”[嵌入式必读]13、想成为嵌入式程序员应知道的0x10个基本问题14、嵌入式内功.葵花宝典15、嵌入式OS你用了吗16、vxworks测试题及解答17、offs

边城水手的专栏 2041

告别手动复制粘贴:3种高效合并Excel表格的方法对比(含代码)

本文对比了VBA、Power Query和Python三种高效合并Excel表格的方法,并提供了可直接运行的代码。针对不同数据量、更新频率和技术背景,详细分析了各方案的优缺点与适用场景,帮助读者告别低效的手动操作,实现自动化数据整合。

weixin_29057237的博客 440

嵌入式技术开发学习经验

嵌入式技术开发学习经验 1、关于ARM和嵌入式系统方向2、学习嵌入式的一点建议3、ARM开发经典学习网站推荐4、谨献给为了知识执着的嵌入式初学者5、单片机破解的常用方法及应对策略6、嵌入式人才的发展方向7、嵌入式软件测试的十大秘...

cuipupang7949的博客 277

二叉树随机漫步

元旦快乐! 学习到中本聪bitcoin的文章的calculation部分的时候,出现了binomial random walk,不是很明白什么是random walk。发现这个文章写的很好:https://blog.csdn.net/fireguard/article/details/16111603 随机漫步,也叫随机游走,最早是物理学中做"布朗运动"的微观粒子的运动形态来形成的一个模型,布朗运...

gjq5464的博客 1737

外向交货单批次赋值的标准姿势:用 BAPI_OUTB_DELIVERY_CHANGE 把 LIPS-CHARG 改得稳、改得干净

摘要: 外向交货单批次赋值涉及严格的业务约束,包括批次管理状态、单据状态、拆分规则等,直接更新表 LIPS 不可取。推荐使用 BAPI_OUTB_DELIVERY_CHANGE 接口,通过标准业务逻辑实现批次修改。关键点包括:区分单批次分配与批次拆分场景,正确设置 ITEM_CONTROL 控制结构,并确保单位/数量数据完整。附可直接执行的ABAP代码示例,实现安全可靠的批次更新流程。 (字数:149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 394

嵌入式系统中的CACHE问题

如果你还没有看过《嵌入式内功.葵花宝典》,那么在阅读本这篇推荐的文章之前有必要先去看看吧,你会有新的体会的。关键词:嵌入式实时系统 CACHE 不一致性随着社会的发展、人们生活水平的提高,人们对嵌入式计算机应用的要求也越来越高。因此,对嵌入式系统的性能要求也越来越高。明显体现在嵌入式系统的CPU速度的不断提高上。但问题也随之而来,嵌入式CPU的主频不断地提高,一方面加强了CPU的处

嵌入式软件 2162

一种独特机理驱动的化学反应分类器详解

代码位置第 47-300+ 行// atom_494: 硫原子,度数=2,化合价=2,无H,无电荷!// atom_35: 氧原子,度数=1,1个H,无电荷// atom_347: 氧原子,度数=2,无H,无电荷!→atom_494()[OD1h1+0]→atom_35()→atom_347()特性传统方法(MCS)NameRXN(机理驱动)匹配策略最大公共子结构原子类型模式 + 操作码时间复杂度O(n) - 线性扫描机理理解无内置化学机理原子映射需额外计算自动推导准确性结构相似。

ASKCOS博客 156

我的师傅是风清扬

  1 珍惜那些处处帮助你的人 国庆假期就要过去了,国庆这几天一直在考虑一个问题(先保留是什么问题),也咨询了几个比较信任的朋友,都没有得到肯定的答案。 回家路上跟了一个大哥哥(陈哥),是我小舅子的朋友,在2003年就开始来深圳打拼,用他的话说,当时穿着一双拖鞋来深圳,现在搞了一个小厂子,虽然没有出人头地,但是也没亏掉什么 ,说话中带着惋惜和骄傲。陈哥从30号认识到5号回到深圳,我们接触...

嵌入式Linux 1587

YOLO26原创自研: 魔改Bottleneck,具备多尺度和特征通道融合的结构

魔改Bottleneck,具备多尺度和特征通道融合的结构,该模型在检测准确性方面都取得了良好的效果,尤其在缺陷检测方向。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 314

[QMT量化交易小白入门]-五十、十年基本保证每年盈利,全天ETF候稳稳的幸福

全局参数raise_rate = -1 # 触发rebalance的上涨比例period: 设定为22,表示每22个交易日执行一次调仓(即大约每月一次)。这是策略的时间框架基础。raise_rate: 初始值设为-1,意味着默认情况下不会因为资产的涨幅而触发调仓。这一参数用于控制是否基于资产表现动态调整仓位。run_count: 用于记录策略运行的次数,帮助判断何时执行定期调仓。1、为了简便计算,回撤时将调仓再平衡是先卖出再买入,没有比较持仓,实盘时是需要计算的,减少交易费用。

木头大左的博客 806

<<C++的设计与演化>>读书笔记(二)

>原文摘录与自己翻译及注解 原文1: 1.There is no agreement on what a programming language really is and what its main purpose is supposed to be.Is a programming language a tool for instruscting machines? A means

weiwenhp 1141

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

当CACHE和DMA坐在跷跷板上[共享]

如果你还没有看过《嵌入式内功.葵花宝典》,那么在阅读本这篇推荐的文章之前有必要先去看看吧,你会有新的体会的。 The best way to move multimedia data   With embedded media processors assuming the role of both microcontroller and signal processor, enginee

嵌入式软件 3013

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 嵌入式内功.扎马步
下一篇: 如何写一份好的工程师简历
embeddedsoft
博客等级 码龄20年 51粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值