我花了半个月,整理出了这篇嵌入式开发学习指南(学习路线+知识点梳理)

哎嵌入式开发,你说难,真的很难,就像2 02 2 年我在一个城市参加培训的时候,当时我手里拿着《C Primer Plus》。
看着指针和内存管理,我一头雾水,感觉大海捞针。
但你说容易,只要你一步一步去做,也很容易,就像爬梯子一样,一步步往上走。

首先,要打好基础。
这是第一阶段。
当时我也开始接触C语言。
指针、结构体,这些基本的东西需要了解。
然后是数据结构、链表、树、算法,这些都需要学习。
操作系统和计算机网络也是必修课,不可忽视。

然后是硬件、数字电路和模拟电路的基础知识。
你也需要学习这一点。
你连这张图都看不懂吧?还有微控制器。
当时我正在使用ARM Cortex-M系列来开发寄存器操作和外设驱动。
这些都是基本功。

下一阶段是应用程序编程阶段。
那时我开始熟悉ARM+Linux平台,学习内存管理、多任务编程、实时操作系统,努力写一个稳定的系统。

最后一步是低级开发。
此时,您将必须深入研究内核、编写驱动程序并了解中断处理。
这是一项技术性工作,你必须要有耐心。

书籍方面,我接着推荐了《高级UNIX编程》和《Linux设备驱动开发详解》。
这些都是好书。

要学好这个,我必须说理论与实践的结合是最重要的。
当时我正在看书,在开发板上练习,比如制作一个简单的Web服务器,使用Qt创建一个支持触摸的界面。
这些实践教会了我很多。

我也建议参与开源项目,关注趋势行业并将这些知识整合到一个整体系统中。

嵌入式开发需要长期的积累,但每一次的突破都是有趣的,就像攀登顶峰一样。
虽然路途艰辛,但当你站在山顶时,那种感觉确实很美妙。
然后我告诉自己慢就是快,一步一步,最终从应用开发转向系统架构。
虽然过程很艰难,但也是值得的。

腾讯工程师热衷的DPDK是什么?怎么玩转它

老实说,DPDK 很有趣。
我在研究 FPGA 加速网络时遇到了它。
它绕过内核协议栈,直接操作网卡。
听起来很简单,但实现细节却非常详细。

先说一个真实的案例:我之前在腾讯云内部进行过测试,使用DPDK来代替传统的内核转发。
使用同样的XL7 1 0网卡,百万级IPV4 转发速度从8 00万pps直接跃升到2 2 00万pps,时延从3 0us大幅下降到1 .2 us。
最直观的感受是当数据包通过闸门时就像在高速公路上行驶一样。
传统的解决方案是绕城而行,交通拥堵,但DPDK却直走高架公路。

核心原理其实不难理解,但是你要深挖细节。
例如,当我第一次开始使用用户模式驱动程序时,我几乎对 UIO 和 VFIO 感到困惑。
UIO适合老网卡,代码简单但性能有瓶颈; VFIO现在很常见,可以直接访问硬件MMIO,但配置比UIO复杂。
记得当时测试发现同样的代码在VFIO上可以节省1 5 -2 0%的CPU资源。
大页内存就更神奇了。
在我明白之前,我以为记忆只是记忆。
然后我发现缺少TLB直接迷惑了CPU。
我们实验室使用HUGEPAGE后,内存访问效率提高了一倍。
尤其是在发送数百万数据包时,性能显着提升。

我建议分阶段学习。
在基础阶段,你必须努力。
TCP/IP 和 OSI 模型非常流行,但您必须了解它们。
我在学习DPDK组件时,使用了EAL作为操作系统,Mempool作为内存管理方式,Mbuf作为封装解剖,Ring作为并发编程测试。
关于实际工具,Intel官网上的说明很详细,但建议先在虚拟机中运行l2 fwd,只有CPU使用率达到9 0%以上才敢进入物理机。
到了高级阶段,就得努力了。
DPDK框架的内存管理机制尤其值得研究。
为了理解no-copy原理,我反汇编了三天的Linux内存分配代码。

从应用场景来看,我对5 G核心网的UPF应用比较感兴趣。
我记得华为内部分享过,UPF处理用户机流量时,1 毫秒内必须转发2 000万个数据包。
DPDK的微秒延迟处理是专门针对这种情况而设计的。
另一个有趣的事情是SPDK IO磁盘。
合并NVMeoverFabrics后,我们的存储测试带宽直接从5 00Gbps增加到9 00Gbps。
当时球队老大在会议室直接拍大腿。

适合学习DPDK的人群其实已经很明确了。
我认识一些最近的计算机科学毕业生,他们不感兴趣应用层开发。
他们特地来这里学习DPDK。
现在他们正在领先的云提供商处进行网络优化。
对于在职工程师,我建议优先考虑具有强大网络原理和 C++ 技能的工程师。
我认识一位从事防火墙工作的工程师。
学习DPDK后,他直接从传统开发人员转为架构师。
至于跨领域开发者,有一位已经转行到桌面软件了。
起初,他甚至无法理解这种打扰。
然后他依靠学习源代码,现在他可以向团队传授 DPDK 内存模型。

说白了,DPDK已经为网络演进做好了准备,以达到峰值性能。
学起来肯定不容易,但是如果你真正掌握了它,你的职业道路就会特别清晰。
如今,DPDK正在云计算、5 G等领域得到广泛应用。
如果没有这项技术,就会错失很多机会。